bwagene1/threatwatch-iran-monitor
GitHub: bwagene1/threatwatch-iran-monitor
这是一个面向企业安全团队的自动化开源情报简报生成流水线,每天从权威媒体获取资讯并利用 Claude AI 生成结构化分析报告。
Stars: 0 | Forks: 0
# ThreatWatch: 伊朗冲突监控
**自动化每日 OSINT 情报简报流水线 — Operation Epic Fury**
每天早上获取 T1/T2 开源情报来源,调用 Claude AI 生成结构化情报简报,运行 QC 审计,并导出可直接交付的 DOCX、PDF、HTML 和 Markdown 格式 — 此外还包括实时 Web 仪表板以及可选的客户端邮件投递。
这是为 [ThreatWatch AI](https://wagenerframeworks.com) 提供支持的流水线,这是一项面向企业安全团队的商业威胁情报订阅服务。
## 产出内容
每次运行输出:
| 格式 | 位置 | 用途 |
|--------|----------|-----|
| DOCX | `output/docx/` | 样式化的 Word 文档 — 封面页、彩色标注框、表格 |
| PDF | `output/pdf/` | 通过 WeasyPrint 生成的可共享客户端就绪 PDF |
| HTML | `output/html/` | 自包含的 HTML 简报,无 CDN 依赖 |
| Markdown | `output/md/` | 存档副本,可搜索 |
| JSON | `output/json/` | 结构化简报 + OSINT 包 + QC 报告 |
| 仪表板 | `dashboard/` | 静态 Web 仪表板,自动加载最新简报 |
## 流水线架构
```
┌─────────────────────────────────────────────────────────┐
│ OSINT Fetch — T1/T2/T3 RSS + HTTP (feedparser) │
│ CENTCOM · White House · Pentagon · Reuters · AP · CNN │
│ Military Times · Breaking Defense · The War Zone │
│ CSIS · Defense One · SOF News · CISA advisories │
└────────────────────────┬────────────────────────────────┘
│ relevance filter + dedup
▼
┌─────────────────────────────────────────────────────────┐
│ Claude AI Brief Generation │
│ Structured JSON schema: cfg · execSummary · sections │
│ scorecard · actions · sourceRegistry · sourcesAppendix│
└────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Multi-format Export │
│ DOCX (Node.js renderer) · PDF · HTML · Markdown │
└────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ QC Sub-agent │
│ Schema · content quality · file checks · source rules │
│ Blocks delivery on failure │
└────────────────────────┬────────────────────────────────┘
│ --deliver flag only
▼
Email delivery to client list
```
## 快速开始
```
git clone https://github.com/bwagene1/threatwatch-iran-monitor
cd threatwatch-iran-monitor
cp .env.example .env # fill in your ANTHROPIC_API_KEY
bash setup.sh
python3 pipeline.py
```
试运行(无 API 调用,使用存根简报):
```
python3 pipeline.py --dry-run
```
## 配置
`.env` 密钥(从 `.env.example` 复制):
```
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-sonnet-4-6
```
### DOCX 渲染器
DOCX 输出需要 Node.js 渲染器(`brief-system/`)。如果您单独克隆了此仓库,请执行以下操作之一:
- 在 `.env` 中设置 `TW_RENDERER_DIR=/path/to/brief-system`,或者
- 跳过 DOCX — PDF、HTML 和 Markdown 仍可在没有它的情况下生成
渲染器位于父级 `threatwatch-ai` 仓库中。
### Prompt 文件
`prompts/brief_writer_system.md` — 定义简报 schema 的 Claude 系统 prompt
`prompts/brief_starter.json` — JSON schema 模板
您可以通过在 `.env` 中设置 `TW_BRIEF_PROMPT` 和 `TW_BRIEF_STARTER` 来替换为您自己的文件。
## 仪表板
```
python3 -m http.server 8755
# 打开 http://localhost:8755/dashboard/
```
显示最新简报、过去 7 天的历史记录以及所有导出格式的链接。
## Cron 设置(每天早上 6 点)
```
crontab -e
# 添加:
0 6 * * * /path/to/threatwatch-iran-monitor/run.sh
```
## 邮件投递
1. 设置 Gmail 应用专用密码:[myaccount.google.com/apppasswords](https://myaccount.google.com/apppasswords)
2. 将 `SMTP_*` 密钥添加到 `.env`(参见 `.env.example`)
3. 编辑 `clients.json` 以添加您的客户端列表
4. 运行并投递:
```
python3 pipeline.py --deliver
```
## QC Agent
每次运行在记录成功之前都会由 `qc_agent.py` 进行审计:
- **Schema:** 执行摘要顺序、记分卡行数(8–12)、actions 结构、源注册表
- **内容:** 无占位符文本、日期正确、无空文本字段
- **源规则:** 仅限 T4 的声明上限为 LOW 置信度;至少有 3 个 HIGH 置信度的声明
- **文件检查:** DOCX > 10KB,PDF > 20KB,HTML > 2KB,Markdown > 500 字符
退出码 0 = 所有关键检查通过。退出码 1 = 阻止投递,提醒操作员。
## 项目结构
```
threatwatch-iran-monitor/
├── pipeline.py # Main orchestrator
├── fetch_osint.py # T1/T2/T3 OSINT fetcher (RSS + HTTP)
├── generate_brief.py # Claude API → structured brief JSON
├── html_renderer.py # Brief JSON → styled self-contained HTML
├── pdf_exporter.py # HTML → PDF (WeasyPrint)
├── md_exporter.py # Brief JSON → Markdown
├── qc_agent.py # QC audit sub-agent
├── product_sheet.py # Generates product one-pager PDF
├── common.py # Shared constants and utilities
├── prompts/
│ ├── brief_writer_system.md # Claude system prompt / brief schema
│ └── brief_starter.json # JSON schema template
├── dashboard/
│ └── index.html # Static web dashboard
├── output/ # Generated files (gitignored)
├── logs/ # Pipeline logs (gitignored)
├── clients.json # Client delivery list (sample)
├── setup.sh # One-time installer
├── run.sh # Cron-safe wrapper
└── .env.example # Config template
```
## 依赖项
- Python 3.10+:`anthropic`、`python-dotenv`、`feedparser`、`requests`、`weasyprint`
- Node.js(可选,用于 DOCX 输出)
安装:`bash setup.sh`
## 构建者
Brandon Wagener — 陆军退伍军人(第 173 空降旅,情报分析师)、安全运营专业人员、W.P. Carey 商业人工智能硕士候选人、Wagener Framework LLC 创始人。
- GitHub:[@bwagene1](https://github.com/bwagene1)
- ThreatWatch AI 服务:[wagenerframeworks.com](https://wagenerframeworks.com)
*仅限开源情报。不得重新分发简报内容。本工具及其输出仅供参考。ThreatWatch AI 是 Wagener Framework LLC 的产品。*
标签:AIGC, Claude AI, DOCX, ESC4, Feedparser, HTML, Markdown, MITM代理, OSINT, PDF, Python, RSS订阅, T1/T2情报源, WeasyPrint, Web仪表盘, 人工智能, 企业安全, 去重算法, 地缘政治监控, 威胁情报, 安全运营, 开发者工具, 情报简报, 扫描框架, 数据处理流水线, 文档生成, 无后门, 用户模式Hook绕过, 网络调试, 网络资产管理, 自动化, 质量控制, 逆向工具, 邮件投递, 静态网站