匯入老師提供的 n8n workflow JSON
先保留原始流程,不急著重建。
把老師提供的「雙 LINE 共用知識庫+AI 客服」JSON 匯入 n8n,先看完整資料流。

看不懂整張 workflow?截圖問 AI
截整張 canvas,但不要截到任何展開的 Token / Key。
這不是整理過後看起來很順的理論教學,而是把 2026/09/18 從早上匯入老師範例,到手機真的收到 AI 回覆的實際流程,一步一步重跑。
不是「節點看起來有接好」。而是:手機 LINE 真的收到依自己的資料產生的回答,而且 Google Sheet 真的新增一筆紀錄。
你不需要一次看懂 n8n 每個欄位。遇到畫面不同、紅色 node、錯誤訊息時,截現在這一個畫面 → 問 AI 只找第一個 blocker → 一次修一項 → 繼續。 API Key、Token、Channel Secret 記得不要截進去。
第一個原則:不要把「老師 demo 已經能跑」誤認成「這份 JSON 已經是自己的」。先看哪些東西能沿用,哪些必須換掉。
先保留原始流程,不急著重建。
把老師提供的「雙 LINE 共用知識庫+AI 客服」JSON 匯入 n8n,先看完整資料流。

截整張 canvas,但不要截到任何展開的 Token / Key。
不要只看節點名稱,要看實際 URL、Sheet、Prompt、Credential。
保留流程邏輯,先把老師環境拔掉。
老師 Sheet / Credential / Token / 橙星 knowledge / pinned event
所有外部資源改 placeholder;秘密資料清空;公司 knowledge 改成 Blossom。
今天目標是先跑通一個 E2E。店長內部 Bot、Dashboard、進階 fallback 都先不加,避免同時多一倍 Token、Webhook 與排錯路徑。
這一段不碰模型能力,先讓「自己的入口」與「自己的資料」準備好。
老師的 LINE 不能沿用,Token 也不能混用。
同一份 Spreadsheet 先做兩個 tab 就夠。

詢價 外燴 詢價 請提供活動日期、地點、人數、預算與特殊飲食需求 素食 素食 蔬食 可以先註明素食人數與需求,正式菜色需人工確認 報價 報價 價格 AI 可以先整理需求,但正式報價需由真人確認 服務 外燴 服務 Blossom 提供外燴相關服務,實際可承接內容需依案件確認 人工 付款 退款 客訴 付款、退款、重大客訴與特殊承諾請轉人工處理

Append Row 要能真的寫進自己的 Sheet。
這一步我們真的先撞到 Not a valid Sheet ID。
Append row in sheet。
REPLACE_BLOSSOM_LOG_SHEET_ID。不要先重做 Credential。這版不是 Vector RAG;Code node 直接抓 Google Sheet CSV。
const SHEET_ID = '你的 Spreadsheet ID'; const GID = '知識庫分頁的 gid';
demo 階段先讓「知道連結的使用者可檢視」。

這是今天最值得複用的差異:workflow logic 保留,AI provider 換掉。
不用重寫整條 workflow,只換 HTTP Request。
Google Gemini Credential
Gemini generateContent
Bearer Auth
/v1/chat/completions
POST https://opencode.ai/zen/go/v1/chat/completions model: deepseek-v4-flash
{
"model": "deepseek-v4-flash",
"messages": [
{"role":"system","content":"你是 Blossom 外燴 AI 客服..."},
{"role":"user","content":"知識庫:... 使用者訊息:..."}
],
"temperature": 0.2
}API key 只放 Credential,不寫進 workflow JSON。

Bearer sk-...,n8n 會自己組 Authorization header。這顆放的是 LINE Channel Access Token,不是 OpenCode Go key。
到這裡才把外部入口真正指向 n8n。
正式手機測試使用 Production URL,不是 Test URL。
不然 LINE 內建自動回覆可能跟 n8n AI 一起講話。

改完 production workflow 後,記得重新 Publish。

這一段最重要的不是「一次成功」,而是怎麼從症狀一路縮小到真正錯誤。
不要重跑舊 execution;LINE replyToken 只能用一次。
我想辦 50 人外燴,一人預算 600 元,需要提供什麼資料?
這不是全壞;反而代表前後兩端已經通了。
Webhook 已經收到了,整理回答與 LINE Reply 也能把 fallback 送回手機。問題範圍被縮到中間的 AI node。
OpenCode Go 400,不是 LINE,也不是 Sheet。
400 MissingSessionID Request is missing x-opencode-session and cannot be routed efficiently.
endpoint、Bearer 與 workflow 已經走到 provider;真正缺的是 OpenCode Go 要求的 session header。
加在 node 的 Send Headers,不是 Credential,也不是 Body。
x-opencode-session
={{ 'blossom-line-' + $json.source }}
User-Agent
blossom-line-agent/1.0前面的 webhook 已經取出 LINE userId。這樣同一位使用者會得到穩定的 session id,比所有人共用固定字串更合理。
這是今天第二個真實坑。
Production workflow 還在跑上一版。修改 node 後沒有重新 Publish。
最後不是看 n8n 自己說成功,而是手機與 Sheet 都有證據。
這次不再是 fallback。

端到端的最後一塊證據。

不是 n8n node 自己顯示 200,而是最終使用者端真的收到訊息。
訊息有被留下,才有後續追蹤、Dashboard、案件狀態與真人接手的基礎。
不是幻想 FAQ。下面每個都是這次實作真的出現過的症狀。
Not a valid Sheet ID先看是不是還留著 placeholder Sheet ID,不要第一時間重做 OAuth。
CSV 中文亂碼Excel 開啟編碼問題,不等於 n8n HTTP 讀不到 UTF-8 CSV。
AI 客服忙碌中LINE 前後可能已經通了;去最新 Execution 看 AI node Output。
MissingSessionIDAI HTTP Request 沒有送 x-opencode-session。
加 header 還是同樣錯檢查有沒有重新 Publish production workflow。
LINE 完全沒反應依序看 Production Webhook、Publish、Use webhook、Webhook 開關。
兩個回答一起出現LINE Official Account 的 Auto-reply 很可能還沒關。
重跑舊 execution → 400LINE replyToken 已經用過。回 LINE 發一則新的訊息再測。
不要把第一個 E2E demo 講成完整商用 Agent。
LINE 收訊息
讀自己的 Sheet knowledge
呼叫自己的 OpenCode Go / DeepSeek
回 LINE
寫入客服紀錄
多輪案件狀態
完整 RAG / 向量檢索
正式報價 / 權限 / 人工 handoff
Dashboard
更完整的錯誤分支
拿現成 demo → 換成自己的資料 / API / LINE → 哪裡看不懂就截圖問 AI → 只解目前第一個 blocker → 再往下一步。你不需要先熟到能看懂 n8n 所有設定,才能把第一個版本跑起來。
先截「現在這一個畫面」,不要把整個系統一起丟。Token / Key / Secret 要遮掉。
如果有錯誤訊息:再補「這是最新 Execution 第一個紅色 node 的 Error / Output,請只處理這顆。」