跳轉到

workflow JSON 範例逐步操作教學

這份筆記是配合 workflow JSON 範例包 使用的。你可以一邊匯入 JSON,一邊對照這份操作。

匯入方式

  1. 打開 n8n。
  2. 建立新 workflow 或進入工作區。
  3. Import from File
  4. 選擇這個資料夾裡的 .json
  5. 匯入後先不要急著啟用,先讀節點與資料流。

01-manual-student-routing.json

你會看到什麼

  • Manual Trigger
  • Set Student Data
  • Build Summary
  • Is VIP
  • VIP Result
  • Regular Result

建議操作

  1. 先直接按 Execute workflow
  2. Set Student Data 的 output。
  3. Build Summary 是否產生 messagecategoryisPassed
  4. Is VIP 是走 true 還是 false。
  5. score 改成 55 再跑一次,觀察分支變化。

這份在教什麼

  • 最小 workflow
  • 如何用 Set 建資料
  • 如何用 IF 分支

02-webhook-order-intake.json

你會看到什麼

  • Webhook
  • Normalize Order
  • Respond to Webhook

測試資料

{
  "name": "Tung",
  "email": "tung@example.com",
  "course": "n8n Beginner",
  "amount": 1200,
  "paid": true
}

建議操作

  1. 匯入後打開 Webhook,確認 path。
  2. 用 n8n 提供的 test URL 測試。
  3. 用 Postman 或 curl 送資料。
  4. Normalize Order 是否成功把資料整理成 order_nameorder_email 等欄位。
  5. 看回應 JSON 是否正確。

這份在教什麼

  • 如何接 webhook
  • 如何把原始 body 整理成乾淨欄位
  • 如何回應呼叫方

03-schedule-api-fetch.json

你會看到什麼

  • Schedule Trigger
  • Manual Trigger
  • HTTP Request
  • Normalize API Result

建議操作

  1. 先用 Manual Trigger 測,不要直接等排程。
  2. HTTP Request 回來的 JSON。
  3. Normalize API Result 是否成功整理欄位。
  4. 確認 titlecompletedfetched_at 是否都有值。

這份在教什麼

  • 如何主動打外部 API
  • 如何把回傳資料轉成後續可用欄位
  • 如何同時保留手動測試與定時執行入口

04-webhook-openai-summary-skeleton.json

你會看到什麼

  • Webhook
  • Build Prompt
  • Mock Summary Result
  • Respond to Webhook

這份和 06 的差別

  • 04 是骨架,先讓你理解流程
  • 06 才是真的打 OpenAI API

建議操作

  1. 先送一份 meeting notes 進去。
  2. Build Prompt 產生的 prompt 長什麼樣子。
  3. Mock Summary Result 怎麼模擬 AI 輸出。
  4. 理解整體資料流後,再去做 06

05-webhook-google-sheets-skeleton.json

你會看到什麼

  • Webhook
  • Normalize Order
  • Append row in sheet
  • Build Response
  • Respond to Webhook

匯入後你要先改的地方

  1. Append row in sheet 補上 Google Sheets credentials。
  2. documentId 換成你的 spreadsheet URL 或 ID。
  3. sheetName 改成你的工作表名稱。
  4. 確認你的試算表欄位名稱有:
  5. created_at
  6. order_name
  7. order_email
  8. course_name
  9. order_amount
  10. payment_status

建議測試資料

{
  "name": "Tung",
  "email": "tung@example.com",
  "course": "n8n Beginner",
  "amount": 1200,
  "paid": true
}

這份在教什麼

  • Webhook 接收資料
  • Set 整理欄位
  • Google Sheets append row
  • 成功後回應結果

06-webhook-openai-summary-http-request.json

你會看到什麼

  • Webhook
  • Build Prompt
  • OpenAI Responses API
  • Normalize Summary
  • Respond to Webhook

匯入後你要先改的地方

  1. 打開 OpenAI Responses API
  2. Authorization header 的 YOUR_OPENAI_API_KEY 換成你的 key。
  3. 如有需要,把 model 改成你自己的目標模型。

測試資料

{
  "title": "Meeting Notes",
  "content": "今天討論了網站改版、資料同步錯誤與客服自動化。網站改版要下週三前完成,資料同步目前會漏單,客服想加自動回覆。"
}

建議操作

  1. 先送短內容測試。
  2. Build Prompt 的結果。
  3. OpenAI Responses API 是否成功回傳 output_text
  4. Normalize Summary 是否成功把摘要抽出。

如果失敗,先查這幾項

  • API key 是否正確
  • header 是否有 Bearer
  • body JSON 是否正確
  • 模型名稱是否有效
  • OpenAI 回傳的錯誤訊息是什麼

