n8n 已成为 Agentic AI 领域中一个流行且强大的框架,它让我们无需复杂编码就能构建自动化工作流程。
在本文中,我将一步步讲解如何充分利用这个强大平台,搭建一个自动处理来自 Gmail 的邮件 AI Agent,这样可以减少人工操作,节省我们的宝贵时间。
什么是 n8n?
n8n 是一个开源的自动化工具,它帮助我们连接各种应用和服务,就像搭建一条数字化的流水线一样,用于创建自动化工作流程。用户可以通过可视化的方式设计这些流程,每一个“节点”代表流程中的一个具体步骤。
借助 n8n,我们可以实现任务自动化、数据流转管理,甚至集成各种 API,而且几乎不需要编写复杂的代码。下面是我们将在本教程中构建的一个自动化示例:
在不展开细节的情况下,先简单介绍一下这个自动化流程的作用:
-
它会访问我们的 Gmail 账号,检查是否有新邮件;
-
新邮件会被发送给 ChatGPT 进行 AI 处理;
-
AI 提取出关键信息,并将其保存到一个电子表格中。
如何使用 n8n?
我们有两种方式来使用 n8n:
1. 使用网页版界面:可以通过 n8n 官网使用它的 Web 界面,这需要注册账户并开通付费订阅,不过它提供 14 天免费试用,足够你完成本教程的全部内容。
https://n8n.io/
2. 本地部署:因为 n8n 是开源的,我们也可以在本地运行或自行部署。这是完全免费的,并且几乎能使用所有功能(只有少部分功能仅在其付费云端或企业版中可用)。
这两种方式都可以让你免费跟着教程操作。我们将以本地部署为例进行讲解,不过如果你更喜欢使用 Web 界面,操作步骤也是一样的。
n8n 本地部署
n8n 的官方仓库提供了本地部署的指南。最简单的方式如下:
1. 从 Node.js 官网 下载并安装 Node.js;
2. 打开终端(Terminal),运行以下命令启动 n8n:
npx n8n
n8n 的官方仓库
https://github.com/n8n-io/n8n
Node.js 官网下载地址
https://nodejs.org/en/download

要打开界面,可以直接按键盘上的 “o” 键,或者手动在浏览器中输入终端中显示的本地地址,在我的例子中是 http://localhost:5678。
理解 n8n 的工作原理
在开始构建我们的第一个自动化流程之前,先来了解一下 n8n 的基本原理。
n8n 的工作流程由一系列“节点”组成。它通常以一个触发节点(Trigger Node)开始,这个节点定义了启动整个流程的触发条件。

各个节点通过连接来传递和处理数据。在这个示例中,Gmail 的触发节点连接到了一个 OpenAI 节点,这意味着新收到的邮件会被交给 ChatGPT 进行处理。最终,ChatGPT 的输出结果会被传递到一个 Google Sheet 节点,该节点连接的是我们 Google Drive 中的某个表格,并将数据写入表格中的新一行。
这个特定的工作流程使用 ChatGPT 来识别哪些邮件是需要支付的发票,并将发票的编号(Invoice ID)和金额写入表格的一行中。
n8n 的工作流程可以复杂得多。它目前支持超过 1047 种集成服务,因此我们无法在一篇教程中涵盖所有内容。相反,我会重点介绍它的基本工作原理,以及帮助你自主探索的核心背景知识。如果你有常用的工具,很有可能 n8n 已经支持它,或者你也可以手动进行集成。
在本节中,我们将学习如何构建上面提到的那个自动化流程。
这是我在现实生活中的一个实际用例,用于管理我出租房屋的账单。我有一套房子,分为几个房间出租。账单会在所有租客之间平分。每次收到一张发票时,我需要把总金额添加到一个和租客共享的电子表格中。
我设置了一个专门的邮箱地址,所有与房屋账单相关的发票都会自动转发到这个邮箱。这样我就可以确保这个邮箱中的每一封邮件都是一张发票。我把邮件内容发送给 ChatGPT,请它识别出发票编号和应付总金额,然后将这些信息添加到共享表格中的新一行。
配置邮件触发器
要开始创建一个新的工作流程,我们需要点击 “Add first step…”(添加第一步)按钮。
由于这是第一个节点,所以它必须是一个触发器节点(Trigger Node),因此系统会自动弹出一个面板,让我们选择触发器类型。
触发器节点用于定义启动整个工作流程的条件。

