n8n + AI API 实战:搭一个定时抓取 -> AI 处理 -> 自动通知的工作流
很多信息源(新闻、博客、技术更新)每天都在固定时间段更新,靠手动刷 RSS 太累,让 AI 帮忙看完再把核心要点推给你,省下大量时间。本文用 n8n 搭一条完全本地可控的自动化流水线:定时触发 → 抓 RSS 订阅源 → 调用 AI 模型做摘要 → 通过邮件或 IM 把摘要推给你。
整个流程跑在你自己机器上,不需要长期开着的云服务。如果你对 n8n 还不太熟,下面会从部署部分也写完整,跟着做一遍就能跑起来。

这个工作流要做什么
完整链路分四段:
- 定时触发:每天早上 9 点启动一次,按需可改为每小时、每周。
- 抓取内容:从一份 RSS 订阅源(新闻站、技术博客都行)拉取最新条目。
- AI 处理:把每条条目的标题和摘要喂给 AI,让它生成中文要点。
- 推送通知:把要点整理成段落,通过邮件、Telegram 或钉钉 Webhook 发出去。
可以先选一个简单的通知渠道跑通,再逐步替换成自己习惯的 IM。整个工作流的输入只有订阅源 URL 和 AI API Key 两个东西,输出是一段可读的中文摘要。
环境准备:先部署一份 n8n
n8n 提供官方镜像,最简洁的方式是 Docker。下面的命令来自仓库 README 的 Quick Start:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
逐项说明:
docker volume create n8n_data:创建一个名为n8n_data的命名卷,用于持久化 n8n 的配置、数据库和工作流。不预先创建的话,Docker 会在第一次挂载时自动生成一个匿名卷,迁移时要重新挂载数据,先建好更稳妥。-p 5678:5678:把容器内的 5678 端口映射到宿主机的 5678,访问http://localhost:5678就能进编辑器。-v n8n_data:/home/node/.n8n:把数据卷挂到容器内的/home/node/.n8n,这是 n8n 默认的数据目录。docker.n8n.io/n8nio/n8n:n8n 官方镜像地址。
第一次启动会因 -it 交互方式把日志打到终端。用浏览器打开 http://localhost:5678,按提示建立第一个管理员账号。账号建好后回到终端按 Ctrl+C 停掉,再用 docker start n8n 把容器以后台方式拉起来——日常使用建议改成 -d 后台运行并加上 --restart unless-stopped 做开机自启。
如果你没装 Docker,也可以直接用 npx 的方式(来自 README 的另一条 Quick Start),前提是先装好 Node.js:
npx n8n
访问地址同样是 http://localhost:5678。这种方式的优点是零依赖、易清理;缺点是关了终端 n8n 就停了。
### 凭据:把 AI API Key 安全存进去
下一步是配置 AI 模型。n8n 把所有第三方服务的登录信息统一放在 Credentials 模块里,避免在节点中明文写 Key。具体路径:左下角 Credentials → New → 选择对应的服务(OpenAI、Anthropic、自定义 HTTP 头等)。
以 OpenAI 为例:
- API Key:填你从厂商控制台拿到的 Key。
- Base URL:默认即可,如果不是用官方网关或走代理,按需改成对应地址。
- Organization(可选):按账号实际值填。
保存后这个凭据不会再次以明文出现在节点配置里——节点里只会显示一个”引用凭据”的下拉框。这也是 n8n 在面向团队/生产环境时强调凭据管理的原因。
如果你用的服务没有官方节点(例如兼容 OpenAI 协议的国产模型),后文会给出用 HTTP Request 节点的兜底方案。
搭工作流:四步连线
回到编辑器主界面,点击 New Workflow 进入画布。先给工作流起个名字,比如 daily-rss-summary。
#### 1. Schedule Trigger 节点
左上角搜索 Schedule Trigger,加进来。常见配置:
- Trigger Times:选
Days。 - Hour:填
9(代表每天 9 点)。想要每小时一次,就选Hours并填1。 - Minute:填
0。
按需还可以指定具体星期几、加上 cron 表达式等更灵活的触发条件,详细说明请参考官方文档。
2. RSS Feed Read 节点
把 Schedule Trigger 的输出连到 RSS Feed Read 节点。配置:
- URL:填你关注的 RSS 订阅地址,例
https://hnrss.org/newest或博客的 RSS 地址。 - 其他字段按需勾选,例如是否包含完整正文(很多技术站 RSS 里带
content:encoded)。勾上后下游 AI 就能拿到更完整的内容做摘要。
完成配置后先点节点上的 Execute Node,确认它能拉回数据。下游所有的表达式都依赖这些字段。
3. AI 摘要:AI Agent / OpenAI 节点 / HTTP Request 节点
这部分是 n8n 版本差异较大的地方。n8n 较新版本提供一组 AI 节点(来自 @n8n/n8n-nodes-langchain 包),包括:
- AI Agent:把 LLM、记忆、工具整合在一起的”代理”节点。
- Chat Model 子节点:挂接具体的模型(OpenAI、Anthropic、Gemini、Ollama 等)。
- Output Parser:让模型按指定格式输出(JSON / 列表等)。
如果你用的是较新版本,建议这样搭:
- 拖一个
Basic LLM Chain或AI Agent节点,连到 RSS Feed Read 之后。 - 在节点里点
Add Chat Model,选择OpenAI Chat Model,关联前面存好的凭据。 - Prompt 字段写一句中文系统提示,例如:
> 你是一个信息助理。请根据下面 RSS 条目的标题和摘要,用中文输出 3 条不超过 30 字的要点。 - 用表达式把 RSS 节点输出的字段插进来,例如:
标题:{{ $json.title }}
摘要:{{ $json.contentSnippet }}
> n8n 不同版本对应的 AI 节点名和字段差异较大(AI 相关节点迭代很快),请以你当前版本官方文档为准。
如果你的 n8n 是较旧版本,或者你不想用 AI 节点,也可以走 HTTP Request 节点 这条通用路:
- Method:
POST - URL:你的模型网关地址,例如
https://api.openai.com/v1/chat/completions - Authentication:选
Generic Credential Type→Header Auth,凭据里填Authorization: Bearer,或直接复用Predefined Credential Type里的 OpenAI 凭据。 - Body:JSON,写出
messages数组,把usercontent 从 RSS 节点拉过来。
这种方式最稳,能适配所有 OpenAI 兼容接口。
#### 4. 通知:邮件 / Telegram / 钉钉 Webhook
最后一段是通知。三个常见渠道任选其一:
- Email Send 节点:选
SMTP凭据,配好发件服务器、端口、用户名密码、收件人地址。SMTP 内容用表达式拼 AI 节点的输出:
{{ $json.output }}
- Telegram 节点:先在 Telegram 里通过
@BotFather建一个 Bot、拿到 Bot Token;在 Telegram 中和 Bot 发起一次对话后,把 chat_id 填入。配好凭证后可以发纯文本、HTML 或 Markdown。 - 钉钉 / 飞书 / Slack Webhook:用 HTTP Request 节点 POST 到对应机器人的 Webhook URL,把 AI 输出放在 JSON 的
text/message字段里即可。
通知节点的输入就是 AI 节点的输出,所以只要 AI 节点调通,这一段发出去的不是空字符串就基本没问题。
### 调试:逐节点执行看输出
n8n 调试很直观。右上有两个关键按钮:
- Execute Node:只跑当前节点。
- Execute Workflow:从头到尾跑整条链路,每步之间的数据可以悬浮查看。
调试顺序建议按数据流方向:一个一个 Execute Node,每个节点确认输出非空且结构正确后再走下一步。最容易卡住的两处:
- RSS Feed Read 节点返回空:通常是 URL 写错,或者服务端 RSS 没有更新内容。先在浏览器里直接打开 URL 看有没有 XML 返回。
- AI 节点 401/403:凭据没生效或 Key 失效。先把节点切到
Expression模式检查表达式,用一个静态字符串先测试凭据是否正确,再去接表达式。
激活:让工作流真正自动跑起来
所有节点都正常出数据后,把画布右上角的开关从 Inactive 切到 Active。状态条会显示当前激活的工作流数量。
第一次到达你设定的触发时间(例如第二天 9 点),工作流会自动跑。如果想立刻验证一次,把 Schedule Trigger 节点的 Trigger Times 改成 Minutes 并填一个频繁的值(比如每 1 分钟一次),确认收到通知后再调回每天 9 点。
### 常见坑和应对
- AI 节点找不到:你装的 n8n 版本可能没包含
@n8n/n8n-nodes-langchain包。更新镜像或重启容器即可同步,或直接用 HTTP Request 节点兜底。 - 凭据报错 Key 无效:早期版本会把 Key 仍以明文回显在日志里。建议把 Key 删掉重建,不要复用旧凭据。
- RSS 内容是 HTML 而非纯文本:在下游加一个 HTML Extract / Markdown 节点做预处理,否则 AI 摘要会被一堆标签干扰。
- 通知重复发送:很多 RSS 一条会推 10~20 篇,邮件会被刷屏。在 Loop / SplitInBatches 节点里做”取前 N 条”过滤,或者在前面加一个
IF节点判断内容长度。 - 工作流跑成功但邮箱收不到:多半是进了垃圾邮件箱。先把发件 SMTP 域名做 SPF/DKIM 校验,或者换 Telegram Webhook 做调试收件人。
把它做得更好
再往前走几步,会变成一个真正能长期用的工具:
- 多源聚合:多拉几个 RSS Feed Read 节点,用 Merge 节点合并后再喂给 AI。
- 按主题归类:让模型输出结构化 JSON(例如
{summary: "...", tags: ["AI", "开源"]}),再用 Markdown 转 HTML 写到 Notion / 飞书文档。 - 失败重试:在通知前加一个 IF 节点,AI 调用失败的条目改写到本地文件数据库,第二天重读补发。
- 观测:n8n 自带执行历史,可在 Settings → Executions 看每次运行的输入输出。生产环境建议再加一个 Slack/Discord 频道接收”工作流失败”告警。
整条链路核心资产只有 n8n 一份,完全本地可控;凭据和 AI Key 都放进凭据系统,不写在节点里。要扩展时主要靠加节点,几乎不用写代码。
如果你想进一步了解 n8n 在自托管和私有部署下的能力边界、横向对比和生态,可以站内读一下《n8n 评测》,里面详细对比了 n8n 与其他工作流自动化工具在自托管场景下的取舍。

评论(0)