clivoa/S33R
GitHub: clivoa/S33R
一个完全无服务器化的网络安全新闻聚合与分析平台,基于GitHub基础设施自动采集、分类、归档威胁情报并生成趋势分析。
Stars: 1 | Forks: 1
# S33R 安全新闻源
[](https://github.com/clivoa/S33R/actions/workflows/update_news_json.yml)
[](https://github.com/clivoa/S33R/actions/workflows/build_news_archive.yml)
[](LICENSE)

一个完全自动化、对开源友好的**网络安全新闻聚合、标准化、归档和分析平台**,旨在完全在 **GitHub Pages** + **GitHub Actions** 上运行,无需服务器或数据库。
S33R 从数百个 RSS 源收集内容,使用 Smart Groups 对其进行分类,构建趋势分析,生成历史归档,并为分析师、研究人员和 OSINT 从业者提供多个前端仪表板。
## 📌 概述
S33R 提供:
- 由预构建 JSON 缓存支持的快速、可过滤的**新闻看板 (News Board)**
- 用于高信噪比分组的 **Smart Group 分类**
- **精选情报标记**
- **趋势分析**(关键词、供应商、行为者时间线、CVE、日产量)
- **历史归档引擎**(月度 + 年度 JSON)
- **信号过滤的月度包**
- 可选的**自动简报生成**(LLM 无关)
- 100% 兼容 GitHub Pages 的静态部署
该系统的目标用户:
- 网络安全分析师
- 威胁情报团队
- 研究人员和教育工作者
- OSINT 从业者
- 社区威胁监控项目
## 🏗 架构概览
```
RSS Feeds → Python ETL → JSON Datasets → GitHub Pages → Dashboards (HTML/JS)
```
### 组件
- Python 数据摄取与数据处理
- GitHub Actions(自动化与调度)
- `data/` 下的静态 JSON 数据集
- 使用 HTML + JavaScript + Canvas 构建的仪表板
所有功能均在无服务器或数据库的情况下交付。
## 🔁 数据流
```
sec_feeds.xml
↓
build_news_json.py
↓
data/news_recent.json
↓
index.html dashboard
↓
build_news_archive.py → monthly/yearly archive + signal-filtered packs
↓
build_trends_json.py → data/trends.json
↓
trend.html analytics dashboard
```
可选:
```
curated items → build_morning_call.py → morning_call JSON → morning.html
```
## 高层架构
```
flowchart LR
A[RSS Feeds] --> B[build_news_json.py]
B --> C[data/news_recent.json]
C --> D[index.html Dashboard]
C --> E[build_news_archive.py]
E --> F[data/archive/monthly & yearly]
C --> G[build_trends_json.py]
G --> H[data/trends.json]
H --> I[trend.html Dashboard]
C --> J[Optional: build_morning_call.py]
J --> K[data/morning_call_latest.json]
K --> L[morning.html]
```
## ETL 流水线概览
```
sequenceDiagram
participant FEEDS as RSS Feeds
participant INGEST as build_news_json.py
participant RECENT as news_recent.json
participant ARCH as build_news_archive.py
participant TRENDS as build_trends_json.py
FEEDS->>INGEST: Fetch + normalize entries
INGEST->>RECENT: Write JSON (smart groups, curated)
RECENT->>ARCH: Merge into monthly/yearly archives
RECENT->>TRENDS: Compute trends (keywords, CVEs, actors)
```
## 前端渲染流程
```
flowchart TD
A[index.html] --> B[Fetch news_recent.json]
B --> C[Render smart groups]
C --> D[Infinite scroll + filters]
E[trend.html] --> F[Fetch trends.json]
F --> G[Render charts - ChartJS]
```
## 📦 JSON 输出
### 🔹 `data/news_recent.json`
包含经过增强的标准化条目:
- 元数据 (`generated_at`, `days_back`, `total_items`)
- smart groups
- curated 标记
### 🔹 `data/archive/*`
- 月度和年度 JSON 归档
- 信号过滤的月度包
### 🔹 `data/trends.json`
保存以下数据:
- 日产量
- smart group 分布
- 热门关键词
- 供应商活动
- CVE 出现情况
- 威胁行为者时间线
## 🧠 Smart Groups 分类引擎
在摄取时应用的关键词驱动分组:
- 勒索软件
- CVE / 漏洞
- 漏洞利用 / PoC
- 威胁行为者
- 云安全
- 特定供应商类别 (Microsoft, Cisco, Palo Alto, CrowdStrike…)
- Crypto / Web3
- 恶意软件家族
- 供应链 / 软件组件
- 初始访问技术
这些类别同时支持新闻看板和趋势分析。
## 🎯 精选情报层
S33R 包含一个启发式系统,当条目匹配高信号模式时将其标记为 **curated**(精选):
- 0-day 漏洞
- 在野利用
- 勒索软件组织公告
- 供应链入侵
- 大规模网络攻击
- 云/SaaS 泄露报告
精选条目可选择由自动简报生成器使用。
## 📊 趋势分析 (trend.html)
由 `scripts/build_trends_json.py` 生成的趋势分析包括:
- 每日新闻量时间线
- 每个时间窗口的热门类别 (smart groups)
- 热门关键词(经过停用词过滤)
- 供应商活动
- 热门安全术语
- CVE 出现排名
- 威胁行为者每日时间线
支持的时间窗口:
- 过去 24 小时
- 过去 7 天
- 过去 30 天
- 过去 90 天
切换窗口时,仪表板会动态更新图表。
## 🖥 仪表板
### 📰 `index.html`
- 实时搜索(随打随搜)
- Smart group 和类别过滤器
- 无限滚动
- 显示生成元数据
### 📚 `archive.html`
- 浏览月度和年度归档
- 搜索历史数据
- 按来源对条目分组
### 📈 `trend.html`
- Chart.js 可视化
- 时间窗口选择器
- 对供应商、行为者、CVE、关键词的洞察
### ☀️ `morning.html`(可选)
展示由用户选择的 LLM 生成的可选每日简报。
默认不需要 AI 提供商。
## 🤖 可选:自动早报(LLM 无关)
S33R 支持一个可选模块,用于生成**网络安全每日简报**。
- 默认禁用
- 适用于**任何** LLM 提供商(OpenAI, Anthropic, Gemini, 本地模型等)
- 开发者定义角色、结构、语气和摘要规则
- 对研究、通讯或自动报告工作流友好
输出:
```
data/morning_call_latest.json
data/archive/morning_call_YYYY-MM-DD.json
data/archive/morning_call///morning_call_YYYY-MM-DD.json
```
示例工作流使用如下环境变量:
```
# 可选
# LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
# LLM_MODEL: "provider/model-name"
```
## ⚙ GitHub Actions 自动化
### `update_news_json.yml`(每小时)
- 构建 `news_recent.json`
- 创建信号过滤的 promo 片段
### `build_news_archive.yml`(每日)
- 更新月度和年度归档
- 合并信号过滤的包
- 重建 `trends.json`
### `morning_call.yml`(可选)
- 如果已配置,运行基于 LLM 的 SOC 早报
所有工作流均使用标准 GitHub Actions 运行器运行。
## 📁 项目结构
```
S33R/
│
├── index.html
├── archive.html
├── archive-overview.html
├── trend.html
├── morning.html # Optional morning call UI
├── _config.yml
├── _config.local.yml # Local-only override (not for production)
├── Gemfile
├── Gemfile.lock
│
├── styles.css
├── ui.js
│
├── data/
│ ├── news_recent.json
│ ├── trends.json
│ ├── morning_call_latest.json
│ └── archive/
│ ├── yearly/
│ ├── monthly/
│ ├── morning_call/
│ └── promo/
│ └── monthly/
│
├── scripts/
│ ├── build_news_json.py
│ ├── build_news_archive.py
│ ├── build_trends_json.py
│ └── build_morning_call.py # Optional LLM SOC brief
│
├── sec_feeds.xml
│
└── .github/
└── workflows/
├── update_news_json.yml
├── build_news_archive.yml
└── morning_call.yml # Optional
```
## 🧪 本地开发
克隆:
```
git clone https://github.com/clivoa/S33R.git
cd S33R
```
手动运行流水线:
```
python scripts/build_news_json.py
python scripts/build_news_archive.py
python scripts/build_trends_json.py
# 可选:
# python scripts/build_morning_call.py
```
安装 Jekyll 依赖:
```
bundle install
```
使用 Jekyll 本地服务(处理如 `{{ ... | relative_url }}` 等 Liquid 标签所需):
```
bundle exec jekyll serve --config _config.yml,_config.local.yml
```
打开:
```
http://127.0.0.1:4000/
```
注意:
- 请勿对此项目根目录使用 `python -m http.server`,因为它无法渲染 Jekyll/Liquid 模板。
- `_site/` 仅为构建输出,不应被提交。
## 🧠 示例用例
- OSINT 监控
- 网络安全研究
- CVE/漏洞利用追踪
- 供应商公告分析
- 社区威胁仪表板
- 自动通讯
- 历史数据集构建
## 🛣 路线图
- 基于 ML 的源质量评分
- 自动主题聚类
- 行为者/CVE 关联热力图
- 书签和已保存过滤器
- 多租户源配置
- 可导出快照 (PDF/MD)
## 📜 许可证
MIT — 可免费用于个人、商业或研究用途。
**S33R — 开放网络威胁情报,自动化且触手可及。**
标签:ESC4, ETL, GitHub Actions, Github Pages, HTTP/HTTPS抓包, JavaCC, OSINT, Python, RSS订阅, 代码示例, 信息聚合, 后端开发, 后端开发, 后端开发, 多模态安全, 威胁情报, 安全运营, 开发者工具, 态势感知, 情报收集, 扫描框架, 数据分析, 数据可视化, 新闻聚合, 无后门, 漏洞研究, 网络安全, 网络调试, 自动化, 自动笔记, 逆向工具, 隐私保护, 静态网站