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、專案轉移、驗證及索引更新。
連線格式
"來源名稱":{ "main":[[{"node":"目標", "type":"main", "index":0}]] }
- 扇出(一個來源,多個目標):
"main":[[{"node":"A", ...}, {"node":"B", ...}]] - 合併輸入:來源 A 以
"index":0連線,來源 B 以"index":1連線 - IF 分支:
"main":[[true 目標], [false 目標]] - AI 子節點:
"ai_languageModel":[[{"node":"模型名稱", "type":"ai_languageModel", "index":0}]] - AI 工具子節點:
"ai_tool":[[{"node":"工具名稱", "type":"ai_tool", "index":0}]]
工作流程 JSON 結構
{
"name":"工作流程名稱",
"nodes":[...],
"connections":{...},
"settings":{ "executionOrder":"v1", "callerPolicy":"any" }
}
- POST body 不得包含
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 — 列出所有憑證
規則
- PUT 前先 GET — 絕不從快取修改,務必先取得目前版本
- PUT 後驗證 — 重新擷取並確認變更已生效
- 連線使用節點名稱,絕不使用 UUID
- 優先使用原生平台節點而非 HTTP Request(可在 UI 中顯示平台標誌)
- 包含
!字元的程式碼節點:先將 JS 寫入/tmp/*.js,然後再讀取回來(Python 字串跳脫會將!轉為\!) - 在擷取執行資料時加上
includeData=true(否則data.resultData.runData會是 null) callerPolicy允許的值:any、none、workflowsFromAList、workflowsFromSameOwner
表達式語法(HTTP Request body)
- 可運作:
={{ ({ key:value }) }}— 物件加上括號,不進行 JSON.stringify - 不可運作:
={{ JSON.stringify({...}) }}— 會導致「語法無效」 - 不可運作:
={{ }}嵌入在靜態 JSON body 內部 — 不會被求值 - 跨節點參考:
$item(0).$node["節點名稱"].json.field
節點函式庫
預先建置的節點程式碼片段存放在 ./references/nodes/ 中。每個檔案都是一個可直接使用的 JSON 節點物件。
強制性工作流程:
- 建立任何節點前,先以 glob 方式讀取
./references/nodes/*.json來查看有哪些可用項目。 - 如果函式庫中存在該節點類型,請複製其 JSON 並自訂(名稱、位置、參數)。切勿從頭編寫。
- 如果函式庫中不存在該節點類型,則從頭建立。
- 工作流程部署完成後,將您建立的新節點類型儲存到函式庫中,檔案名稱為
./references/nodes/<節點名稱>.json。
深度參考(僅在需要時載入)
./references/patterns.md— 重試模式、持續狀態、表達式陷阱./references/rules.md— PUT/POST 規則、設定白名單、命名慣例./references/node-types.md— 常見節點類型的參數參考