NullRoutedSec/info_sec_news
GitHub: NullRoutedSec/info_sec_news
基于 Next.js 与 Gemini AI 的网络安全情报聚合面板,自动从多源抓取安全新闻与 CVE 数据并生成每日威胁简报。
Stars: 0 | Forks: 0
# INFOSEC_NEWS
**🔗 在线演示:https://info-sec-news.vercel.app**
专为安全专业人员及爱好者打造,将威胁情报像 SOC 简报一样直接送达——而非千篇一律的普通新闻流。
## 功能简介
- **聚合** 6 大来源的网络安全新闻(Krebs on Security、BleepingComputer、The Hacker News、Dark Reading、r/netsec、r/cybersecurity)
- **AI 增强** 每篇文章,提供 TL;DR 摘要、威胁评分(1-100)、相关性评分、分类以及所属国家检测
- **追踪 CVE**(来自 NIST NVD)并标记 CISA KEV 目录中被活跃利用的漏洞
- **生成每日情报简报**,采用 CISO 风格的情报报告格式
- **可视化全球威胁态势**,在动态世界地图上为每个国家显示闪烁的标记,并按严重程度进行颜色编码
- **CRT 终端美学**,包含磷光绿文本、扫描线、故障效果和闪烁光标 —— 可切换至简洁的企业模式
## 技术栈
| 层级 | 选择 |
|---------------|------------------------------------------|
| 框架 | Next.js 16 (App Router) |
| 语言 | TypeScript |
| 样式 | Tailwind CSS v4 |
| 数据库 | Supabase (Postgres) |
| AI | Google Gemini API (免费层) |
| 可视化 | D3.js + world-atlas topojson |
| 托管 | Vercel (内置 cron) |
## 架构
```
RSS / Reddit feeds ──┐
├──> /api/ingest ──> Supabase (articles)
│ │
NIST NVD ────────────┤ ├──> /api/enrich ──> Gemini AI
CISA KEV ────────────┤ │ (summary, scores, country)
└──> /api/cve ──> Supabase │
(cves) ├──> /api/briefing
│ (daily intel report)
▼
Next.js pages (SSR + ISR)
```
- **API 路由是只写 pipeline** —— 由 Vercel Cron 触发,绝不会被 UI 调用
- **页面直接从 Supabase 读取数据**(在 Server Components 中)
- **每篇文章仅需单次 AI 调用**,即可在一次结构化请求中返回摘要 + 评分 + 分类 + 国家信息
## 项目结构
```
src/
├── app/ # Pages and API route handlers
│ ├── page.tsx # Homepage (world map + paginated feed)
│ ├── cves/ # CVE Spotlight
│ ├── briefing/ # Daily intelligence briefing
│ └── api/
│ ├── ingest/ # RSS + Reddit ingestion (cron)
│ ├── enrich/ # AI enrichment (cron)
│ ├── cve/ # NVD + KEV ingestion (cron)
│ └── briefing/ # Daily briefing generation (cron)
├── components/
│ ├── crt/ # CRT aesthetic primitives
│ ├── feed/ # Article cards, list, filters, pagination
│ ├── cve/ # CVE cards, severity badges
│ ├── viz/ # WorldThreatMap (D3)
│ ├── briefing/ # Briefing renderer
│ └── layout/ # Nav, theme toggle
├── lib/
│ ├── supabase/ # Browser, server, admin clients
│ ├── feeds/ # RSS parser, Reddit fetcher, source registry
│ ├── ai/ # Gemini client, enrichment, briefing prompts
│ └── cve/ # NVD + KEV API clients
└── styles/
└── globals.css # Tailwind v4 theme + CRT animations
```
## 本地运行
### 前置条件
- Node.js 20+
- 一个免费的 Supabase 项目 — https://supabase.com
- 一个免费的 Google Gemini API 密钥 — https://aistudio.google.com/app/apikey
### 设置
```
# 1. 克隆并安装
git clone https://github.com/NullRoutedSec/info_sec_news.git
cd info_sec_news
npm install
# 2. 配置环境变量
cp .env.local.example .env.local
# 然后使用你的 Supabase + Gemini 凭证编辑 .env.local
# 3. 在你的 Supabase SQL Editor 中运行数据库 migrations
# 查看 supabase/migrations/ 获取 SQL 文件
# 4. 启动 dev server
npm run dev
```
### 手动触发数据 pipeline
```
# 从 RSS + Reddit 获取文章
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/ingest
# 使用 AI 丰富文章内容(节奏适用于 free-tier 限制)
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/enrich
# 从 NIST + CISA KEV 拉取 CVE
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cve
# 生成今日简报
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/briefing
```
## 环境变量
| 变量 | 用途 |
|-----------------------------------------|------------------------------------------|
| `NEXT_PUBLIC_SUPABASE_URL` | Supabase 项目 URL |
| `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` | Supabase 可发布(anon)key |
| `GEMINI_API_KEY` | 用于 AI 增强的 Google Gemini API key |
| `CRON_SECRET` | 保护 cron 路由的 Bearer token |
## 部署
可顺利部署至 Vercel。`vercel.json` 文件定义了四个 cron 任务:
| 路径 | 计划任务 | 功能描述 |
|-----------------|-------------------------|-----------------------------------------|
| `/api/ingest` | 每 2 小时 | 从所有来源获取最新文章 |
| `/api/enrich` | 每 2 小时(错开执行) | 对新文章进行 AI 增强 |
| `/api/cve` | 每天 UTC 时间 06:00 | 从 NIST + CISA KEV 获取 CVE |
| `/api/briefing` | 每天 UTC 时间 08:00 | 生成每日情报报告 |
## 设计说明
- **CRT 美学是通过 CSS 叠加实现的,而非基于单个组件。** 扫描线、闪烁和磷光效果是由主题切换的全局效果 —— 组件仅使用设计 token。
- **不使用红色。** 配色方案有意避免使用红色来表示严重程度。真正的绿色磷光终端从来没有红色,因此威胁程度的升级是通过 绿色 → 黄色 → 琥珀色 → 橙色 来体现的。这样更简洁,也更原汁原味。
- **URL 是文章收录的去重键** —— 简单、可靠,能处理跨来源的重复内容。
- **AI 分批次运行并带有明确节奏**,以确保安全地保持在 Gemini 免费层的速率限制内。
## 许可证
MIT — 随意学习、fork 或在此基础上进行开发。
标签:CVE跟踪, DLL 劫持, 大语言模型, 威胁情报, 开发者工具, 新闻聚合, 网络安全, 自动化攻击, 隐私保护