可选的触发器节点种类非常多。我们可以在搜索框中输入 “gmail”,然后点击出现的 Gmail 节点来选择它作为触发器。
接下来,我们选择 Gmail 唯一可用的触发器:“On message received”(收到消息时)。
这将打开节点配置面板,我们需要在其中配置我们的 Gmail 凭据,以便 n8n 工作流程能够访问我们的 Gmail 账户。为此,点击 “New credential”(新建凭据)。这将打开如下窗口:
在右侧(1)有一个设置指南,解释了在 Google Cloud 上配置凭据所需的步骤。n8n 提供的指南非常详细,因此我们在这里不会重复这些步骤。请确保在 Google Cloud 控制台中也启用了 Gmail API。地址如下:
https://console.cloud.google.com/
配置完成后,我们需要将 Google Cloud 中的 客户端 ID(2)和 客户端密钥(3)复制到 n8n 的凭据配置中。
为了确保一切配置正确,我们可以通过点击 “Fetch Test Event”(获取测试事件)来测试该节点。
测试完成后,我们应该能在输出部分看到我们收件箱中最新收到的邮件。邮件内容位于 snippet 字段中。
snippet 字段存储了邮件内容。它显示了我的四月互联网账单已经可用,并提供了发票编号和应付总金额。这些正是我们想要添加到电子表格中的信息。
为了测试,我建议点击右上角的 pin 按钮,将输出固定在屏幕上:
这将把结果锁定到触发器上,这意味着每次我们运行这个工作流程时,都将使用相同的输出,从而使测试工作流程变得更容易,因为结果不会受到我们可能收到的新邮件的影响。一旦工作流程正确设置完成,我们将取消固定。
此时,我们的工作流程应该只有一个触发器节点(我们可以通过左侧的小闪电标记看到它是一个触发器节点)。
请注意,由于你可能在邮箱中没有发票邮件,因此稍后 ChatGPT 很可能会给出一个没有意义的答案。如果你想测试这个特定的工作流程,可以给自己发送一封测试邮件,内容如下(或类似的内容):
亲爱的客户,
您的四月互联网发票编号 FT 2025**/****** 现已附在附件中。
金额
€ **.**
该发票必须在 2025 年 5 月 19 日之前支付。
发送完这封邮件后,你需要取消固定结果,重新运行 Gmail 节点,并固定新的结果。
配置 ChatGPT 节点
下一步是配置 OpenAI 节点。首先,点击 Gmail 触发器节点右侧的 “+” 按钮:
输入 “OpenAI”,然后从列表中选择相应的选项。
然后,在 “Text Actions” 下,选择 “Message a model” 节点。这个节点用于向大模型(LLM)发送消息。
像之前一样,我们需要创建一个凭据来访问 OpenAI。请注意,一旦创建了凭据,它可以在任何工作流程中重复使用,我们无需每次都设置。
对于 OpenAI 凭据,我们只需要一个 API 密钥。如果你没有,可以去下面的官网创建一个。如果你在创建过程中遇到问题,n8n 也提供了相关的指南。
https://platform.openai.com/api-keys
在配置方面,我们需要选择要使用的 AI 模型以及我们发送给模型的消息。对于模型,我们可以选择 GPT 4.1:
在消息字段中,我们需要提供提示词(prompt)。在这个示例中,我们将邮件内容提供给模型,并要求它识别发票编号和应付总金额。以下是我使用的提示:
邮件内容以 {{ $json.snippet }} 的形式提供。在 n8n 中,提示可以包含从前一个节点输出中填充的变量,在我们这个例子中就是邮件内容。可用字段的列表可以在左侧看到。我们可以手动输入字段,也可以将其拖放到提示中。
为了测试这一点,我们点击配置面板顶部的 “Test Step” 按钮。结果将显示在右侧:

结果是一个包含模型回答的字符串。我们希望将这两个字段分开,这样就不需要进一步处理消息。我们可以通过将 LLM 的输出改为 JSON 格式来实现这一点:
再次测试此步骤后,我们得到的结果是两个字段以 JSON 数据的形式显示:

将数据发送到 Google 表格
此工作流程的最后一步是将发票编号和价格发送到 Google 表格中的新行。在此阶段,我们需要将 OpenAI 节点的输出连接到 Google 表格。我们像之前一样,通过点击节点左侧的 “+” 按钮来完成此操作:

在这里,我们需要输入 “Google Sheets” 并选择 “Append row in sheet” 节点:

我们可以使用与 Gmail 访问相同的凭据。但我们需要在 Google Cloud 控制台中启用以下 API:
-
Google Sheets API
-
Google Drive API
要配置 Google Sheets 节点,我们需要选择表格并选择要填充字段的值。表格应该手动创建,包含两列,一列用于存储发票编号,另一列用于存储发票总金额。
这些值来自 OpenAI 节点的输出。我们可以将它们拖放到列中。
运行工作流
完成了!我们已经有了一个可以自动将发票处理到 Google 表格中的工作流程。我们可以通过点击底部的 “Test workflow” 来测试它:
运行后,如果我们打开 Google 表格,就会看到一行包含数据的新记录:
默认情况下,工作流程每分钟运行一次。根据工作流程的不同,我们应该配置一个合适的运行频率。在这个特定的例子中,每分钟运行一次太频繁了,每天运行一次会更合适。
我们可以通过双击触发节点,并在 “Poll Times” 字段中设置不同的值来进行配置:

加入星球获取精心打造的提示工程、RAG和Agent开发实践教程。

(文:PyTorch研习社)