Files
n8n-guide/docs/learning/common-nodes.md
2025-09-11 14:00:33 +08:00

512 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 常用节点
## 📚 学习资源
- **图文教程**[n8n工作流创建完整指南](https://mp.weixin.qq.com/s/oIcmTW0Gg2r63C0Tn91r2Q)
- **视频教程**[从零开始的n8n实战](https://www.bilibili.com/video/BV1nejbz6Eip)
- **官方文档**[n8n Workflow Examples](https://docs.n8n.io/workflows/)
n8n提供了丰富的节点库覆盖了工作流自动化的各个方面。掌握这些常用节点是构建高效工作流的基础。
![n8n 节点工具箱](../assets/images/工具箱.png)
## 🧩 节点分类概览
**触发器**手动触发、定时触发、Webhook、邮件触发、文件监控
**输入**HTTP请求、数据库查询、文件读取、API调用、RSS获取
**处理**数据转换、AI处理、代码执行、图像处理、文本分析
**逻辑**:条件判断、循环处理、数据合并、分支路由、错误处理
**输出**邮件发送、文件保存、API推送、通知发送、数据存储
## 🔥 触发器节点 (Triggers)
触发器是工作流的起点,定义了工作流何时开始执行。
### Manual Trigger - 手动触发
**功能**: 用户手动启动的工作流执行
**使用场景**:
- 一次性任务执行
- 工作流测试和调试
- 按需数据处理
**配置**: 通常无需复杂配置,作为工作流的起始点
**最佳实践**Manual Trigger → 数据获取 → 数据处理 → 结果输出
### Schedule Trigger - 定时触发
**功能**: 基于时间的自动化任务执行
**配置选项**:
- **时间间隔**: 每分钟、小时、天、周、月
- **Cron表达式**: 高级时间配置
- **时区设置**: 确保正确的执行时间
**常用场景**:
=== "每日报告"
```
触发时间: 每天 09:00
时区: Asia/Shanghai
工作日执行: 周一到周五
```
=== "数据同步"
```
触发时间: 每30分钟
执行条件: 24/7运行
错误重试: 启用
```
=== "定期清理"
```
触发时间: 每周日 02:00
任务: 清理临时文件
通知: 完成后发送邮件
```
!!! warning "定时触发注意事项"
- 确保服务器时区设置正确
- 考虑服务器维护时间窗口
- 设置合理的执行超时时间
- 添加错误处理和重试机制
### Webhook - API触发
**功能**: 通过HTTP请求触发工作流
**配置要素**:
- **URL路径**: 自定义webhook端点
- **HTTP方法**: GET、POST、PUT、DELETE
- **认证方式**: 无认证、基础认证、头部认证
**典型应用**:
| 场景 | 触发源 | 数据处理 |
|------|-------|---------|
| **GitHub集成** | 代码推送事件 | 自动部署、测试通知 |
| **表单提交** | 网站表单 | 数据验证、邮件通知 |
| **支付回调** | 支付网关 | 订单处理、发货通知 |
| **监控告警** | 监控系统 | 故障分析、团队通知 |
**安全配置**:
```yaml
webhook_url: https://your-n8n.com/webhook/secure-endpoint
authentication:
type: header
name: X-API-Key
value: your-secret-api-key
```
## 📥 输入节点 (Input)
输入节点用于从各种数据源获取信息。
### HTTP Request - HTTP请求
**功能**: 与外部API和服务进行交互
**配置参数**:
- **请求方法**: GET、POST、PUT、DELETE、PATCH
- **URL**: 目标API地址
- **头部**: 认证、内容类型等
- **请求体**: POST数据、JSON负载
**实用示例**:
=== "获取天气数据"
```json
{
"method": "GET",
"url": "https://api.openweathermap.org/data/2.5/weather",
"qs": {
"q": "Beijing",
"appid": "your-api-key",
"units": "metric"
}
}
```
=== "发送Slack消息"
```json
{
"method": "POST",
"url": "https://hooks.slack.com/services/your/webhook/url",
"body": {
"text": "工作流执行完成",
"channel": "#general"
}
}
```
### Read/Write Files from Disk - 文件操作
**功能**: 读取和写入本地文件系统
**支持格式**:
- **文本文件**: TXT、CSV、JSON、XML
- **表格文件**: Excel、CSV
- **图像文件**: JPG、PNG、PDF
- **压缩文件**: ZIP、TAR
**配置示例**:
```javascript
// 读取CSV文件
{
"operation": "read",
"filePath": "/files/data/sales-report.csv",
"options": {
"encoding": "utf8",
"hasHeaders": true
}
}
// 写入JSON文件
{
"operation": "write",
"filePath": "/files/output/processed-data.json",
"fileContent": "{{ $json }}",
"options": {
"encoding": "utf8"
}
}
```
### Database Nodes - 数据库操作
支持主流数据库系统:
=== "MySQL"
```sql
-- 查询示例
SELECT customer_id, order_date, total_amount
FROM orders
WHERE order_date >= CURDATE() - INTERVAL 7 DAY;
-- 插入示例
INSERT INTO logs (timestamp, level, message)
VALUES (NOW(), 'INFO', '工作流执行成功');
```
=== "PostgreSQL"
```sql
-- 复杂查询
WITH monthly_sales AS (
SELECT DATE_TRUNC('month', order_date) as month,
SUM(total_amount) as total
FROM orders
GROUP BY DATE_TRUNC('month', order_date)
)
SELECT * FROM monthly_sales
ORDER BY month DESC LIMIT 12;
```
=== "MongoDB"
```javascript
// 查询文档
db.users.find({
"status": "active",
"last_login": {
"$gte": new Date(Date.now() - 30*24*60*60*1000)
}
})
// 聚合操作
db.orders.aggregate([
{$match: {status: "completed"}},
{$group: {_id: "$product_id", total: {$sum: "$amount"}}},
{$sort: {total: -1}}
])
```
## 🔄 处理节点 (Process)
处理节点用于数据转换、分析和业务逻辑处理。
### Set - 数据设置
**功能**: 设置或修改数据字段
**操作类型**:
- **设置字段值**: 添加新字段或修改现有字段
- **删除字段**: 移除不需要的数据
- **重命名字段**: 改变字段名称
- **类型转换**: 字符串、数字、布尔值转换
**实用配置**:
```javascript
// 设置新字段
{
"user_full_name": "={{$json.first_name}} {{$json.last_name}}",
"processed_at": "={{new Date().toISOString()}}",
"status": "processed"
}
// 数据转换
{
"price": "={{parseFloat($json.price_string)}}",
"is_active": "={{$json.status === 'active'}}",
"tags": "={{$json.tag_string.split(',')}}"
}
```
### Code - 代码节点
**功能**: 执行自定义JavaScript或Python代码
**JavaScript示例**:
```javascript
// 复杂数据处理
for (const item of $input.all()) {
// 数据验证
if (!item.json.email || !item.json.email.includes('@')) {
continue;
}
// 数据转换
const processedItem = {
id: item.json.id,
email: item.json.email.toLowerCase(),
domain: item.json.email.split('@')[1],
processed_at: new Date().toISOString(),
hash: require('crypto').createHash('md5').update(item.json.email).digest('hex')
};
$return.push({json: processedItem});
}
```
**Python示例**:
```python
import pandas as pd
import numpy as np
from datetime import datetime
# 处理输入数据
data = []
for item in _input.all():
data.append(item['json'])
# 使用pandas处理
df = pd.DataFrame(data)
df['processed_at'] = datetime.now().isoformat()
df['score'] = df['score'].fillna(0)
df['category'] = df['score'].apply(lambda x: 'high' if x > 80 else 'low')
# 返回处理结果
for _, row in df.iterrows():
_return.push({'json': row.to_dict()})
```
### AI Agent - AI代理
**功能**: 集成大语言模型进行智能处理
**支持的AI服务**:
- OpenAI GPT系列
- Anthropic Claude
- Google Gemini
- 本地Ollama模型
**典型应用**:
=== "文本分析"
```javascript
// 情感分析
prompt: `分析以下文本的情感倾向,返回正面、负面或中性:
文本:{{$json.comment}}
请以JSON格式返回{"sentiment": "正面/负面/中性", "confidence": 0.95}`
```
=== "数据提取"
```javascript
// 信息提取
prompt: `从以下邮件中提取关键信息:
邮件内容:{{$json.email_content}}
请提取:
- 发件人姓名
- 联系方式
- 主要需求
- 紧急程度
以JSON格式返回结果。`
```
=== "内容生成"
```javascript
// 报告生成
prompt: `基于以下数据生成每日销售报告:
销售数据:{{$json.sales_data}}
报告应包含:
1. 销售总结
2. 重点产品表现
3. 趋势分析
4. 改进建议
请生成专业的中文报告。`
```
## 🧠 逻辑节点 (Logic)
逻辑节点控制工作流的执行路径和数据流向。
### IF - 条件判断
**功能**: 根据条件将数据流分为不同路径
**条件类型**:
- **数值比较**: 等于、大于、小于
- **字符串匹配**: 包含、开始于、结束于
- **逻辑运算**: 与、或、非
- **存在性检查**: 字段是否存在、是否为空
**实用场景**:数据输入 → 判断金额 > 1000 → 是:高价值客户流程 → 发送VIP邮件普通客户流程 → 发送标准邮件
### Switch - 多路分支
**功能**: 根据不同值将数据路由到多个分支
**配置示例**:
```javascript
// 根据订单状态分发处理
switch_value: "={{$json.order_status}}"
// 分支配置:
// 0: "pending" -> 待处理流程
// 1: "paid" -> 已付款流程
// 2: "shipped" -> 已发货流程
// 3: "completed" -> 已完成流程
// default: 异常处理流程
```
### Loop Over Items - 循环处理
**功能**: 对数据集合中的每个项目执行相同操作
**适用场景**:
- 批量数据处理
- 文件批量操作
- API批量调用
- 报告批量生成
**处理流程**:数据列表 → Loop Over Items → 处理单个项目 → API调用 → 结果收集 → 汇总输出
## 📤 输出节点 (Output)
输出节点将处理结果发送到外部系统或用户。
### Email Send - 邮件发送
**功能**: 发送电子邮件通知和报告
**配置要素**:
- **收件人**: 支持多个收件人、抄送、密送
- **邮件内容**: HTML格式、纯文本、动态内容
- **附件**: 支持文件、图片、报告附件
**邮件模板示例**:
```html
<!DOCTYPE html>
<html>
<head>
<style>
.report { font-family: Arial, sans-serif; }
.header { background-color: #f0f0f0; padding: 10px; }
.content { padding: 20px; }
.table { border-collapse: collapse; width: 100%; }
.table th, .table td { border: 1px solid #ddd; padding: 8px; }
</style>
</head>
<body>
<div class="report">
<div class="header">
<h2>{{$json.report_title}}</h2>
<p>生成时间: {{$json.generated_at}}</p>
</div>
<div class="content">
<p>尊敬的 {{$json.recipient_name}}</p>
<p>以下是您请求的{{$json.report_type}}报告:</p>
<table class="table">
<tr>
<th>指标</th>
<th>数值</th>
<th>变化</th>
</tr>
{{#each $json.metrics}}
<tr>
<td>{{this.name}}</td>
<td>{{this.value}}</td>
<td style="color: {{this.change_color}}">{{this.change}}</td>
</tr>
{{/each}}
</table>
</div>
</div>
</body>
</html>
```
### Webhook Response - 响应返回
**功能**: 向触发Webhook的服务返回响应
**响应配置**:
```javascript
{
"status_code": 200,
"headers": {
"Content-Type": "application/json",
"X-Processed-By": "n8n-workflow"
},
"body": {
"success": true,
"message": "数据处理完成",
"processed_items": "={{$json.count}}",
"timestamp": "={{new Date().toISOString()}}"
}
}
```
## 📊 节点使用统计和建议
### 使用频率统计
<div class="stats-grid">
<div class="stat-item">
<span class="stat-number">95%</span>
<span class="stat-label">工作流使用HTTP Request</span>
</div>
<div class="stat-item">
<span class="stat-number">78%</span>
<span class="stat-label">工作流使用Set节点</span>
</div>
<div class="stat-item">
<span class="stat-number">65%</span>
<span class="stat-label">工作流使用IF判断</span>
</div>
<div class="stat-item">
<span class="stat-number">52%</span>
<span class="stat-label">工作流使用Email发送</span>
</div>
</div>
### 学习建议
!!! tip "节点学习路径"
1. **基础必学**: Manual Trigger + Set + HTTP Request + Email
2. **进阶掌握**: Schedule Trigger + IF + Code + Database
3. **高级应用**: AI Agent + Loop + Switch + Webhook
4. **专业应用**: 根据业务需求选择特定集成节点
---
掌握这些常用节点后您已经具备了构建80%常见工作流的能力!
[上一章n8n汉化](../installation/localization/){ .md-button } [下一章:基本工作流创建](basic-workflows/){ .md-button .md-button--primary }