解锁自动化神力:n8n 入门完全指南,告别重复劳动!

354 阅读7分钟

你是否曾为在不同应用间手动复制粘贴数据而烦恼?是否梦想过只需点几下鼠标,就能让工作流自动运行?n8n 正是你寻找的答案。本文将带你从零开始,全面认识这个强大的开源自动化工具。

一、 什么是 n8n?为什么它值得你关注?

在开始技术细节之前,我们先来理解 n8n 是什么。

1.1 n8n 的核心定义

n8n 是一个基于节点的、开源的 workflow automation 工具。我们可以把它拆解来理解:

  • 基于节点: 这是 n8n 最核心的特点。你将通过拖拽不同的“节点”并连接它们来构建自动化流程。每个节点都代表一个特定的任务或操作(例如:“读取 Gmail”、“处理数据”、“发送到 Slack”)。
  • 开源: n8n 采用公平代码 许可,意味着你可以免费查看、使用、修改和分发其源代码。这对于学习、自定义和确保数据安全至关重要。
  • 工作流自动化: 它的终极目标是将那些你每天、每周需要手动执行的、重复性的任务自动化。

1.2 n8n vs. Zapier vs. Make:我该如何选?

你可能听说过 Zapier 或 Make。它们都是优秀的自动化工具,但 n8n 有其独特的优势:

特性n8nZapier / Make
成本开源/自托管免费SaaS 模式,高级功能收费昂贵
数据隐私极高,可部署在自己的服务器上数据经过第三方服务器
灵活性/功能极强,可通过代码节点无限扩展受限于平台提供的模板和功能
学习曲线中等,需要一定技术理解较低,对非技术人员友好
核心优势控制权、自定义能力、成本效益易用性、庞大的应用集成库

结论: 如果你是一名开发者、技术爱好者,或对数据隐私有高要求、希望拥有完全控制权的团队,n8n 几乎是你不二的选择。

二、 核心概念:像搭积木一样构建工作流

要玩转 n8n,你必须理解以下几个核心概念:

  • Workflow: 这是你的自动化蓝图,是整个流程的容器。一个工作流由多个节点连接而成。
  • Node: 节点是工作流的基石。每个节点都有特定的功能。主要分为三类:
    • 触发节点: 启动工作流。例如:定时器、Webhook、收到新邮件等。
    • 处理节点: 在流程中间执行操作。例如:函数、数据转换、条件判断等。
    • 行动节点: 执行最终操作。例如:发送邮件、写入数据库、创建 Google Sheet 记录等。
  • Connection: 连接线,定义了节点之间数据的流动方向。一个节点的输出会成为下一个节点的输入。
  • Data: 数据在工作流中流动。n8n 使用 JSON 格式来传递数据,你可以通过“代码”节点或表达式来操作这些数据。

三、 手把手实战:构建你的第一个自动化工作流

理论说再多不如动手一试。我们将构建一个经典且实用的工作流:“每日定时获取一句名言并发送到 Slack”

3.1 环境准备

  1. 安装 n8n:最简单的方式是使用 Docker。
    docker run -it --rm \
      --name n8n \
      -p 5678:5678 \
      -v ~/.n8n:/home/node/.n8n \
      n8nio/n8n
    
    访问 http://localhost:5678 即可看到 n8n 界面。
  2. 准备一个 Slack:确保你有一个 Slack 工作区,并有权创建 Webhook。

3.2 分步搭建

第一步:设置触发器 - 什么时候启动?

我们的需求是“每日定时”,所以使用 Cron 节点。

  1. 在 n8n 编辑器中,点击 “+” 添加节点。
  2. 搜索并选择 Schedule > Cron
  3. 在节点配置中,设置 Cron 表达式。例如,我们希望每天北京时间上午 9 点执行,可以设置为 0 1 * * *(注意:n8n 默认使用 UTC 时间,比北京时间晚 8 小时)。
  4. 这个节点不需要输入,它会自动在指定时间触发工作流。

