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

13 KiB
Raw Permalink Blame History

常用节点

📚 学习资源

n8n提供了丰富的节点库覆盖了工作流自动化的各个方面。掌握这些常用节点是构建高效工作流的基础。

n8n 节点工具箱

🧩 节点分类概览

触发器手动触发、定时触发、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集成 代码推送事件 自动部署、测试通知
表单提交 网站表单 数据验证、邮件通知
支付回调 支付网关 订单处理、发货通知
监控告警 监控系统 故障分析、团队通知

安全配置:

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

配置示例:

// 读取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() - 302460601000) } })

// 聚合操作
db.orders.aggregate([
  {$match: {status: "completed"}},
  {$group: {_id: "$product_id", total: {$sum: "$amount"}}},
  {$sort: {total: -1}}
])
```

🔄 处理节点 (Process)

处理节点用于数据转换、分析和业务逻辑处理。

Set - 数据设置

功能: 设置或修改数据字段

操作类型:

  • 设置字段值: 添加新字段或修改现有字段
  • 删除字段: 移除不需要的数据
  • 重命名字段: 改变字段名称
  • 类型转换: 字符串、数字、布尔值转换

实用配置:

// 设置新字段
{
  "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示例:

// 复杂数据处理
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示例:

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 - 多路分支

功能: 根据不同值将数据路由到多个分支

配置示例:

// 根据订单状态分发处理
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格式、纯文本、动态内容
  • 附件: 支持文件、图片、报告附件

邮件模板示例:

<!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的服务返回响应

响应配置:

{
  "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()}}"
  }
}

📊 节点使用统计和建议

使用频率统计

95% 工作流使用HTTP Request
78% 工作流使用Set节点
65% 工作流使用IF判断
52% 工作流使用Email发送

学习建议

!!! tip "节点学习路径" 1. 基础必学: Manual Trigger + Set + HTTP Request + Email 2. 进阶掌握: Schedule Trigger + IF + Code + Database 3. 高级应用: AI Agent + Loop + Switch + Webhook 4. 专业应用: 根据业务需求选择特定集成节点


掌握这些常用节点后您已经具备了构建80%常见工作流的能力!

上一章n8n汉化{ .md-button } 下一章:基本工作流创建{ .md-button .md-button--primary }