你是否曾为在不同应用间手动复制粘贴数据而烦恼?是否梦想过只需点几下鼠标,就能让工作流自动运行?n8n 正是你寻找的答案。本文将带你从零开始,全面认识这个强大的开源自动化工具。
一、 什么是 n8n?为什么它值得你关注?
在开始技术细节之前,我们先来理解 n8n 是什么。
1.1 n8n 的核心定义
n8n 是一个基于节点的、开源的 workflow automation 工具。我们可以把它拆解来理解:
- 基于节点: 这是 n8n 最核心的特点。你将通过拖拽不同的“节点”并连接它们来构建自动化流程。每个节点都代表一个特定的任务或操作(例如:“读取 Gmail”、“处理数据”、“发送到 Slack”)。
- 开源: n8n 采用公平代码 许可,意味着你可以免费查看、使用、修改和分发其源代码。这对于学习、自定义和确保数据安全至关重要。
- 工作流自动化: 它的终极目标是将那些你每天、每周需要手动执行的、重复性的任务自动化。
1.2 n8n vs. Zapier vs. Make:我该如何选?
你可能听说过 Zapier 或 Make。它们都是优秀的自动化工具,但 n8n 有其独特的优势:
| 特性 | n8n | Zapier / Make |
|---|---|---|
| 成本 | 开源/自托管免费 | SaaS 模式,高级功能收费昂贵 |
| 数据隐私 | 极高,可部署在自己的服务器上 | 数据经过第三方服务器 |
| 灵活性/功能 | 极强,可通过代码节点无限扩展 | 受限于平台提供的模板和功能 |
| 学习曲线 | 中等,需要一定技术理解 | 较低,对非技术人员友好 |
| 核心优势 | 控制权、自定义能力、成本效益 | 易用性、庞大的应用集成库 |
结论: 如果你是一名开发者、技术爱好者,或对数据隐私有高要求、希望拥有完全控制权的团队,n8n 几乎是你不二的选择。
二、 核心概念:像搭积木一样构建工作流
要玩转 n8n,你必须理解以下几个核心概念:
- Workflow: 这是你的自动化蓝图,是整个流程的容器。一个工作流由多个节点连接而成。
- Node: 节点是工作流的基石。每个节点都有特定的功能。主要分为三类:
- 触发节点: 启动工作流。例如:定时器、Webhook、收到新邮件等。
- 处理节点: 在流程中间执行操作。例如:函数、数据转换、条件判断等。
- 行动节点: 执行最终操作。例如:发送邮件、写入数据库、创建 Google Sheet 记录等。
- Connection: 连接线,定义了节点之间数据的流动方向。一个节点的输出会成为下一个节点的输入。
- Data: 数据在工作流中流动。n8n 使用 JSON 格式来传递数据,你可以通过“代码”节点或表达式来操作这些数据。
三、 手把手实战:构建你的第一个自动化工作流
理论说再多不如动手一试。我们将构建一个经典且实用的工作流:“每日定时获取一句名言并发送到 Slack”。
3.1 环境准备
- 安装 n8n:最简单的方式是使用 Docker。
访问docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8nhttp://localhost:5678即可看到 n8n 界面。 - 准备一个 Slack:确保你有一个 Slack 工作区,并有权创建 Webhook。
3.2 分步搭建
第一步:设置触发器 - 什么时候启动?
我们的需求是“每日定时”,所以使用 Cron 节点。
- 在 n8n 编辑器中,点击 “+” 添加节点。
- 搜索并选择 Schedule > Cron。
- 在节点配置中,设置 Cron 表达式。例如,我们希望每天北京时间上午 9 点执行,可以设置为
0 1 * * *(注意:n8n 默认使用 UTC 时间,比北京时间晚 8 小时)。 - 这个节点不需要输入,它会自动在指定时间触发工作流。
第二步:获取数据 - 从哪里获取名言?
我们需要一个提供名言的 API。这里我们使用 Quotable API。
- 从右侧节点面板添加 HTTP Request 节点。
- 将 Cron 节点的输出点连接到 HTTP Request 节点的输入点。
- 配置 HTTP Request 节点:
- Method: GET
- URL:
https://api.quotable.io/random
第三步:测试与解析数据
- 点击 Execute Node 按钮来测试 HTTP Request 节点。
- 在输出面板,你将看到类似这样的 JSON 数据:
{ "_id": "...", "content": "The best way to predict the future is to invent it.", "author": "Alan Kay" } - 这表明我们成功获取到了数据。n8n 会自动解析 JSON,方便后续节点使用。
第四步:格式化消息 - 如何组织要发送的内容?
我们希望发送到 Slack 的消息是格式良好的。这里使用 Set 节点来构造新的 JSON 对象。
- 添加 Set 节点并连接到 HTTP Request 节点。
- 在配置中,选择 “Replace Everything”。这表示我们将创建一个全新的数据结构。
- 添加两个字段:
- Name:
text - Value:
{{$json.content}} - {{$json.author}}- 这里使用了 n8n 强大的表达式!
{{$json.content}}会引用上一个节点输出数据中的content字段。
- 这里使用了 n8n 强大的表达式!
- Name:
第五步:执行动作 - 发送到 Slack
现在是最后一步,将格式化好的消息推送到 Slack。
- 添加 Slack 节点并连接到 Set 节点。
- 如果你是第一次使用,需要点击 “Add Credential” 来配置 Slack 凭证。
- 在 Slack 官网创建一个 Incoming Webhook。
- 将获得的 Webhook URL 填入 n8n 的 Slack 凭证中。
- 在 Slack 节点配置中:
- Channel: 选择你要发送到的频道(如 #general)。
- Text: 填入
{{$json.text}}。这里引用了 Set 节点创建的text字段。
- 保存你的工作流,并点击右上角的 Active 开关将其激活。
大功告成! 现在,你的工作流会在每天指定的时间自动运行,抓取一句随机的名人名言,并推送到你指定的 Slack 频道中。
四、 进阶技巧:释放 n8n 的真正潜力
上面的例子只是牛刀小试。n8n 的强大在于其灵活性。
4.1 使用 “IF” 节点做条件判断
假设我们只想在名言超过 50 个字符时才发送到 Slack。
- 在 HTTP Request 和 Set 节点之间,插入一个 IF 节点。
- 配置条件:
- Value 1:
{{$json.content.length}}(表达式计算名言内容的长度) - Operation: Larger Than
- Value 2:
50
- Value 1:
- 然后将 IF 节点的 “true” 分支连接到 Set 节点,“false” 分支可以什么都不连,或者连接一个 “No Operation” 节点。这样,只有满足条件时,流程才会继续。
4.2 使用 “Code” 节点处理复杂逻辑
当内置节点无法满足你的数据处理需求时,“Code” 节点是你的瑞士军刀。你可以用 JavaScript 或 Python 编写任意逻辑。
例如,将名言和作者反转:
// 从上一个节点获取数据
const inputData = $input.all()[0].json;
// 处理数据
const reversedContent = inputData.content.split('').reverse().join('');
const reversedAuthor = inputData.author.split('').reverse().join('');
// 返回新的 JSON 数据
return [{ json: {
originalContent: inputData.content,
funContent: reversedContent,
funAuthor: reversedAuthor
} }];
4.3 错误处理
工作流难免会出错(如 API 宕机、网络问题)。n8n 允许你为每个节点配置错误处理。
- 点击节点右上角的 “叉号” 图标,会引出一条新的连接线。
- 你可以将这条线连接到一个 “通知” 节点(如 Email 或 Slack),当该节点执行失败时,就会触发错误流程,及时通知你。
五、 部署与生产环境建议
本地运行只适合测试。要长期使用,你需要将其部署到服务器。
- 推荐部署方式:使用 Docker Compose,可以方便地集成数据库(如 Postgres)来持久化你的工作流和数据。
# docker-compose.yml version: '3.8' services: n8n: image: n8nio/n8n restart: always ports: - "5678:5678" environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=your_db_host - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=your_user - DB_POSTGRESDB_PASSWORD=your_password volumes: - ~/.n8n:/home/node/.n8n - 安全配置:在生产环境,务必设置
N8N_BASIC_AUTH_ACTIVE=true和N8N_BASIC_AUTH_USER/N8N_BASIC_AUTH_PASSWORD来启用密码保护。
六、 总结与展望
通过本指南,你已经掌握了 n8n 的核心概念,并成功构建了你的第一个自动化工作流。我们学习了:
- n8n 的定位与优势。
- 工作流、节点、连接等核心概念。
- 一个从触发、获取数据、处理到执行的完整流程。
- 条件判断、代码节点等进阶技巧。
n8n 的世界远不止于此。你可以用它来:
- 自动同步不同 SaaS 平台的数据。
- 监控网站变化并在价格下降时通知你。
- 处理表单提交,并自动录入到 CRM 和表格中。
- 搭建复杂的 ETL 管道。
现在,就打开你的 n8n,开始将那些繁琐的任务自动化,把宝贵的时间和精力投入到更有创造性的工作中去吧!
互动环节: 你现在能想到你的工作或生活中有哪些任务可以用 n8n 来优化吗?欢迎在评论区分享你的想法或遇到的问题!