首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >N8N 牛刀小试

N8N 牛刀小试

作者头像
江南一点雨
发布2026-03-26 17:26:04
发布2026-03-26 17:26:04
120
举报
文章被收录于专栏:AI应用开发实践AI应用开发实践

假期在家闲来无事,想起来之前朋友圈好多小伙伴发的 N8N,之前上班比较忙,只是匆匆看了眼,没有亲自实践过,趁着假期,亲自动手实践了一遍 N8N,感觉还挺有意思的,有点像 Coze 和 Dify,但是感觉更灵活。

接下来算是一个入门科普文章,松哥手把手带大家做一个 N8N 工作流,小伙伴们可以借此感受下 N8N 的能力。

一、N8N 简介

N8N(读作 N-eight-N)就是一个开源、可视化、节点式的工作流自动化工具,说白了就是帮你把各种系统、API、服务串起来自动跑流程,不用写一堆胶水代码。

你可以把它理解成:可视化的“流程编排引擎”+ 自带几百个集成节点 + 随时能插 JS/Python 代码的低代码平台,自己服务器就能跑,数据全在你手里。

那么这玩意能干啥?松哥举几个常见的场景:

  • 定时拉取 API 数据 → 存数据库 → 生成报表 → 发邮件/钉钉通知;
  • 接收到 Webhook(比如支付回调、表单提交)→ 校验数据 → 调用内部服务 → 写日志 → 发告警;
  • 批量处理数据:从 A 系统读 → 清洗转换 → 写入 B 系统;
  • 做简单的 ETL、数据同步、定时任务、自动化测试、告警聚合;

能力还是非常强大。

N8N 安装也是非常容易,建议用 Docker 一键安装。

Docker 安装指令如下:

代码语言:javascript
复制
docker volume create n8n_data
docker run -it \     
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Shanghai" \  
 -e TZ="Asia/Shanghai" \  
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -v n8n_data:/home/node/.n8n \
 -d docker.n8n.io/n8nio/n8n

安装好之后,我们就可以直接在浏览器中访问了:

http://localhost:5678/

二、案例场景说明

接下来松哥通过一个案例来和大家说明一下 N8N 的简单玩法。

先大概说明一下场景。

想做一个关于财经新闻的聊天机器人,整体上的流程是这样:

用户发送消息 -> 获取财经资讯 -> AI 进行处理 -> 回复用户

另外还有一条支线任务,在获取到财经资讯之后,将相关的数据存入到飞书多维表格。

其中,获取财经资讯使用的接口是财联社的公开接口:

https://www.cls.cn/nodeapi/telegraphList

该接口返回的数据格式如下:

好了,准备工作大概就这些,接下来我们打开 N8N 的网页,就可以开始绘制流程了。

三、流程编排

我先来给大家看一下整体的流程编排,然后我再逐个讲解每个 Node 节点。

3.1 When chat message received

首先这个就是一个触发节点,也就是整个流程由谁触发,从哪里开始。

系统支持的触发节点主要有如下几类:

简单来说,主要是如下几种:

  1. Webhook 触发(Webhook):监听HTTP请求(GET/POST 等),外部系统/用户调用这个 URL 就触发流程,说白了,就是给 n8n 开个接口,别人访问这个接口,流程就跑起来;
  2. 定时触发(Cron):按固定时间/频率触发(秒/分/时/日/周/月);
  3. 手动触发(Manual Trigger):手动点击“执行”按钮触发流程;
  4. 消息/聊天类触发:Telegram Trigger、Discord Trigger、Slack Trigger、飞书/钉钉/企业微信的消息触发;

这四种是最为常见的触发器,其他还有文件触发、数据库触发、Email 触发、GitHub 触发、飞书多维表格触发、Kafka 触发、MQTT 触发等等,我就不逐一列举了。

我这里使用聊天类触发,所以选择 On chat message,将之拖动到流程中,这个比较简单,也不用做任何设置。

3.2 HTTP Request

第二个节点是 HTTP Request,看名字就知道,这个节点是为了发送 HTTP 请求的,所以这个节点需要做一点配置,我们可以双击该节点,就打开了配置页面,由于这个接口不需要认证,所以主要配置一下请求方式和接口地址即可:

3.3 code01

code01 这个节点主要是对 HTTP 请求取回来的数据做一个简单处理,将第三方接口返回的数据格式化为我们需要的数据。

首先我们需要添加 Code 节点:

在添加 Code 节点的时候,大家可以根据自己的技术栈选择 JavaScript 或者 Python 去进行编码,松哥这里选择 JS。

