n8n 工作流技能 是做什么的?
通过 API 构建、部署和管理 n8n 工作流,使用预构建的节点代码段和经过实战检验的模式。
设置
首次使用前,请在下方填写您的实例详细信息。从 n8n 设置 > API 获取您的 API 密钥。
- URL:
https://YOUR_INSTANCE.app.n8n.cloud - API 密钥:
YOUR_API_KEY - 项目 ID:
YOUR_PROJECT_ID(可选,用于多项目实例)
凭据
在此处映射您的凭据别名。从 GET /api/v1/credentials 获取 ID。
| 别名 | 凭据类型 | ID | 名称 |
|---|---|---|---|
| gmail | gmailOAuth2 | ||
| sheets | googleSheetsOAuth2Api | ||
| slack | slackOAuth2Api | ||
| openai | openAiApi | ||
| anthropic | anthropicApi | ||
| telegram | telegramApi | ||
| notion | notionApi |
根据需要添加行。name 字段必须与您在 n8n 实例中(设置 > 凭据)命名的凭据名称完全一致。位于 ./references/nodes/ 中的节点代码段使用占位符凭据——Claude 在构建工作流时会从此表替换为您的 ID。
快速入门:新工作流
- 查看
./references/nodes/获取预构建的节点代码段。复制、重命名、设置位置。 - 构建 JSON(节点数组 + 连接对象)。
- 写入到
/tmp/<name>.json。 - 运行:
bash ./references/deploy.sh /tmp/<name>.json - 完成。脚本处理 POST、项目转移、验证和索引更新。
连接格式
"Source Name": { "main": [[{"node": "Target", "type": "main", "index": 0}]] }
- 扇出(一个来源,多个目标):
"main": [[{"node": "A", ...}, {"node": "B", ...}]] - 合并输入:来源 A 使用
"index": 0连接,来源 B 使用"index": 1 - IF 分支:
"main": [ [true 目标], [false 目标] ] - AI 子节点:
"ai_languageModel": [[{"node": "Model Name", "type": "ai_languageModel", "index": 0}]] - AI 工具子节点:
"ai_tool": [[{"node": "Tool Name", "type": "ai_tool", "index": 0}]]
工作流 JSON 结构
{
"name": "Workflow Name",
"nodes": [...],
"connections": {...},
"settings": { "executionOrder": "v1", "callerPolicy": "any" }
}
- POST 请求体不得包含
active字段(只读,使用 PATCH 激活) - 仅保留以下 settings 键:
executionOrder、callerPolicy、saveDataSuccessExecution、errorWorkflow(如果存在) - PUT 之前必须移除的键:
binaryMode、availableInMCP、timeSavedMode
API 端点
POST /api/v1/workflows — 创建
GET /api/v1/workflows/{id} — 获取(PUT 之前务必调用)
PUT /api/v1/workflows/{id} — 更新
PATCH /api/v1/workflows/{id} — 激活/停用:{ "active": true }
PUT /api/v1/workflows/{id}/transfer — 转移到项目
GET /api/v1/executions/{id}?includeData=true — 获取执行数据
GET /api/v1/credentials — 列出所有凭据
规则
- GET 之前务必 PUT — 切勿基于缓存修改,始终先获取当前版本
- PUT 之后验证 — 再次获取并确认更改已生效
- 连接使用节点 名称,绝不使用 UUID
- 优先使用原生平台节点而非 HTTP 请求(可在 UI 中显示平台徽标)
- 包含
!字符的代码节点:先将 JS 写入/tmp/*.js,再读回(Python 字符串转义会将!变为\!) - 执行获取时使用
includeData=true(不带此参数,data.resultData.runData将为 null) callerPolicy允许的值:any、none、workflowsFromAList、workflowsFromSameOwner
表达式语法(HTTP 请求体)
- 可用:
={{ ({ key: value }) }}— 括号内的对象,无需 JSON.stringify - 不可用:
={{ JSON.stringify({...}) }}— 导致“无效语法” - 不可用:在静态 JSON 请求体内部嵌入
={{ }}— 不会求值 - 跨节点引用:
$item(0).$node["NodeName"].json.field
节点库
预构建的节点代码段位于 ./references/nodes/。每个文件是一个立即可用的 JSON 节点对象。
强制性工作流程:
- 构建任何节点之前,全局搜索
./references/nodes/*.json以查看可用的内容。 - 如果库中存在该节点类型,请复制其 JSON 并根据需要自定义(名称、位置、参数)。请勿从头编写。
- 如果库中不存在该节点类型,则从头构建。
- 工作流部署后,将您构建的任何新节点类型保存到库中,命名为
./references/nodes/<node-name>.json。
深度参考(仅在需要时加载)
./references/patterns.md— 重试模式、持久状态、表达式陷阱./references/rules.md— PUT/POST 规则、设置白名单、命名约定./references/node-types.md— 常见节点类型的参数参考