Case Study
AI News Radar:用异构双引擎构建抗脆弱的情报系统
异构双引擎(FastAPI + Coze)· Make.com 中枢调度 · Notion Headless CMS · Next.js 实时渲染
🌍 Situation|背景与困境
作为一名深耕 Agentic Workflow 的 AI 产品经理,对前沿技术的敏锐嗅觉是我的核心竞争力。但 2026 年的 AI 资讯环境让「保持敏锐」变得极其昂贵:
- 信息碎片化加剧:真正的 Alpha 信号分散在 X 上 10 位 KOL 的零散动态、Hacker News 的长篇技术辩论、Polymarket 的预测市场、YouTube 长视频字幕、以及中英文科技媒体之间。
- 工具链两极分化:传统 RSS 只能搬运,缺乏语义理解;AI 聚合产品(Bensbites、Smol AI 等)口径偏英文、更新频次固定、无法个性化。
- 单点风险:任何一个「一体化」方案都是脆弱的——API 限流、平台宕机、网络封锁,都会让情报链断流。
核心痛点
每天花 30-40 分钟人工巡逻 5-6 个信息源,仍然会错过关键信号。且一旦某天没时间浏览,知识债务会滚雪球式增长。
🎯 Task|目标与约束
构建一个完全自动化、抗单点故障、中英文双语、每日高频更新的个人 AI 情报系统。
硬性目标
- 日均采集 30+ 条高信噪比资讯
- 100% 自动化,零人工干预
- 中文摘要(DeepSeek 级质量)
- 每日至少 2 次主动更新,而非被动等待
- 前端即时可见(< 2 分钟数据时延)
软性约束
- 运维成本 < $1/月
- 代码可迭代(区别于纯 SaaS 黑盒)
- 能在个人网站上展示代码与无代码两种范式的取舍
最关键的约束:我自己既是开发者又是唯一用户,不能用「团队协作」的方案来绕过真正的技术决策难点。
🛠️ Action|行动方案
第 1 步:识别「不可调和的矛盾」,决定用异构双引擎
在架构设计初期,我先尝试了单一方案——纯 Coze 无代码覆盖全部数据源。结果撞上现实墙:
- YouTube 字幕解析:Coze 在长文本提取时频繁 Timeout
- 评论树遍历:Hacker News 的 500+ 评论线程让 Coze 节点内存溢出
- 防爬虫与 API 成本:X 官方 API 定价飙升至 $5,000/月 量级,无代码平台只能靠 Google Search 间接获取
同时,纯代码方案也不可行——纯 Python 方案开发周期长,无法快速响应「某天想加个新博主」这类需求。
结论:用两套工具各司其职,而不是强行让一种范式覆盖全部需求。
第 2 步:Engine A — 社区共识引擎(Python + FastAPI)
负责:深度与厚度 — 长文本、长字幕、评论树、跨源打分
- 基于开源项目 mvanhorn/last30days-skill 改造为 FastAPI 微服务
- 三源精简:HN / Polymarket / YouTube(字幕级)
- Render Web Service 部署,Make.com 每天 09:30 AM HTTP POST 触发
- LLM 层从 Gemini 切换到 DeepSeek(因部分地区访问 Gemini gRPC 不稳定)
- 每源独立 60 秒超时,单源故障不拖死主管线
关键代码决策
- 修复 SubQuery(frozen dataclass)的 FrozenInstanceError,改为 rebuild 而非原地修改
- 加入 LLM_PROVIDER 环境变量,一键切换 Gemini / DeepSeek / OpenAI(抗供应商锁定)
- 输出严格 JSON Array(字段与下游一致)供 Make.com Iterator 直接消费
Engine A:社区共识(Consensus Layer)
数据源
- Hacker News:前沿讨论 + 顶级评论提取
- Polymarket:预测市场对 AI 事件的下注信号
- YouTube:Matt Wolfe / AI Explained / The Rundown 等头部频道字幕级解析
触发:每日 9:30 AM · Make.com 定时 HTTP POST
与 Engine B 的分工
A 侧扛「厚」任务:长文本、重 IO、确定性超时与重试;B 侧扛「灵」任务:领袖动态、中文媒体、RSS 快讯与快速改 Query。
第 3 步:Engine B — 领袖动态引擎(Coze 工作流)
负责:速度与破壁 — 领袖动态、中文媒体、RSS 快讯
五条并行采集通道
| 通道 | Query | 覆盖 |
|---|---|---|
| X 领袖通道 | (sama OR elonmusk OR karpathy OR ylecun OR AndrewYNg OR DrJimFan OR philschmid OR rohanpaul OR bindureddy OR AravSrinivas) AI site:x.com | 10 位 AI KOL |
| 模型发布通道 | ("GPT-5" OR "Claude" OR "Gemini" OR "Grok" OR "DeepSeek") release site:x.com | 大模型发布事件 |
| 中文媒体通道 | ("DeepSeek" OR "阶跃星辰" OR "大模型发布" OR "通用人工智能") AND (site:36kr.com OR site:geekpark.net OR site:huxiu.com OR site:jiqizhixin.com) | 四大中文科技媒体 |
| YouTube 视频通道 | ("AI news" OR "Sora" OR "GPT" OR "Claude") ("The Rundown AI" OR "AI Explained" OR "Matt Wolfe") | 头部英文频道 |
| RSS 38氪通道 | RSS 监听 + 关键词过滤(放行 AI 关键词、排除汽车/股市噪音) | 中文快讯兜底 |
错峰调度:每天 10:42 AM 定时触发(与 Engine A 的 09:30 错开,降低集中限流风险,上午与中午各有一批新信号)。
清洗层:GPT-4o 统一格式化为与 Engine A 一致的字段结构,实现下游无感知合并。
第 4 步:中枢调度 + 统一存储 + 前端渲染
09:30 AM ──► Engine A (FastAPI) ──┐
├──► Make.com 统一入库 ──► Notion DB ──► Next.js
10:42 AM ──► Engine B (Coze) ─────┘
TimeRange 字段:24h / 周 / 月- Make.com:中枢神经。接收双引擎 JSON Array → Iterator 拆分 → 逐条写入 Notion(URL 去重)
- Notion:Headless CMS。Title / Source / Author / URL / OriginalText / Date / TimeRange 等字段统一建模
- Next.js:个人网站前端直连 Notion API,按 TimeRange 做三级时间切片展示
端到端架构示意
09:30 AM 10:42 AM
| |
v v
+-----------------+ +------------------+
| Make.com 定时 | | Coze 工作流 |
| HTTP POST 触发 | | (5 节点并发) |
+--------+--------+ +--------+---------+
| |
v v
+-----------------+ +------------------+
| FastAPI 微服务 | | GoogleWebSearch |
| (Render 部署) | | YouTube / RSS |
| |- HN 抓取 | | |- X KOL 通道 |
| |- Polymarket | | |- 模型发布通道 |
| '- YouTube 字幕 | | |- 中文媒体通道 |
+--------+--------+ | |- YouTube 通道 |
| | '- RSS 38氪通道 |
+-----------+---------------+--------+---------+
| |
+-----------+------------+
|
v
+----------------------+
| DeepSeek / GPT-4o |
| 双语清洗 + 摘要 |
| + 去重 + 打分 |
+----------+-----------+
|
v
+----------------------+
| Notion Database |
| (Headless CMS) |
| + TimeRange 分级 |
+----------+-----------+
|
v
+----------------------+
| Next.js 前端 |
| (Vercel) |
| 三级时间切片渲染 |
+----------------------+数据流转四阶段
- 1. 分布式采集:异构双引擎在 9:30 与 10:42 错峰唤醒,最大化降低 API 限流概率。
- 2. 清洗与规范化:格式化为统一的 JSON Array(Title, Source, Author, URL, OriginalText, Date, TimeRange)。
- 3. 中央调度:Make.com 拦截双引擎数据,执行去重逻辑,统一写入 Notion。
- 4. 前端渲染:Next.js 直连 Notion API,实现全自动的「抓取-打分-发布」闭环。
第 5 步:优雅降级 + 抗脆弱设计
- 单引擎挂掉 → 另一引擎仍在供数
- YouTube yt-dlp 失败 → 自动回退到 HTTP 直抓
- DeepSeek API 限流 → 单条摘要失败不阻塞其他条目(可占位「摘要生成中」)
- Notion 写入失败 → 错误日志记录,下次重试
产品侧能力(与工程降级配套)
- 多维度时间切片:日更 / 周榜 / 月度精选,TimeRange 标签 + 前端 Tab 切换
- 零信息损失的中文化:英文原推 → 中文标题 + 约 200 字摘要 + 保留原文 URL;重要术语保留英文(GPT-5、Gemini 等)
- Headless 可复制:Notion 作为唯一源,Web / 小程序 / Newsletter 均可复用同一套 API
📈 Result|成果与复盘
量化成果
| 指标 | 数字 |
|---|---|
| 日均入库条数 | 30-50 条 |
| 自动化率 | 100% |
| 数据时延 | 抓取到入库 < 2 分钟 |
| 运维成本 | < $0.5 / 月(Render 免费层 + DeepSeek 按量) |
| 时间节省 | 从 40 分钟/天 → 0 分钟/天 |
| 单日更新次数 | 2 次(9:30 AM + 10:42 AM) |
| 数据源覆盖 | 8 个(HN + PM + YouTube×2 + X×2 + 中文媒体 + 38氪) |
质量验证
- 可读性:DeepSeek 生成的中文摘要保留重要英文术语(GPT-5、Gemini),不生硬翻译
- 准确性:手动抽查 50 条,信号正确率 94%(3 条过期、0 条错误归类)
- 覆盖度:和 Bensbites、Smol AI 等英文日报对比,本系统多出约 30% 的中文信号与 X 原生讨论
复盘:三个反直觉的决策
1. 为什么不用一个工具全搞定?
无代码平台在「稳定性优先」任务上有天花板,代码平台在「灵活性优先」任务上太重。我没有选「更好的那个」,而是承认两者各自的边界,用两套工具分别覆盖各自擅长的领域。
2. 为什么不追求实时?
每天 2 次定时足够——AI 圈真正重要的信号不会在 30 分钟内变质,而实时会带来指数级的 API 成本和去重复杂度。在「时效性」和「成本/稳定性」之间,我选了后者。
3. 为什么用 Notion 而不是自建数据库?
Notion 作为 Headless CMS 零运维,自带 Web 界面便于手动审阅/置顶/归档。若未来接移动端 App 或 Newsletter,Notion API 直连即可,前端换马甲不改后端。
对未来的启发
这个项目的本质产出不是「一个资讯工具」,而是在真实业务中验证了异构架构的可行性。作为 AI PM,我现在面对客户需求时,会更冷静地问:
「这个需求是『灵活优先』还是『稳定优先』?这两种特性能在一个工具里并存吗?如果不能,我们接受异构的复杂度,还是接受单一工具的缺陷?」
这是我从 AI News Radar 学到的最有价值的一课。
🔗 相关链接
- GitHub:github.com/mengxingG/ai-news-update— Engine A 完整代码与部署文档
- Notion 情报库实时查看
- 返回首页项目区
💬 写在最后
这个项目不是为了解决「我要看 AI 新闻」这个需求——这个需求 RSS 都能解决。它是我作为 AI PM 对「Agentic Workflow 落地」的一份实战答卷:当无代码的优雅撞上真实世界的泥泞时,一个好的产品经理应该怎么决策?
异构双引擎不是「折中」,而是「取舍」。这是我想传递的核心产品观。
