n8n、Workflow实战
概述
一款开源的低代码工作流自动化平台,旨在帮助用户将各种应用和服务连接起来,实现自动化任务处理。直观的可视化界面使用户无需编写大量代码即可创建复杂的自动化流程,适用于技术和非技术用户。
设计理念是为了让复杂的工作流变得简单易用,同时也支持高度的自定义,可以轻松地将AI技术融入到自动化工作流程中。
特点:
- 开源与自托管:n8n采用Apache 2.0协议,允许用户自托管,确保对数据和部署的完全控制;
- 广泛集成能力:内置超过400个节点,支持与各种应用和服务的集成,包括CRM、社交媒体、数据库等;
- 自定义代码支持:允许编写JS或Python代码自定义节点,增强灵活性;
- 数据处理与转换:高效处理不同系统间的数据交换
- 可视化工作流设计:提供拖放式界面,用户可直观地设计和管理多步骤的自动化流程;
- AI功能:n8n结合AI能力,允许用户构建智能代理和高级自动化流程;
- 社区驱动:开源社区活跃,持续改进。
应用场景:
- 数据同步:在不同平台之间自动同步数据,确保信息一致性,异常数据自动告警;
- 通知系统:根据特定事件触发通知,提高响应速度;
- 报告生成:定期自动生成并发送报告,节省时间和精力;
- 营销自动化:电商订单自动同步至CRM,并触发个性化邮件;
- 开发运维:GitHub合并请求自动触发Jenkins构建+通知;
- AI增强:接入DeepSeek/Claude分析用户评论,生成日报;
- 更多
对比
对比项 | Zapier | Make | n8n |
---|---|---|---|
易用性 | 最高,极易上手 | 中等,可视化强大,学习曲线平缓 | 较低,偏技术用户,灵活性高 |
功能性 | 多连接,应用集成多 | 全面强大,数据处理强,高级功能丰富 | 灵活可扩展,技术深度,本地集成强 |
灵活性 | 有限,简单流程 | 较强,可构建复杂流程 | 极高,无限定制可能,技术驱动 |
扩展性 | 云端,平台自动扩展 | 云端,平台自动扩展 | 云端/自托管,自托管高度自定义 |
价格 | 按任务付费,付费版较高 | 按操作付费,付费版灵活 | 开源/按工作流付费,自托管免费 |
目标用户 | 非技术用户,小型企业 | 中小型企业,技术业务人员 | 技术用户,开发者,大型企业 |
开源 | 闭源 | 闭源 | 开源 |
社区支持 | 官方+社区,商业支持完善 | 官方+社区,技术社区活跃 | 社区为主(开源),企业版提供官方支持 |
总评 | 最易用,快速上手,连接丰富 | 功能强大,灵活实用,数据处理优秀 | 极致灵活,高度定制,开源免费(自托管) |
适合场景(简要) | 简单自动化,快速集成,非技术用户 | 复杂业条流理,数据密集型,中小型企业 | 高度定制化,企业级集成,技术驱动型用户 |
n8n早于Dify等AI时代的工作流平台
特性 | n8n | Dify | Coze |
---|---|---|---|
工作流自动化 | 强大的自动化能力 | 有限,专注AI应用 | 仅限聊天自动化 |
AI与LLM集成 | 第三方AI集成 | 内置LLM支持 | AI聊天机器人 |
易用性 | 技术用户适中 | 低/无代码 | 初学者友好 |
扩展性与API支持 | 高,支持自定义节点 | AI集成为主 | 对话式API集成 |
部署与托管 | 自托管或云部署 | 仅云部署 | 仅云部署 |
定价与授权 | 免费开源,自托管可选 | 开源 | 订阅制 |
最佳用途 | 工作流自动化与API整合 | AI应用开发 | 对话式AI与聊天机器人 |
示例场景 | 业务流程自动化、API管理、数据处理、DevOps | AI助手、内容生成、推荐系统、客户支持 | 客服机器人、电商自动化、企业内部沟通 |
优点 | 开源自托管,灵活定制,广泛集成 | AI原生,低代码开发,企业级应用 | 聊天机器人易于构建,强大的NLP能力,多平台部署 |
缺点 | 学习曲线陡峭,无内置AI,需维护基础设施 | 自动化能力有限,无自托管选项,依赖第三方AI模型 | 自动化功能局限于聊天机器人,无自托管选项,需持续优化AI响应 |
总结
- 若需求侧重于工作流自动化与数据处理,选用n8n;
- 若需求侧重于构建AI驱动应用,则选择Dify;
- 若需求侧重于智能聊天机器人与对话式AI,则选择Coze。
工作流
通过将一个复杂任务分解成多个较小步骤,减少对Prompt Engineering和模型推理能力的依赖,提高LLM应用面向复杂任务的性能。
主要包含以下关键组件:
- 开始节点:每一个工作流都需要一个开始节点,在开始节点内定义输入变量支持文本、段落、下拉选项、数字、文件。配置完成后,在工作流执行时会要求输入开始节点中定义的变量值;
- 结束节点:每一个工作流在完整执行后都需要至少一个结束节点,用于输出完整执行的最终结果。结束节点需要声明一个或多个输出变量,声明时可以引用任意上游节点的输出变量;
- 直接回复:可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复;
- LLM大模型:LLM 是Workflow 的核心节点,利用大语言模型的对话/生成/分类/处理等能力,根据给定的提示词处理广泛的任务类型,并能够在工作流的不同环节使用;
- 知识检索:即记忆模块中介绍的RAG能力,从知识库中检索与用户问题相关的文本内容,可作为下游 LLM 节点的上下文来使用;
- 问题分类:通过定义分类描述,问题分类器能够根据用户输入推理与之相匹配的分类并输出分类结果。常见的使用情景包括客服对话意图分类、产品评价分类、邮件批量分类等;
- 条件分支:允许用户根据 if/else 条件将 workflow 拆分成多个分支,极大地提升workflow的灵活性;
- 代码执行:该节点极大地增强了开发人员的灵活性,使他们能够在工作流程中嵌入自定义的 Python 或 Javascript 脚本,并以预设节点无法达到的方式操作变量。比如结构化数据处理、科学计算、数据拼接;
- 变量聚合:变量聚合节点是工作流程中的一个关键节点,它负责整合不同分支的输出结果,确保无论哪个分支被执行,其结果都能通过一个统一的变量来引用和访问。比如问题分类节点后、条件分支节点后的多路聚合;
- 参数提取:利用LLM从自然语言推理并提取结构化参数,用于后置的工具调用或HTTP请求;
- HTTP请求:允许通过HTTP协议发送服务器请求,适用于获取外部数据、webhook、生成图片、下载文件等情景;
- 工具:包括谷歌搜索、天气查询等内置工具;通过 OpenAPI/Swagger 标准格式导入或配置的自定义工具;已发布为工具的工作流,也可以被其他工作流当做工具来引用
实战
使用方式
方式 | 费用 | 适用场景 | 功能限制 | 数据隐私 |
---|---|---|---|---|
官网试用 | 免费14天 | 快速体验 | 部分高级功能受限 | 数据在n8n云端 |
本机安装 | 永久免费 | 个人/轻量用户 | 全功能可用 | 数据完全本地存储 |
服务器部署 | 永久免费 | 企业/团队使用 | 全功能+高性能 | 私有化掌控 |
部署
本地搭建n8n方式:
- 源码
- npx
- docker run
- docker-compose
源码
git clone https://github.com/n8n-io/n8n.git
cd n8n
npm install
docker
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
# 和RAGFlow有端口冲突
docker run -it --rm --name n8n -p 9300:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
# 如果有问题,使用国内镜像源
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.m.daocloud.io/n8nio/n8n
遇到的问题:
用5678端口,和RAGFlow发生冲突:
镜像已经下载成功,也可以打开Docker Desktop,进入Images标签页,找到n8n,点击Run:
需要设置,虽然说是可选的;如果没有任何设置,浏览器打开http://localhost:5678打不开:
因为没有暴露端口出来。
如果确定命令行或Docker Desktop参数没有问题,还是出现上面问题,则等一下(看电脑配置):
在Docker Desktop上配置参数等同于命令行启动:
注:如果5678端口被占用,则换一个。
启动成功示意图:
上面的输出其实有问题,我本地映射的端口是9300,不是5678。
Ollama集成
打开http://localhost:9300,来到注册页面
第一次使用,可能会要摸索一阵子,好在有人写过很详细的步骤,见文末。
Ollama并不是Docker方式部署,n8n是Docker方式部署,连接11434端口的正确方式:http://host.docker.internal:11434
选择本地部署的mini模型:
完成一个超简单的对话。截图如上,信息量还是非常多的。
界面
上面已经完成一个简单的对话机器人。还是再回过头来看看页面布局,功能菜单啥的。
左上角新增按钮,可新增三类资源:
- Workflow:工作流;
- Credential:远端API,或本地模型配置;
- Project:项目,企业付费模式才能使用。
左侧边栏:
- 模板:跳转到官方模板库,目前有4563个,大致浏览几个,都是免费的,推测应该有付费模板(不管是官方提供还是个人开发者上传);
- 变量:付费版才能使用,通过JS表达式,如
$vars.host
;
- 洞察:提供类似于Dify监测、LangSmith、Langfuse类指标数据监控。默认查看最近7天,如果想切换其他统计维度(如24小时,最近一个月),需付费升级到企业版。提供指标包括:
- Prod.executions:生产运行次数,手动执行不计入统计;
- Failed prod. executions:失败的生产运行次数
- Failure rate:失败率
- Time saved:节省时间
- Run time (avg.):(平均)运行时间
左下角设置:
提供功能:
- 用户:支持邀请,2FA验证企业版可用;
- API:
- 外部密钥:企业版可用;
- 环境:企业版可用;
- SSO:单点登录,支持SAML、OIDC两种方式,企业版可用;
- LDAP:支持LDAP集成,这个功能只对企业用户有意义,事实上也确实是企业版才能使用;
- Log Streaming:企业版可用;
- Community nodes:待研究。
工作流
n8n-workflows,开源的工作流集合,为开发者精心打造的专业仓库,收录多达2055个即用型自动化工作流,并配备一套高性能的文档与搜索(基于SQLite和FTS5全文搜索技术)系统。
核心目标是解决在自动化实践中发现和实施工作流的普遍难题,通过提供一个全面、可快速搜索的资源库,极大地降低自动化开发的门槛,为个人开发者、团队乃至企业提供丰富的灵感、学习资源和可直接复用的解决方案。
本地部署:
# 下载代码
git clone https://github.com/Zie619/n8n-workflows.git
cd n8n-workflows
# 安装依赖
pip install -r requirements.txt
# 启动WebUI
python run.py
可能遇到的问题:
解决方法:PYTHONIOENCODING=utf-8 python run.py
。
浏览器体验地址:http://localhost:8000:
在n8n里也能看到active的按钮:
其中Trigger类型有4种:
- Webhook:Webhook URL触发
- Scheduled:定时任务
- Manual:手动触发
- Complex:复杂
点击任何一个工作流,此处还是以最简单的Ollama为例:
工作流以配置化的通用的JSON格式存储,便于分享。页面上支持JSON预览,JSON下载,还有个展示Diagram按钮,复制Diagram文本(实际上就是支持markdown渲染的mermaid流程图)功能,非常人性化。
CSDN也支持渲染:
拿到JSON文件后,回到n8n工作台,不难找到导入入口:
放大页面,找到Ollama:
右侧的三个点并没有找到模型配置入口,同时注意到红色警告符号,符合预期,模型尚未配置。
鼠标放置到羊驼上,找到配置入口,并选择gemma3:1b
超迷你模型:
告警图标消失后,左下角发起Query;另外,注意看ollama ps
输出,此时并没有启动任何模型。
等待44秒后(原谅我电脑配置太低)。
chat有输出,同时成功启动模型;不过使用下载的配置文件,有个解析JSON错误。
因为模型输出是带markdown语法标记的:
这是一个JSON String,而不是Object。解决方法,在上面报错截图里有提示,不过效果不好。
切换Mode为JSON:
支持编辑JS表达式,可实时预览解析效果:
一个很挫的方法,明明已经解析成功,还是出现红色警告字体:
还是将Mode切回Manual Mapping,类型选String,JS表达式不变,成功解析到Response
:
JS表达式
如上图,输入$
自动提示可选项:
$json
:等价于$input.item.json
$now
:返回当前时间$if()
:条件判断$ifEmpty()
:条件判断$('Basic LLM Chain')
:$('When chat message received')
:$jmespath()
:类似于JSONPath$fromAI()
:内置函数,传参$max()
:取最大值,需传参;$min()
:取最小值,需传参;$execution
:$itemIndex
:$input
:$parameter
:$prevNode
:$runIndex
:$today
:返回今天0点时间$vars
:$workflow
:$nodeVersion
:
插件
Tavily,https://tavily.com/
连接方式:STDIO和SSE。
待研究。
MCP
n8n-nodes-mcp
:与MCP服务器交互,待研究。
参考
- 使用Docker安装n8n并配置ollama本地模型
- n8n开启自动化