对话笔记直发:N8N_DAILY_DIGEST_EXECUTION_SPEC_CN。分类:网络基建。
N8N 每日资讯早报执行规范
1. 目标
基于自托管 n8n 构建一套每日自动资讯早报工作流,默认约束如下:
- 已完成部署:
n8n + SQLite - 推送渠道:
Telegram - LLM:
GPT-5.4 - 允许的来源类型:
- RSS
- RSSHub
- 少量 HTTP/API
- 网页抓取仅作为兜底
- 优先级:
- 低维护成本
- 低 token 消耗
- 稳定、可无人值守按日运行
目标结果:
- 每天早晨,Telegram 自动收到一份结构化科技/AR 早报
- 工作流可无人值守运行
- AI 仅在规则过滤之后介入
2. 范围
Phase 1 范围:
- 构建最小可用工作流
- 使用
3 到 5个稳定来源 - 仅推送到 Telegram
- GPT-5.4 仅用于生成简短摘要
- 不做多渠道分发
- 不做复杂审批流
- 默认不做全文网页抓取
Phase 1 暂不包含:
- 企业微信 / 个人微信推送
- 大规模网页爬取
- 复杂数据库建模
- 向量数据库 / embeddings
- 全文文章入库
- 长篇 AI 改写
3. 架构
建议拆分为 3 个工作流:
source-fetch-rssdaily-news-maindigest-publish-telegram
用途如下:
3.1 source-fetch-rss
抓取多个 RSS / RSSHub / API 来源,并统一字段格式。
3.2 daily-news-main
每天定时运行,聚合所有条目,去重、过滤、排序,并选出最终进入早报的内容。
3.3 digest-publish-telegram
对最终入选内容生成简短摘要,并将格式化后的早报发送到 Telegram。
4. 实施顺序
建议按以下顺序落地:
- 验证基础集成是否可用
- 搭建 Telegram 测试工作流
- 搭建 GPT-5.4 测试工作流
- 搭建 RSS 抓取工作流
- 搭建主工作流的去重 / 过滤 / 排序逻辑
- 搭建 Telegram 早报发布工作流
- 手动测试
- 开启定时调度
- 补充 RSSHub 来源
- 仅在必要时加入网页抓取兜底
5. 必备凭证
优先在 n8n 中创建以下凭证:
- Telegram Bot
- GPT-5.4 API 凭证
- 可选的 API/HTTP 认证凭证
- 可选的 RSSHub 访问配置(如果 RSSHub 为自建或经反代暴露)
验证清单:
- Telegram 测试消息发送成功
- GPT-5.4 能返回一条简短中文句子
- RSS Read 能读取一个公开 RSS
- HTTP Request 能访问外部 URL
6. 工作流定义
6.1 工作流:telegram-test
用途:
- 验证 Telegram Bot 能正常发送消息
节点:
Manual TriggerSetTelegram
预期消息:
- 简单文本,例如:
n8n Telegram test ok
成功标准:
- 目标 Telegram 会话中能收到消息
6.2 工作流:llm-test
用途:
- 验证 GPT-5.4 能生成一条简短中文摘要
节点:
Manual TriggerSetLLM 节点 / OpenAI 兼容节点Set或Code用于检查输出
输入示例:
- title:
Apple reportedly expands Vision Pro ecosystem plans - source:
Example Source - summary:
Apple is said to be discussing broader content and hardware integrations around Vision Pro.
Prompt 目标:
- 只返回一条简洁中文句子
- 长度控制在
15 到 35个中文字符 - 仅保留事实,不加观点,不夸张
成功标准:
- 输出稳定的短中文摘要
- 不带 markdown 包裹
- 不附带多余解释
6.3 工作流:source-fetch-rss
用途:
- 读取所有选定来源
- 统一输出字段
- 返回干净的条目列表
建议首批来源数:
3 到 5个
建议来源类别:
- 公开科技 RSS
- AR/XR 垂直 RSS
- Hacker News 或类似公开 feed
- 1 个稳定的 RSSHub 路由
节点:
- 开发阶段使用
Manual Trigger - 多个
RSS Read - 可选
HTTP Request用于 API 来源 MergeSet或Code进行字段标准化
标准化输出结构:
{
"title": "",
"summary": "",
"url": "",
"source": "",
"platform": "",
"publishedAt": "",
"author": "",
"content": "",
"tags": []
}标准化规则:
title:必填url:必填summary:优先使用 RSS 自带 description / previewsource:每个分支固定写明来源名platform:取值限定为rss、rsshub、api、webpublishedAt:尽量转为标准时间字符串content:可选,默认保持简短tags:可选数组
来源分支规则:
- 每个来源单独一条分支
- 不要把不同站点的抽取逻辑混在一起
成功标准:
- 所有来源统一输出同一字段结构
- 空条目和损坏条目在离开此工作流前被丢弃
6.4 工作流:daily-news-main
用途:
- 每天早晨自动运行
- 从来源工作流收集条目
- 去重
- 过滤无关内容
- 排序和截断
- 将最终结果传给发布工作流
节点:
Schedule TriggerExecute Workflow->source-fetch-rssRemove DuplicatesCode-> 先标准化标题/URL,增强去重效果IF或Code-> 关键词过滤Code-> 打分排序SortLimitIF-> 如果最终数量为 0,则停止或告警Execute Workflow->digest-publish-telegram
调度建议:
- 每天早晨执行 1 次
- 推荐时间:
08:00 Asia/Shanghai
去重策略:
第一层:按 URL 去重
对 URL 做标准化后再比较:
- 去掉追踪参数(如果可行)
- 去掉 fragment
- 在安全前提下去掉尾部斜杠
第二层:按标题去重
对标题做标准化:
- 转小写
- 去首尾空格
- 合并连续空格
- 视情况去掉噪音标点
第三层:可选指纹去重
建议使用:
- 标准化后的标题 + 短摘要
过滤策略:
任何 LLM 调用前,必须先进行规则过滤。
首版保留关键词:
ARVRMRXRSpatial ComputingVision ProMetaQuestAppleAIAIGCOpenAIGoogleNVIDIAchiprobotrobotics大模型芯片机器人
首版排除关键词:
招聘促销抽奖广告直播预告
基础过滤规则:
- 标题命中保留关键词则优先保留
- 标题或摘要明显属于目标领域则保留
- 标题或摘要命中排除关键词则丢弃
- 标题为空则丢弃
- URL 不可用则丢弃
排序策略:
建议打分项:
- 标题命中核心关键词:高权重
- 摘要命中关键词:中权重
- 来源优先级:中权重
- 发布时间新近程度:中权重
- 重复/近似重复倾向:负权重
建议最终数量上限:
- 每日报保留
10 到 15条
成功标准:
- 只有相关条目能进入下一步
- 条目总量保持紧凑
- 被过滤掉的条目不得调用 LLM
6.5 工作流:digest-publish-telegram
用途:
- 为最终选中的内容生成极简摘要
- 组装 Telegram 早报正文
- 每天发送 1 次
节点:
Execute Workflow Trigger或接收上游输入Split in Batches或逐条循环LLMCode或Set组装单条展示内容Code将全部条目拼接为一份早报Telegram
LLM 使用策略:
- 只处理已经过滤后的最终条目
- Phase 1 可以接受每条调用 1 次模型
- 每条只生成一句摘要
- 默认不要发送全文给模型
- 优先只传标题 + 短摘要 + 来源
建议传给 LLM 的字段:
- title
- source
- publishedAt
- summary preview
- url
默认不要发送:
- 全文正文
- 原始 HTML
- 大段抓取文本
Prompt 规则:
- 只返回一句简短中文摘要
15 到 35个中文字符- 不要编号前缀
- 不要 markdown
- 不加个人观点
- 不做推测
- 尽量避免重复标题措辞
- 只保留事实核心
Telegram 输出模板:
# 科技早报 | {{date}}
1. {{title}}
来源:{{source}}
摘要:{{short_summary}}
链接:{{url}}
2. {{title}}
来源:{{source}}
摘要:{{short_summary}}
链接:{{url}}格式规则:
- 先保持简单
- 在稳定前,不要使用复杂 Telegram markdown
- 如果启用了 markdown parse mode,需要处理特殊字符转义
- 如果格式频繁报错,优先退回纯文本
成功标准:
- 每天成功发送 1 条完整早报
- 结构清晰易读
- 不要过度冗长
- 不要出现 markdown 解析失败
7. Token 控制规则
必须严格控制 LLM token 消耗。
规则如下:
- 不允许对全部原始条目做摘要
- 必须先去重
- 必须先过滤,再调用 LLM
- 最终进入摘要流程的条目限制为
10 到 15条 - 除非必要,不抓取全文
- Prompt 必须短、小、确定性强
- 每条只允许生成一句摘要
- 如果来源自带摘要质量足够好,可以优先复用
可选优化:
- 对低优先级条目,不走 LLM,直接使用原摘要
- 仅对高分条目调用 LLM
8. 来源策略
优先级顺序:
- 公开 RSS
- RSSHub
- API
- 网页抓取兜底
原因:
- RSS 最稳定
- RSSHub 能扩展覆盖范围
- API 可用但可能限频
- 网页抓取维护成本最高
首批来源规则:
- 只使用稳定、公开、易维护的来源
- 初始来源数量保持较少
- 只有在连续几天稳定后再扩容
初期不要做:
- 一次性接入太多脆弱来源
- 反爬很强的网站
- 全站抓取
- 浏览器自动化抓取
9. 数据质量规则
每个条目至少必须满足:
- 标题不为空
- URL 可用
- 来源名明确
- 如果能提供时间,则时间字段合理
以下情况应直接丢弃:
- 标题为空
- URL 为空
- 标题明显无关
- 已判定为重复
- 内容明显是广告或促销噪音
10. 错误处理
Phase 1 最低要求:
- 工作流失败时可发 Telegram 告警
- 不同来源必须拆分分支,单个来源失败不应拖垮全部流程
- 某个 RSS 来源失败时,主流程应尽量继续
- 失败日志中要能定位到具体来源名
建议失败行为:
- 接受部分成功
- 只要剩余内容足够,就仍然生成并发送早报
可选后续增强:
- 如果某个来源连续多次失败,额外发送一条运维提醒
11. 日志与可观测性
Phase 1 最低日志要求:
- 执行时间
- 原始抓取总数
- 去重后的数量
- 最终保留数量
- 失败来源列表
存储方式可选:
- n8n 自带执行历史
- SQLite 支撑下的 n8n 内部数据
- 后续可接 Google Sheets
- 后续可接外部数据库
Phase 1 不要过度设计日志系统。
12. 操作者执行顺序
搭建时严格按以下顺序执行:
- 搭建并验证
telegram-test - 搭建并验证
llm-test - 搭建并验证
source-fetch-rss - 首批只接入
3 到 5个来源 - 搭建
daily-news-main - 实现去重与过滤
- 限制最终条目数
- 搭建
digest-publish-telegram - 手动运行多次
- 确认早报