Unisecurityguard Academic Whistleblower Archive

reason-machines/security-skills/skills/unisecurityguard-academic-whistleblower-archive

作者 reason-machines304c245fe992無授權條款11 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫2 個月前更新

Archive and documentation platform for academic employment transparency and whistleblowing in Chinese higher education institutions

AI 產生的概覽

指導建立以 GitHub 為基礎的學術職場舉報與遭審查社群媒體證據典藏平台。

功能
這項技能提供在 GitHub 上建立抗審查文件倉庫的說明與範本。內容涵蓋倉庫結構、依時間順序更新 README、證據素材整理、以 Issue 形式建立常見問答、校驗和、加密備份,以及鏡像到其他 git 託管平台。它產出的是文件模式與範例指令碼,本身不會執行任何操作。
適用情境
當有人需要典藏學術職場糾紛、機構施壓,或從小紅書等平台遭移除內容的證據時使用。適合需要透明、可版本追溯的紀錄,並希望從遭審查平台遷移的使用者。
執行需求
需要 GitHub 帳號與 git;範例指令碼可選用 GitHub CLI、Git LFS、GPG,以及帶 requests 的 Python。推送至 GitHub 需要網路存取。這項技能不附帶指令碼,所有程式碼僅以文件中的範例形式出現。

UniSecurityGuard Academic Whistleblower Archive

Skill by ara.so — Security Skills collection.

Overview

UniSecurityGuard is a GitHub-based archive platform documenting the experience of a Chinese academic who transitioned from associate professor to security guard. The project serves as a censorship-resistant backup for social media content that faces institutional pressure and platform removal. It demonstrates how to use GitHub as a transparent, immutable documentation platform for whistleblowing and advocacy.

Key Use Case: Preserving evidence of academic employment issues, institutional misconduct, and career transitions when primary platforms (Xiaohongshu/Little Red Book) are threatened with censorship.

Primary Language: Markdown (documentation-focused)

Repository Structure:

  • README.md: Main narrative and updates
  • assets/: Screenshots and image evidence
  • Issues section: Community Q&A and documentation

Installation & Setup

Fork or Clone for Your Own Archive

bash
# Clone the repositorygit clone https://github.com/UniSecurityGuard/UniSecurityGuard.gitcd UniSecurityGuard
# Create your own backup archive (fork approach)# 1. Fork via GitHub UI# 2. Clone your forkgit clone https://github.com/YOUR_USERNAME/YOUR_ARCHIVE_NAME.gitcd YOUR_ARCHIVE_NAME

Initialize Your Own Archive

bash
# Create basic structuremkdir -p assets/{screenshots,documents,evidence}touch README.mdtouch TIMELINE.mdtouch FAQ.md
# Initialize gitgit initgit add .git commit -m "Initial archive setup"
# Push to GitHub (create repo first on github.com)git remote add origin https://github.com/YOUR_USERNAME/YOUR_ARCHIVE.gitgit branch -M maingit push -u origin main

Core Patterns

1. Document Progressive Updates

The project uses the README.md as a chronological narrative with new updates at the top:

markdown
# [Latest Update - Critical Situation]
## [Date]: Current Status
Description of latest developments...
## [Earlier Date]: Previous Situation
Earlier context...
## Background
Original story and context...

2. Asset Organization

Store evidence systematically:

bash
assets/├── screenshots/│   ├── 1.jpg          # Numbered chronologically│   ├── 2.jpg│   └── 3.jpg├── documents/│   ├── contract.pdf│   └── correspondence.pdf└── evidence/    ├── salary_records/    └── institutional_communications/

3. Embed Images in README

markdown
## Evidence Documentation
<img src="assets/screenshots/1.jpg" width="400" alt="Description of evidence"><img src="assets/screenshots/2.jpg" width="400" alt="Context"><img src="assets/screenshots/3.jpg" width="400" alt="Timeline proof">

4. Use Issues for FAQ and Community Support

The project uses 154+ issues as a documentation and Q&A system:

markdown
# Create structured issues for common questions
Issue #1: "关于学校施压的详细情况" (Details about institutional pressure)Issue #2: "如何保护自己在类似情况下" (How to protect yourself in similar situations)Issue #3: "法律建议和资源" (Legal advice and resources)

Real-World Implementation Examples

Example 1: Creating a Censorship-Resistant Archive

bash
#!/bin/bash# backup_social_media.sh# Automate archiving of social media content to GitHub
ARCHIVE_DIR="./archive/$(date +%Y-%m-%d)"mkdir -p "$ARCHIVE_DIR"
# Download screenshots (manual or automated via APIs)# Save to archive directorycp ~/Downloads/xiaohongshu_screenshots/* "$ARCHIVE_DIR/"
# Create daily updatecat > "$ARCHIVE_DIR/update.md" << EOF# Update: $(date +%Y-%m-%d)
## Status- Platform status: [Active/Restricted/Removed]- Follower count: [NUMBER]- Content removed: [YES/NO]
## New Developments[Description]
## Evidence$(ls "$ARCHIVE_DIR"/*.jpg | sed 's/^/- /')EOF
# Commit to gitgit add "$ARCHIVE_DIR"git commit -m "Archive update: $(date +%Y-%m-%d)"git push origin main