建議實作順序

  1. 先做 01
  2. 再做 02
  3. 再做 03
  4. 然後看 04
  5. 接著做 05
  6. 最後做 06

這樣順序比較合理,因為你會先理解 workflow 本身,再碰需要 credentials 與外部 API 的版本。


07-webhook-google-sheets-production-template.json

你會看到什麼

  • Webhook
  • Normalize Input
  • Has Required Fields
  • Append row in sheet
  • Success Response
  • Error Response
  • Respond to Webhook

這份和 05 的差別

  • 05 是最小 Google Sheets skeleton
  • 07 比較接近真實用途,多了必要欄位檢查與成功/失敗分流

匯入後你要先改的地方

  1. Append row in sheet 補上 Google Sheets credentials。
  2. documentId 換成你的 spreadsheet URL 或 ID。
  3. sheetName 改成你的工作表名稱。
  4. 確認你的試算表欄位有:
  5. created_at
  6. source
  7. order_name
  8. order_email
  9. course_name
  10. order_amount
  11. payment_status
  12. notes

建議測試資料

{
  "name": "Tung",
  "email": "tung@example.com",
  "course": "n8n Beginner",
  "amount": 1200,
  "paid": true,
  "notes": "Wants invoice"
}

缺欄位測試資料

{
  "name": "Tung",
  "amount": 1200
}

建議操作

  1. 先用完整資料測一次,確認會走成功分支。
  2. 再用缺欄位資料測一次,確認會走失敗分支。
  3. Normalize Input 是否正確整理欄位。
  4. Has Required Fields 的條件是否符合預期。
  5. 最後確認 Google Sheets 是否真的新增一列。

這份在教什麼

  • 把輸入資料正規化
  • 先做最基本的資料驗證
  • 成功才寫入 Google Sheets
  • 對呼叫方回傳清楚結果

08-bedside-quick-record-google-sheets.json

你會看到什麼

  • Webhook
  • Normalize Input
  • Has Required Fields
  • Evaluate Alert and Build Summary
  • Append row in sheet
  • Success Response
  • Error Response
  • Respond to Webhook

這份在做什麼

它是床邊快速記錄 MVP。重點不是正式病歷,而是: - 收到一筆結構化床邊記錄 - 檢查必要欄位 - 依簡單規則標記是否需要提醒 - 自動組出本次記錄摘要 - 寫入 Google Sheets 做暫存或工作清單

匯入後你要先改的地方

  1. Append row in sheet 補上 Google Sheets credentials。
  2. documentId 換成你的 spreadsheet URL 或 ID。
  3. sheetName 改成你的工作表名稱,例如 BedsideRecords
  4. 在試算表建立這些欄位:
  5. created_at
  6. patient_id
  7. bed_no
  8. shift
  9. nurse_id
  10. recorded_at
  11. temperature
  12. pulse
  13. respiration
  14. bp_sys
  15. bp_dia
  16. spo2
  17. pain_score
  18. consciousness
  19. line_status
  20. wound_status
  21. intake_ml
  22. urine_ml
  23. stool_count
  24. interventions
  25. abnormal_notes
  26. follow_up_needed
  27. alert_needed
  28. alert_reason
  29. record_summary

建議測試資料

{
  "patient_id": "P001",
  "bed_no": "A-12",
  "shift": "day",
  "nurse_id": "NURSE-01",
  "recorded_at": "2026-04-10T08:40:00+08:00",
  "temperature": 37.8,
  "pulse": 96,
  "respiration": 20,
  "bp_sys": 138,
  "bp_dia": 84,
  "spo2": 93,
  "pain_score": 6,
  "consciousness": "clear",
  "line_status": "normal",
  "wound_status": "stable",
  "intake_ml": 500,
  "urine_ml": 300,
  "stool_count": 1,
  "interventions": "vital signs check, medication given",
  "abnormal_notes": "mild shortness of breath on exertion",
  "follow_up_needed": "recheck SpO2 in 30 minutes"
}

異常提醒測試資料

把下面任一值改掉就能測試 alert: - spo2 = 90 - temperature = 38.5 - pain_score = 8 - line_status = abnormal - wound_status = worsening

缺欄位測試資料

{
  "patient_id": "P001",
  "temperature": 37.5
}

建議操作

  1. 先用完整資料測一次。
  2. Normalize Input 是否把欄位整理好。
  3. Evaluate Alert and Build Summary 是否產生:
  4. alert_needed
  5. alert_reason
  6. record_summary
  7. 確認 Google Sheets 是否新增一列。
  8. 再用異常值測一次,確認 alert_needed = true
  9. 最後用缺欄位資料測一次,確認會回錯誤訊息。

這份在教什麼

  • 如何做護理床邊快速記錄的最小流程
  • 如何先用結構化資料取代大量自由文字
  • 如何用規則判斷做基本提醒
  • 如何自動整理一段交班/記錄摘要草稿

