# n8n 入门教程：做出你的第一个工作流

> n8n 的第一个工作流，就是画布上的四个节点：触发器启动运行，HTTP Request 节点取回数据，Edit Fields 节点把数据拼成一句话，Data table 节点把这一行存起来。n8n 官方的快速入门做的就是一份每日天气记录。你先在编辑器里测试，再发布，它就会自己按时运行。

Mindket 编辑部 · 发布于 2026-11-04 · 更新于 2026-11-06 · https://mindket.com/cn/learn/n8n/n8n-first-workflow

## 要点

- 做出一个四节点的工作流：定时触发器、HTTP Request、Edit Fields 和 Data table。
- 用 `{{ $json.city }}` 这样的表达式，把一个值从上一个节点传给下一个节点。
- 打开一条执行记录，看每个节点收到了什么、送出了什么。
- 发布工作流，让触发器不用你动手也能运行。

## 开始之前

你需要一个 n8n 实例。最快的是申请 [n8n Cloud 试用](https://app.n8n.cloud/register)，自托管的也一样用（第 4 课会用 Docker 装一个）。n8n 的[快速入门](https://docs.n8n.io/build-your-first-workflow)不要求写过代码。碰到不熟的词，可以先看[什么是 n8n](https://mindket.com/cn/blog/what-is-n8n)，里面讲了节点、触发器和凭据。

天气数据来自 n8n 自己托管的示例 API，所以整个快速入门只填一个网址，不用配凭据。它大约覆盖 40 个欧洲城市，别的城市会返回错误。本课和快速入门一样，用柏林。

快速入门还有条捷径：把想要的工作流说给 n8n Assistant 听，确认它列出的步骤。n8n 说，在套餐或版本带有 Assistant 的情况下，大约五分钟就能完成。亲手搭学得更多，所以下面走手动这条路。

## 一步步操作（附截图）

这个工作流每天早上自己醒来，取回柏林的天气，写成一句话，存进一张表。每搭一个节点就顺手改个名字，因为默认名字到第三个节点前后就很难分辨了。第 4 步要在 report 字段里填下面这段内容：

````text
The temperature in {{ $json.city }} is {{ $json.temp_c }}°C. It's currently {{ $json.condition }}.
````

1. 全新的实例，首页上有 **Build a workflow**（创建工作流）。选它，再选空白画布上的 **Add first step**（添加第一步）。在询问“什么触发这个工作流”的面板里，选 **On a schedule**（按计划）。
   ![Personal 下一个名为 My workflow 的空白画布，右侧打开了“What triggers this workflow?”面板。On a schedule 这一行用金色圈出。](https://mindket.com/blog/screens/n8n-first-workflow-1-on-a-schedule.webp?v=f0e9e5aac099)
2. **Trigger Interval** 保持 Days，打开 **Trigger at Hour**，选 **8am**。点标题，把节点改名为 Every day at 8 AM。黄色提示说，发布之后它才会按这个计划运行。
   ![标题为 Every day at 8 AM 的 Schedule Trigger 窗口。Trigger Interval 显示 Days，用金色圈出的 Trigger at Hour 一栏显示 8am。](https://mindket.com/blog/screens/n8n-first-workflow-2-schedule-trigger.webp?v=72c1b81e6b19)
3. 关掉窗口，在触发器后面点 **+**，搜索 `http`，选 **HTTP Request**。在 **URL** 里填 `https://mockingbird.n8n.io/v1/weather/berlin`，再选 **Execute step**，然后把节点改名为 Get Berlin weather。输出里列出 `city`、`temp_c` 和 `condition`。图里的地址是拍摄那台电脑上的替身地址，所以数值会和你的不一样。
   ![标题为 Get Berlin weather 的 HTTP Request 窗口。URL 一栏填的是以 /v1/weather/berlin 结尾的本机替身地址，它和 Execute step 按钮都用金色圈出。右侧的输出列出 city 为 Berlin，temp_c 为 9，condition 为 Light rain。](https://mindket.com/blog/screens/n8n-first-workflow-3-http-request-output.webp?v=b6349e210072)
4. 点 **+**，选 **Data transformation**，再选 **Edit Fields (Set)**。添加一个叫 `report` 的字段，**Value** 照上面那句话来写：文字自己输入，`city`、`temp_c` 和 `condition` 从 **INPUT** 面板拖进来。选 **Execute step**，节点改名为 Add weather report。
   ![标题为 Add weather report 的 Edit Fields 窗口。report 字段的值用金色圈出，用 {{ $json.city }}、{{ $json.temp_c }} 和 {{ $json.condition }} 拼成一句话，Execute step 按钮也圈了出来，输出里是拼好的那句话。](https://mindket.com/blog/screens/n8n-first-workflow-4-edit-fields-report.webp?v=b0a1acd4b212)
5. 点 **+**，添加一个 **Data table** 节点，操作选 **Insert row**。打开 **Data table** 下拉框，选 **Create new data table**。n8n 会为它新开一个浏览器标签页。
   ![Data table 节点的 Insert row 窗口。Data table 下拉框已展开，其中的 Create new data table 一行用金色圈出。](https://mindket.com/blog/screens/n8n-first-workflow-5-create-data-table.webp?v=0b211df449af)
6. 在新标签页里给表起名，选 **Create**。再选 **Add Column**，名称填 `report`，类型保持 string，选 **Add Column**。然后关掉这个标签页。
   ![Personal 的 Data tables 下一张名为 Weather log 的数据表。Add Column 的小框已打开，名称里填了 report，名称输入框和 Add Column 按钮都用金色圈出。](https://mindket.com/blog/screens/n8n-first-workflow-6-table-report-column.webp?v=45588e87853b)
7. 回到工作流标签页，选中你的表，把 **Mapping Column Mode** 设为 **Map Automatically**，节点改名为 Save weather log。关掉窗口，点顶部的 **My workflow**，把工作流改名为 Weather Log。选画布下方的 **Execute**。运行结束后，每个节点都显示绿色对勾。
   ![运行之后的 Weather Log 画布：Every day at 8 AM、Get Berlin weather、Add weather report 和 Save weather log，每个节点都带绿色对勾，节点之间的连线上写着 1 item。画布下方的 Execute 按钮用金色圈出。](https://mindket.com/blog/screens/n8n-first-workflow-7-execute-workflow.webp?v=1f65ff319f1d)
8. 打开 **Personal**，再打开 **Data tables**，然后打开你的表。新的一行里，就是工作流写下的那句话。
   ![只有一行数据的 Weather log 数据表。用金色圈出的 report 单元格里，是一句关于柏林 9°C、小雨的话。](https://mindket.com/blog/screens/n8n-first-workflow-8-data-table-row.webp?v=da6f005589d5)

*n8n 2.46.6 自托管在 Windows 的 Docker 里，截图拍摄于 2026 年 11 月 6 日。图里的天气接口是拍摄用电脑上的替身，代替 n8n 的示例接口。*

## 发布它

截图停在一次测试运行上。要让定时器替你干活，还差最后一步。

1. 选择画布顶部的 **Publish**，按提示完成。
2. 从此这个工作流每天早上 8 点按工作流的时区自己运行。第二天早上，打开那张表，看有没有第二行。

## 数据怎样从一个节点传到下一个

每个节点交给下一个节点的，都是一组数据项（item），每一项是一个对象。n8n 的[数据结构说明](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure)说得很直接：节点之间传的所有数据，都是对象组成的数组。普通的值放在 `json` 键下，文件放在 `binary` 键下。一个节点收到好几项，就会逐项处理。

数据不用你手动连线。把 **INPUT** 面板里的字段拖进某个参数，n8n 就替你写好表达式，比如拖入 `fruit` 得到 `{{ $json.fruit }}`。一个字段可以填固定值，也可以填[表达式](https://docs.n8n.io/build/work-with-data/transform-data/expressions-for-data-transformation)，切到表达式模式后还可以直接手写。花括号里面是 JavaScript。

**一次运行，按顺序做了什么**

1. Every day at 8 AM。定时触发，启动这次运行。
2. Get Berlin weather。调用示例 API，返回 `city`、`temp_c` 和 `condition`。
3. Add weather report。用这三个字段拼出 `report` 这句话。
4. Save weather log。把这句话作为新的一行插入数据表。

| 表达式 | 读取的内容 | 示例 |
| --- | --- | --- |
| `$json` | 当前这一项的数据 | `{{ $json.temp_c }}` |
| `$('Node Name')` | 指定名称的节点里的数据 | `{{ $('Get Berlin weather').item.json.city }}` |
| `$now` | 此刻的时间，按工作流的时区 | `{{ $now }}` |
| `$itemIndex` | 当前这一项在输入列表里的位置 | `{{ $itemIndex }}` |

## 测试运行、生产运行和发布

工作流跑一次，叫一次[执行](https://docs.n8n.io/build/understand-workflows/understand-executions)。选 Execute 启动的是手动执行，用来测试。发布之后的工作流，会自己产生生产执行。付费套餐的配额只计生产执行，所以在编辑器里测试不会占用它。

打开 **Executions** 标签页，能看到这个工作流过去的每次运行。失败的运行选 **Debug in editor**，成功的运行选 **Copy to editor**。无论哪种，n8n 都会把那次运行的数据[复制进你的工作流](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions)，并固定在第一个节点上，这样你改好某一步，就能用同一份数据重跑。这个功能在 n8n Cloud 和自托管的 Registered Community、Business、Enterprise 版里都有，注册社区版实例是免费的。

触发器里的 8 点，按的是工作流的时区，工作流没设时区就按实例的时区，这是 [Schedule Trigger 说明](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger)里写的。自托管实例默认是 America/New York。n8n Cloud 会在注册时尝试识别所有者的时区，识别不了就用 GMT。等明天那一行数据之前，先确认你用的是哪个时区。

| 运行类型 | 什么时候开始 | 是否计入付费套餐配额 |
| --- | --- | --- |
| 手动执行 | 你选择 Execute | 不计入 |
| 生产执行 | 已发布工作流的触发器触发 | 计入 |
| 子工作流运行 | 由父工作流调用 | 不计入，只算父工作流 |

## n8n 官方团队怎么说数据表和 Assistant 搭的工作流

2025 年 9 月 22 日，n8n 团队[在 X 上发布了数据表](https://x.com/n8n_io/status/1970148748840874288)，当时放在 1.113.0 的预发布版里。帖子说，它是 n8n 自带的存储，不用外部数据库，也不用凭据，可以在多次运行之间保存状态。本课的 Save weather log 节点做的正是这件事：每天早上 8 点跑一次，就多一行，之前几次运行的结果都留在表里。

一年后，2026 年 9 月 10 日，团队在 X 上发了一串讲 n8n Assistant 的帖子，你描述目标，它替你搭工作流。团队[在其中一条回复里](https://x.com/n8n_io/status/2097996379301741038)提醒，Assistant 不一定第一次就把每个工作流都搭对。所以走快速入门里 Assistant 那条捷径时，要像对待自己手搭的工作流一样对待它：发布之前，在 Executions 标签页里打开那次运行，看每个节点收到了什么、送出了什么。

> 依赖它之前，先检查工作流和执行日志，哪里出了问题就告诉我们。
>
> n8n.io, n8n 的官方账号，引文为译文, [X](https://x.com/n8n_io/status/2097996379301741038) (2026-11-05 查阅)

[![n8n.io（@n8n_io）2025 年 9 月 22 日在 X 上的帖子：数据表来了，这是工作流自带的存储，不用外部数据库，也不用凭据。可以在多次运行之间保存状态、存会话数据，或者暂存中间结果。所有套餐都能在 v1.113.0 预发布版里用上。](https://mindket.com/blog/shots/x-n8n-io-data-tables-launch.webp?v=40ad9794f794)](https://x.com/n8n_io/status/1970148748840874288)

n8n.io 在 X 上，2025 年 9 月 22 日

[![n8n.io（@n8n_io）2026 年 9 月 10 日在 X 上 n8n Assistant 那串帖子里的回复：今天起，受支持的 Cloud 和自托管 Docker 环境都能用，之后每个版本还会加功能、做改进。它不一定第一次就把每个工作流都搭对。依赖它之前，先检查工作流和执行日志，哪里出了问题就告诉我们。](https://mindket.com/blog/shots/x-n8n-io-assistant-check-logs.webp?v=ceca99baedb2)](https://x.com/n8n_io/status/2097996379301741038)

n8n.io 在 X 上，2026 年 9 月 10 日

[n8n Quick Start Tutorial: Build Your First Workflow [2025]](https://www.youtube.com/watch?v=4cQWJViybAQ)

n8n 自己的 YouTube 频道，在 Quick Start Tutorial 里搭了第一个工作流。

> X 官方嵌入卡片的截图，拍摄于 2026 年 11 月 5 日，时间为 UTC。X 在第一条帖子处用“Show more”截断了后面的内容。点击截图可到 X 上打开原帖。

## 常见错误

- 忘了发布。定时触发器要等你保存并发布工作流之后才会触发，所以测试全通过的工作流，照样可能一直闲着。
- 用了示例 API 没有的城市。大约 40 个欧洲城市之外的城市，都会返回错误。
- 引用了还没运行过的节点。像 `$('Get Berlin weather')` 这样的表达式，在你把工作流测试到那个节点之前，会报“Referenced node is unexecuted”。
- 在固定值字段里直接敲花括号。先把字段切到表达式模式，或者从 **INPUT** 面板拖值进来。
- 把一次绿色的测试结果当成定时一定会跑。Execute 只是现在立刻跑一遍。早上 8 点那次能不能跑，取决于有没有发布，以及时区对不对。

## 自己试一试

每次只改一处，改完就把工作流跑一遍。

- 把网址里的 `berlin` 换成别的城市。如果报错，说明示例 API 不覆盖那个城市。
- 在 [Edit Fields](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set) 里再加一个字段，把 `temp_c` 换算成华氏度。表达式就是 JavaScript，所以 `{{ $json.temp_c * 9 / 5 + 32 }}` 可以作为起点。给数据表加一个对应的列，再看新增的那一行。
- 打开 **Executions** 标签页，选中你的那次运行，找出每一列数据分别是哪个节点产生的。
- 把触发器改成按分钟的间隔，发布，看着新行一条条出现。试完取消发布，或者改回去。

## 接下来学什么

你的工作流是靠时钟启动的。很多实际的工作流是被别的应用调用才启动，这就是 Webhook 节点，也就是[第 2 课](https://mindket.com/cn/learn/n8n/n8n-webhook)的内容。[第 3 课](https://mindket.com/cn/learn/n8n/n8n-ai-agent)在同一块画布上搭一个 AI 智能体。如果想直接从现成的工作流学起，可以从 Mindket 的 n8n 工作流里[导入一个](https://mindket.com/cn/blog/import-n8n-workflow)，每个模板的节点在下载前就已经画出来了。

## 自测一下

1. 你的工作流每次测试都通过，却从不在早上 8 点触发。你先检查什么？

   A. HTTP Request 节点是否需要凭据
   B. 数据表是否不止一列
   C. 工作流是否已发布，以及它按哪个时区
   D. 节点名字是否和快速入门一致

   答案：C。 定时触发器要等你发布工作流之后才会触发，它的 8 点按工作流的时区，没设时区就按实例的时区。

2. 怎样把一个节点的字段传给下一个节点的参数？

   A. 把字段名复制进一个 Code 节点
   B. 从 INPUT 面板拖进来，n8n 会替你写好表达式
   C. 把节点改名，让它和字段一致
   D. 先发布工作流

   答案：B。 把 INPUT 面板里的字段拖进参数，n8n 就替你写好表达式，比如 {{ $json.city }}。

3. 哪一种运行会计入付费套餐的配额？

   A. 由已发布的触发器启动的生产执行
   B. 用 Execute 启动的手动执行
   C. 由父工作流调用的子工作流运行

   答案：A。 只有生产执行计入配额，所以在编辑器里测试不占配额，子工作流运行也只通过它的父工作流计入。

4. 一次运行失败了，你想改好某一步，再用同一份数据重跑。在 Executions 标签页里该选什么？

   A. 画布上的 Publish
   B. Copy to editor
   C. 某个节点上的 Execute step
   D. Debug in editor

   答案：D。 对失败的运行，Debug in editor 会把那次运行的数据复制进你的工作流，并固定在第一个节点上，这样就能用同一份数据重跑。

## 常见问题

### n8n 对新手免费吗？

有两种免费的开始方式。n8n Cloud 有 14 天带 Pro 功能的免费试用，自托管的社区版免费，功能几乎齐全，这是 n8n [对比页面](https://docs.n8n.io/choose-how-to-use-n8n)上写的。

### 用 n8n 需要会写代码吗？

不需要。快速入门的前提里没有写代码经验这一项，搭工作流就是把节点连起来。之后才会用到代码，因为表达式就是 JavaScript。

### n8n 里的节点和触发器有什么区别？

触发器是特殊的节点，条件满足时（比如定时到了）启动整个工作流。每个节点都是搭工作流时用到的一个组件。n8n 的术语表对两者都有定义。

### 可以不用示例天气 API，换成我自己的 API 吗？

可以。[HTTP Request 节点](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest)能填任意网址，请求方法可以选 DELETE、GET、HEAD、OPTIONS、PATCH、POST 和 PUT，API 需要的话，还能设置认证、请求头和请求体。

### 我的 n8n 工作流为什么没有按时运行？

先看时区：工作流里设了时区就按它，没设就按实例的时区，自托管默认是 America/New York。再确认工作流发布了，因为没发布的定时触发器永远不会触发。

### 学完这一课，去哪里继续练习 n8n？

n8n Academy 的课程列在文档的[学习路径](https://docs.n8n.io/learning-paths)里，有动手练习、小测验和结业考试，达到 70% 的及格线，就能拿到徽章和证书。

## 资料来源

- [n8n Docs: Build your first workflow](https://docs.n8n.io/build-your-first-workflow) (2026-11-04 查阅)
- [n8n Docs: Understand n8n's data structure](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) (2026-11-04 查阅)
- [n8n Docs: Expressions for data transformation](https://docs.n8n.io/build/work-with-data/transform-data/expressions-for-data-transformation) (2026-11-04 查阅)
- [n8n Docs: Expression reference](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference) (2026-11-04 查阅)
- [n8n Docs: Understand executions](https://docs.n8n.io/build/understand-workflows/understand-executions) (2026-11-04 查阅)
- [n8n Docs: Debug executions](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions) (2026-11-04 查阅)
- [n8n Docs: Key concept glossary](https://docs.n8n.io/key-concept-glossary) (2026-11-04 查阅)
- [n8n Docs: Schedule Trigger node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger) (2026-11-04 查阅)
- [n8n Docs: Edit Fields (Set) node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set) (2026-11-04 查阅)
- [n8n Docs: HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) (2026-11-04 查阅)
- [n8n Docs: Choose how to use n8n](https://docs.n8n.io/choose-how-to-use-n8n) (2026-11-04 查阅)
- [n8n Docs: Learning paths](https://docs.n8n.io/learning-paths) (2026-11-05 查阅)
- [n8n.io on X: data tables are here, 22 September 2025](https://x.com/n8n_io/status/1970148748840874288) (2026-11-05 查阅)
- [n8n.io on X: n8n Assistant is live, check the execution logs, 10 September 2026](https://x.com/n8n_io/status/2097996379301741038) (2026-11-05 查阅)
- [n8n on YouTube: n8n Quick Start Tutorial: Build Your First Workflow [2025]](https://www.youtube.com/watch?v=4cQWJViybAQ) (2026-11-05 查阅)

[浏览 n8n 工作流](https://mindket.com/cn/automations/n8n)
