之前的两篇博文,一篇介绍一个RAG流程《5分钟上手N8N》帮助快速体验n8n,另一篇介绍独立部署N8N+向量模型 《0成本部署》为你节省成本并提升数据安全。这篇对n8n的更进一步了解,让你成为一个n8n专家。

N8N概念

名字的由来,原来名字是Nodemation(node automation的含义),开发者嫌名字太长省略中间8个字母odematio后简写为n8n

节点(node),在n8n中,节点是工作流的基础组件,一个节点代表一个任务或处理逻辑。通过节点获取、发送和处理数据,也可以定义流控制逻辑并与外部服务连接。节点大体可以分为两类,触发节点是流程开始,一般节点是业务的处理逻辑。

流程(workflow),一系列的节点组成一个流程,流程是一次完整的业务操作,当触发条件发生时,工作流开始执行,并按顺序依次运行,以完成复杂的任务。

凭证(credential ),在 n8n 中,凭证(Credentials)用于存储连接特定应用和服务的认证信息。在使用您的认证信息(如用户名和密码、API 密钥、OAuth 密钥等)创建凭据后,您就可以使用关联的应用节点与该服务进行交互。

变量(variables),付费会员功能,不多介绍了。用于在节点间存储和访问数据。

数据表(Data table),可以定义一个数据表(在Data tables页签中定义)并可以预置初始数据,在流程中可以通过Data Table节点对数据表进行读取和修改

项目(project),n8n 项目允许您将工作流、变量和凭据分离到不同的组中,以便于管理。通过共享和隔离相关资源,项目使团队协作变得更加容易。

模板(template),不用解释了,可以直接使用的典型流程。你可以使用官方创建的,别人创建的,自己也可以创建一个模板。

社区节点,n8n在国外有着强大的生态支持,但是在国内却没有那么广泛的生态,但不用担心,你可以使用http或mcp调用,并且强大社区提供常用的节点,如飞书、小红书等等都有对应社区节点。在后面的例子也有一个基于飞书的社区节点使用,并且自己也可以开发节点。

常见节点

触发节点,这是n8n流程的开始,是必须使用的节点。包括:手动触发(trigger manually),聊天触发(on chat message),调度触发(on a schedule),相应webhook调用(on webhook call),表单提交触发(on form submission),app事件触发(on app event,国内使用会比较少)

AI相关节点,智能体节点(ai agent)、mcp调用节点(mcp client)、ollama节点、向量存储节点(simple vector store)

流程处理节点,条件判断节点(if)、循环节点(loop over items)、合并流程节点(merge)、分支节点(switch)

数据处理节点,过滤节点(Filter)、数量节点(limit)、去重节点(Remove deuplicates)、编码节点(code,以js和python代码处理)、编辑节点(edit fields)

文件处理节点,文件提取节点(Extract from file,二进制转json)、文件转换(convert to file ,json转二进制),读写本地文件节点(read/write files from disk)、ftp节点(ftp)

生产级案例

demo1:excel数据处理

对excel数据进行处理在企业场景是必不可少的,n8n可以帮你快速创建流程、减少重复性工作。

下载示例流程   可以将上图示例导入到你的系统中然后参考写你自己数据处理

导入过程:打开你新建的流程>>左上角的三个小点>>import from file

demo2:使用飞书消息

在企业和个人场景的流程中都会有发送消息的需求,本例介绍如何通过添加一个社区节点发送飞书消息,同样的方法也适合小红书等。

发飞书消息有可以两种方式:一种,http request节点调用飞书机器人;另一种,社区的飞书节点。两种各有特点

*方式一:http request节点*

步骤1:创建聊天群



步骤2:创建聊天机器人

复制webhook的地址,安全设置暂不需要设置,后边可以根据安全要求添加对应验证方式

步骤3:配置N8N发送流程,并发送消息测试

创建一个触发节点,添加http request节点,request 节点的配置如上边,消息体如下

{

"msg_type": "text",

"content": {

"text": "你好,我是n8n"

}

}

测试发送消息结果如下:

步骤4:at一个人或所有人

(1)获得user_id

进入接口调试:https://open.feishu.cn/api-explorer/cli_a9cbed54df789bc1?apiName=list&project=event&resource=outbound_ip&version=v1

如果程序要根据内容自动at某个人,则先调用用户获取接口拉来所有用户。



(2)消息体

{

"msg_type": "text",

"content": {

"text": "<at user_id="ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">阎</at> 请查看项目进度"

}

}

(3)at 全部

{

"msg_type": "text",

"content": {

"text": "<at user_id="all">全部</at> 请查看项目进度"

}

}

*方式二:通过社区节点发送消息*

步骤1:安装飞书的社区节点

左下角选择setting>>community nodes 页的install>>选择并添加社区节点(这里使用的是n8n-nodes-feishu-lite)

安装成功,如下:

步骤2:添加飞书节点

步骤3:注册认证

(1)飞书开发者平台 https://open.feishu.cn/

右上角,当然要先登录

(2)创建企业应用并开通

按照需要给应用授权

发布应用:



步骤4:在N8N中配置凭证

步骤5:配置n8n中的飞书节点

这里有两点特别注意:a.凭证是应用(飞书应用)级别的凭证,不同的应用凭证不一样 b.用户ID类型选择open_id

获取发送者id参见下边的(5)

步骤6:获取发送者id

(1):进入api调试平台

方式一:https://open.feishu.cn/api-explorer?lang=zh-CN

方式二:

step2:选择对应的内容



避坑

1、excel的处理瓶颈

*案例说明:*

用n8n处理编写一个对excel中某列进行枚举转换用loop 和 edit field节点。excel8万行左右,处理到340批的时候就卡住了,刚开始单条处理后来给edit field换成批处理,每批200条没有太大提升。通过本机docker部署。

*原因分析:*

n8n 的工作机制:

  • 默认每个节点执行后会 *保留所有执行数据在内存中*(workflow data retention)。

  • Loop + Edit Fields 属于 同步执行,每跑一行数据,n8n 会把当前行的执行轨迹都存入内存。

  • 数据越多,内存越大,越慢,最终直接卡死或 GC 一直打满。



*尝试解决:*

*1)解决方案一:*容器启动时增加参数,不保存过程参数,单批次处理速度快很多,但是还会卡,但最终是完成了。

网上有说在界面上直接可以配置,独立部署的社区版本应该是没有配置,不知道公网上是否有

environment:

- N8N_EXECUTIONS_DATA_SAVE_ON_ERROR=none

- N8N_EXECUTIONS_DATA_SAVE_ON_SUCCESS=none

- N8N_EXECUTIONS_DATA_SAVE_ON_MANUAL=none

- N8N_EXECUTIONS_DATA_SAVE_ON_PROGRESS=false

- N8N_DIAGNOSTICS_ENABLED=false

- N8N_LOG_LEVEL=warn



*2)解决方案二:*使用循环,改为code节点一次性处理,性能比上个还快

2、mcp client节点无法正常运行

*案例说明:*

下载最新版本的n8n(1.121.3),配置一个简单流程的mcp调用,调用mcp client环节,无论如何配置都报错。

报错如下:

Internal error: Error calling tool 'tavily_search': 4 validation errors for call[tavily_search]\nsessionId\nUnexpected keyword argument [type=unexpected_keyword_argument, input_value='9c432a67f57d4ed1844b816632641387', input_type=str]\nFor further information visit https://errors.pydantic.dev/2.12/v/unexpected_keyword_argument\naction\nUnexpected keyword argument [type=unexpected_keyword_argument, input_value='sendMessage', input_type=str]\nFor further information visit https://errors.pydantic.dev/2.12/v/unexpected_keyword_argument\nchatInput\nUnexpected keyword argument [type=unexpected...

*原因分析:*

1)试了各种大模型给的方案,包括格式转换、通过提示词限定输出,都不能解决

2)碰巧有另一个环境恰好可以试试,居然能跑通,那大概率是版版本。

3)再看两个mcp client 格式input格式是明显的不一样,因此推断是ai agent节点的版本问题。

4)将两个流程配置分别导出,查看果然版本不一致,能运行的是2.2,不能运行的是3

*解决方法:*

1)界面上没有改ai agent版本的地方,将刚才导出文件中版本降低为2.2,再导入进去,可以运行。

2)或者降低n8n的版本也可以,使得ai agent 使用v2接口而不是新的v3接口,具体哪个版本的n8n没有试

3、登录密码错误

问题:隔一段时间再启动docker 后登录密码可能失效,密码明明是正确的总是提示错误。

尝试:在docker启动参数设置不用登录添加新用户,授权数据后以新用户登录,但没有解决问题

操作n8n的数据库,用一个已知密码的密串替换要改的用户,如果你的n8n持久化不是直接指定的宿主机目录,找起来比麻烦,镜像内容安装sqllite也比较麻烦

以上不管哪种方法,过段时间发现又出现问题了

原因:原因输入法敏感,注意你是在中文下

4、无法删除流程

这是n8n交互上二一个设计,一个流程要删除要先进行归档。操作过程:归档>>显示归档流程>>删除流程

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