09-bedside-transcript-to-draft.json

你會看到什麼

  • Webhook
  • Normalize Transcript Input
  • Has Required Fields
  • Parse Transcript and Build Draft
  • Append row in sheet
  • Success Response
  • Error Response
  • Respond to Webhook

這份在做什麼

這份 workflow 假設前端已經把語音轉成 transcript,再把 transcript 送到 n8n。

它會: - 接 transcript - 用規則從 transcript 抽欄位 - 產生床邊摘要 - 產生護理紀錄草稿 - 標記是否需要提醒 - 寫入 Google Sheets 草稿表

匯入後你要先改的地方

  1. Append row in sheet 補上 Google Sheets credentials。
  2. documentId 換成你的 spreadsheet URL 或 ID。
  3. sheetName 改成你的工作表名稱,例如 TranscriptDrafts

建議測試資料

{
  "patient_id": "P001",
  "bed_no": "A-12",
  "shift": "day",
  "nurse_id": "NURSE-01",
  "recorded_at": "2026-04-10T08:40:00+08:00",
  "transcript": "A12床,病人 P001,早班。體溫 37.8,脈搏 96,呼吸 20,血壓 138/84,血氧 93,清醒,疼痛 6 分。已給藥,主訴活動時輕微喘,追蹤 30 分鐘後重測血氧。"
}

高風險測試資料

{
  "patient_id": "P002",
  "bed_no": "B-08",
  "shift": "night",
  "nurse_id": "NURSE-02",
  "recorded_at": "2026-04-10T21:10:00+08:00",
  "transcript": "B08床,病人 P002。體溫 38.5,脈搏 110,呼吸 24,血壓 150/92,血氧 90,清醒,疼痛 8 分。管路異常,主訴傷口滲液增加,追蹤立即通知值班。"
}

你要知道的限制

  • 這份不是 LLM 抽取,而是規則式 parser
  • transcript 說法若差太多,可能抽不到欄位
  • 它的目的是先做 MVP,證明流程可行

下一步怎麼升級

如果你要更穩定,就把 Parse Transcript and Build Draft 換成: - OpenAI 結構化抽取 - 或更強的院內 NLP 規則

這份在教什麼

  • transcript 如何進入 n8n
  • 如何把自由文字整理成較可用欄位
  • 如何先產生草稿,再由人員確認

10-bedside-transcript-openai-structured-extraction.json

你會看到什麼

  • Webhook
  • Normalize Transcript Input
  • Has Required Fields
  • OpenAI Structured Extraction
  • Parse OpenAI JSON
  • Append row in sheet
  • Success Response
  • Error Response
  • Respond to Webhook

這份和 09 的差別

  • 09 是規則式 parser,適合固定說法
  • 10 是 OpenAI 結構化抽取,較適合自然語言 transcript

匯入後你要先改的地方

  1. 打開 OpenAI Structured Extraction
  2. Authorization header 的 YOUR_OPENAI_API_KEY 換成你的 key。
  3. 如有需要,把 model 改成你要使用的模型。
  4. Append row in sheet 補上 Google Sheets credentials。
  5. documentId 換成你的 spreadsheet URL 或 ID。
  6. sheetName 改成你的工作表名稱,例如 TranscriptDrafts

建議測試資料

{
  "patient_id": "P001",
  "bed_no": "A-12",
  "shift": "day",
  "nurse_id": "NURSE-01",
  "recorded_at": "2026-04-11T08:40:00+08:00",
  "transcript": "A12床,病人 P001,早班。八點四十分床邊評估,體溫三十七點八,脈搏九十六,呼吸二十,血壓一百三十八八十四,血氧九十三。病人清醒,主訴疼痛六分。已給藥,活動時輕微喘,三十分鐘後重測血氧。"
}

高風險測試資料

{
  "patient_id": "P002",
  "bed_no": "B-08",
  "shift": "night",
  "nurse_id": "NURSE-02",
  "recorded_at": "2026-04-11T21:10:00+08:00",
  "transcript": "B08床夜班,病人 P002。體溫三十八點五,脈搏一百一十,呼吸二十四,血壓一百五十比九十二,血氧九十,疼痛八分。管路看起來異常,傷口滲液增加,建議立即通知值班並追蹤。"
}

你要看哪些 output

先看 Parse OpenAI JSON,確認是否產生: - temperature - pulse - respiration - bp_sys - bp_dia - spo2 - pain_score - bedside_summary - nursing_note_draft - alert_needed - alert_reason_text

重要限制

  • 這份會呼叫 OpenAI API,請先確認資料合規與院內核准。
  • 這份產生的是草稿,不是正式護理紀錄。
  • 正式輸入院內系統前必須由護理人員確認。