用去年 github 最火的 n8n 快速实现自动化推送工具

2025 年,低代码自动化工具风靡开发者社区,而 GitHub 上最火的开源项目之一 n8n 成为了技术爱好者必学的自动化利器。

本文将手把手教你如何用 n8n 搭建一个 内容自动推送流程,以飞书作为示例推送平台,让你在实践中熟悉 n8n 的工作方式和核心节点。即使你未来想扩展到其他平台,这套流程也完全适用。

先看下最终产出结果:

  1. n8n 中的工作流:

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

一、准备工作

在开始之前,你需要准备以下内容:

  1. n8n 环境

    • 可以选择本地 Docker 部署,也可以使用 n8n.cloud 云端服务。(本例选用后者)
    • 如果是本地部署,确保 Docker 已安装并可正常运行。

    官方提供的云端版,可以直接在浏览器访问,无需自己部署。地址: n8n.io/cloud。 注册后,点击 Get started for free 按钮,在 Dashboard 面板点击 Open instance 按钮进入实例, 最后点击 Create workflow 按钮创建工作空间。

  1. 推送平台(本例为飞书)

    • 打开你的飞书群 → "群设置" → "智能群助手" → "添加机器人"。
    • 选择自定义机器人
    • 给机器人设置名称、头像,然后记下 Webhook URL。这个 URL 形如:
    bash 复制代码
    https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    • 如果需要,可以设置安全签名验证(本例未配置)。
    • 注意:你也可以选择其他推送平台,例如企业微信、Slack 等。
  2. 文章源

    • 可以是技术博客 RSS、微信公众号 RSS 或者你自己团队的内部文章源。 (本例使用的 smashingmagazine 提供的 RSS)
  3. 大模型 / AI 接入(可选)

    • 如果你希望自动评分文章或生成摘要,可准备一个大模型 API,例如 OpenAI、千问大模型等,并准备好 API-KEY

二、n8n 流程设计概览

我们要实现的流程大致如下:

  • Schedule Trigger:定时触发任务
  • RSS Read:获取文章列表
  • Limit:控制抓取文章数量
  • HTTP Request → Code:调用大语言模型给文章评分,并返回可用的数据结构
  • HTTP Request:发送消息到目标平台(以飞书为例)

三、详细步骤

(一)Schedule Trigger 节点:定时触发

  1. 拖一个 Schedule Trigger 节点到工作区。
  2. 双击节点配置 Schedule Trigger:
    • 配置触发频率,例如每天 9:00 自动执行。
    • 这就是你的触发器,控制多久去抓一次 RSS。

(二)RSS Read 节点:获取文章

  1. 添加 RSS Read 节点,连接 Schedule Trigger 节点。
  2. 配置 RSS URL,例如 https://www.smashingmagazine.com/feed/
    • 可以看到能够获取到 40 条资讯。
  1. 添加 Limit 节点,建议设置 Max Items: 10,先抓取最近 10 条文章。

(三)HTTP Request 节点:调用大语言模型(难点)

这个步骤需要将抓取到的文章数据通过请求 body 传给大模型,并让它返回理想的数据格式。

不同的模型请求的格式基本一样,只是 URL 与 model 有所不同。

  1. 添加 HTTP Request 节点。

  2. 配置:

    • HTTP Method: POST
    • URL: 大模型 API 地址
    • Specify Headers: Using JSON, 并填入如下代码:
    JSON 复制代码
        {
            "Authorization": "Bearer <你的_API_KEY>",
            "Content-Type": "application/json",
            "Accept": "application/json"
        } 
    • Body Content Type: JSON
    • Specify Body: Using JSON, 选择 Expression 模式,并填入如下代码:
    n8n 复制代码
        {{
            {
                "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
  3. 需要注意以下两点:

备注:这里我调试了很久才把 prompt 的格式调整对,如果返回值不对,需要多查看下配置信息是否填对。或者使用 postman 先进行请求测试,排除 n8n 格式不当导致的请求不成功。

(四)Code 节点:整理推送内容

  1. 拖拽 Code 节点到工作区与上一个节点连接。

  2. 在 Code 节点配置 Language: JavaScript,把抓取到的文章整理成通用推送格式:

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 节点:发送到平台

  1. 添加 HTTP Request 节点,连接 Code 节点。
  2. 配置:
    • HTTP Method:POST
    • URL:你的飞书 Webhook URL
    • Authentication:None
    • Headers:Content-Type: application/json
    • Body Content Type:JSON

JSON Body 示例:

JSON 复制代码
{
  "msg_type": "text",
  "content": {
    "text": "今日推荐文章\n\n标题:{{$json.title}}\n评分:{{$json.score}}\n摘要:{{$json.summary}}\n阅读原文:{{$json.link}}"
  }
}
  1. 测试节点,成功后即可发送文章到平台。可以在电脑工具栏的飞书图标看到消息提醒:

四、可选优化

  • 评分推送:在 Code 节点里接入 AI 模型,对文章进行评分(信息价值、技术深度、是否值得阅读),再按评分排序推送。
  • 多源整合:同时抓取多个 RSS 或 API,统一推送。
  • 内容美化:可以在 JSON 里加入富文本或 Markdown,使推送消息更漂亮。
  • 多平台扩展:飞书只是示例,你可以拓展到企业微信、Slack、Telegram 等。

五、总结

通过 n8n,你可以用 零代码或少量代码 实现内容自动化推送,同时熟悉 n8n 的核心节点和工作流程。

无论是团队技术分享,还是公众号或社区内容推送,这套流程都能快速落地,并且易于扩展。掌握 n8n 并结合大模型处理,你将拥有更强的自动化能力,让日常内容管理更加高效智能。

相关推荐
奇舞精选1 小时前
被 Karpathy 下场推荐的 NanoClaw 是什么来头
agent·claude
奇舞精选1 小时前
实践:如何为智能体推理引入外部决策步骤
前端·agent
无限大61 小时前
AI实战02:一个万能提示词模板,搞定90%的文案/设计/分析需求
前端·后端
朝阳5812 小时前
控制 Nuxt 页面的渲染模式:客户端 vs 服务端渲染
前端·javascript
发现一只大呆瓜2 小时前
Vue-Vue2与Vue3核心差异与进化
前端·vue.js·面试
sunny_2 小时前
熬夜通宵读完 VitePlus 全部源码,我后悔没早点看
前端·前端框架·前端工程化
发现一只大呆瓜2 小时前
Vue2:数组/对象操作避坑大全
前端·vue.js·面试
发现一只大呆瓜2 小时前
Vue3:ref 与 reactive 超全对比
前端·vue.js·面试
lzksword3 小时前
C++ Builder XE OpenDialog1打开多文件并显示xls与xlsx二种格式文件
java·前端·c++