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 从公开仓库中收录这些内容。

举报或申请下架