第二步:获取数据 - 从哪里获取名言?

我们需要一个提供名言的 API。这里我们使用 Quotable API

  1. 从右侧节点面板添加 HTTP Request 节点。
  2. 将 Cron 节点的输出点连接到 HTTP Request 节点的输入点。
  3. 配置 HTTP Request 节点:
    • Method: GET
    • URL: https://api.quotable.io/random

第三步:测试与解析数据

  1. 点击 Execute Node 按钮来测试 HTTP Request 节点。
  2. 在输出面板,你将看到类似这样的 JSON 数据:
    {
      "_id": "...",
      "content": "The best way to predict the future is to invent it.",
      "author": "Alan Kay"
    }
    
  3. 这表明我们成功获取到了数据。n8n 会自动解析 JSON,方便后续节点使用。

第四步:格式化消息 - 如何组织要发送的内容?

我们希望发送到 Slack 的消息是格式良好的。这里使用 Set 节点来构造新的 JSON 对象。

  1. 添加 Set 节点并连接到 HTTP Request 节点。
  2. 在配置中,选择 “Replace Everything”。这表示我们将创建一个全新的数据结构。
  3. 添加两个字段:
    • Name: text
    • Value: {{$json.content}} - {{$json.author}}
      • 这里使用了 n8n 强大的表达式{{$json.content}} 会引用上一个节点输出数据中的 content 字段。

第五步:执行动作 - 发送到 Slack

现在是最后一步,将格式化好的消息推送到 Slack。

  1. 添加 Slack 节点并连接到 Set 节点。
  2. 如果你是第一次使用,需要点击 “Add Credential” 来配置 Slack 凭证。
    • 在 Slack 官网创建一个 Incoming Webhook
    • 将获得的 Webhook URL 填入 n8n 的 Slack 凭证中。
  3. 在 Slack 节点配置中:
    • Channel: 选择你要发送到的频道(如 #general)。
    • Text: 填入 {{$json.text}}。这里引用了 Set 节点创建的 text 字段。
  4. 保存你的工作流,并点击右上角的 Active 开关将其激活。

大功告成! 现在,你的工作流会在每天指定的时间自动运行,抓取一句随机的名人名言,并推送到你指定的 Slack 频道中。

四、 进阶技巧:释放 n8n 的真正潜力

上面的例子只是牛刀小试。n8n 的强大在于其灵活性。

4.1 使用 “IF” 节点做条件判断

假设我们只想在名言超过 50 个字符时才发送到 Slack。

  1. 在 HTTP Request 和 Set 节点之间,插入一个 IF 节点。
  2. 配置条件:
    • Value 1: {{$json.content.length}} (表达式计算名言内容的长度)
    • Operation: Larger Than
    • Value 2: 50
  3. 然后将 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 允许你为每个节点配置错误处理。

  1. 点击节点右上角的 “叉号” 图标,会引出一条新的连接线。
  2. 你可以将这条线连接到一个 “通知” 节点(如 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=trueN8N_BASIC_AUTH_USER / N8N_BASIC_AUTH_PASSWORD 来启用密码保护。

六、 总结与展望

通过本指南,你已经掌握了 n8n 的核心概念,并成功构建了你的第一个自动化工作流。我们学习了:

  • n8n 的定位与优势。
  • 工作流、节点、连接等核心概念。
  • 一个从触发、获取数据、处理到执行的完整流程。
  • 条件判断、代码节点等进阶技巧。

n8n 的世界远不止于此。你可以用它来:

  • 自动同步不同 SaaS 平台的数据。
  • 监控网站变化并在价格下降时通知你。
  • 处理表单提交,并自动录入到 CRM 和表格中。
  • 搭建复杂的 ETL 管道。

现在,就打开你的 n8n,开始将那些繁琐的任务自动化,把宝贵的时间和精力投入到更有创造性的工作中去吧!


互动环节: 你现在能想到你的工作或生活中有哪些任务可以用 n8n 来优化吗?欢迎在评论区分享你的想法或遇到的问题!