关于 AI 的资讯每天都很多:大模型更新、官方推荐的最佳实践、别人用 AI 创作的案例。但看完经常觉得,刷了一堆,真正有启发、自己能用上的没几个。
为了解决这个问题,我做了一个资讯自动化搜集、筛选、打分、分栏目、输出日报的网站:yaniniverse.com。
每天从精选的 YouTube 频道,OpenAI、Anthropic 等官方博客,还有 Reddit 开发者社区里,筛选出值得看的素材,分别归类到「灵感百宝袋」、「江湖快报」、「贤者视角」、「开发者补给站」、「好物挖掘机」几个栏目,帮你第一时间定位到自己想要的资讯。
而今天想跟大家分享的是,要实现这样的一个自动化产品,整条链路是怎样的?
链路里哪些事交给 AI、哪些事交给代码?
应该是做成自动化 Agent,还是工作流?
先划重点
整条链路是一条确定性流水线:LLM 负责理解(打分、写稿),代码负责决策(选什么、放哪个栏目、写多少条)。
工作流不是比 Agent 落后,而是更适合确定性任务。
prompt 不是约束,只是建议。
该用工作流还是 Agent,看一件事:下一步做什么,能不能在写代码时就画出流程图。
💡 这篇只讲思路全景,每步「做什么 + 为什么这么设计」,不下钻代码和参数。
你看到的日报,只是最后一层
网站上的日报每天十几条,读起来像是有人翻完几十个信息源,挑出来最值得看的。
确实是挑出来的。
只是干这件事的是一台每天自动跑的机器。它产出三层东西,每层解决一个不同的问题:
全量采集,几千条,目标是全,别漏。几十个信息源的原始链接全部抓进来。
精选候选,几十条,目标是信号清晰。经过代码筛选和 LLM 打分,每条都带着质量分数。
日报终稿,十几条,目标是读完能带走思路和动作。从精选里再挑,写成成文内容。
重头在前面两层的筛选,写稿反而是最轻的一步。
先看整张地图
三层产物是结果。产出它们的是一条六步流水线:
采集 → 粗筛(代码)→ 打分(LLM)→ 分栏目选材(代码)→ 写稿(LLM)→ 校验(代码)
LLM 出场两次,但每次都被框在窄范围里。
打分环节,读懂资讯内容,输出结构化的分数和标签。写稿环节,按固定模板填空,自由度被压到最低。
其余四步全是代码。
整条链路贯穿一个分工原则:LLM 负责理解,代码负责决策。
为什么这么分
拿一条真实的日报素材举例。
Anthropic 官方博客发了一篇关于「人机混合团队怎么搭配」的文章,讲的是 AI 从「一个人对着聊天窗」变成「多人在线协作」这个模式转变。
这条资讯最后进了「贤者视角」栏目。
如果让代码来分类呢? 看 URL,claude.com/blog,官方博客,代码会判断成新闻。看关键词,「团队」「协作」「Claude」,可能判断成灵感案例。
都不对。
这条的核心价值是一个认知转变,读者带走的是「以后推动团队用 AI,要想一群人怎么跟它重新分工」这个想法。只有读懂内容才能做出这个判断,关键词和规则穷举不了。
「理解」必须交给 LLM。
但每天采集到的资讯有几千条,每条都让 LLM 判断一次,就要付几千次模型调用的钱,成本扛不住。
所以代码先上,用免费的信号把几千条砍到几十条,只对这几十条花钱让 LLM 打分。
LLM 给出分数和标签之后,选哪条进日报、放进哪个栏目,又回到代码手里。规则写死,跑一遍结果一样,出了问题逐级排查就能定位。
决策环节要的是确定性,这是代码的强项。
原则清楚了。接下来看它怎么落地:代码怎么把几千条砍到几十条。
从采集到粗筛:用代码把量砍下来
开头提到的那几十个信息源,YouTube 频道、官方博客、Reddit 社区、中文媒体,每天定时抓取最新内容汇总到一起,一天下来少则上千条,多的时候好几千。
这一步的目标是什么都先收进来,别漏,尤其别漏官方的。
LLM 的钱留给下一步,这里只用免费的信号。至于挑出最好的,那是后面打分和选材的事。
第一刀:给每类来源设配额
几十个信息源,产出量天差地别。Reddit 技术版一天几百帖,Anthropic 官方博客可能一周才一篇。不做控制,社区帖子铺天盖地,官方发了一篇重要更新,还没来得及被看到就被挤出去了。
怎么解决?YouTube、Reddit、官方博客这几类来源,每类设一个上限,超了就在自己类里面争,不许抢别人的位置。
每类来源设上限:
YouTube 频道 → 最多 8 条
Reddit 社区 → 最多 10 条
官方博客 → 每个域名最多 2 条
某类超了?类内按时间排,多的砍掉
配额翻过一次车
这套配额跑了一阵,我以为稳了。直到有一天,Anthropic 发了 Claude 的一个重大更新,我去看当天的日报,发现引用的却是一个科技媒体的转述文章。Anthropic 官方博客的原文反而没出现。
我就很纳闷,顺着往回查。选材阶段有没有这条?没有。候选阶段呢?也没有。
官方源在候选阶段就已经被挤掉了——那天有个高产源一口气发了五篇,独吞了官方源的名额,真正的官方发布根本没进来。
我之前在后面的选材环节加过「官方来源权重 ×1.25」,想着能捞一下。完全没用,那条官方源压根没活到选材那一步。
下游的偏好,救不回上游已经丢掉的东西。要让某类内容胜出,得在它正面竞争的那一级动手。
这次翻车后补了两条规则。官方博客按域名分名额,每个域名最多 2 条,高产源独吞不了别家的位置,前面代码块里那条就是这么来的。
再加一条保护规则:模型发布这类重大更新,不管名额满没满,直接保证进候选。
识别靠的还是硬信号,官方域名加上标题里的发布类关键词,不动用模型。
配额加上保护规则,量控住了,该进的也不会漏。但名额里还藏着一种浪费——
第二刀:同一件事只留一条
同一个事件经常同时出现在多个源里。OpenAI 发了新模型,官方博客一篇,Reddit 讨论十几帖,YouTube 博主出三个视频。
一件事就占了好几个类的名额,真正不同的资讯反而没位置。
把讲同一件事的条目归成一组,只保留最权威的那条:官方源优先于媒体,媒体优先于社区。
名额留给不同的事。
至于怎么判断两条讲的是同一件事:靠标题里重合的关键词这类硬信号归组,不动用模型,这一步依然免费。
这一步跑完,上千条收窄到大约五十条,一分钱 LLM 没花。
接下来就该花钱了:让 LLM 读懂这五十条。
让 LLM 打分:把模糊文本压成干净信号
五十条候选到手了,下一步是判断每条的质量。
但这个判断,代码做不了。
代码能比大小、能匹配关键词,但它没有世界知识。
它不知道「GPT-5」意味着什么,不知道「Anthropic 发了 Claude 新版本」是大事还是小事,也看不出一篇讲「AI 工作流自动化」的文章到底是给开发者看的还是给普通人看的。
「这段话在说什么、对读者有没有用」,这种判断需要理解语义,需要背景知识,写规则穷举不了。
LLM 能做,是因为它在海量文本上训练过,既学到了语义理解能力,也积累了世界知识。
同样一段标题和摘要,它能判断出这条是行业大事、还是小范围技术更新、还是一个普通人也能上手的灵感案例。
所以这一步交给 LLM。
不需要爬原文,只喂采集阶段已经拿到的标题和摘要,每条的文本量很小。
我模型用的是便宜够用的 DeepSeek V4 Pro,同一条 URL 打过分就缓存,所以这里的成本开销其实很低。
LLM 的任务很窄:读完标题和摘要,输出一组结构化的分数和标签。
具体打五个维度的分,分两组。
一组看这条资讯本身的分量:impact(影响力),是不是行业大事;credibility(可信度),来源靠不靠谱。
另一组看它对读者有没有用:actionability(能不能照着做)、inspiration(能不能激发想法),以及后面戏份最多的 breadth(大众能不能看懂,还是只有开发者看得懂)。
为什么要打这么多维度?因为下一节每个栏目要用不同的尺子量。
除了分数,还顺带输出一句中文摘要和一个主类型标签:新闻、灵感、工具、观点。
出来的东西长这样:
{
"impact": 5,
"actionability": 2,
"inspiration": 4,
"credibility": 5,
"breadth": 3,
"kind": "opinion",
"summary": "AI 从单人对话变成多人协作..."
}
有了这组分数和标签,代码才有东西可以算。
if impact >= 4,if kind === "opinion",这些判断跑得又快又稳,跑一百遍结果一样。
LLM 的活到这里就结束了。
分栏目选材:每个栏目用自己的尺子
LLM 打完分,五个维度的分数和标签都有了。接下来由代码决定:每条资讯该进哪个栏目,还是直接淘汰。
最直觉的做法是设一道统一的质量线,比如所有维度都要达到某个分数才能入选。
我一开始也是这么干的,给所有栏目套了同一道门槛:「大众能不能理解」这个维度至少要达标。
结果翻车了。
有一天,某个大厂发布了新一代开源模型,行业都在讨论,但这条「大众能不能理解」的分很低,因为它确实偏技术,普通人看不太懂。按统一门槛,直接被挡在了「江湖快报」外面。
但「江湖快报」回答的问题是「发生了什么大事」。一个重大发布,管它大众能不能看懂,它就是大事。
统一门槛把「能不能用」当成了「该不该报」。
不同栏目要回答的问题根本不一样,不能用同一把尺子量。
所以我给每个栏目写了独立的筛选规则,各看各的维度:
「江湖快报」:发生了什么大事
✓ 是不是大事
✗ 大众能不能理解
「灵感百宝袋」:普通人能照着做什么
✓ 大众能理解
✓ 能激发想法
✓ 能照着做
「贤者视角」:能带走什么想法
✓ 大众能理解
✓ 来源靠谱
✓ 能激发想法
「开发者补给站」:给技术读者的角落
✓ 能照着做
✓ 是不是大事
✗ 大众能不能理解
「江湖快报」和「开发者补给站」都不卡「大众能不能理解」,但理由不同:一个是因为大事就该报,一个是因为本来就给技术读者看的。
回头看开篇提到的那些栏目:灵感百宝袋帮你找「能抄什么」,江湖快报告诉你「是不是大事」。
栏目的价值定位,就是它的选材标准。
写稿:给 AI 出填空题,不出作文题
素材选好了,每条资讯知道该进哪个栏目。最后一步是把它们写成读者能读的日报内容。
这是 LLM 的第二次出场。
但跟打分那次不一样,这次它连格式都做不了主。
为什么要限制?因为我踩过坑。
早期版本让模型一口气「选材 + 分栏 + 写稿」全干了,发给模型的指令(prompt)里写了「选 5 条放进灵感百宝袋,写推荐语,附上原文链接」。
结果连撞三个问题:条数不稳定,有时 4 条有时 6 条;有些选中的素材被漏掉;链接还会编造不存在的 URL。
问题出在哪?
代码:
if len(items) > 5:
items = items[:5] # 超了就截,每次都一样
prompt:
「最多选 5 条放进灵感百宝袋」 # 模型理解了,尽量照做
跟你跟实习生说「别超过五条」一个效果,大部分时候没问题,但是偶尔他会觉得六条也差不多。
代码是执行,prompt 是建议。
你在 prompt 里写的每一条规则,模型都只是大概率照做,剩下那点小概率,就是翻车的空间。
把本该确定的事交给了临场发挥,prompt 写得再细也拦不住。
所以我把写稿分成了三个环节,每个环节只解决一个问题:
素材不够准 → 喂真原文
输出格式不可控 → 分成计划和渲染两步
模型偶尔犯规 → 代码校验兜底
素材不够准:喂真原文,不让模型脑补
打分阶段,LLM 只读了标题和摘要,几句话的信息量。
五十条全抓原文再打分,成本和耗时都扛不住,摘要够用就先不抓。
但写推荐语光靠这几句话就不够了,模型会自己「补」细节,写出来半真半假。
所以在写稿之前,系统先对选中的素材做一轮原文深取:文章就去抓正文内容,YouTube 视频就抓字幕。
抓回来的内容塞进素材里,写稿时模型能直接参考真实原文。
抓不到?退回用摘要,不拖垮流水线。但只要抓到了,推荐语就有真实细节撑着,不是凭三句摘要去猜。
格式不可控:分成「计划 + 渲染」,模型只管填内容
有了真原文,下一步是让模型写推荐语。但如果只扔一句「请根据以下素材写一篇日报」,那就是作文题,格式全靠模型临场发挥。
实际做法分两步:
计划
代码把素材、栏目分配、写作规则打包发给模型。模型的任务是输出一份 JSON,每条素材的推荐语、「今日动作」建议,按固定字段填。
栏目是谁、URL 是什么、最多几条,这些代码已经定死了,模型不能动。
渲染
拿到 JSON 后,代码用模板把它拼成最终的 markdown 日报。栏目顺序、每条的排版格式、整篇的结构,全由模板决定。
偶尔犯规:代码校验兜底
模型偶尔还是会犯规。
JSON 计划生成后,代码逐项检查:条数超上限?截断。出现了素材里没有的 URL?拦掉,不让编造的链接流进日报。
格式不对?带着错误信息让模型重新生成。
校验通过,模板渲染,日报出来。
整个写稿环节,格子是代码画的,模型只往里填。
自动化任务,该用工作流还是 Agent?
从采集到发布,六步流水线全部走完了。整条链路都是自动化的,每天定时跑,不用人盯。
但自动化有两条路。
你用过 Cursor 或者 Claude Code 吗?你说一句「帮我把这段代码整理一下」,它自己决定先读哪些文件、改哪行代码、跑什么测试。
这些步骤都是 AI 看着代码现场定的,你没法在写代码时就替它排好。这就是 Agent。
如果用 Agent 来做日报呢?给 AI 一句指令:「去这些信息源找最新内容,挑出最值得看的,按栏目写成日报发出去。」
AI 自己决定先看哪个源、读多少条、怎么判断好坏、怎么分栏目。每天跑一遍,可能走出不同的路径,选出不同的结果。
听起来更简单。但真要这么跑,几个问题很现实:每次出来的结果不一样,今天选 5 条明天可能 8 条,稳定性没法保证。
钱也算不清,AI 自己决定调多少次模型。真出了问题更麻烦,每次走的路径都不同,从哪一步开始查都不知道。
这几样恰好是日报最不能丢的。
它每天定时跑,要的就是稳定、可预期、出错能定位。
所以我走了另一条路。
日报流水线,采集完了下一步一定是筛选,筛选完了一定是打分,打分完了一定是分栏目。
不需要 AI 去想「接下来该干什么」,步骤在代码里写死了。
这叫工作流。
区别就一个:下一步做什么,谁说了算。
工作流,代码说了算;Agent,AI 现场定。
怎么判断选哪条
选 Agent 还是工作流,就看一件事:
「下一步做什么」,我能不能在写代码的时候就提前画出流程图?
你的自动化任务:
下一步做什么,能提前画出来吗?
→ 能:工作流
步骤固定,可预测,算得出成本
→ 画不出来:Agent
路径动态,灵活,但贵且难调试
Cursor 之所以用 Agent,是因为每次面对的代码库都不一样,该改哪个文件、改几行、要不要跑测试,没法提前画死。
日报之所以用工作流,是因为每天做的事完全一样:同样的源、同样的筛选逻辑、同样的打分维度、同样的栏目规则。
流程图能画出来,就不需要 AI 来决定下一步。
任何你想自动化的任务,都可以问同一个问题:步骤能提前画死吗?
大部分日常重复性任务,答案都是能。默认从最简单的往上走,复杂度是被需求逼出来的,不该是默认起点。
跑起来什么感觉
选了工作流,实际跑下来最大的感受是稳:结果可预期,调用次数固定,账算得出来。
出了问题还能逐级排查。前面那次官方源被挤掉,能一层层查回去,靠的就是每一级输入输出都确定。
换成 Agent,同样的 bug 埋在动态决策里,连复现都难。
LLM 和 Agent 各在哪
但工作流不意味着甩开 AI。
LLM 还在里面,只是位置很明确:在打分、写稿这种需要理解语义的窄节点上干活,干完把结果交回代码手里。
开篇提的那个分工,具体到流水线上就是这两个节点:不确定性关在节点内部,前后都是确定的代码。
要是有一天,真出现了「必须让 AI 自己决定下一步」的需求呢?比如让 AI 自己去发现值得新加的信息源。
那就在流水线的某一步里,把那个节点换成 Agent。
整条流水线的确定性不变,只在真正需要临场判断的那一步放开。
Agent 嵌进流水线当一个节点,流水线依然是代码在开。
回到开头的问题:每天那么多 AI 资讯,怎么筛出真正值得看的?
整条链路走完,你可能已经发现了:这个每天靠 AI 跑起来的网站,AI 从头到尾没做过一个决定。
选哪条、进哪个栏目、最多几条、链接对不对,全是代码说了算。
AI 只干一件代码干不了的事——读懂内容,把模糊的文本压成干净的分数,然后交回代码手里。
这套流水线每天替你把这件事干完了。
你不用自己再从几千条资讯里刷出那几条有用的,去 yaniniverse.com,看看今天筛出来的是什么。
这个思路不只是做网站用的。
下次你想让 AI 替你自动化点什么、又怕它不靠谱的时候,先别急着改 prompt,先把事情分成两堆:哪些必须靠它理解,哪些你能提前定死。
定死的越多,它翻车的空间越小。
理解交给 AI,决定写成代码。
感谢您的阅读。
这里会持续记录我对技术、工程实践与新趋势的思考,可关注微信公众号 「前端Fusion」 获取后续更新。
如果您喜欢这篇文章,欢迎点赞或分享。