第 10 期:内置工具锦囊 — Merge、Set、Edit Image 节点大串烧
工具节点全景速览
这些节点可能不像 AI Agent 那样"酷炫",但它们是你每天都在用的瑞士军刀。
graph TB
subgraph "n8n 实用工具节点地图"
direction LR
Set[⚙️ Set/Edit Fields
添加/修改/删除字段]
Merge[🔗 Merge
合并多个数据流]
Filter[🔍 Filter
按条件过滤]
Sort[📊 Sort
排序]
Limit[✂️ Limit
截取前 N 条]
Remove[🗑️ Remove Duplicates
去重]
DateTime[🕐 Date & Time
时间运算]
Crypto[🔐 Crypto
加密/哈希]
Image[🖼️ Edit Image
图片处理]
Convert[🔄 Convert to File
格式转换]
end
style Set fill:#22c55e,stroke:#16a34a,color:#fff
style Merge fill:#6366f1,stroke:#4f46e5,color:#fff1. Set / Edit Fields 节点
使用频率:⭐⭐⭐⭐⭐ (几乎每个工作流都用)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Set 节点的三大操作模式
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 模式1: 添加新字段 (Add)
// - 字段名: fullName
// - 值: {{ $json.firstName + ' ' + $json.lastName }}
// 输入: { firstName: "三", lastName: "张" }
// 输出: { firstName: "三", lastName: "张", fullName: "三 张" }
// 模式2: 仅保留指定字段 (Keep Only Set)
// ☑️ 开启 "Keep Only Set" 选项
// - 只保留 fullName 和 email
// 输入: { firstName: "三", lastName: "张", phone: "138...", email: "[email protected]" }
// 输出: { fullName: "三 张", email: "[email protected]" }
// ← firstName, lastName, phone 被移除
// 模式3: 使用表达式动态计算
// - 字段名: discountPrice
// - 值: {{ Math.round($json.price * 0.85) }} // 85 折
// - 字段名: isExpensive
// - 值: {{ $json.price > 500 }} // 布尔值
2. Merge 节点 — 多流合并
使用频率:⭐⭐⭐⭐
graph TB
subgraph "Merge 的三种核心模式"
direction LR
subgraph "Append (追加)"
A1[流 1: 3 Items] --> MA[Merge]
A2[流 2: 2 Items] --> MA
MA --> AR[输出: 5 Items]
end
subgraph "Combine by Position (按位置配对)"
B1["流 1: [A, B, C]"] --> MB[Merge]
B2["流 2: [1, 2, 3]"] --> MB
MB --> BR["输出: [A+1, B+2, C+3]"]
end
subgraph "Combine by Field (按字段 JOIN)"
C1["用户: [{id:1, name:'张三'}]"] --> MC[Merge]
C2["订单: [{uid:1, amt:99}]"] --> MC
MC --> CR["输出: [{id:1, name:'张三', amt:99}]"]
end
end// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Merge 节点 "Combine by Field" 配置 (最常用)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 模式: Combine
// Combination Mode: Merge By Fields
//
// 输入 1 匹配字段: id ← 用户表的主键
// 输入 2 匹配字段: userId ← 订单表的外键
//
// Join Mode:
// - Inner Join: 只保留两边都有的 (类似 SQL INNER JOIN)
// - Left Join: 保留输入1的全部 (类似 SQL LEFT JOIN)
// - Outer Join: 保留两边全部 (类似 SQL FULL JOIN)
//
// 冲突解决: 如果两边有同名字段,以输入 1 / 输入 2 为准
3. Date & Time 节点
使用频率:⭐⭐⭐
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// n8n 内置时间表达式 (基于 Luxon 库)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 当前时间
{{ $now }} // DateTime 对象
{{ $now.toISO() }} // "2026-04-09T12:30:00.000+08:00"
{{ $now.toFormat('yyyy年MM月dd日') }} // "2026年04月09日"
{{ $now.toFormat('HH:mm:ss') }} // "12:30:00"
// 时间加减
{{ $now.plus({ days: 7 }) }} // 7 天后
{{ $now.minus({ hours: 2 }) }} // 2 小时前
{{ $now.startOf('month') }} // 本月第一天 00:00
// 时间比较
{{ $now.diff($json.createdAt, 'days').days }} // 距今多少天
{{ DateTime.fromISO($json.deadline) > $now }} // 是否已过期
// 时区转换
{{ $now.setZone('America/New_York').toFormat('HH:mm') }} // 纽约时间
// Date & Time 节点操作:
// - Format Date: 将日期字段格式化为指定格式
// - Add/Subtract: 日期加减
// - Round Date: 取整到天/小时/分钟(用于分组统计)
// - Get Between: 计算两个日期之间的差值
4. Edit Image 节点
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Edit Image 节点支持的操作
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 🔄 调整尺寸 (Resize)
// - Width: 800, Height: 600
// - 保持纵横比: true
// ✂️ 裁剪 (Crop)
// - X: 100, Y: 100, Width: 500, Height: 500
// 🔤 添加文字水印 (Text)
// - Text: "© 2026 AgentUpdate.ai"
// - Font Size: 24
// - Position: Bottom Right
// - Color: #ffffff80 (带透明度的白色)
// 🔄 格式转换
// - 输入 PNG → 输出 WebP (减小 60% 体积)
// - 输入 JPEG → 输出 PNG (无损)
// ⚠️ 注意: 图片数据通过 Item 的 binary 字段传递
// 确保上游节点携带了 binary 数据
5. 其他高频节点
Filter / Limit / Sort / Remove Duplicates
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 这些节点通常组合使用,形成数据清洗管道
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Filter: 按条件过滤
// 条件: {{ $json.status === "active" && $json.age >= 18 }}
// Sort: 排序
// 字段: price
// 方向: Descending (降序)
// Limit: 取前 N 条
// Max Items: 10 (只保留前 10 条)
// Remove Duplicates: 去重
// Compare: 按字段 email 去重
// 保留: 第一次出现的 (First)
经典组合:数据清洗管道
graph LR
Raw[原始数据
100 Items] --> Filter[Filter
status=active]
Filter --> Dedup[Remove Duplicates
按 email]
Dedup --> Sort[Sort
按 score 降序]
Sort --> Limit[Limit
Top 10]
Limit --> Clean[清洁数据
10 Items ✨]
style Clean fill:#22c55e,stroke:#16a34a,color:#fff模块二总结
mindmap
root((模块二: 逻辑控制与数据加工))
Ep 06 分支控制
If 节点 (二路分流)
Switch 节点 (多路路由)
Loop Over Items (显式循环)
Ep 07 Data Tables
CRUD 全操作
防重复处理
Ep 08 HTTP Request
认证方式 (API Key / OAuth2)
分页遍历
错误重试
Ep 09 Code Node
JS 两种模式
Python 支持
内置变量/跨节点引用
Ep 10 工具节点
Set (字段操作)
Merge (多流合并)
Date & Time
Filter / Sort / Limit下一步
恭喜完成模块二!你已经掌握了构建复杂工作流的全部基础组件。从 Ep 11 开始,我们正式进入 AI Agent 领域——学习如何给 n8n 工作流接入大语言模型,让它从"执行机器"变为"思考型智能体"。