michaelskenney/cyber-brief
GitHub: michaelskenney/cyber-brief
自动化网络威胁情报仪表板,每 12 小时从 26 个权威来源聚合安全事件,借助 Claude AI 生成结构化可筛选的威胁简报,无需服务器和数据库。
Stars: 0 | Forks: 0
# 每日网络威胁简报
**实时仪表板:** [michaelskenney.github.io/cyber-brief](https://michaelskenney.github.io/cyber-brief/)
一个自动化网络威胁情报仪表板,每 12 小时从 26 个经过审查的来源汇总事件。无服务器,无数据库——仅包含本地管道和静态 GitHub Pages 前端。
专为需要简明、可筛选的隔夜事件视图的安全负责人构建,无需登录大量门户网站。
## 工作原理
```
sources.json (26 approved sources)
│
▼
fetch.py ← Exa REST API pulls articles from each source domain
│
▼
data/raw/{date}/ ← Raw content saved locally (one JSON per source)
│
▼
Claude Code CLI ← Reads raw content, deduplicates, writes structured brief.json
│
▼
publish.sh ← git commit + push to GitHub
│
▼
GitHub Pages ← docs/index.html reads brief.json, renders filterable dashboard
```
管道通过 `run_pipeline.sh` 运行,并通过 macOS `launchd` 安排在每天中午和午夜执行。
## 仪表板功能
- 包含 8 列的深色主题可筛选表格:Date(日期)、Victim(受害者)、Industry(行业)、Attacker(攻击者)、Motivation(动机)、Attack Vector(攻击媒介)、Impact(影响)、Ongoing(是否持续)
- 严重性筛选器:All(全部) / Critical(严重) / High(高) / Medium(中) / Low(低)
- 颜色编码的攻击者来源(Russia(俄罗斯)、Iran(伊朗)、China(中国)、North Korea(朝鲜)、Criminal(犯罪分子)、Unknown(未知))
- 动机标签(Financial(经济利益)、Espionage(间谍活动)、Disruption(破坏)、IP Theft(知识产权窃取)、Political(政治目的)、Unclear(不明确))
- 每 60 秒自动刷新;状态指示器显示数据新鲜度
- 简明的执行语言——不使用供应商代号或术语
## 情报来源
内容仅从 `sources.json` 中定义的 26 个已批准域名获取:
| Category(类别) | Sources(来源) |
|---|---|
| **行业 / 威胁情报** | CrowdStrike, Google/Mandiant, Unit 42, Microsoft MSTIC, Cisco Talos, Recorded Future, Dark Reading, Krebs on Security |
| **美国政府** | CISA, FBI (IC3), DOJ, Treasury/OFAC, FinCEN, NSA |
| **盟国政府** | UK NCSC, Australia ACSC, EU ENISA |
| **监管机构** | SEC EDGAR (8-K Item 1.05), SEC Enforcement, NYDFS Enforcement |
| **新闻** | Reuters, Bloomberg, The Record |
| **受信任的声音** | Risky Business, SANS ISC, CyberScoop |
## 设置
### 1. 克隆并安装
```
git clone https://github.com/michaelskenney/cyber-brief.git
cd cyber-brief
pip install -r requirements.txt
```
### 2. 配置环境
```
cp .env.example .env
```
编辑 `.env` 并添加:
| 变量 | 必填 | 用途 |
|---|---|---|
| `EXA_API_KEY` | 是 | 用于获取阶段的 [Exa API](https://exa.ai/) 密钥 |
| `GMAIL_USER` | 否 | 用于管道通知的 Gmail 地址 |
| `GMAIL_APP_PASSWORD` | 否 | Gmail [应用密码](https://myaccount.google.com/apppasswords) |
| `NOTIFY_EMAIL` | 否 | 接收成功/失败邮件的收件人 |
Claude Code 处理其自身的身份验证——主管道无需 Anthropic API 密钥。
### 3. 启用 GitHub Pages
1. 前往你的代码库 **Settings > Pages**
2. Source(来源):**Deploy from a branch**
3. Branch(分支):`main` / 文件夹:`/docs`
4. 保存
### 4. 运行管道
```
./run_pipeline.sh
```
这将从所有来源获取数据,使用 Claude Code 进行分析,并将结果推送到 GitHub Pages。
### 5. 安排自动运行(可选)
```
cp com.cyberbrief.refresh.plist ~/Library/LaunchAgents/
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.cyberbrief.refresh.plist
```
## 运行各个阶段
```
# 仅 Fetch
python3 fetch.py
# Fetch 特定日期
python3 fetch.py --date 2026-03-20
# 仅 Analyze(需要先前 Fetch 的原始数据)
DATE=$(date -u '+%Y-%m-%d')
claude -p "$(sed "s/{{DATE}}/$DATE/g" analyze_prompt.md)" --allowedTools Read,Write,Edit,Glob
# 仅 Publish
./publish.sh
# 在本地 Serve dashboard
cd docs && python3 -m http.server 8080
```
## 项目结构
```
cyber-brief/
├── fetch.py # Stage 1: Exa content retrieval
├── analyze_prompt.md # Stage 2: Claude Code analysis prompt
├── publish.sh # Stage 3: git commit + push
├── run_pipeline.sh # Pipeline orchestrator
├── sources.json # Approved source list (single source of truth)
├── requirements.txt # Python dependencies
├── .env.example # API key template
├── generate_brief.py # Legacy: Anthropic API fallback (GitHub Actions)
├── tests/
│ └── test_fetch.py # Unit tests for fetch.py
├── data/
│ ├── raw/{date}/ # Raw fetched content (local, gitignored)
│ └── logs/ # Pipeline logs (local, gitignored)
├── docs/
│ ├── index.html # Dashboard frontend (GitHub Pages)
│ └── data/
│ ├── brief.json # Generated incident data
│ └── usage_log.jsonl # Per-run usage tracking
├── .github/workflows/
│ └── refresh_brief.yml # Manual-trigger fallback (GitHub Actions)
└── com.cyberbrief.refresh.plist # macOS launchd schedule
```
## GitHub Actions 备用方案
如果本地管道不可用,可以通过 GitHub Actions 将 `generate_brief.py` 脚本(使用 Anthropic API + 网络搜索)作为手动备用方案。需要设置 `ANTHROPIC_API_KEY` GitHub 机密。
## 测试
```
python3 -m pytest tests/ -v
```
标签:CISO, Claude, CSO, Cutter, CVE检测, DLL 劫持, DNS解析, GitHub Pages, JSON, launchd, Mutation, Python, REST API, RuleLab, URL抓取, 仪表盘设计, 分析报告, 前端渲染, 可视化, 大语言模型, 威胁情报, 威胁聚合, 安全事件, 安全仪表盘, 安全响应, 安全资讯, 安全运营, 开发者工具, 开源项目, 扫描框架, 攻击向量, 敏捷开发, 数字取证, 数据去重, 数据抓取, 数据管道, 无后门, 无数据库, 无服务器, 暗黑模式, 每日安全简报, 结构化数据, 网络安全, 自动化情报, 自动化脚本, 行业分类, 软件工程, 逆向工具, 隐私保护, 静态网站