TOOLS / 8 BOOKS / 07 · ENGINE v1
n8n 跨软件自动化
本册:n8n 的事件驱动与数组流
30 SECONDS / 30 秒看懂
这一册只解决一件事:n8n 用事件触发器主动监听外部世界,用 JSON Items 数组自动逐条处理数据。
- 触发器:Cron 定时、Webhook 外部事件、IMAP 邮件等
- 节点默认对数组里的每个 Item 各执行一次,不写 for 循环
- 通知前要 Aggregate 合并,否则会连响 N 次
3 MINUTES / 3 分钟拆解
先看来源里的例子:PDF 本册核心例子(来源)
RSS 抓取 20 篇文章,后面只连一个 AI 总结节点,没有写循环。
发生了什么
n8n 在节点间流动的是 JSON 对象数组;大多数动作节点默认 Run Once for Each Item,所以自动总结了 20 次。
输出
来源提醒:如果直接连通知节点会发 20 条;要汇总成 1 条日报,必须在中间加 Aggregate。
术语拆开
- Webhook
- 外部系统主动推送事件的 HTTP 回调。
- Cron
- 定时触发器。
- Item
- n8n 数组流里的单条数据。
为什么有效
来源对比 Dify:Dify 是被动响应的 AI 智囊,n8n 是主动监听外部事件、连接 400+ 软件的神经中枢。
结构长什么样
Trigger → 抓取/读取 → N 个 Item 自动逐条处理 → Aggregate → 通知/写入
为什么 n8n 里不写 for 循环,20 篇文章也会被处理 20 次?
SOURCE READING / 来源精读
本册讲 n8n 的事件驱动触发器、JSON 数组流与跨软件编排,以及与 Dify 的分工。
逐点读懂
- n8n 是主动监听外部事件的自动化中枢
- Webhook/Cron 是两类触发器
- 节点默认逐 item 执行,汇总要显式 Aggregate
怎么对应本关练习
先用 30 秒看懂抓四层结构,再读本册的‘顿悟时刻/原理/动手实验’,最后做课后自测;答案在下方。
例子在哪
本册的动手实验与课后自测都在原文;参考答案见本页下方。
n8n 的事件驱动与数组流
【第二辑:神兵利器篇 · 课题 07 / 08】AI 现代必修课 · 前沿工具深讲与动手实验讲义
利器07:跨软件自动化引擎——n8n 事件驱动与全自动信息流实战让 AI 走出聊天窗口,融入全网事件流:搞懂主动触发器(Webhook/Cron)、JSON 数组流自动迭代与跨软件编排核心知识参考:n8n-io/n8n (Fair-code Workflow Automation Platform, 184k+ Stars)
一、顿悟时刻:哦,原来 n8n 和 Dify 的分工差异与“免写循环”机制是这么回事!
在学完《利器06:Dify 工作流》后,很多订阅者第一次看到 GitHub 上标星超过 18 万的自动化神兵 n8n 时,都会产生一个疑问:“它们俩看起来都是在画布上连节点,为什么已经有了 Dify,全世界还在疯狂用 n8n?
” 我们先用两个极其透彻的底层对比,帮你瞬间建立起自动化工程的全景坐标。
真相一:Dify 是“等你去提问的 AI 智囊团”,而 n8n 是“全天候监听外部世界并连接 400+ 款软件的神经中枢” 这两款工具的架构重心完全互补: Dify 的重心在“AI 内部推理与 RAG 知识库(被动响应)”——它需要有人在对话框提问或发来 API 请求才开始运转。
n8n 的重心在“主动事件触发(Event-Driven Triggers)与外部软件生态连接”——n8n 不需要真人守在电脑前!
它内置了成百上千种主动感应器:比如每天早上 7:00 准时通电的定时触发器(Schedule / Cron Trigger)、只要收到新邮件就触发的 IMAP 邮箱触发器、只要 GitHub/Notion/⻜书表格新增一行数据就瞬间响应的 Webhook 触发器。
一旦触发,n8n 会自动从 RSS、ArXiv 论文库或网页抓取最新数据 → 调用大模型 API(或调用你搭好的 Dify 工作流接口!)完成总结提炼 → 自动把结果写入你的 Notion 笔记库并推送到手机通知!
真相二:为什么在 n8n 里不用写 for 循环,一个节点就能自动处理 50 条数据?
揭秘“JSON 对象数组流(Items Array)” 很多新手第一次在 n8n 里连线时会感到神奇:上游的 RSS Read 节点抓到了 20 篇最新科技文章,我后面只连了 1 个 AI 总结节点,也没写任何循环语句,结果它竟然自动把 20 篇文章逐篇总结了 20 次!
当你看懂 n8n 的底层数据结构,就会直呼“哦,原来是这样!
”:在 n8n 的节点连线管道里,流动的永远是一列标准格式的 JSON 对象数组小火车:[{"json": {...}}, {"json": {...}}, ...]。
只要上游吐出了包含 N 个元素 (Items)的数组,n8n 里的绝大多数动作节点默认都遵循 “Run Once for Each Item(针对数组里的每一节车厢自动循环执行一次)” 的物理法则!
你在下游节点里写一句表达式 {{ $json.title }},它就会自动遍历每一节车厢的 title 字段。
而当你希望把 20 节车厢打包合并成 1 篇汇总日报发出去(防止连发 20 条消息刷屏)时, 只需在中间加一个 Aggregate(聚合) 节点,把 20 个 Item 合成 1 个数组即可!
n8n 核心概念底层运行机制常见新手踩坑与标准解法 Items Array 自动迭代上游输出 N 个 Item 时,下游节点默认自动循环执行 N 次。踩坑:上游抓了 10 条资讯直接连通知节点, 导致手机连响 10 次。
解法:在通知前插入 Aggregate 节点合并为 1 条。跨节点数据引用每个节点的历史输出都保存在执行上下文树中。
紧邻上一节点用 {{ $json.field }};跨越多层回头取特定节点用 {{ $('节点名称').item.json.field }}。
n8n 核心概念底层运行机制常见新手踩坑与标准解法 Webhook 测试与生产地址提供临时调试用的 /webhook-test/ 与持久监听的 /webhook/ 两套路由。
踩坑:把带 -test 的地址填进外部系统,关掉网页后报 404。解法:上线时必须换为 Production URL 并拨开右上角 Active 开关。
二、核心操作深讲:Docker 一键部署、AI Agent 节点挂载与防限流护栏
1. 2 分钟 Docker 本地持久化部署 n8n
n8n 支持通过 Docker 在本地电脑或个人服务器上免费自托管运行。
执行以下包含时区配置与数据持久化卷的命令,确保容器重启后你的工作流配置永不丢失: docker volume create n8n_data docker run -d \ --name n8n \ --restart always \ -p 5678:5678 \ --add-host=host.docker.internal:host-gateway \ -e GENERIC_TIMEZONE="Asia/Shanghai" \ -e TZ="Asia/Shanghai" \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8n
2. 生产级稳定性护栏:批量速率控制(Loop + Wait)与节点级自动重试(Retry On Fail)
当你用 n8n 处理成百上千条数据并调用外部大模型 API 时,最容易遇到两类故障:一是并发太快触发 API 的 429 Too Many Requests 频率限制;二是偶发网络抖动导致整条流水线中断。
请务必掌握两项防线配置: 防线一(开启节点级失败自动重试):点开任何 HTTP Request 或 AI 节点,切换到顶部的 Settings 选项卡, 开启 Retry On Fail,设置 Max Tries = 3、Wait Between Tries = 5000(毫秒),即可自动消化 95% 的偶发网络波动。
防线二(使用 Loop Over Items + Wait 控制请求节奏):当上游有 100 条数据需要逐条调用限速 API 时,插入 Loop Over Items (Split in Batches) 节点(设 Batch Size = 1),并在循环回路中串联一个 Wait(等待 2 秒) 节点,让流水线稳健匀速运转。
三、动手实验(Hands-on Lab):搭建《每日 ArXiv / 科技前沿自动追踪早报流》
实验 1:亲手完成“定时抓取 → Limit 截断 → Aggregate 聚合 → AI 综述”四步闭环
1. 在 n8n 画布中添加第 1 个节点 Schedule Trigger(设定每天早上 08:00 触发,调试时可直接点击 Test
step)。
2. 连接第 2 个节点 RSS Read,填入任意科技或学术 RSS 源(如 Hacker News https://hnrss.org/frontpage 或
ArXiv CS.AI 订阅源),点击运行你会看到输出了 20〜30 个 Item。
3. 连接第 3 个节点 Limit(设置 Max Items = 5,只保留最新 5 篇防止调试消耗过多 Token)。
4. 连接第 4 个节点 Aggregate(选择 Aggregate All Item Data Into a Single List,观察输出如何从 5 items 变成
了 1 item!)。
5. 连接第 5 个节点 AI Agent / Basic LLM Chain,挂载你的 DeepSeek / OpenAI / Ollama 模型,用 {{
JSON.stringify($json.data) }} 将 5 篇文章一次性传给模型生成结构化中文早报!
四、课后自测习题与详细解析(5 关 50 分 · 检验你的自动化引擎内功)
【课后自测题(请先独立思考作答,再对照下方解析)】
1. 第 1 题(Items Array 循环机制理解 · 10 分):在 n8n 中,上游节点 Read Spreadsheet 读取了一张包含 30
行数据的表格(输出 30 个 Items),后面直接连了一个 Send Email 节点。请问如果不加任何中间节点,这封邮件会被发送几次?如果你希望把这 30 行数据汇总进同一封邮件里只发送 1 次,必须在中间插入什么节点?
2. 第 2 题(跨节点表达式语法 · 10 分):你的工作流依次有三个节点:Webhook_Start → HTTP_Fetch_Paper →
LLM_Summarize。
现在你在第 3 个节点 LLM_Summarize 的提示词中,既想引用第 2 个节点(紧邻上游)返回的 abstract 字段,又想跨节点引用第 1 个节点 Webhook_Start 传入的 user_language 字段。
请分别写出这两个表达式。
3. 第 3 题(Webhook 404 故障排查 · 10 分):一位同学在 n8n 中创建了 Webhook 触发器,复制了带
/webhook-test/ 路径的网址配置到了 GitHub 的 Webhook 设置里。
他在 n8n 网页上点击 Listen for test event 时能正常收到推送,但关掉 n8n 网页后,GitHub 的后续推送全部报 404 Not Found。请指出原因及正确的上线操作步骤。
4. 第 4 题(API 限流与容错护栏设计 · 10 分):当你需要用 n8n 批量调用一个每分钟最多允许请求 20 次的外
部 API 处理 200 条记录时,应该如何设计画布节点与节点设置,以同时防范“429 频率超限”和“偶发网络超时中断”?
5. 第 5 题(n8n 与 Dify 协同架构设计 · 10 分):如果你已经在 Dify 中搭建好了一个带有高精度父子分段知识
库的“学术文献问答工作流”,现在想实现“每当邮箱收到新的 PDF 附件时,自动调用该知识库工作流生成审阅意见并回信”,你应该如何让 n8n 与 Dify 配合完成这一闭环?
PRACTICE / 本关练习 · 本地规则 + 覆盖检查
本册课后自测与实验
本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。
评分项
结构分 — / 50 分
查看参考答案与得分点 先自己写,再打开+
参考答案与解析
1. 第 1 题解析:如果不加中间节点,邮件会被连续发送 30 次(因为 n8n 节点默认对输入数组中的每个 Item
各执行一次)。若要汇总为 1 封邮件发送,必须在两者之间插入一个 Aggregate(聚合) 节点(或使用 Code 节点设置为 Run Once for All Items),将 30 个独立 Item 聚合为包含单个列表的 1 个 Item。(答出 30 次及原因得 5 分,答出 Aggregate 节点得 5 分)
2. 第 2 题解析:1 引用紧邻上游节点的 abstract 字段写为:{{ $json.abstract }};2 跨节点引用第 1 个节点
Webhook_Start 的字段写为:{{ $('Webhook_Start').item.json.user_language }}(若在请求体 body 内则为 {{ $('Webhook_Start').item.json.body.user_language }})。(两个表达式各 5 分)
3. 第 3 题解析:因为带 /webhook-test/ 的是临时调试地址,仅在人工点击监听按钮后单次有效。正确上线步
骤:1 点开 Webhook 节点切换复制 Production URL(路径为 /webhook/...,不含 -test) 并更新到 GitHub;2 将 n8n 画布右上角的 Active(激活开关) 拨至开启状态,使工作流在后台持久监听。(指出测试 URL 临时性得 5 分,写出换 Production URL + 开启 Active 开关得 5 分)
4. 第 4 题解析:1 防范 429 频率超限:使用 Loop Over Items (Split in Batches) 节点配合循环内的 Wait 节点
(设每次等待 3.5 秒以上,确保每分钟请求不超过 17 次);2 防范偶发网络超时:在该 API 请求节点的 Settings 中开启 Retry On Fail(设最大重试 3 次,间隔 5000ms)。(两项措施各 5 分)
5. 第 5 题解析:采用“n8n 负责外围事件监听与收发件 + Dify 负责核心 RAG 推理”的黄金组合:在 Dify 中将
知识库工作流发布为 API 并获取 API Key;在 n8n 中使用 Email Read (IMAP) 触发器监听新邮件附件 → 提取文本后通过 n8n 的 HTTP Request 节点调用 Dify 的 /v1/workflows/run 接口 → 拿到 Dify 返回的审阅意见后,连接 Send Email 节点自动回复邮件。(说清 n8n 监听收发 + HTTP 节点调 Dify API 闭环得 10 分)
网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。
留邮箱,获取完整 PDF ↗