Example 2: Structured Timeline Documentation

Create TIMELINE.md:

markdown
# Career Transition Timeline
## 2025-12-27: Repository Created- Initial backup platform established- 3 key screenshots archived- Background story documented
## 2025-12: Institutional Pressure Begins- 7 leaders visit rental apartment- Demands to delete content and claim fiction- Threats to reclaim salary and benefits
## 2025: Security Guard Transition- Removed from associate professor position- Transferred to campus security- Salary: ¥4,000/month base + ¥800 security supplement- Annual performance bonus: ¥6,000+
## Background: Academic Career- Undergraduate: C9 university (华五)- PhD: QS50 US university (withdrawn)- Position: Associate professor at brother institution

Example 3: README Template for Academic Whistleblowing

markdown
# [Project Title]: Academic Employment Transparency
## ⚠️ Current Situation
[Latest critical update - always at top]
## Background
### Academic Credentials- Undergraduate: [Institution]- Graduate: [Institution]- Position: [Title] at [Institution]
### Employment Transition- Previous role: [Title], Salary: [Amount]- Current role: [Title], Salary: [Amount]- Reason for transition: [Description]
## Institutional Response
### Pressure Tactics1. [Specific action]2. [Specific threat]3. [Specific demand]
### Evidence<img src="assets/evidence_1.jpg" width="400" alt="Evidence description">
## Documentation Purpose
This repository serves as:1. Immutable record of events2. Backup for censored social media content3. Resource for others in similar situations4. Transparent accountability mechanism
## How to Support
- ⭐ Star this repository for visibility- 📋 Open issues with questions or similar experiences- 🔄 Share (carefully, considering safety)- 📸 Screenshot and archive content locally

Example 4: Automated Git Backup Script

python
#!/usr/bin/env python3# auto_archive.py - Automated content archiving
import osimport jsonfrom datetime import datetimeimport subprocess
class AcademicArchive:    def __init__(self, repo_path):        self.repo_path = repo_path        self.assets_dir = os.path.join(repo_path, 'assets')            def add_update(self, title, content, evidence_files=None):        """Add new update to README"""        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M')                update = f"\n# {title}\n\n"        update += f"**Date**: {timestamp}\n\n"        update += f"{content}\n\n"                if evidence_files:            update += "## Evidence\n\n"            for f in evidence_files:                # Copy evidence to assets                dest = os.path.join(self.assets_dir, os.path.basename(f))                subprocess.run(['cp', f, dest])                update += f'<img src="assets/{os.path.basename(f)}" width="400" alt="">\n'                # Prepend to README        readme_path = os.path.join(self.repo_path, 'README.md')        with open(readme_path, 'r') as f:            existing = f.read()                with open(readme_path, 'w') as f:            f.write(update + existing)                return update        def commit_and_push(self, message):        """Commit changes and push to GitHub"""        os.chdir(self.repo_path)        subprocess.run(['git', 'add', '.'])        subprocess.run(['git', 'commit', '-m', message])        subprocess.run(['git', 'push', 'origin', 'main'])        def create_issue_faq(self, question, answer):        """Create issue for FAQ (requires GitHub CLI)"""        subprocess.run([            'gh', 'issue', 'create',            '--title', question,            '--body', answer,            '--label', 'faq'        ])
# Usage examplearchive = AcademicArchive('/path/to/UniSecurityGuard')
# Add update with evidencearchive.add_update(    title="Latest Institutional Pressure",    content="""    School leadership removed the chair from security booth.    Reason: "Security guards shouldn't sit - it doesn't look proper."    Now standing 8 hours straight daily.    """,    evidence_files=[        '/path/to/screenshots/booth_before.jpg',        '/path/to/screenshots/booth_after.jpg'    ])
archive.commit_and_push("Update: Security booth chair removed")

Configuration & Best Practices

Repository Settings

  1. Enable GitHub Pages (optional, for web presence):

    • Settings → Pages → Source: main branch
    • Creates public website at https://USERNAME.github.io/REPO
  2. Issue Templates:

Create .github/ISSUE_TEMPLATE/faq.md:

markdown
---name: FAQ Questionabout: Ask questions about the situationtitle: '[FAQ] 'labels: faq---
## Question
[Your question]
## Context (if applicable)
[Additional context]
  1. Archive Metadata:

Create archive_metadata.json:

json
{  "archive_name": "UniSecurityGuard",  "primary_platform": "Xiaohongshu (Little Red Book)",  "backup_date": "2025-12-27",  "last_update": "2026-05-13",  "status": "active",  "content_type": "academic_whistleblowing",  "language": "zh-CN",  "evidence_count": 154,  "follower_snapshot": {    "platform": "xiaohongshu",    "count": "unknown",    "status": "threatened"  }}

Safety Considerations

  1. Anonymization: Remove or redact:

    • Personal identifying information of third parties
    • Specific institutional names (if legally required)
    • Location details that enable physical tracking
  2. Evidence Integrity:

    bash
    # Generate checksums for evidence filessha256sum assets/**/*.jpg > assets/checksums.txtgit add assets/checksums.txtgit commit -m "Add evidence checksums for integrity verification"
  3. Backup Beyond GitHub:

    bash
    # Create encrypted backup archivetar -czf archive_backup.tar.gz .gpg --symmetric --cipher-algo AES256 archive_backup.tar.gz# Store archive_backup.tar.gz.gpg in multiple locations

Common Use Cases

Migrating from Censored Platform

markdown
## Platform Migration Notice
Due to [PLATFORM] censorship/removal, this content has migrated to GitHub.
**Original platform**: [NAME]**Original account**: [HANDLE/ID]**Migration date**: [DATE]**Reason**: [Platform pressure/content removal/account suspension]
### How to Follow Updates1. ⭐ Star this repository2. 👁️ Watch → All Activity (for notifications)3. Check back regularly or use RSS feed:   `https://github.com/USERNAME/REPO/commits/main.atom`

Community Support Hub

markdown
## Support & Resources
### For Those in Similar Situations- 📋 [FAQ Issues](https://github.com/USERNAME/REPO/issues?q=label%3Afaq)- 💬 [Discussions](https://github.com/USERNAME/REPO/discussions)- 📚 [Resource List](./RESOURCES.md)
### Legal & Safety Resources- [Labor law consultation contacts]- [Academic employment advocacy organizations]- [Digital security guides]

Troubleshooting

Issue: Content Visibility

Problem: Updates not appearing to others

bash
# Verify commits are pushedgit statusgit log --oneline -5
# Force push if necessary (use cautiously)git push --force origin main

Issue: Large Files

Problem: Screenshots/documents exceed GitHub limits (100MB file, 1GB repo)

bash
# Use Git LFS for large filesgit lfs installgit lfs track "*.pdf"git lfs track "*.mp4"git add .gitattributesgit commit -m "Configure Git LFS"
# Or link to external storageecho "Large evidence files: [External Archive Link]" >> README.md

Issue: Institutional Takedown Requests

GitHub provides:

  1. DMCA counter-notice process
  2. Transparency reports for takedown requests
  3. Archive repositories before potential removal
bash
# Create redundant mirrorsgit clone --mirror https://github.com/USERNAME/REPO.gitcd REPO.gitgit push --mirror https://gitlab.com/USERNAME/REPO.gitgit push --mirror https://codeberg.org/USERNAME/REPO.git

Issue: Community Management

High issue volume (154+ issues):

bash
# Use labels effectivelygh label create "institutional-pressure" --color "d73a4a"gh label create "legal-advice" --color "0075ca"gh label create "career-advice" --color "008672"
# Bulk label issuesgh issue list --limit 100 --json number --jq '.[].number' | \  xargs -I {} gh issue edit {} --add-label "faq"

Advanced Patterns

Automated Monitoring

python
# monitor_platform.py - Check if primary platform content is still accessibleimport requestsimport jsonfrom datetime import datetime
def check_platform_status(platform_url):    """Monitor if content is still accessible"""    try:        response = requests.get(platform_url, timeout=10)        status = {            'timestamp': datetime.now().isoformat(),            'accessible': response.status_code == 200,            'status_code': response.status_code        }    except Exception as e:        status = {            'timestamp': datetime.now().isoformat(),            'accessible': False,            'error': str(e)        }        # Log status    with open('platform_status.jsonl', 'a') as f:        f.write(json.dumps(status) + '\n')        return status
# Run periodically via cron# 0 */6 * * * /usr/bin/python3 /path/to/monitor_platform.py

RSS Feed for Followers

GitHub automatically provides RSS feeds:

# Commits feedhttps://github.com/USERNAME/REPO/commits/main.atom
# Issues feed  https://github.com/USERNAME/REPO/issues.atom
# Share with followers"Subscribe to updates: Add this URL to your RSS reader"

This skill enables AI agents to help users create censorship-resistant documentation platforms, archive evidence of institutional misconduct, and maintain transparency when facing content removal pressure.

來源與署名

來源:reason-machines/security-skills位於skills/unisecurityguard-academic-whistleblower-archive提交304c245

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架