Skip to content

ivanyinjc-blip/ai-trend-radar

Repository files navigation

AI Trend Radar 🛰️

一个开箱即用的 AI / 科技趋势雷达 — 自动聚合 14 个国内外平台热榜,LLM 智能过滤 + 话题自动关联,聚焦"对从业者真正有用"的内容。

Status License Python FastAPI


✨ 这是什么

你可能用过 trendradar 这类热榜聚合项目,但它的问题是:

  • 信息噪音大 — 微博热搜、娱乐八卦、明星八卦混在一起
  • 需要人工过滤 — 凑合看一下午也筛不出几篇值得读的
  • 没有主题沉淀 — 看完就忘,没法"按话题回看"

AI Trend Radar 重新设计了三个关键环节:

  1. 多源采集 — 一次拿全 14 个平台当日热榜 (知乎/微博/B 站/小红书/即刻/GitHub/Hacker News/Product Hunt/Twitter/36 氪/AI Base/抖音/视频号)
  2. 三层智能过滤 — 黑名单(体育/娱乐) → 白名单(AI/编程) → LLM 灰区二判,只留真正相关的内容
  3. 话题自动关联 — 新帖入库时按关键词规则 + 分类 fallback 自动挂到对应话题,不再"看完即焚"

额外能力:

  • 🎬 多平台字幕提取 (B 站 / YouTube / 抖音 / 视频号 / 西瓜 / 微博视频)
  • 🔍 字幕全文搜索 — 搜的是"整句话出现过"
  • 🤖 AI 视频摘要 — 字幕太长看不动? 一键 Claude Haiku 总结
  • 🎙️ Whisper ASR — 没字幕的视频也能转 (faster-whisper,本地,无云端成本)

🚀 快速开始

1. 拉代码 + 装依赖

git clone https://github.com/yourname/ai-trend-radar.git
cd ai-trend-radar
cd backend
pip install -r requirements.txt

字幕提取需要 opencli (推荐) 或 yt-dlp + ffmpeg
ASR 额外需要 faster-whisper (首次会下载 ~150MB 模型)

2. 启动

cd ..
bash run.sh

输出:

════════════════════════════════════════════
 AI Trend Radar — 启动
 数据库:  .../data/trendradar.db
 后端:   http://127.0.0.1:8000
 前端:   http://127.0.0.1:8080
════════════════════════════════════════════

浏览器打开 http://127.0.0.1:8080

3. 第一次采数据

后端启动时会自动跑一次全量采集,30 分钟后会再跑。也可以手动触发:

curl -X POST 'http://127.0.0.1:8000/admin/scheduler/trigger?job=collect_all'

🧱 架构

┌─────────────────┐
│  14 个平台采集器  │  zhihu / weibo / bilibili / xiaohongshu /
│  (collectors/)  │  github / hn / ph / twitter / jike / ...
└────────┬────────┘
         │ RawPost
         ▼
┌─────────────────┐
│  三层内容过滤    │  blacklist → whitelist → LLM 二判
│ (content_filter)│
└────────┬────────┘
         │ 留 ~83% 内容
         ▼
┌─────────────────┐
│  SQLite (WAL)   │  posts / topics / post_topics /
│                 │  subtitles / post_metrics_history
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  FastAPI 后端   │  /api/v1/{trending, topics, post, search, ...}
│    (main.py)    │  /admin/scheduler/trigger
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  静态前端       │  index.html (单文件,无构建)
│ (index.html)    │
└─────────────────┘

辅模块:
  - topic_linker.py        新帖自动挂话题
  - relevance_judge.py     LLM 灰区二判 (OpenAI / Anthropic 兼容)
  - subtitle_extractor.py  多平台字幕提取
  - asr_engine.py          Whisper ASR
  - video_summarizer.py    Claude Haiku 视频摘要

🔌 关键 API

端点 说明
GET /api/v1/trending 热榜 (?limit=20&range=7d&platform=zhihu&topic=llm)
GET /api/v1/topics 话题列表 (含本周新帖数)
GET /api/v1/post/{id} 单帖详情
GET /api/v1/search?q=... 全文搜索
GET /api/v1/stats 全局统计
POST /api/v1/subtitle/extract 提取视频字幕 (B 站/YouTube/抖音/视频号/...)
POST /api/v1/subtitle/asr 上传视频/音频 → Whisper 转写
POST /api/v1/subtitle/summarize 字幕 → Claude Haiku 摘要
GET /api/v1/subtitle/search 字幕全文搜索
POST /admin/scheduler/trigger 手动触发采集/关联任务

完整文档: 启动后 http://127.0.0.1:8000/docs


⚙️ 配置

后端读取环境变量:

TR_DB_PATH=...                 # 数据库路径
OPENAI_API_KEY=sk-...          # LLM 过滤 / 摘要 (OpenAI 兼容,含 DeepSeek)
ANTHROPIC_AUTH_TOKEN=sk-ant-.. # 备选:Anthropic 兼容代理
LLM_BASE_URL=https://...       # 自定义 OpenAI 兼容 base
SUMMARY_MODEL=deepseek-chat    # 摘要模型
WHISPER_MODEL=base             # tiny/base/small/medium/large-v3
WHISPER_DEVICE=cpu
WHISPER_COMPUTE=int8
OPENAPI_RATE_PER_MIN=1000      # 单 IP 限速

各平台 Cookie / Token 写在 collectors/*enabled_from_env() 读取 (参考 registry.py)。


🧪 测试

cd tests
python test_sanity.py

压测记录见 CHANGELOG.md:

  • 100 并发 trending: 100% 成功
  • 30s 持续负载: 24 req/s, 0 错误
  • 60s 持续负载: 内存 Δ=0KB, 无泄漏

🛣️ Roadmap

  • v1.0: 多源采集 + 三层过滤 + 话题关联 (本版本)
  • v1.1: 视频封面 OCR / 关键帧截取
  • v1.2: RSS 订阅导出
  • v1.3: 多用户 + API key 鉴权
  • v2.0: 向量检索 (按"主题相似度"找内容)

🤝 贡献

欢迎 PR / Issue。小而美 是我们的开发原则 — 在动键盘前先开 issue 讨论,避免重复造大而全的轮子。


📄 License

MIT — 详见 LICENSE

🙏 致谢

About

A ready-to-run AI / tech trend radar — aggregates trending posts from 14 platforms, filters intelligently with LLM, and auto-links to topics.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages