2025年,GitHub上最火的开源项目之一 n8n 成为了技术爱好者的自动化利器。
本文将手把手教你如何用 n8n 搭建一个 内容自动推送流程,让你在实践中熟悉 n8n 的工作方式和核心节点。
希望这个小例子能够抛砖引玉,引起你对 n8n 的兴趣,并继续探索它模块中的强大功能,帮助你实现脑中的奇思妙想。
先看下最终产出结果:
-
n8n 中的工作流:

-
飞书中带评分的文章推荐:

一、准备工作
在开始之前,你需要准备以下内容:
-
n8n 环境
- 可以选择本地 Docker 部署,也可以使用 n8n.cloud 云端服务。(本例选用后者)
- 如果是本地部署,确保 Docker 已安装并可正常运行。
官方提供的云端版,可以直接在浏览器访问,无需自己部署。地址: https://n8n.io/cloud。 注册后,点击 Get started for free 按钮,在 Dashboard 面板点击 Open instance 按钮进入实例, 最后点击 Create workflow 按钮创建工作空间。


-
推送平台(本例为飞书)
-
文章源
- 可以是技术博客 RSS、微信公众号 RSS 或者你自己团队的内部文章源。 (本例使用的 smashingmagazine 提供的 RSS)
-
大模型 / AI 接入(可选)
- 如果你希望自动评分文章或生成摘要,可准备一个大模型 API,例如 OpenAI、千问大模型等,并准备好 API-KEY。
二、n8n 流程设计概览
我们要实现的 工作流 大致如下:
- Schedule Trigger:定时触发任务
- RSS Read:获取文章列表
- Limit:控制抓取文章数量
- HTTP Request → Code:调用大语言模型给文章评分,并返回可用的数据结构
- HTTP Request:发送消息到目标平台(以飞书为例)
三、详细步骤
(一)Schedule Trigger 节点:定时触发
- 拖一个 Schedule Trigger 节点到工作区。
- 双击节点配置 Schedule Trigger:
- 配置触发频率,例如每天 9:00 自动执行。
- 这就是你的触发器,控制多久去抓一次 RSS。

- 添加 RSS Read 节点,连接 Schedule Trigger 节点。
- 配置 RSS URL,例如
https://www.smashingmagazine.com/feed/。

- 添加 Limit 节点,建议设置 Max Items: 10,先抓取最近 10 条文章。
(三)HTTP Request 节点:调用大语言模型(难点)
这个步骤需要将抓取到的文章数据通过请求 body 传给大模型,并让它返回理想的数据格式。
不同的模型请求的格式基本一样,只是 URL 与 model 有所不同。
-
添加 HTTP Request 节点。
-
配置:
- HTTP Method: POST
- URL: 大模型 API 地址
- Specify Headers: Using JSON, 并填入如下代码:
{
"Authorization": "Bearer <你的_API_KEY>",
"Content-Type": "application/json",
"Accept": "application/json"
}
- Body Content Type: JSON
- Specify Body: Using JSON, 选择
Expression 模式,并填入如下代码:
{{
{
"model": "模型名称",
"messages": [
{
"role": "user",
"content": "请根据以下文章评分。\n\n" +
"评分维度:\n" +
"1 信息价值\n" +
"2 技术深度\n" +
"3 是否值得阅读\n\n" +
"返回 JSON,例如:\n" +
"{\n" +
" \"score\": 0,\n" +
" \"title\": \"标题\"\n" +
" \"link\": \"链接\"\n" +
" \"summary\": \"一句话总结\"\n" +
"}\n\n" +
"文章:\n\n" +
"标题:" + $json.title + "\n" +
"摘要:" + $json.content + "\n" +
"链接:" + $json.link + "\n" +
"正文:" + ($json["content:encoded"] ? $json["content:encoded"].slice(0,1000) : "")
}
],
"reasoning": {
"enabled": true
}
}
}}
- Response Format: JSON
-
需要注意以下两点:

这里调试了很久才把 prompt 的格式调整对,如果返回值不对,需要多查看下配置信息是否填对。或者使用 postman 先进行请求测试,排除 n8n 格式不当导致的请求不成功。
(四)Code 节点:整理推送内容
- 拖拽 Code 节点到工作区与上一个节点连接。
-
在 Code 节点配置 Language: JavaScript,把抓取到的文章整理成通用推送格式:
return items.map(item => {
// 取 content
let content = item.json.choices?.[0]?.message?.content || "";
// 去掉 ```json 开头和 ``` 结尾
content = content.replace(/^```json\s*/, "").replace(/\s*```$/, "");
let parsed;
try {
parsed = JSON.parse(content);
} catch (e) {
parsed = {};
}
return {
json: {
score: parsed.score || 0,
title: parsed.title || "无标题",
summary: parsed.summary || "无",
link: parsed.link || "",
}
};
});
前面的 Limit 我设置的是 2, 所以这里只处理了两条数据:

(五)HTTP Request 节点:发送到平台
- 添加 HTTP Request 节点,连接 Code 节点。
- 配置:
- HTTP Method:POST
- URL:你的飞书 Webhook URL
- Authentication:None
- Headers:Content-Type: application/json
- Body Content Type:JSON
JSON Body 示例:
{
"msg_type": "text",
"content": {
"text": "今日推荐文章\n\n标题:{{$json.title}}\n评分:{{$json.score}}\n摘要:{{$json.summary}}\n阅读原文:{{$json.link}}"
}
}

- 测试节点,成功后即可发送文章到平台。可以在电脑工具栏的飞书图标看到消息提醒:

四、可选优化
- 评分推送:在 Code 节点里接入 AI 模型,对文章进行评分(信息价值、技术深度、是否值得阅读),再按评分排序推送。
- 多源整合:同时抓取多个 RSS 或 API,统一推送。
- 内容美化:可以在 JSON 里加入富文本或 Markdown,使推送消息更漂亮。
- 多平台扩展:飞书只是示例,你可以拓展到企业微信、Slack、Telegram 等。
五、总结
通过 n8n,你可以用 零代码或少量代码 实现自动化推送流程,同时熟悉 n8n 的核心节点和工作流程。
无论是团队技术分享,还是公众号或社区内容推送,这套流程都能快速落地,并且易于扩展。掌握 n8n 并结合大模型处理,你将拥有更强的自动化能力,让日常内容管理更加高效智能。欢迎到 云栈社区 的运维/DevOps/SRE板块分享和讨论你的自动化实践。
|