尊敬的 {{$json.recipient_name}},
以下是您请求的{{$json.report_type}}报告:
| 指标 | 数值 | 变化 |
|---|---|---|
| {{this.name}} | {{this.value}} | {{this.change}} |
# 常用节点 ## 📚 学习资源 - **图文教程**:[n8n工作流创建完整指南](https://mp.weixin.qq.com/s/oIcmTW0Gg2r63C0Tn91r2Q) - **视频教程**:[从零开始的n8n实战](https://www.bilibili.com/video/BV1nejbz6Eip) - **官方文档**:[n8n Workflow Examples](https://docs.n8n.io/workflows/) 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集成** | 代码推送事件 | 自动部署、测试通知 | | **表单提交** | 网站表单 | 数据验证、邮件通知 | | **支付回调** | 支付网关 | 订单处理、发货通知 | | **监控告警** | 监控系统 | 故障分析、团队通知 | **安全配置**: ```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
生成时间: {{$json.generated_at}}
尊敬的 {{$json.recipient_name}},
以下是您请求的{{$json.report_type}}报告:
| 指标 | 数值 | 变化 |
|---|---|---|
| {{this.name}} | {{this.value}} | {{this.change}} |