找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2517

积分

0

好友

337

主题
发表于 4 小时前 | 查看: 3| 回复: 0

2025年,GitHub上最火的开源项目之一 n8n 成为了技术爱好者的自动化利器。

本文将手把手教你如何用 n8n 搭建一个 内容自动推送流程,让你在实践中熟悉 n8n 的工作方式和核心节点。

希望这个小例子能够抛砖引玉,引起你对 n8n 的兴趣,并继续探索它模块中的强大功能,帮助你实现脑中的奇思妙想。

先看下最终产出结果:

  1. n8n 中的工作流:
    n8n工作流编辑界面,包含七个节点的流程图

  2. 飞书中带评分的文章推荐:
    飞书聊天机器人推送文章结果截图

一、准备工作

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

  1. n8n 环境

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

    n8n Dashboard及社区论坛界面
    n8n工作流概览界面

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

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

    • 可以是技术博客 RSS、微信公众号 RSS 或者你自己团队的内部文章源。 (本例使用的 smashingmagazine 提供的 RSS)
  4. 大模型 / 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。

Schedule Trigger节点配置界面

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

  1. 添加 RSS Read 节点,连接 Schedule Trigger 节点。
  2. 配置 RSS URL,例如 https://www.smashingmagazine.com/feed/
    • 可以看到能够获取到 40 条资讯。

RSS Read节点配置与输出界面

  1. 添加 Limit 节点,建议设置 Max Items: 10,先抓取最近 10 条文章。

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

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

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

  1. 添加 HTTP Request 节点。

  2. 配置:

    • 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
  3. 需要注意以下两点:

大语言模型API请求与响应调试界面

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

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

  1. 拖拽 Code 节点到工作区与上一个节点连接。
  2. 在 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, 所以这里只处理了两条数据:

Code节点配置及输出结果

(五)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 示例:

{
  "msg_type": "text",
  "content": {
    "text": "今日推荐文章\n\n标题:{{$json.title}}\n评分:{{$json.score}}\n摘要:{{$json.summary}}\n阅读原文:{{$json.link}}"
  }
}

HTTP Request节点配置发送飞书消息

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

飞书消息提醒图标


四、可选优化

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

五、总结

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

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




上一篇:独立开发者必看:覆盖0到1000用户的完整获客指南
下一篇:AI Agent长对话失控?工作交接Prompt重塑高效工作流
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-18 10:32 , Processed in 0.472649 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表