thomasjjj/youtube_genocide_identifier

GitHub: thomasjjj/youtube_genocide_identifier

该工具抓取 YouTube 视频转录文本,并借助多家 LLM 按国际法律标准分析其中是否存在灭绝煽动内容,辅助研究与监控工作。

Stars: 5 | Forks: 0

# YouTube 灭绝煽动分析工具包 这是一个 Python CLI,用于收集 YouTube 文本记录,并根据国际法律标准分析其中是否存在灭绝煽动行为。 本工具用于研究和监控支持。它不是法律判定系统,其结果应由合格的专业人员进行审查。 ## 功能 - 获取 YouTube 文本记录,并将其存储在 SQLite 和文本文件中。 - 使用 `yt-dlp` 获取基本视频元数据,并支持 `pytube` 作为回退方案。 - 支持 OpenAI、Claude、Gemini 和本地 Ollama 模型。 - 通过 provider 的 structured-output 设置和本地 Pydantic 验证来强制执行共享的 JSON schema。 - 包含合成的文本记录测试,以便操作员在进行实时分析之前,可以将模型的回答与预期结果进行比较。 - 在每次分析结果中存储 provider、模型、token 数量、schema 版本和时间戳。 - 根据 provider、模型和 schema 版本缓存分析结果。 ## 要求 - Python `>=3.10,<3.15` - 托管模型的 provider 凭证,或用于本地模型的正在运行的 Ollama 服务 - `requirements.txt` 中的运行时依赖项 - `requirements-dev.txt` 中的开发/测试依赖项 ## 安装 ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install --upgrade pip setuptools wheel python -m pip install -r requirements-dev.txt ``` 复制示例环境文件并配置至少一个 provider: ``` Copy-Item example_credentials.env .env ``` ## Provider 配置 将 `AI_PROVIDER` 设置为以下之一: - `openai` - `claude` - `gemini` - `ollama` 默认模型设置: ``` OPENAI_MODEL=gpt-5.5 CLAUDE_MODEL=claude-opus-4-8 GEMINI_MODEL=gemini-3.5-flash OLLAMA_MODEL=gpt-oss:20b ``` Provider 凭证: ``` OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... ``` 对于 Ollama,请安装 Ollama,在本地启动它,并拉取选定的模型: ``` ollama pull gpt-oss:20b ``` 如果由于内存或模型可用性问题导致无法加载本地模型,CLI 将报告特定于 provider 的错误。 ## 用法 交互式完整 pipeline: ``` python genocide_detect.py ``` 使用显式的 provider 和模型进行分析: ``` python genocide_detect.py "https://www.youtube.com/watch?v=VIDEO_ID" --provider openai --model gpt-5.5 python genocide_detect.py analyze VIDEO_ID --provider claude python genocide_detect.py analyze VIDEO_ID --provider gemini --force-analysis python genocide_detect.py analyze VIDEO_ID --provider ollama --model gpt-oss:20b ``` 在进行实时分析之前运行合成模型测试: ``` python genocide_detect.py test-models --provider openai --model gpt-5.5 python genocide_detect.py test-models --list-cases python genocide_detect.py analyze VIDEO_ID --provider ollama --test-first ``` 合成测试套件特意涵盖了: - 明确煽动摧毁受保护群体 - 带有足够上下文的隐蔽或非人化的摧毁言论 - 强烈但非种族灭绝性质的政策批评 - 针对非受保护目标的激进言论 - 答案应为 `Cannot determine` 的上下文不足或模棱两可的情况 仅提取文本记录: ``` python genocide_detect.py extract "https://www.youtube.com/watch?v=VIDEO_ID" python genocide_detect.py extract VIDEO_ID --overwrite ``` 列出已缓存的文本记录: ``` python genocide_detect.py list --limit 20 ``` ## 输出契约 每个 provider 都必须返回匹配此 schema 的 JSON: ``` { "answer": "Yes | No | Cannot determine", "reasoning": "string", "evidence": ["string"] } ``` 应用程序会在受支持的情况下要求每个 provider 提供结构化的 JSON,然后使用 Pydantic 验证返回的文本。无效或不完整的输出将被拒绝,而不是被静默保存。 ## 验证 ``` python -m pytest python -m black --check . python -m pip_audit -r requirements.txt ``` ## 项目结构 ``` . |-- config.py |-- genocide_detect.py |-- requirements.txt |-- requirements-dev.txt |-- src/ | |-- gpt.py | |-- llm_providers.py | |-- schemas.py | |-- system_prompt.py | |-- youtube_metadata.py | `-- youtube_transcript.py `-- tests/ ```
标签:AI风险缓解, DLL 劫持, Petitpotam, Python, 命令控制, 大语言模型, 安全规则引擎, 数据采集, 文本分析, 无后门, 舆情分析, 逆向工具