学习 n8n:打造自动化工作流的利器

学习 n8n:打造自动化工作流的利器

引言

n8n 是一个开源的工作流自动化工具,允许用户通过可视化的方式连接各种应用程序和服务,轻松实现复杂的工作流自动化。对于希望提升效率的开发者、产品经理或运营人员来说,学习 n8n 是一个值得投资的技能。本文将深入探讨学习 n8n 的关键步骤,并通过实用案例帮助你快速上手。

什么是 n8n?

n8n(发音为“n-eight-n”)是一个基于 Node.js 的自动化平台,支持通过拖拽节点的方式构建工作流。它可以连接数百个应用程序(如 Google Sheets、Slack、Trello 等),并允许用户自定义逻辑。n8n 的核心优势包括:

  • 开源:免费使用,社区活跃,代码透明。
  • 灵活性:支持自定义节点和 JavaScript 代码。
  • 易用性:直观的可视化界面,适合非技术用户。
  • 部署选项:可本地部署或使用云服务。

学习 n8n 的关键步骤

学习 n8n 的过程可以分为以下几个关键步骤,从基础操作到高级应用,逐步提升你的自动化能力。以下是详细的指导和练习建议:

1. 掌握节点和连接

n8n 的核心概念是“节点”(Node),每个节点代表一个特定的操作,比如触发事件、处理数据或发送消息。节点通过连接形成工作流,数据在节点间流动。理解节点类型和工作流结构是入门的第一步。

  • 触发节点:用于启动工作流,例如:
    • Webhook:通过 HTTP 请求触发,如表单提交。
    • Schedule:按时间间隔触发,如每小时运行一次。
  • 操作节点:执行具体任务,例如:
    • HTTP Request:调用外部 API 获取数据。
    • Google Sheets:读写 Google 表格数据。
  • 逻辑节点:控制工作流逻辑,例如:
    • IF:根据条件分支处理。
    • Merge:合并多个数据流。

