3.8 KiB
3.8 KiB
n8n 工作流文档
本目录包含 Agent Park 的 n8n 工作流配置。
工作流清单
| 文件 | 功能 |
|---|---|
keyword-cloud-workflow.json |
Google Trends → 关键词词云入库 |
tag-janitor-workflow.json |
每日 AI 标签合并与 nameEn 补全 |
关键词词云工作流
文件: keyword-cloud-workflow.json
功能
自动采集 Google Trends 数据,生成 AI 热点词汇词云。
执行流程
- Schedule Trigger: 每季度末最后一天的 23:00 自动触发
- Calculate Quarter: 计算当前季度标识和时间范围
- Google Trends: 采集热门搜索词
- Extract Keywords: 提取关键词和热度分数
- Get Visual Rules: 获取视觉样式规则
- Match Visual Rules: 为关键词匹配视觉样式
- Send to API: 写入数据库
环境变量
在 n8n 中设置以下环境变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
API_URL |
API 端点 URL | http://localhost:3000 (本地) 或生产环境 URL |
API_KEY |
Webhook API Key | 与项目的 WEBHOOK_API_KEY 相同 |
配置步骤
-
导入工作流:
- 打开 n8n 界面
- 点击 "Import from File"
- 选择
keyword-cloud-workflow.json
-
配置 Google Trends 节点:
- 确保已安装
@gamal.dev/n8n-nodes-google-trends包 - 根据需要调整搜索关键词列表
- 确保已安装
-
配置环境变量:
- 在 n8n 设置中添加环境变量
- 或在每个节点的表达式字段中使用具体值
-
手动执行测试:
- 点击 "Execute Workflow" 按钮
- 检查每个节点的输出
- 验证数据库中的数据
API 端点
工作流调用以下 API 端点:
GET {API_URL}/api/keyword-cloud/rules- 获取视觉规则POST {API_URL}/api/keyword-cloud/keywords- 批量写入关键词
Tag Janitor 工作流
文件: tag-janitor-workflow.json
功能
每日自动拉取标签,按分桶分块交给 AI Agent 处理,并通过结构化输出解析器强制 JSON 格式,最终调用维护 API 执行合并与 nameEn 补全。
执行流程
- Schedule Trigger: 每日 UTC 03:00 触发
- Fetch Tags: 调用
GET /api/tags获取标签和项目计数 - Prepare Chunk Batches: 预处理并按 bucket + chunk 拆分(默认每块 80)
- Tag Merge Agent + Structured Output Parser: Agent 生成计划,Parser 强制输出 schema
- Validate Plan: 校验覆盖率(
reviewedTagIds必须覆盖整块)、ID 合法性、自合并 - Retry Loop: 校验失败会自动重试(默认 2 次,可配置)
- Execute Maintenance: 仅对校验通过的块调用
POST /api/tags/maintenance - Summarize Results: 汇总 executed/noop/failed_validation/failed_execute
API 端点
GET {API_URL}/api/tags- 拉取标签列表(含_count.projects)POST {API_URL}/api/tags/maintenance- 执行批量 updates/merges
环境变量
在 n8n 进程环境中配置:
| 变量名 | 说明 | 默认值 |
|---|---|---|
SITE_BASE_URL |
站点地址 | 无 |
WEBHOOK_API_KEY |
维护 API 鉴权密钥 | 无 |
TAG_JANITOR_CHUNK_SIZE |
每块标签数量 | 80 |
TAG_JANITOR_MAX_RETRIES |
校验失败自动重试次数 | 2 |
注意事项
-
不要全量一次喂模型:
- 900+ 标签必须分块,否则大概率返回不完整。
-
结构化输出是硬约束:
- 由
Structured Output Parser保证格式。 Validate Plan仍会做二次校验,防止“格式正确但内容不完整”。
- 由
-
失败块不会误执行:
- 校验不通过的块不会调用维护 API,会在 summary 中归类为失败并给出原因。
扩展建议
- 将
failed_*摘要接入 Slack/Telegram 告警 - 对
failed_validation块做二次人工审核队列 - 在预处理阶段先做字符串近似聚类,进一步减少 LLM token 消耗