n8n 2.14 推出 MCP 整合後,台灣開發者紛紛開始用 Claude Code 建立 Workflow。但很快就遇到同樣的問題:
這些問題不是 n8n 的 bug,也不是 Claude Code 不夠強——而是進階使用需要不同的思維框架。本文就是要填補這個空缺。
最常見的錯誤是把所有邏輯塞進一個 Workflow。正確做法是按職責拆分:
| 層級 | 職責 | 範例 |
|---|---|---|
| 觸發層 | 接收事件、排程 | Webhook / Schedule Trigger |
| 資料層 | 抓取、轉換、驗證資料 | HTTP Request + Code Node |
| 邏輯層 | 條件判斷、路由 | IF / Switch Node |
| 執行層 | 實際動作(發信、寫 DB) | Gmail / Postgres / Slack |
| 錯誤層 | 失敗處理、通知 | Error Trigger + Telegram |
用 Claude Code 建立時,告訴它你要哪一層,而不是一次要求整個流程。
當邏輯超過 15 個節點,就應該考慮拆成子 Workflow:
# 告訴 Claude Code 的 Prompt 範例
請建立一個主 Workflow,負責:
1. 接收 Webhook 訂單資料
2. 呼叫子 Workflow "validate-order" 驗證資料
3. 根據驗證結果分流:成功 → 呼叫 "process-payment",失敗 → 呼叫 "notify-error"
每個子 Workflow 請分開建立,主 Workflow 用 Execute Workflow Node 呼叫。
n8n 的資料以 items[] 陣列傳遞。複雜 Workflow 最常見的 bug 是節點間資料格式不一致。建立時要求 Claude Code 在每個關鍵節點加入資料驗證:
// Code Node 加入資料驗證(讓 Claude Code 生成這段)
const items = $input.all();
if (!items.length) throw new Error('上游節點沒有回傳資料');
const required = ['orderId', 'amount', 'email'];
for (const item of items) {
for (const field of required) {
if (!item.json[field]) throw new Error(`缺少必要欄位: ${field}`);
}
}
return items;
模糊的 Prompt 產出模糊的 Workflow。進階用法是提供「需求規格書」格式:
請用 n8n MCP 建立一個 Workflow,規格如下:
【觸發】每天早上 9:00(台灣時間 UTC+8)
【資料來源】PostgreSQL 資料表 orders,條件:status='pending' AND created_at > NOW()-INTERVAL '24h'
【處理邏輯】
- 訂單金額 > 10000:發送 Slack 通知給 #high-value-orders 頻道
- 訂單金額 1000-10000:發送 Email 給業務團隊
- 訂單金額 < 1000:寫入 Google Sheets 彙整表
【錯誤處理】任何節點失敗時,發 Telegram 訊息給 @admin
【命名規範】節點名稱用中文,Workflow 名稱:daily-order-triage-v1
在 Prompt 結尾加上:「建立完成後,請說明你選擇這個架構的原因,以及有哪些潛在問題需要注意。」這樣可以提前發現設計缺陷,而不是等到 Workflow 跑起來才發現。
n8n 的錯誤分三類,處理方式完全不同:
| 錯誤類型 | 常見訊息 | 根本原因 | 解法 |
|---|---|---|---|
| 節點設定錯誤 | Parameter "X" is required | 必填欄位沒填 | 檢查節點設定,補上缺少的參數 |
| 資料格式錯誤 | Cannot read property 'X' of undefined | 上游資料結構不符預期 | 在前一節點加 Code Node 做資料轉換 |
| 外部服務錯誤 | 401 Unauthorized / 429 Too Many Requests | 認證失效或超過 API 限制 | 更新 Credential / 加入 Wait Node 限速 |
把錯誤訊息直接貼給 Claude Code,搭配這個 Prompt 模板:
我的 n8n Workflow 在 [節點名稱] 出現以下錯誤:
錯誤訊息:[貼上完整錯誤]
該節點的輸入資料:[貼上 Input 的 JSON]
該節點的設定:[貼上節點設定截圖或 JSON]
請分析錯誤原因,並提供修復方案。如果需要修改 Workflow,請用 n8n MCP update_workflow 工具直接修改。
每次執行都有完整的 Execution Log,記錄每個節點的 Input/Output。Debug 時的黃金法則:
{{ $json }} 確認資料n8n_get_execution MCP 工具,可以直接拿到最近一次執行的完整 log,讓 Claude Code 自動分析哪個節點出問題。
每個重要的 Workflow 都應該有對應的錯誤處理 Workflow。用 Claude Code 建立的標準模板:
請建立一個錯誤處理 Workflow,命名為 "error-handler-global":
1. 觸發:Error Trigger(接收所有 Workflow 的錯誤)
2. 格式化錯誤訊息,包含:Workflow 名稱、節點名稱、錯誤內容、執行時間
3. 發送 Telegram 通知給管理員
4. 寫入 Google Sheets 錯誤日誌(欄位:時間、Workflow、錯誤、狀態=待處理)
5. 如果同一個 Workflow 在 1 小時內錯誤超過 3 次,額外發 Email 警報
n8n 內建重試設定,但對於需要自訂重試邏輯的場景,用 Code Node 實作:
// 指數退避重試(讓 Claude Code 生成並嵌入 Code Node)
async function withRetry(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err) {
if (i === maxRetries - 1) throw err;
const delay = Math.pow(2, i) * 1000; // 1s, 2s, 4s
await new Promise(r => setTimeout(r, delay));
}
}
}
// 在 HTTP Request 前包裝
return withRetry(() => $http.get(url));
最常見的效能殺手:對每筆資料各發一次 API 請求。
| 做法 | 100 筆資料耗時 | API 費用 |
|---|---|---|
| ❌ 逐筆 HTTP Request | ~50 秒 | 100 次呼叫 |
| ✅ 批次 HTTP Request(每批 20 筆) | ~5 秒 | 5 次呼叫 |
告訴 Claude Code:「請用 Split In Batches Node 把資料分成每批 20 筆,再呼叫 API,不要逐筆處理。」
# Prompt 範例
這個 Workflow 需要同時:
A. 從 PostgreSQL 抓訂單資料
B. 從 Shopify API 抓庫存資料
C. 從 Google Sheets 抓定價表
請讓 A、B、C 並行執行(不要串行),最後用 Merge Node 合併結果。
如果 Workflow 每次執行都查同一份靜態資料(如定價表、設定檔),用 Static Data 或 Redis 快取:
// Code Node:讀取靜態快取
const cache = $getWorkflowStaticData('global');
if (!cache.priceTable || Date.now() - cache.priceTableUpdated > 3600000) {
// 快取過期,重新抓取
cache.priceTable = await fetchPriceTable();
cache.priceTableUpdated = Date.now();
}
return [{ json: { priceTable: cache.priceTable } }];
LINE 訊息觸發 → Claude Code 解析預約意圖 → 查詢空檔 → 寫入 Google Calendar → 回覆確認
每小時掃描 Shopify 庫存 → 低於閾值 → Claude Code 生成補貨建議 → Slack 通知採購
月底觸發 → 抓 PostgreSQL 交易資料 → Claude Code 分析異常 → 生成 PDF → Email 給財務長
每日檢查學員進度 → 停滯超過 7 天 → Claude Code 生成個人化鼓勵訊息 → 自動發送 Email
新表單提交 → 抓公司資料 → Claude Code 評分(行業/規模/預算)→ 高分自動排業務行程
以電商庫存警報為例,展示完整的 Claude Code Prompt 到 Workflow 的流程:
# 給 Claude Code 的完整 Prompt
請用 n8n MCP 建立庫存警報 Workflow:
觸發:每小時執行一次
資料來源:Shopify API GET /admin/api/2024-01/products.json?limit=250
篩選條件:variants 中任一 inventory_quantity < 10
處理邏輯:
- 庫存 0:緊急警報(Slack #urgent + Email 給老闆)
- 庫存 1-5:高優先(Slack #inventory-alerts)
- 庫存 6-9:一般提醒(每日彙整一次,不即時發送)
去重:同一商品在 6 小時內不重複發送警報(用 Static Data 記錄)
Workflow 名稱:shopify-inventory-alert-v2
Claude Code 會自動處理 Shopify 分頁(page_info cursor)、建立 Switch Node 分流、以及用 Static Data 實作去重邏輯。
| 陷阱 | 症狀 | 解法 |
|---|---|---|
| Expression 語法錯誤 | 節點顯示紅色,訊息含 "expression" | 用 {{ }} 包裹,確認路徑用 $json.field 而非 json.field |
| 時區問題 | 排程時間不對,差 8 小時 | n8n 預設 UTC,台灣要設 Asia/Taipei 或手動 +8 |
| Webhook 只能觸發一次 | 第二次呼叫沒反應 | 確認 Workflow 是 Active 狀態,不是 Test 模式 |
| Claude Code 產出的 JSON 無法匯入 | 匯入時報 parse error | 要求 Claude Code 輸出時用 n8n_import_workflow 直接匯入,不要手動複製 JSON |
| Sub-Workflow 資料傳遞失敗 | Execute Workflow Node 回傳空值 | 子 Workflow 最後一個節點必須有資料輸出,加 Set Node 確保有回傳值 |
| API Rate Limit 被封 | 429 錯誤,Workflow 中斷 | 在 HTTP Request 前加 Wait Node(1-2 秒),或用 Split In Batches 控制速率 |
n8n_export_workflow)。Claude Code 的 update_workflow 是覆蓋式更新,沒有版本控制。
n8n 雲端版沒有內建版本控制,但可以用 Claude Code 搭配 Git 實現:
# 讓 Claude Code 定期備份所有 Workflow
請執行以下操作:
1. 用 n8n_list_workflows 列出所有 Workflow
2. 對每個 Workflow 執行 n8n_export_workflow,儲存為 JSON 檔案
3. 檔名格式:{workflow-id}-{workflow-name}.json
4. 儲存到 ~/n8n-backups/ 目錄
5. git add . && git commit -m "backup: $(date +%Y-%m-%d)"
團隊使用 n8n 時,統一命名規範可以避免大量混亂:
| 類型 | 命名格式 | 範例 |
|---|---|---|
| 主 Workflow | {功能}-main-v{版本} | order-process-main-v3 |
| 子 Workflow | {功能}-sub-{子功能} | order-process-sub-validate |
| 錯誤處理 | {功能}-error-handler | order-process-error-handler |
| 測試用 | TEST-{功能}-{日期} | TEST-order-process-20260503 |
在 Claude Code Prompt 中明確指定命名規範,它會自動套用。
用 Claude Code 建立一個「監控 Workflow」,每小時檢查所有重要 Workflow 的執行狀態:
請建立監控 Workflow "health-check-dashboard":
1. 每小時觸發
2. 用 n8n API 抓取過去 1 小時內所有 Workflow 的執行記錄
3. 統計:成功率、平均執行時間、失敗次數
4. 如果任何 Workflow 失敗率 > 20%,立即發 Slack 警報
5. 每天早上 9:00 發送日報到 #ops-daily 頻道
6. 把統計資料寫入 Google Sheets 供長期追蹤
max_tokens 上限,避免單次呼叫消耗過多 token。一般分類任務設 200 tokens,摘要任務設 500 tokens,只有需要長文生成的場景才放開限制。
n8n + Claude Code 的進階使用,核心是三件事:
延伸閱讀:
DigitalOcean 一鍵部署 n8n Droplet,$6/月起,台灣新加坡節點延遲低,新用戶 $200 免費額度。
🖥️ 前往 DigitalOcean包含 50+ 個 n8n Workflow 建立 Prompt 模板,直接複製使用,省去反覆試錯的時間。
💡 $29 取得 Claude Code Pack