练习:创建一个简单工作流,每小时从 RSS 源(如新闻网站)获取最新文章标题,并通过 Email 节点发送到你的邮箱。步骤如下:

  1. 添加 Schedule 节点,设置每小时触发。
  2. 添加 RSS Feed Read 节点,输入 RSS 地址(如 https://example.com/feed)。
  3. 添加 Email 节点,配置你的邮箱服务器,引用 RSS 节点的标题数据(如 {{ $node["RSS Feed"].json["title"] }})。

提示:在 n8n 界面中,点击节点右侧的“Execute Node”可以测试单个节点的输出,确保数据正确流动。初学者应多尝试简单的触发-操作组合,熟悉节点连接的逻辑。

2. 熟悉常用集成

n8n 支持连接数百个应用程序,熟悉常用集成是提升效率的关键。初学者可以从以下工具开始,逐步扩展到其他服务:

  • Google Suite:连接 Google Sheets、Drive、Calendar 等,用于数据存储和日程管理。
  • 通信工具:Slack、Discord、Email、Telegram,用于通知和消息传递。
  • 项目管理:Trello、Notion、Asana,用于任务同步。
  • API 服务:通过 HTTP Request 节点连接任何支持 API 的服务。

练习:将 Google Forms 的新提交自动记录到 Google Sheets,具体步骤:

  1. 添加 Google Forms 节点,选择“New Response”触发。
  2. 添加 Google Sheets 节点,配置为“Append”数据到指定表格。
  3. 在 Google Sheets 节点中,映射 Google Forms 的字段(如姓名、邮箱)到表格列。

进阶练习:在上述工作流中添加 IF 节点,筛选特定条件的表单提交(如只记录特定部门的提交),并通过 Slack 通知团队。例如,使用 {{ $node["Google Forms"].json["department"] }} == "Marketing" 作为条件。

提示:确保配置正确的 API 凭据(如 OAuth 或 API Key)。n8n 的凭据管理界面可以保存多个服务的认证信息,方便复用。遇到集成问题时,检查节点的错误日志以定位问题。

3. 学习表达式和变量

n8n 的强大之处在于其动态数据处理能力,通过表达式引用节点输出的数据。表达式使用双大括号语法,例如 {{ $node["NodeName"].json["key"] }},可以访问前一节点返回的 JSON 数据。这对于处理动态数据或创建复杂逻辑至关重要。

  • 基本表达式:访问节点输出,如 {{ $node["RSS Feed"].json["title"] }} 获取 RSS 文章标题。
  • 内置变量:如 {{ $now }}(当前时间)或 {{ $json["index"] }}(当前数据索引)。
  • 动态逻辑:结合 IF 节点和表达式实现条件判断。

练习:从 OpenWeatherMap API 获取某城市的实时天气数据,提取温度并发送到 Telegram。步骤如下:

  1. 添加 HTTP Request 节点,配置 OpenWeatherMap API(需要注册获取 API Key,URL 示例:https://api.openweathermap.org/data/2.5/weather?q=London&appid=YOUR_API_KEY)。
  2. 添加 Telegram 节点,使用表达式提取温度,例如 {{ $node["HTTP Request"].json["main"]["temp"] }}
  3. 测试工作流,确保消息格式正确(如“当前温度:25°C”)。

进阶练习:添加 IF 节点,当温度低于 10°C 时发送警告消息,表达式示例:{{ $node["HTTP Request"].json["main"]["temp"] }} < 283.15(温度单位为开尔文)。

提示:在节点设置中,切换到“Expression”模式可以直接编辑表达式。使用 n8n 的“Test Workflow”功能查看数据流转情况,确保表达式引用正确。

4. 自定义代码节点

当内置节点无法满足需求时,可以使用“Code”节点编写 JavaScript 逻辑。这需要一定的编程基础,但能极大地扩展 n8n 的功能。Code 节点支持处理复杂的数据转换、计算或自定义 API 调用。

  • 输入数据:Code 节点接收前一节点的输出,存储在 items 数组中。
  • 输出数据:返回处理后的数据,格式为 { json: {} }
  • 常见用途:数据格式化、复杂逻辑处理、调用不支持的 API。

练习:从 API 获取 JSON 数据,将其整理为特定格式。例如,API 返回的文章列表包含标题和日期,你需要提取前 3 篇文章并格式化为 Markdown 表格。代码示例如下:

1
2
3
4
5
6
7
8
const items = $input.all();
const result = items.slice(0, 3).map(item => ({
json: {
title: item.json.title,
date: item.json.date
}
}));
return result;

进阶练习:在上述工作流中,添加 Code 节点将日期格式从 YYYY-MM-DD 转换为更友好的格式(如“2025年6月15日”)。示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
const items = $input.all();
const result = items.map(item => {
const date = new Date(item.json.date);
const formattedDate = date.toLocaleDateString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' });
return {
json: {
title: item.json.title,
date: formattedDate
}
};
});
return result;

提示:Code 节点支持 console.log 调试,输出会显示在 n8n 的日志中。建议先在本地测试 JavaScript 逻辑,再粘贴到 Code 节点。遇到复杂逻辑时,分解为多个 Code 节点以提高可读性。

实用案例

案例 1:社交媒体自动化

目标:当博客发布新文章时,自动在 Twitter 发布文章链接。

工作流

  1. RSS Feed Read 节点:监控博客 RSS 源(如 https://yourblog.com/rss)。
  2. IF 节点:检查文章发布时间是否为最近 1 小时,避免重复发布,条件示例:{{ new Date($node["RSS Feed"].json["pubDate"]) > new Date(Date.now() - 3600000) }}
  3. Twitter 节点:发布消息,内容为 {{ $node["RSS Feed"].json["title"] }}: {{ $node["RSS Feed"].json["link"] }}

效果:每次博客更新,Twitter 会自动发布新文章链接,提升内容曝光率。

案例 2:数据同步

目标:将 Trello 卡片的新评论同步到 Notion 数据库。

工作流

  1. Trello 节点:选择“New Comment”触发,监控指定看板。
  2. Code 节点:格式化评论数据,提取用户名、评论内容和时间,示例代码:
1
2
3
4
5
6
7
8
9
const items = $input.all();
const result = items.map(item => ({
json: {
username: item.json.memberCreator.fullName,
comment: item.json.data.text,
time: new Date(item.json.date).toLocaleString('zh-CN')
}
}));
return result;
  1. HTTP Request 节点:调用 Notion API,添加评论到数据库,需配置 Notion API Token 和数据库 ID。

效果:团队协作更高效,Trello 的评论自动归档到 Notion,方便追踪。