这个节点的配置主要是一段 JS 代码,如下:

我把我的 JS 代码放出来供大家参考:

代码语言:javascript
复制
const rawData = $input.item.json.data.roll_data||[];
// 配置格式化规则
  const options = {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false // 禁用 12 小时制,使用 24 小时制
  };
const formattedData = rawData.map(item=>{
  const date = new Date(item.ctime*1000);
  const formattedCtime = new Intl.DateTimeFormat('zh-CN', options)
    .format(date)
    .replace(/\//g, '-') 
    .replace(' ', ' ')
    .replace(':', ':');
  return {
    title: item.title || '无标题',
    content: item.content.replace(/\n\n/g, '') || '无内容',
    ctime: formattedCtime,
    reading_num: item.reading_num || 0,
    level: item.level || '无级别',
    shareurl: item.shareurl || '无链接'
  };
});
return [{json:{records:formattedData}}]

这里需要说明的是,流程带过来的 JSON 数据通过 $input.item.json去获取,其他都是常规的 JS 代码,不啰嗦。

经过该节点之后,原始接口返回的数据,就会被转为如下格式:

左边是原始数据格式,右边是转化之后的数据格式。

3.4 get_json_array

这个节点其实可以和 3.3 小节的节点合并,但是为了大家看的更加清晰,这里我就单独又加了一个 Code 节点,这个节点的目的主要是将 3.3 小节输出的 JSON 中的 records 数组提取出来,确保最终给到 Loop Over Items 节点的数据是一个 JSON 数组。

该节点配置如下:

这个代码应该很好懂,就是从 JSON 中提取出来 records 属性。

代码也放出来,方便大家 copy:

代码语言:javascript
复制
return $input.all()[0].json.records;

3.5 Loop Over Items

这是一个循环处理节点,因为我要将 3.2 节点请求到的数据最终都存入到飞书多维表格中,因此需要对这些数据进行遍历存储,遍历一条,就将一条存入到飞书多维表格。

飞书多维表格在配置的时候似乎不支持配置批量 JSON,也可能是我不得其法,欢迎了解的小伙伴评论区指教。

Loop Over Items 会对上个节点输入的数据进行遍历,每遍历一条,就会走一遍循环,也就是走一遍飞书节点,将数据存入到飞书多维表格中。

我们再来看下飞书节点配置:

这个节点有几个关键点:

  • 应用级别凭证:这个需要大家在飞书开发者平台创建一个应用,然后获取该应用的 App ID 和 App Secret,填上来就行了;
  • 在飞书上创建多维表格,并在浏览器打开,就能看到多维表格 Token 和多维表格 ID,如下:
    • https://my.feishu.cn/wiki/这里是多维表格Token?table=这里是多维表格ID
  • 要能在飞书多维表格中添加数据,需要将一开始创建的应用添加给飞书多维表格,添加方式如下:

要点主要是上面这几点。如果有小伙伴还不清楚,可以在群里一起讨论。

最后再给大家看下完整的请求体 JSON:

代码语言:javascript
复制
{
  "records": [
    {
      "fields": {
        "title": "{{$json.title}}",
        "content": "{{$json.content}}",
        "ctime": "{{$json.ctime}}",
        "reading_num": "{{$json.reading_num}}",
        "level": "{{$json.level}}",
        "shareurl": "{{$json.shareurl}}"
      }
    }
  ]
}

3.6 AI Agent

再来看另外一条线上的 AI Agent。

这个节点我们需要配置一下 Chat Model 和 Memory。

Chat Model 也主要是需要大家去各个大模型平台申请 API Key,这个我就不说了,我这里用了本地安装的 qwen3-vl:30b 模型,给大家看下配置:

memory 我配置了 Redis,用来存储会话的上下文,这个也是配置一下 Redis 的地址即可:

最后,我们在 AI Agent 上再配置一个 Prompt 即可,如下:

这里大家注意两个不同的变量引用:

代码语言:javascript
复制
请你结合财联社电报咨询信息:{{ $json.data.roll_data.map(item=>item.content) }},回答用户提问 {{ $json.chatInput }}

四、小结

好了,大功告成。

接下来我们可以直接在 N8N 的网页上开展对话:

存储到飞书多维表格中的数据如下:

感兴趣的小伙伴可以试试,有问题可以群里讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江南一点雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、N8N 简介
  • 二、案例场景说明
  • 三、流程编排
    • 3.1 When chat message received
    • 3.2 HTTP Request
    • 3.3 code01
    • 3.4 get_json_array
    • 3.5 Loop Over Items
    • 3.6 AI Agent
  • 四、小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档