2026/3/30
AI自動化 Gemini n8n API串接n8n 串接 Gemini API:從基礎節點到 AI Agent 結構化輸出 | (EP.6) n8n 自動化 API 串接教學
在 n8n 的自動化工作流中,許多人習慣使用 ChatGPT 的 AI 模型。然而,隨著 Google Gemini 系列模型的強勢崛起(尤其是具備免費額度的優勢),越來越多開發者與行銷人開始轉向使用 Gemini 來節省成本並維持高效的運算能力。
本文將帶您手把手實戰,從申請 Gemini API 密鑰開始,完整解析在 n8n 中串接 Gemini 的兩種核心做法:基礎節點搭配 JavaScript 解析,以及免寫程式的 AI Agent 結構化輸出。
如何快速取得 Google Gemini API 密鑰?要讓 n8n 成功呼叫 Gemini,我們首先需要前往開發者後台申請 API Key。
進入開發者平台:前往 Google AI Studio。
尋找申請入口:在左側選單點擊 Get API key。
建立密鑰:點選 Create API key,系統會要求您選擇或建立一個 Google Cloud 專案(Project)。如果您之前尚未建立過,可以點擊 Create project 來創建一個新專案。
選擇計費方案:
若您有綁定信用卡並啟用了付費帳單,系統可能會預設給予 Tier 1 (Postpay) 權限,這在需要呼叫「生成圖片」等進階模型時非常有用。
若您想完全免費使用,請確保專案的計費狀態設定為 Free tier,這對於一般的文本處理與自動化任務已經非常夠用。
複製密鑰:成功生成後,將這串 API Key 複製下來,準備貼到 n8n 的憑證(Credentials)設定中。
實戰方法一:透過「Message a Model」節點與 JS 解析 JSON在 n8n 中,最直覺的呼叫方式是使用原生的 Google Gemini 節點(Message a Model 操作)。但在實際應用場景中,我們通常會要求 AI 輸出特定的 JSON 格式(例如:分類、摘要、關鍵字),以便後續串接 LINE Bot 或寫入資料庫。
步驟與痛點解析
建立 Credentials:在 Message a Model 節點中,新增 Google Gemini(PaLM) API account,將剛剛複製的 API Key 貼入並儲存。
設定 Prompt 與 System Message:在 Node 設定中,您可以要求它輸出 JSON,並開啟 Output Content as JSON 選項。
痛點(為何需要 Code 節點):即使勾選了輸出 JSON,Gemini 原生節點回傳的資料結構往往被包裝在一大包 JSON 陣列內(無法像 ChatGPT 節點那樣直接完美對應輸出規格)。
JavaScript 解析解法:為了解決這個問題,我們必須在後面加上一個 Code 節點,透過 JavaScript 將純文字轉換並萃取出我們需要的欄位。
Code 節點解析範例:
12345678910111213141516const raw = $json.content?.parts?.[0]?.text ?? '';let parsed;try { parsed = JSON.parse(raw);} catch (error) { parsed = { summary: '', category: '其他', keywords:[], language: 'zh-TW' };}return [{ json: parsed }];
透過上述程式碼,我們才能確保後續的 HTTP Request 節點(例如推播 LINE 訊息)能正確讀取到 summary、category 與 keywords 等變數。這對於不熟悉程式碼的用戶來說,門檻相對較高。
實戰方法二:使用 AI Agent 輕鬆達成結構化輸出(專家推薦)為了避開繁瑣的程式碼解析,強烈建議使用 n8n 的 AI Agent 架構。透過「Agent + Model + Output Parser」的黃金三角,您可以讓系統自動將 Gemini 的輸出鎖定在嚴格的 JSON 規格內。
完美輸出的配置步驟:
加入 AI Agent 節點:在畫布中新增 AI Agent,並將輸入源連接至前置節點。
**連接語言模型 (Language Model)**:在 Agent 的 Model 輸入端,掛載 Google Gemini Chat Model 節點,並選定模型(如 gemini-2.5-flash)。
**強制結構化輸出 (Output Parser)**:
開啟 Agent 節點內的 Require Specific Output Format。
在 Parser 輸入端掛載 Structured Output Parser 節點。
在 Parser 內直接定義您期待的 JSON Schema(如下方範例)。
JSON Schema 定義範例:
1234567891011121314151617{ "type": "object", "properties": { "summary": { "type": "string" }, "category": { "type": "string", "enum":["AI工具", "程式開發", "商業", "教育", "其他"] }, "keywords": { "type": "array", "items": { "type": "string" } }, "language": { "type": "string" } }, "required":["summary", "category", "keywords", "language"], "additionalProperties": false}
使用 AI Agent 搭配 Structured Output Parser 的最大優勢在於:完全免寫任何一行解析用的 JavaScript 程式碼!系統會嚴格逼迫 Gemini 依照您提供的 Schema 回傳乾淨、格式化好的 JSON,極大地提升了工作流的穩定性與開發效率。
附錄:完整 n8n 工作流 JSON您可以直接複製以下 JSON 匯入您的 n8n 畫布中進行測試:
{
"nodes":[
{
"parameters": {
"promptType": "define",
"text": "=請讀取以下內容,輸出摘要、主題分類、3 個關鍵字。\n\n內容:\n{{$json.input_text}}",
"hasOutputParser": true,
"options": {
"systemMessage": "你是資料整理助手。\n\n規則:\n1. 使用繁體中文。\n2. 不要捏造未提供的資訊。\n3. 請只輸出 JSON。\n4. 欄位必須包含 summary、category、language。\n5. 若資訊不足,也必須輸出合法 JSON。"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position":[352, -352],
"name": "AI Agent"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position":[288, -144],
"name": "Google Gemini Chat Model"
},
{
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"summary\": { \"type\": \"string\" },\n \"category\": {\n \"type\": \"string\",\n \"enum\":[\"AI工具\", \"程式開發\", \"商業\", \"教育\", \"其他\"]\n },\n \"keywords\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"language\": { \"type\": \"string\" }\n },\n \"required\":[\"summary\", \"category\", \"keywords\", \"language\"],\n \"additionalProperties\": false\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.3,
"position":[544, -128],
"name": "Structured Output Parser"
}
],
"connections": {
"Google Gemini Chat Model": {
"ai_languageModel": [[{"node": "AI Agent","type": "ai_languageModel","index": 0}]]
},
"Structured Output Parser": {
"ai_outputParser": [[{"node": "AI Agent","type": "ai_outputParser","index": 0}]]
}
}
}
常見問答 (FAQ)Q:為何在 n8n 中選擇使用 Gemini 而不用 ChatGPT?A:主要優勢在於成本與免費額度。Google AI Studio 提供了非常慷慨的 Free tier(免費層),對於剛開始建置自動化工作流、或需求量在中小型範圍的用戶來說,可以大幅降低 API 的呼叫成本,同時 Gemini 2.5 Flash 處理速度極快,非常適合自動化場景。
Q:為什麼使用基礎的「Message a Model」節點還需要額外寫程式碼?A:因為基礎的 LLM 節點雖然能設定輸出 JSON,但往往會包裝在複雜的結構層級中,無法直接無縫對接下一個節點的變數欄位。透過加入 JavaScript Code 節點進行 JSON.parse() 解析,才能精準拆解出所需的鍵值(Keys),讓後續推播或寫入資料庫的動作不出錯。
Q:如果不擅長寫程式,有什麼替代方案嗎?A:強烈建議採用本文示範的 AI Agent + Structured Output Parser 方法。這種架構屬於「宣告式」操作,您只需要在介面上填寫 JSON 格式規範(Schema),n8n 與 AI 就會自動溝通並轉換出完美對應的資料格式,徹底免除撰寫解析程式碼的困擾。
Q:Google Gemini 的免費額度真的夠做 n8n 自動化嗎?A:對大多數入門情境來說,通常夠用。若您的工作流主要是做摘要、分類、標籤整理、客服訊息初步回覆,Free tier 往往已足以支撐測試與小量正式使用。不過如果您開始大量處理長文本、頻繁排程,或同時有多個工作流共用同一組 API Key,就需要留意速率限制與用量上限。最穩健的做法是先用免費層把流程跑通,再依實際流量決定是否升級付費方案。
Q:什麼情況下該用「Message a Model」,什麼情況下該直接改用 AI Agent?A:如果您的任務只是單純的一進一出,例如摘要、翻譯、分類、改寫,且後面只要接一個 Code 節點就能順利整理資料,那麼 Message a Model 通常更簡單、成本也更低。但如果您已經明確知道後面要依賴固定欄位,例如 summary、category、keywords 去串接 LINE、Email、Sheets 或資料庫,那麼直接使用 AI Agent + Structured Output Parser 會更穩定,後續維護也更省力。
Q:為什麼我明明要求 Gemini 輸出 JSON,結果還是會多出說明文字或格式錯誤?A:因為單靠 Prompt 約束,模型仍可能在某些情況下額外補充說明,尤其當輸入內容較長、規則較複雜,或模型判斷需要「解釋」時更容易發生。這也是本文會把兩種方法拆開講的原因:如果您走基礎節點路線,就要準備用 Code 節點做容錯解析;如果您要的是更高穩定性,就應直接改走 Structured Output Parser,把格式控制交給系統,而不是只靠文字要求。
Q:匯入本文附錄的工作流 JSON 後,還需要手動修改哪些地方?A:需要,因為附錄的 JSON 是示範骨架,不是可直接上線的最終版本。至少要檢查三個地方:第一,Google Gemini Chat Model 是否已綁定您的 Gemini API Credential;第二,前置節點是否真的有提供 input_text 這個欄位;第三,後續節點若要讀取 Agent 的結果,是否使用正確路徑,例如 output.summary、output.category、output.keywords。如果其中任何一個欄位名稱對不上,流程就很容易出現空值或報錯。
Q:如果我的 JSON Schema 定義得太嚴格,會不會反而讓模型常常失敗?A:會有這種可能,尤其當您同時要求太多欄位、限制太多列舉值,或輸入內容本身資訊不足時。實務上建議 Schema 先維持「夠用就好」:只保留後續流程真正會用到的欄位,避免一開始就設計過多可有可無的結構。對自動化工作流來說,穩定輸出 4 個必要欄位,通常比一次追求 10 個欄位更有價值。
Q:如果後面我要把 Gemini 的結果寫進 Google Sheets、Notion 或資料庫,最重要的注意事項是什麼?A:最重要的是欄位名稱與值域要先標準化。不要讓模型今天輸出 AI工具、明天輸出 AI 工具、後天又輸出 AI Tool。一旦分類名稱不一致,後面做搜尋、篩選、儀表板統計都會變得很麻煩。因此像本文示範的 enum 設計就非常重要,它不是為了形式好看,而是為了確保資料落地後仍然可被穩定使用。
2026/3/28
AI自動化 n8n API串接 Google如何使用 n8n 串接 Gmail?Google OAuth2 授權設定全攻略 | (EP.5) n8n 自動化 API 串接教學
為什麼這篇設定很重要?在 n8n 的自動化流程中,Gmail 常常不是單獨存在,而是扮演「最後通知出口」的角色。你可能會先從 LINE、表單、Webhook 或資料庫拿到資料,再交給 AI 做整理,最後自動寄出摘要通知。這也是很多人卡關的地方:流程節點都接好了,結果 Gmail 節點始終無法授權。
Google 已經不建議用帳號密碼直接讓第三方服務寄信,因此在 n8n 中要使用 Gmail,標準做法就是透過 Google Cloud Console 建立 OAuth2 授權,再把 Client ID 與 Client Secret 填回 n8n。
這個設定一旦完成,未來你不只可以用在 Gmail,也能延伸到 Google Calendar、Google Drive、Google Sheets 等常見 Google 服務。更重要的是,當你做 AI 自動化工作流時,這組憑證就是能不能穩定落地的關鍵一步。
實用資源連結:
Google Cloud Platform
Google Cloud Console
這篇文章會完成什麼?本文會帶你完成兩件事:
在 Google Cloud 建立可供 n8n 使用的 Gmail OAuth2 憑證。
把這組憑證套用到一個實戰工作流:LINE Webhook -> AI Agent -> LINE Reply + Gmail 通知
根據你提供的工作流 JSON,這條流程的核心邏輯如下:
Webhook:接收 LINE Bot 傳入的 webhook 事件。
If:確認收到的是文字訊息,而不是貼圖、圖片或其他事件。
Edit Fields:把 body.events[0].message.text 整理成 input_text。
AI Agent:交給 OpenAI 模型做摘要、分類、關鍵字萃取。
Structured Output Parser:限制輸出格式必須是固定 JSON。
HTTP Request:呼叫 LINE Reply API,把摘要結果回傳給使用者。
Gmail:再寄一封 Email,把摘要結果與原始文字同步通知給自己或團隊。
也就是說,Gmail OAuth2 不是孤立設定,而是整條 AI 通知流程的一部分。
第一步:如何在 Google Cloud Console 建立專案與啟用 API?要讓 n8n 可以代表你操作 Gmail,第一件事就是在 Google Cloud 建立專案,並啟用對應 API。
登入平台: 前往Google Cloud Console 並使用你的 Google 帳號登入。(建議預先綁定實體信用卡以利通過身分驗證,避免使用易遭拒絕的簽帳金融卡)。
建立新專案: 點擊左上角專案選單,選擇「**新增專案 (New Project)**」。將專案命名為易於辨識的名稱(例如:n8n-try),若無所屬機構可選擇「無組織」,接著點擊「建立」。
進入 API 服務: 專案建立完成後,展開左側導覽選單,選擇「API 和服務」>「已啟用的 API 和服務」(建議將此選項加入星號釘選,未來會經常使用)。
啟用所需 API: 點擊上方的「**+ 啟用 API 和服務**」,在搜尋框中尋找並啟用以下服務:
Gmail API (本次寄信必備)
Google Calendar API (建議一併開啟)
Google Drive API (建議一併開啟)
第二步:如何設定 OAuth 同意畫面與新增測試使用者?在取得金鑰之前,還要先設定 OAuth 同意畫面。這個畫面就是你在 n8n 點擊 Sign in with Google 時,Google 會跳出來要求你確認授權的那一頁。
設定同意畫面: 在「API 和服務」選單中點擊「OAuth 同意畫面」。
選擇使用者類型: 一般個人用戶請選擇「**外部 (External)**」,點擊建立。
填寫應用程式資訊:
應用程式名稱:輸入如 n8n-try。
使用者支援電子郵件:選擇你目前的 Google 帳號。
開發人員聯絡資訊:同樣填入你的 Google 帳號。
新增測試使用者 (非常重要):因為我們的應用程式仍在「測試中 (Testing)」狀態,並未經過 Google 官方審核發布,只有被加入「測試使用者」名單的帳號才能順利授權。
在「測試使用者」區塊,點擊「**+ ADD USERS**」。
輸入你即將用來「發送 Email」的 Google 帳號並儲存。
第三步:如何取得 Client ID 與密鑰 (Secret)?前面都設定好後,現在就可以正式建立 n8n 要使用的 OAuth2 憑證。
建立憑證: 點擊左側選單的「憑證」,接著點擊上方「**+ 建立憑證」,選擇「OAuth 用戶端 ID**」。
設定應用程式類型: 選擇「**網頁應用程式 (Web application)**」,並輸入名稱(如:n8n-try)。
設定重新導向 URI (Redirect URI):
回到你的 n8n 介面,新增一個 Gmail 節點,動作選擇 Send a message。
在認證 (Credential) 欄位選擇 Create new credential。
複製 n8n 介面上提供的 OAuth Redirect URL(例如:https://n8n-try.zeabur.app/rest/oauth2-credential/callback)。
將此網址貼回 Google Cloud 憑證設定的「已授權的重新導向 URI」欄位中(注意:網址結尾不可包含斜線 /)。
取得金鑰: 點擊「建立」後,系統會彈出視窗顯示你的 用戶端 ID (Client ID) 與 **用戶端密鑰 (Client Secret)**。請將這兩組字串妥善複製並保存。
專家提示: 密鑰 (Secret) 只會在第一次建立時完整顯示,請務必妥善備份。若不慎遺失或外洩,可回到憑證管理頁面刪除舊密鑰並重新生成。
第四步:如何回到 n8n 建立 Gmail Credential?Google 端的工作完成後,接下來就是把這組 OAuth2 憑證填回 n8n。
輸入憑證資訊: 回到 n8n 的 Credential 設定畫面,將剛剛取得的 Client ID 與 Client Secret 貼入對應欄位,點擊「Sign in with Google」。
完成安全授權:
登入你設定為「測試使用者」的 Google 帳號。
系統會出現「這個應用程式未經 Google 驗證」的警告。這是正常現象,請點擊左下方的「繼續 / 進階」,再點擊「**前往 n8n-try (不安全)**」。
勾選「全選」賦予讀寫信件的權限,最後點擊「繼續」,若顯示 Connection successful 即代表串接成功!
命名 Credential: 建議不要直接用預設名稱,可命名為像 Gmail (n8n-try) 或 Gmail (LINE 摘要通知),之後多個專案並存時比較好管理。
第五步:如何把 Gmail 應用到這個 LINE + AI 工作流?當 Credential 建好後,就可以把它接到你這份工作流裡的 Gmail 節點。你提供的 JSON 使用的是 Send a message1 節點,實際設定重點如下。
1. 先理解這條工作流的資料流這份工作流的順序是:
Webhook -> If -> Edit Fields -> AI Agent -> HTTP Request + Gmail
其中最關鍵的資料轉換有兩段:
Edit Fields 把 LINE 訊息抽成 input_text
AI Agent 透過結構化輸出,回傳 summary、category、keywords、language
也因為如此,Gmail 節點裡的主旨與內文,就可以直接引用 AI Agent 的輸出欄位。
2. Gmail 節點的設定方式在 Gmail 節點中,至少要確認以下欄位:
Resource / Operation: Message / Send
Credential: 選擇剛剛建好的 Gmail OAuth2 憑證
To: 你的收件信箱,或團隊共用信箱
Email Type: Text
你提供的範例主旨使用這段 Expression:
1LINE 摘要通知|{{$json.output.category}}
信件內容則把 AI 整理後的資料與原始訊息一起寄出:
12345678910111213141516171819您好,已收到一則新的 LINE 文字內容,並完成自動整理如下:【摘要】{{$json.output.summary}}【分類】{{$json.output.category}}【關鍵字】{{$json.output.keywords.join('、')}}【語言】{{$json.output.language}}--------------------【原始內容】{{$('Edit Fields').item.json.input_text}}
這種寫法很適合通知型工作流,因為你不只會收到 AI 的摘要結果,也能同步保留原始內容做交叉檢查。
3. 為什麼這樣設計很實用?這份流程其實同時做了兩件事:
對外:透過 HTTP Request 呼叫 LINE Reply API,把摘要立即回覆給使用者
對內:透過 Gmail 把摘要寄給自己或團隊,形成通知與留存紀錄
如果你未來想把這條流程改造成客服摘要、業務回報、報名表單通知、或內部知識蒐集,這個架構都很容易擴充。
第六步:AI Agent 與 Structured Output 在這個流程中扮演什麼角色?這篇主題雖然是 Gmail OAuth2,但如果不了解前面的 AI 結構,很多人會在 Gmail 節點誤抓欄位,導致信件主旨或內文出現空值。
1. Edit Fields 做了什麼?Edit Fields 節點把原始 LINE Webhook 內容:
1{{ $json.body.events[0].message.text }}
整理成單一欄位:
1input_text
這樣做的好處是提示詞更乾淨,也比較不容易在後面節點重複寫深層路徑。
2. AI Agent 的提示詞邏輯你提供的 AI Agent 使用的是以下任務設定:
1234請讀取以下內容,輸出摘要、主題分類、3 個關鍵字。內容:{{$json.input_text}}
而 System Message 則限制模型:
使用繁體中文
不要捏造資訊
只輸出 JSON
必須包含 summary、category、language
資訊不足也要輸出合法 JSON
3. Structured Output Parser 為什麼重要?因為後面的 LINE Reply 與 Gmail 都不是要讀一大段自由文字,而是要讀固定欄位。
你的 JSON Schema 其實已經把這件事做得很完整:
summary:摘要文字
category:限定在 AI工具、程式開發、商業、教育、其他
keywords:字串陣列
language:語言判斷
這代表 Gmail 節點可以穩定用下面這些欄位,而不是碰運氣讀模型輸出:
`{{$json.output.summary}}`
`{{$json.output.category}}`
`{{$json.output.keywords.join('、')}}`
`{{$json.output.language}}`
第七步:正式測試前,建議先檢查哪些地方?在你按下 Execute workflow 之前,建議先做一次快速檢查:
Google Cloud 的 OAuth 同意畫面是否已加入正確的測試使用者。
Gmail Credential 中的 Client ID、Client Secret 是否來自同一個專案與同一組憑證。
OAuth Redirect URL 是否完整貼入 Google Cloud,而且沒有多餘斜線。
Gmail 節點是否真的選到正確的 Credential,而不是舊的或失效的憑證。
Gmail 節點中的 Expression 是否抓的是 AI Agent 的 output 欄位。
keywords 若要顯示成文字,是否已用 .join('、') 轉成字串。
If 節點是否限制只有 message.type = text 才往下走,避免貼圖或圖片事件直接報錯。
如果這幾個地方都正確,通常整條流程就能順利跑起來。
常見問答 (FAQ)Q:註冊 Google Cloud Platform (GCP) 需要綁定信用卡嗎?會不會被亂扣款?A:Google Cloud 通常會要求綁定信用卡做身分驗證,這是平台的常見流程。若你只是用來做 Gmail OAuth、Calendar 或 Drive 這類基礎串接,而且沒有另外啟用付費資源,通常不會因為這篇教學本身產生額外高額費用。不過還是建議你定期查看帳單與專案啟用服務,避免把測試專案長期放著不管。
Q:在 n8n 點擊 Sign in with Google 時,出現「Access denied」或「此應用程式尚未完成驗證」怎麼辦?A:最常見有兩種原因:
你用來登入授權的 Google 帳號,沒有被加入 OAuth 同意畫面的「測試使用者」
你登入的帳號和 Google Cloud 專案內設定的測試帳號不是同一個
先回到 Google Cloud 的「OAuth 同意畫面」,確認測試使用者名單,再重新回 n8n 授權一次。
Q:為什麼我明明已經拿到 Client ID 和 Client Secret,n8n 還是授權失敗?A:這通常不是金鑰本身錯,而是 Redirect URI 不一致。請重新比對:
n8n Credential 畫面顯示的 OAuth Redirect URL
Google Cloud 憑證中的「已授權的重新導向 URI」
兩邊只要少一個字、多一個 /、或網域不同,都可能導致授權失敗。
Q:Gmail 節點已經成功連上,但寄信時仍然失敗,應該先檢查哪裡?A:建議先檢查這四個點:
Gmail 節點是否真的選到正確的 OAuth2 Credential。
To 欄位是否為合法 Email。
主旨與內文中的 Expression 是否抓得到值。
前一個 AI Agent 是否真的有成功輸出 output.summary、output.category 等欄位。
很多人以為是 Gmail 壞掉,實際上是前面節點沒有值,導致寄信內容組不起來。
Q:這份工作流中,為什麼 Gmail 節點要用 `{{$json.output.summary}}`,而不是 `{{$json.summary}}`?A:因為你這份流程使用的是 AI Agent + Structured Output Parser。在這種情況下,AI 的結構化輸出通常會包在 output 物件裡,所以 Gmail 與 HTTP Request 要抓的是:
`{{$json.output.summary}}`
`{{$json.output.category}}`
`{{$json.output.keywords}}`
`{{$json.output.language}}`
如果你直接寫 `{{$json.summary}}`,通常會抓不到值。
Q:keywords 是陣列,直接放到 Gmail 內文裡可以嗎?A:技術上可以,但顯示通常不夠友善。比較建議轉成一般文字,例如:
1{{$json.output.keywords.join('、')}}
這樣收件者看到的會是「AI、自動化、LINE Bot」這種格式,而不是原始陣列樣式。
Q:如果 LINE 傳來的是貼圖、圖片或非文字事件,這條流程會怎麼樣?A:你提供的工作流已經先用 If 節點判斷:
1{{ $json.body.events[0].message.type }} === text
這是必要的,因為後面的 Edit Fields 會直接讀 message.text。如果沒有先過濾,遇到非文字事件時就可能報錯。
Q:為什麼這個流程同時要回 LINE,又要寄 Gmail?不是重複通知嗎?A:兩者用途不同:
LINE Reply 是給最終使用者的即時回覆
Gmail 是給自己或團隊的內部通知與紀錄留存
如果你之後想追蹤哪些訊息被分類成什麼主題、或想保留原始內容做人工覆核,Email 留存會非常實用。
Q:如果我的 Client Secret 不小心外洩了,應該怎麼補救?A:請立刻回到 Google Cloud Console 的「API 和服務」>「憑證」,找到對應的 OAuth 用戶端,重新產生新的密鑰,並在 n8n 更新成新的 Credential 設定。確認新密鑰可正常授權後,再停用或刪除舊密鑰。只要你懷疑有外洩,就不要繼續使用原本那組。
Q:這組 Google OAuth2 設定之後只能拿來寄 Gmail 嗎?A:不是。只要同一個 Google Cloud 專案有啟用對應 API,你之後通常還可以延伸用到 Google Calendar、Google Drive、Google Sheets 等服務。不過每種服務在 n8n 端可能會有不同的權限範圍與 Credential 類型,實作時還是要分開確認。
2026/3/27
AI自動化 ChatGPT n8n API串接n8n AI Agent 結合 chatgpt model 與 JSON Schema 打造會思考的自動化工作流 | (EP.4) n8n 自動化 API 串接教學
如何將基礎 LLM 升級為強大的 AI Agent?在先前的 n8n 實作中,我們常用 Message a model 來處理 OpenAI API 的回覆。但只要流程開始牽涉到結構化輸出、節點串接穩定性、或後續還要交給其他系統使用,單純文字回覆通常很快就會碰到限制。
這次的做法不是只讓模型「回答問題」,而是讓它在 n8n 裡扮演一個可控的 AI Agent。搭配 Structured Output Parser 與 JSON Schema 之後,模型不只會回覆內容,還能穩定產出指定欄位,讓後面的 HTTP Request 節點可以直接把結果送進 LINE Bot 或其他 API。
如果你正在做的是「收到訊息 -> AI 分析 -> 結構化結果 -> 推播到外部服務」這種流程,那麼 AI Agent 會比一般對話節點更適合。
實作步驟:如何快速完成環境與節點部署?1. 建立工作流基本骨架根據附加的工作流 JSON,這個範例的核心節點順序如下:
Webhook -> Edit Fields -> AI Agent -> HTTP Request
另外 AI Agent 下方還會再掛兩個擴充節點:
OpenAI Chat Model
Structured Output Parser
實作時可以照這個順序建立,會比較不容易接錯線。
2. 先用 Edit Fields 整理輸入資料這個範例不是直接把 LINE Webhook 的整包 JSON 丟給 AI,而是先透過 Edit Fields 抽出真正要分析的文字:
1{{ $json.body.events[0].message.text }}
並且將它命名為:
1input_text
這一步很重要,因為它可以讓後續提示詞更乾淨,也能降低你在 AI Agent 中直接處理深層 JSON 路徑的複雜度。
3. 配置 AI Agent 的提示詞與系統設定進入 AI Agent 的設定畫面,我們需要定義它的角色與任務:
設定 System Message:在 Options 中加入 System Message,建立固定規則。
設定 User Message:在 Prompt (User Message) 中用 Expression 模式動態帶入前一節點的資料。
這份工作流實際使用的 User Message 可整理成:
1234請讀取以下內容,輸出摘要、主題分類、3 個關鍵字。內容:{{$json.input_text}}
System Message 的設計重點則是:
12345678你是資料整理助手。規則:1. 使用繁體中文。2. 不要捏造未提供的資訊。3. 請只輸出 JSON。4. 欄位必須包含 summary、category、language。5. 若資訊不足,也必須輸出合法 JSON。
如果你只是想讀取前一節點整理好的文字,也可以記住最核心的變數寫法:
1{{ $json.input_text }}
實作提醒:一定要切到 Expression 模式。若你停留在 Fixed,n8n 會把 `{{$json.input_text}}` 當成純文字,而不是變數。
4. 結合 Structured Output Parser 實現 JSON 格式化為了讓 AI 的輸出能被後續的 HTTP Request(例如發送到 LINE)完美讀取,我們必須規範它的輸出格式:
點擊 AI Agent 下方的 Output Parser 擴充節點,選擇 Structured Output Parser。
將 Schema Type 設為手動定義 JSON Schema。
使用標準 JSON Schema 來限制欄位格式。根據附加檔案,這次實作的 Schema 如下:1234567891011121314151617{ "type": "object", "properties": { "summary": { "type": "string" }, "category": { "type": "string", "enum": ["AI工具", "程式開發", "商業", "教育", "其他"] }, "keywords": { "type": "array", "items": { "type": "string" } }, "language": { "type": "string" } }, "required": ["summary", "category", "keywords", "language"], "additionalProperties": false}
Schema 設計重點解析:
**enum**:限制 category 只能從預定義的分類中選擇,避免 AI 自由發揮產生不一致的分類名稱。
keywords 陣列:讓 AI 自動提取 3 個關鍵字,方便後續做資料標籤或搜尋索引。
**required**:強制所有欄位都必須存在,防止 AI 漏掉任何一個欄位。
**additionalProperties: false**:禁止 AI 額外輸出未定義的欄位,確保 JSON 結構乾淨一致。
5. 串接 OpenAI Chat ModelAI Agent 就像一個大腦,需要連接特定的語言模型才能運作:
點擊 AI Agent 下方的 Chat Model 擴充節點。
搜尋並選擇 OpenAI Chat Model。
在模型設定中選擇對應模型版本。本次附加檔案使用的是:
1gpt-5-mini
如果你的任務是摘要、分類、關鍵字提取這類結構化整理工作,先從成本較低、速度較快的模型開始,通常就很夠用了。
6. 修正 HTTP Request 節點的輸出參數這是升級 AI Agent 後最容易踩雷的地方。因為節點改成 AI Agent 之後,輸出物件不再和原本 Message a model 一樣,後面的 HTTP Request 若仍沿用舊路徑,就很容易送出空值或直接報錯。
根據附加檔案,HTTP Request 送往 LINE Reply API 時,正文內容是從 output 物件裡取值,因此你至少要重新綁定以下欄位:
摘要:`{{ $json.output.summary }}`
分類:`{{ $json.output.category }}`
語言:`{{ $json.output.language }}`
若你也想把關鍵字一起送出去,可以再補上:
關鍵字:`{{ $json.output.keywords.join('、') }}`
另外,附加工作流中的 LINE 訊息模板有一個小細節值得注意:欄位名稱寫成了 languag,如果你要正式發布,建議順手改成 language,避免訊息文字看起來像拼字錯誤。
完成變數重綁後,執行 Execute workflow 測試,理想狀況下你就能在 LINE 收到一段由 AI 產生、而且格式固定的摘要結果。
觀念解析:一般模型 (Message a model) vs. AI Agent 差異在哪?為什麼我們不繼續用原本的 Message a model,而要大費周章換成 AI Agent?這兩者雖然看起來都是處理文字,但運作底層完全不同:
比較維度
一般對話模型 (Message a model)
AI Agent
處理邏輯
**線性直出 (Linear)**:輸入問題 $\rightarrow$ 產出解答 $\rightarrow$ 結束。
**循環思考 (Loop)**:接收任務 $\rightarrow$ 思考 $\rightarrow$ 調用工具 $\rightarrow$ 驗證 $\rightarrow$ 產出。
擴充能力
僅能單純處理文字生成與回覆。
可串接多種工具 (Tools)、資料庫或記憶庫 (Memory)。
Token 消耗
極低(省錢),適合簡單明確的任務(如翻譯、改寫)。
較高(耗費 Token),因為會進行多次內部對話與工具反覆確認。
顧問建議:如果你的任務只是單純改寫、翻譯、生成一段文字,Message a model 通常更省成本;但如果你需要穩定輸出結構、後續還要串 API、或未來準備接工具與記憶能力,直接用 AI Agent 會更有擴充性。
常見問答 (FAQ)一、節點設定與資料流Q:為什麼這個流程要先用 Edit Fields,不能直接把 Webhook 內容丟進 AI Agent 嗎?A:可以直接丟,但不建議。LINE Webhook 的 JSON 通常層級較深,若直接在提示詞裡寫 `{{$json.body.events[0].message.text}}`,可讀性與維護性都比較差。先用 Edit Fields 把資料整理成 input_text,後續提示詞會更乾淨,也更容易除錯。
Q:AI Agent 的 Prompt 為什麼一定要切成 Expression?A:因為你要讀的是前一個節點動態傳入的值。若使用 Fixed,n8n 會把 `{{$json.input_text}}` 當成一般字串,而不是變數,模型收到的就不是實際訊息內容。
Q:系統提示詞已經寫「請只輸出 JSON」了,為什麼還要加 Output Parser?A:因為提示詞只是要求,Parser 才是約束。只靠提示詞,模型仍可能偶爾多說一句說明文字;加上 Structured Output Parser 與 JSON Schema,才比較能把輸出鎖定在你要的欄位結構內。
二、Structured Output 與 JSON SchemaQ:JSON Schema 裡的 required 和 additionalProperties: false 有什麼差別?A:required 是規定哪些欄位一定要出現;additionalProperties: false 是禁止模型額外加出沒定義的欄位。兩者一起用,才能同時做到「不能漏欄位」與「不能亂加欄位」。
Q:category 為什麼要用 enum?A:因為分類欄位很容易失控。若不限制,模型可能一下輸出「商業應用」、一下輸出「商務」、一下又寫「創業」,後續做篩選、分析或寫入資料庫時就會很麻煩。用 enum 能把分類名稱固定下來。
Q:keywords 是陣列,實際發送 LINE 訊息時要怎麼顯示?A:如果 LINE 訊息需要純文字顯示,可以把陣列轉成字串,例如:
1{{ $json.output.keywords.join('、') }}
這樣收到的訊息會比較適合一般使用者閱讀。
三、常見錯誤與除錯Q:為什麼把一般模型換成 AI Agent 後,最後的 HTTP Request 會報錯或變成空值?A:最常見原因就是資料路徑改了。切換成 AI Agent 後,輸出通常會包在 output 物件中,所以你原本綁的欄位若不是 `{{ $json.output.summary }}` 這類新路徑,就會抓不到值。
Q:如果 AI 回傳格式仍然不穩,應該先檢查哪裡?A:先檢查三件事:
Structured Output Parser 是否真的接在 AI Agent 的 ai_outputParser 連線上。
JSON Schema 是否為合法格式,尤其是括號、逗號與 required 欄位名稱。
System Message 是否和 Schema 衝突,例如提示詞要求輸出欄位和 Schema 定義不一致。
Q:附加工作流裡 LINE 訊息的欄位名稱出現 languag,這會影響流程嗎?A:不會影響資料抓取,因為真正取值仍然是 `{{ $json.output.language }}`。但它會讓使用者在 LINE 看到拼字錯誤,所以建議改掉,這屬於顯示層的細節修正。
四、模型選擇與使用時機Q:這種摘要與分類工作,適合用哪一種模型?A:如果需求是摘要、分類、關鍵字提取、標籤整理這種中低複雜度任務,先用輕量模型通常最划算。像附加檔案採用的 gpt-5-mini,就很適合作為第一版驗證。
Q:什麼情況下我應該直接用 AI Agent,而不是 Message a model?A:當你符合以下其中一種情況,就很適合改用 AI Agent:
你需要穩定的 JSON 結構輸出。
你後面還要串接 API、資料庫或聊天平台。
你未來可能會加上工具調用、知識庫檢索或多步驟判斷。
如果只是一次性生成文字,Message a model 仍然比較省錢也比較簡單。
2026/3/26
AI自動化 ChatGPT n8n API串接n8n 串接 ChatGPT API 完全指南 | (EP.3) n8n 自動化 API 串接教學
如何快速開啟你的 AI 自動化冒險?在 AI 工具百花齊放的時代,雖然有多種大型語言模型可供選擇,但在 n8n 自動化流程中,最穩定且最常被使用的核心引擎依然是 **ChatGPT (OpenAI API)**。本篇文章將手把手帶你完成 n8n 與 ChatGPT 的串接,從申請 API 密鑰、模型選擇到完整的 Prompt 詠唱技巧,一次幫你打通自動化工作流的任督二脈!
實用資源連結:
OPENAI API 平台
n8n 官方文件:OpenAI node 整合指南
步驟一:如何取得與保護你的 OpenAI API 魔法鑰匙?要讓 n8n 成功呼叫 ChatGPT,你必須先取得專屬的 API Key,並了解官方的計費與使用規範。
1. 申請 API Key
你可以先前往 OPENAI API 平台 了解最新的模型能力與官方資訊。
接著登入 OpenAI Platform 開發者後台(注意:此帳號獨立於一般版 ChatGPT 網頁,可分開註冊)。
點擊右上角個人頭像,進入 Profile -> API keys。
點擊 Create new secret key,為你的 Key 命名(例如:n8n-try),並選擇預設的 Project。
複製生成的金鑰(格式通常為 sk-...)。請注意,這組金鑰建立後通常只會完整顯示一次,務必立即妥善保存。
2. 公會嚴格守則:資安防護
專家警告: 這把「魔法鑰匙」絕對不可外洩!千萬不要將 API Key 直接寫在程式碼中,或推送到公開的 GitHub Repo。一旦外洩,你的額度將面臨被盜刷的風險。在 n8n 中,請務必使用內建的 Credentials 系統來安全儲存。
(註:新申請的帳號若未綁定信用卡並儲值 Credit,呼叫 API 時將會報錯。建議先至 Billing 頁面進行小額充值以啟用服務,否則即使 Key 建立成功也可能因額度問題而無法呼叫。)
步驟二:n8n 實戰,如何正確配置「OpenAI node」節點?隨著 n8n 官方不斷迭代,舊版的 Assistant API 節點已被淘汰。最新的整合方式請務必參考官方指南:OpenAI node 官方文件。
1. 新增節點與設定憑證在 n8n 工作流中,新增一個最新的 OpenAI Node (Message a Model) 節點。在 Credential to connect with 欄位中,選擇創建新的憑證,並貼上剛剛申請的 OpenAI API Key 來完成連線。
2. 挑選適合的 AI 精靈 (Model)在節點的 Model 列表中,你會看到多種模型。實戰上的選擇策略如下:
GPT-5-mini (萬能主角): 性價比最高、處理速度快,足以應付 80% 以上的日常自動化任務(如:摘要、分類、翻譯)。(實戰首推)
GPT-5-nano (低成本首選): 適合大量且極度單純的資料抽取,成本最低。
GPT-5 / GPT-4o (BOSS 戰專用): 當需要高難度推理、複雜程式碼撰寫或嚴格邏輯判斷時再派上用場。
如果你只是要先做出第一個能穩定跑通的 MVP,建議直接從 gpt-5-mini 開始。它的速度、成本與輸出品質在 n8n 場景中相對平衡,很適合摘要、分類、標籤整理、客服初步回覆等任務。
步驟三:詠唱的藝術,如何精準設定 Prompt 與輸出 JSON 格式?要讓 AI 聽話,不能只把資料丟給它,必須建立「三層漢堡」結構的提示詞 (Prompt)。核心原則很簡單:System 負責規則,User 負責任務,而 JSON Schema 負責把輸出格式鎖死。
1. 頂層:系統人設 (System Prompt)在節點設定中,將 Role 設為 System。在這裡賦予 AI 角色與規則:
12345678你是資料整理助手。規則:1. 使用繁體中文。2. 不要捏造未提供的資訊。3. 請只輸出 JSON。4. 欄位必須包含 summary、category、keywords、language。5. 若資訊不足,也必須輸出合法 JSON。
2. 中層與底層:任務指令與動態輸入 (User Prompt)再新增一個 Message 區塊,Role 設為 User,並動態帶入前方節點的變數:
1234請讀取以下內容,輸出摘要、主題分類、3 個關鍵字。內容:{{ $json.input_text }}
3. 強制結構化輸出 (JSON Schema)為了後續自動化節點能順利讀取資料,我們必須限制 AI 只能輸出 JSON:
在節點底部的 Options 點擊 Add Option。
選擇 Text Format 或 Output Format 中的 JSON Schema(不同版本 UI 命名略有差異)。
貼上你預先定義好的 Schema 格式,例如:
1234567891011121314151617{ "type": "object", "properties": { "summary": { "type": "string" }, "category": { "type": "string", "enum": ["AI工具", "程式開發", "商業", "教育", "其他"] }, "keywords": { "type": "array", "items": { "type": "string" } }, "language": { "type": "string" } }, "required": ["summary", "category", "keywords", "language"], "additionalProperties": false}
這樣做的最大好處是,下一個節點不需要再猜 AI 回了什麼格式,直接用固定欄位去接值即可。特別是 enum 很實用,它能強迫模型只能從你預設好的分類清單中挑選答案,大幅降低資料髒亂與拼字不一致的問題。
步驟四:資料淨化與回傳,如何完成連段技?在呼叫完 AI 後,我們通常需要將結果傳回前端(例如 Line Bot 或資料庫)。
Set 節點淨化: 在接收 Webhook 與傳給 AI 之間,建議先安插一個 Set (Edit Fields) 節點,將複雜的 Webhook 結構簡化為 input_text。例如把 {{ $json.body.events[0].message.text }} 指派給 input_text,這能讓你的 Prompt 保持乾淨,也讓後續維護更容易。
HTTP Request 回傳: 取得 AI 產出的 JSON 後,使用 HTTP Request 節點,動態帶入 replyToken 與 AI 產出的摘要內容,即可成功將結果推播給使用者。
如果你是串接 Line Bot,JSON Body 可以參考下面這個最小可行範例:
123456789{ "replyToken": "{{ $('Webhook').item.json.body.events[0].replyToken }}", "messages": [ { "type": "text", "text": "【summary】{{ $json.output[0].content[0].text.summary }}\n【category】{{ $json.output[0].content[0].text.category }}\n【language】{{ $json.output[0].content[0].text.language }}" } ]}
如果你也想把關鍵字一起回傳,只要在文字內容中再補上 keywords 欄位即可。透過這種做法,一個從接收、處理到回覆的 MVP AI 自動化工作流就能順利跑起來。
常見問答 (FAQ)為了方便你快速排錯,我把常見問題依照「最容易搜尋到的痛點」重新整理成四類:先處理帳號與節點錯誤,再看模型與成本,接著解決工作流穩定性,最後才是上線與維護。
一、帳號、節點與連線錯誤Q:為什麼我的 OpenAI API Key 一直報錯或無法使用?A:最常見的原因是「帳戶餘額不足」。OpenAI API 的計費機制與一般網頁版 ChatGPT Plus 訂閱是完全分開的。請登入 OpenAI API 後台的 Billing 頁面,綁定信用卡並儲值(Add payment details),API 即可正常開通使用。
Q:為什麼我在 n8n 執行 OpenAI 節點時,會收到「Error: 401 Insufficient Quota」的錯誤?A:這是因為你的 OpenAI 開發者帳戶「餘額不足」。OpenAI API 的計費與一般網頁版的 ChatGPT Plus 訂閱是分開的。請登入 OpenAI Platform 的 Billing 頁面,綁定信用卡並預先儲值(如 5 美金),即可開通 API 權限。
Q:為什麼在 n8n 裡找不到舊版的 OpenAI Assistant 節點?A:n8n 官方已於後續版本中淘汰了舊的 Assistant API 節點,改用更具彈性的架構。目前的最佳實踐是參考OpenAI node 官方文件,使用「Message a Model」或 LangChain 相關節點,不僅支援多模態(圖片、音訊),在設定 JSON Schema 結構化輸出時也更加穩定。
Q:如果我在 OpenAI 節點裡找不到 JSON Schema 選項怎麼辦?A:這通常有兩種原因。第一,你使用的是較舊版的 n8n,介面中可能還沒有完整支援結構化輸出功能;第二,你可能不是使用最新的 Message a Model 類型節點,而是用了舊版或其他 OpenAI 相關節點。最穩妥的做法是先更新 n8n,並確認你使用的是官方目前主推的 OpenAI 節點。若暫時無法升級,也可以先在 Prompt 中強制要求輸出 JSON,再用後續節點做驗證,但穩定性仍然不如原生 Schema。
二、模型選型與成本控制Q:gpt-5-mini、gpt-5-nano、gpt-5 到底該怎麼選?A:你可以用一句話快速判斷。若你的任務是摘要、分類、標籤整理、客服初步回覆這類標準型工作,先選 gpt-5-mini;若你的任務極度單純,而且請求量很大、很在意成本,可以試 gpt-5-nano;若你要處理多步邏輯推理、複雜文字生成或高品質程式碼任務,再升級到 gpt-5。不要一開始就選最強模型,否則通常只是成本更高,效果卻未必明顯更好。
Q:為什麼我的成本會比想像中高?不是只有丟一段文字給 AI 嗎?A:成本不只和輸入文字長度有關,也和你送出的系統提示詞、使用者提示詞、歷史上下文,以及模型輸出的字數有關。如果你在工作流中夾帶大量背景資訊、冗長規則、長篇聊天紀錄,Token 消耗就會快速增加。最佳做法是先用 Set、Code 或資料清洗節點把不必要的欄位砍掉,只保留 AI 真正需要看的內容。
Q:我可以把整段客服對話、網頁內容或 PDF 全部丟進去,讓 AI 自己理解嗎?A:技術上有時可以,但實務上不建議一開始就這樣做。資料越雜,輸出越不穩,成本也越高。比較好的流程是先做前處理,例如擷取重點欄位、清除無關字串、限制字數,再把精煉後的內容送進 OpenAI 節點。AI 並不是垃圾桶,前處理做得越乾淨,結果通常越穩。
Q:如果我的工作流只是做摘要或分類,還需要用 AI Agent 嗎?A:通常不需要。這種任務屬於標準的一進一出文字處理,使用單純的 OpenAI 節點反而最穩、最便宜,也最好除錯。AI Agent 真正適合的是需要自行查資料、決策、呼叫工具、反覆嘗試的流程。如果只是摘要、翻譯、改寫、分類或抽取欄位,直接用 LLM 節點即可。
三、輸出格式與工作流穩定性Q:AI 有時候會亂講話或格式跑版,導致後面的自動化流程中斷怎麼辦?A:這就是 Prompt 工程的關鍵!除了在 System Prompt 中明確寫出「請只輸出 JSON,不要包含其他廢話」之外,務必在 OpenAI 節點的 Options 中開啟 Output Format: JSON Schema,並嚴格定義你要的欄位結構。這樣 AI 就會被強制限制,只產出合法且符合你所需的 JSON 結構,確保工作流穩定運行。
Q:為什麼我明明要求 AI 輸出 JSON,它還是會多回一些說明文字?A:因為單靠 Prompt 約束並不保險。模型即使理解了你的要求,也有可能在某些情況下額外補一句說明,尤其在輸入內容複雜、上下文過長或指令不夠明確時更容易發生。最有效的解法不是一直加重語氣,而是直接使用 JSON Schema 或結構化輸出功能,讓格式限制由系統層處理,而不是只靠文字要求。
Q:為什麼同一段 Prompt,今天測得好好的,明天結果卻有點不一樣?A:這是生成式模型的正常現象。即使模型、提示詞與輸入看似相同,輸出的文字細節仍可能略有差異。因此在 n8n 工作流裡,真正需要追求的不是「每次字字相同」,而是「每次都符合你要的結構與規則」。也就是說,請把重點放在穩定的欄位輸出、固定分類值與可驗證的資料格式,而不是要求每一句自然語言都完全一致。
Q:OpenAI 節點回傳成功了,但我不知道該怎麼抓裡面的欄位怎麼辦?A:最簡單的方法是先在 n8n 的執行結果面板中查看該節點的實際輸出 JSON,確認資料路徑後,再複製到下一個節點的表達式中。很多新手會直接照抄別人的 {{ $json.output[0].content[0].text.summary }},但不同節點版本或設定方式,輸出結構可能略有差異。正確做法永遠是先看自己的執行結果,再決定要抓哪一層。
Q:為什麼 AI 有時候回傳的內容會導致後面的 HTTP Request 節點報錯?A:通常是因為 AI 回傳了包含 Markdown 標記(如 json )或多餘的聊天廢話,導致 n8n 無法正確解析 JSON。解決方案是確實使用步驟三教學的 JSON Schema 功能,這會在底層強制 API 僅能輸出純粹且符合規則的 JSON 格式。
Q:Webhook 傳來的結構太複雜,我一定要用 Set (Edit Fields) 節點嗎?A:雖然不是強迫的,但強烈建議使用。將深層的 JSON 路徑(例如 body.events[0].message.text)統一轉換為一個易讀的變數 input_text,不僅方便你在 Prompt 中引用,未來如果前端平台(從 Line 換成 Telegram)更換了,你也只需要在 Set 節點修改一次對應關係,大幅提高工作流的維護性。
Q:如果我想讓 AI 根據不同情境回不同格式,還適合用固定 Schema 嗎?A:可以,但你要先重新思考資料設計。實務上不建議讓同一個節點今天回 A 格式、明天回 B 格式,因為這會讓後續節點很難維護。更好的做法通常有兩種:一種是把所有可能欄位都設計進同一份 Schema,未使用欄位留空;另一種是先用前一個節點做路由判斷,再分流到不同的 OpenAI 節點,各自使用不同 Schema。這樣工作流會比混合格式穩定很多。
四、上線測試與後續維護Q:如果我想把 AI 產出的結果寫進 Google Sheets、Notion 或資料庫,有什麼要注意?A:最重要的是欄位要先標準化。也就是說,不要讓 AI 自由發揮欄位名稱、分類文字或日期格式,而是先在 Schema 裡把欄位類型與值域定義好。這樣後續接 Google Sheets、Notion、Airtable、SQL 等節點時,才不會出現欄位名稱忽然改掉、分類值拼法不一致,或日期格式無法寫入的問題。
Q:我該怎麼測試這個工作流,才不會一上線就翻車?A:請不要一開始就拿真實使用者流量測。比較穩健的方式是先準備 5 到 10 組測試資料,刻意涵蓋正常輸入、空字串、超長文本、語意模糊內容,以及格式不完整的情境。只要這些案例都能穩定輸出合法 JSON,而且後面的 HTTP Request 或資料庫節點都接得住,你再上線會安全很多。
Q:如果未來 OpenAI 模型更新,我現在的 n8n 工作流會壞掉嗎?A:有可能,但通常不是整個流程壞掉,而是輸出風格、欄位路徑或可選模型名稱發生變化。因此建議你在工作流中盡量避免硬依賴模型的自由文字表現,而是把穩定性建立在 System Prompt、JSON Schema 與後續驗證節點上。只要格式約束做得夠紮實,未來即使更換模型,調整成本也會低很多。
2026/3/26
AI自動化 n8n API串接何時該用 LLM?何時該派 AI Agent 上場? | (EP.2) n8n 自動化 API 串接教學
在建立 n8n 的自動化工作流時,許多新手都會遇到一個核心痛點:畫面上同時有 LLM 節點和 AI Agent 節點,到底該拉哪一個?
如果你習慣將所有任務都塞給 AI Agent 處理,你可能會面臨 Token 費用暴增、執行流程不穩定,甚至是難以 Debug 的地獄。這篇文章將帶你深度解析 LLM 與 AI Agent 的本質差異,並教你如何針對不同的戰場,選擇最適合的自動化武器。
💡 核心對決:LLM 與 AI Agent 的本質差異在哪裡?要理解兩者的差異,我們可以用最簡單的「積木(Function)」概念來看:
LLM (大型語言模型): 本質上它**只有一個大腦 (Model)**。它採取一問一答的線性模式(你問 → 他回),完全處於被動狀態。
AI Agent (智能體): 除了大腦 (Model) 之外,它還具備了 記憶 (Memory) 與 **工具箱 (Tools)**。它能夠根據你的目標,自主啟動 ReAct(理解目標 ➔ 規劃步驟 ➔ 呼叫工具 ➔ 檢查結果)的多步推理解迴路,直到任務完成。
🧠 為什麼 90% 的場景你只需要 LLM?(省錢又穩定)許多新手在初學 n8n 時,容易陷入「凡事皆用 Agent」的誤區。事實上,在日常的自動化任務中,有高達 90% 的時間你只需要使用單純的 LLM 節點。
適合 LLM 處理的任務特徵:
流程固定: 擁有明確的輸入(Input)與輸出(Output)。
純文字處理: 例如資料摘要、語言翻譯、語意分類(客訴情緒判斷)。
生成結構化資料: 幫你打草稿、生成 Email 內容、或是轉換成特定格式(JSON、SQL)。
LLM 的絕對優勢:
超便宜: 只要 Prompt 寫好,一次呼叫就解決,Token 消耗極低。
超好 Debug: 流程固定,出錯時一眼就能看出是哪個環節的問題。
可控性極高: 嚴格遵循你的指令,不會有意外的自主決策。
🦸♀️ 何時才需要派 AI Agent 上場?(處理不確定任務)如果你今天的任務沒有固定的標準流程,且需要「動態決策」或「與外部系統互動」,這時才是 AI Agent 發揮價值的舞台。
適合 AI Agent 處理的任務特徵:
不確定的流程: 無法事先寫死所有的判斷條件。
需要多步驟決策: 遇到問題需要反覆思考並修正。
依賴外部工具: 例如自動查訂單資料庫、上網搜尋最新資訊、或是直接操作 API 發送郵件。
⚠️ 新手防坑警告:拜託不要濫用 Agent!AI Agent 雖然聰明,但會帶來高昂的代價。它在思考與嘗試的過程中會消耗大量 Token(成本直接爆炸),且由於具備自主決策權,非常容易產生「幻覺 (Hallucination)」導致過度行動。如果出錯,因為思考邏輯成謎,Debug 的難度將會非常高。
鐵則:能用 LLM 解決的問題,就絕對不用 Agent!
🏗️ 大師級實戰架構:如何打造「黃金混合生產線」?在實戰中,最強的架構不是全用 Agent,也不是全用 LLM,而是將兩者混搭,各司其職。我們以「智能客服工作流」為例:
讓 Agent 當「廠長」負責決策 (Decision):接收到客戶訊息後,由 AI Agent 判斷「是否需要回覆?」。如果需要,Agent 會決定去 Database 調出這筆訂單資料。
讓 LLM 當「作業員」負責處理 (Process):將訂單資訊與客訴內容交給純 LLM 節點,請它專心撰寫一封語氣誠懇的安撫 Email(生成內容)。
讓 Tools 當「輸送帶」確實執行 (Execute):最後,將 LLM 寫好的信件交給常規的 HTTP / Gmail 節點(不需要 AI),單純負責把信件送出。
這樣一來,Agent 不需要浪費 Token 去寫信,LLM 也不需要負擔決策的壓力,整個 n8n 流程既聰明、穩定又省錢!
常見問答 (FAQ)Q:為什麼我在 n8n 中使用 AI Agent 執行任務,費用會突然暴增?A:因為 AI Agent 具備「ReAct(推理與行動)」機制。為了解決一個問題,它會在背後不斷自我對話、反覆呼叫工具並驗證結果,每一次的內部迴圈都會消耗大量的 Token。如果沒有嚴格限制它的行動次數或提供精確的 Prompt,成本就會直線上升。
Q:我該如何決定一個新流程要用 LLM 還是 Agent?A:你可以問自己兩個問題:第一,「這個任務的流程是否固定不變?」第二,「任務需要自行判斷並呼叫外部工具來查資料嗎?」。如果流程固定且只需純文字轉換,請召喚 LLM;如果需要多重判斷與操作工具,再指派 Agent。
Q:如果我的 AI Agent 流程一直報錯,該如何優化?A:遇到 Agent 報錯或產生幻覺,首要之務是「把它牢牢限制住」。你可以在 System Prompt 中給予極度明確的目標與角色設定,限制其最大思考與行動次數,並確保給予的 Tools (工具箱) 只有它絕對需要的工具,避免它漫無目的地亂猜。若還是難以 Debug,建議將複雜流程拆解,改用「Agent 決策 + LLM 執行」的黃金混合架構。
2026/3/25
AI工具 AI自動化 Vibe Coding【Vibe Coding 實戰】如何打造政府標案監控平台?AI 自動化追蹤,省下萬元訂閱費!
為什麼你需要專屬的政府標案監控系統?大家好,我是想哥,致力於用 AI 改變世界。對於經常參與政府標案的企業或個人來說,每天到「政府電子採購網」搜尋案子是例行公事。然而,傳統的搜尋介面往往不夠直覺,手動查找不僅耗時,還極易錯失黃金商機。
為了解決這個痛點,坊間推出了許多標案監控的付費平台。這些平台確實好用,但通常需要支付一筆不小的年費(例如每年高達 8,800 元)。這促使我思考:既然我們已經處於 AI 時代,何不透過 Vibe Coding 自己打造一套專屬的監控系統?
這不僅是一個能幫你「精準賺錢」的工具,若你自己動手開發,更是一個能立即「省錢」的解決方案。今天,就帶大家來開箱我透過 Vibe Coding 完成的 MVP 作品——**Tender Radar (政府標案監控平台)**。
如果你想先看看實際成果,也可以直接前往體驗網站:Tender Radar。
每年省下近萬元!Tender Radar 核心功能解析透過 Tender Radar 系統,你可以完全掌握標案資訊。以下是系統的三大核心應用場景:
1. 串接公開 API,打造直覺的高效搜尋介面系統底層串接了 g0v 與政府公開的 API 數據,目前已成功匯入超過兩千多筆的標案資料。我們將傳統複雜的介面,轉化為簡潔的資料看板(Dashboard)。你可以透過關鍵字快速檢索,並直接點擊連結跳轉回政府電子採購網查看原始公告,大幅縮短前置作業時間。
2. 建立個人化追蹤條件與 AI 智能評分門檻這是本系統最具價值的地方。你可以建立「個人追蹤條件」,精準定義你想要的商機:
關鍵字設定: 包含字(如:工程、設備、系統、維護)與排除字。
精細篩選: 設定履約地區、預算上下限、截止天數等。
智能評分系統: 系統內建了「分數門檻」與「通知門檻」。透過 AI 輔助設計的評分權重機制,當標案高度符合你的條件時會獲得高分。你可以設定只有達到特定分數(例如命中多個關鍵字)才觸發通知,徹底避免垃圾資訊干擾。
3. LINE 與 Email 自動化精準推播再也不用每天主動刷網頁了!系統會在每天早上 8 點執行排程掃描(也可手動一鍵觸發)。當偵測到符合你高分門檻的新標案時,系統會自動透過以下管道推播給你:
LINE 推播: 傳送摘要卡片,包含標案名稱、預算、截止日與直達連結。
Email 通知: 將詳細的標案清單整理成列表,寄送至你的信箱。所有通知紀錄、成功與失敗狀態,甚至熱門機關與類別的數據分析,都能在後台的視覺化報表中一覽無遺。
如何擁有這套自動化標案系統?這個 Tender Radar 系統目前已經具備了完整的 MVP(最小可行性產品)架構。未來,我計畫將其發展成兩種模式:
SaaS 訂閱服務: 提供給不想寫程式,但需要高效工具的企業使用。
實戰教學課程: 將這套系統的開發過程包裝成課程,教導大家如何利用 Vibe Coding 與 AI 工具,一步步建構出屬於自己的自動化系統。
如果你對這套系統的部署、SaaS 服務,或是未來的教學課程有興趣,歡迎隨時與我聯絡!
常見問答 (FAQ)Q:這套標案監控平台的資料更新頻率與準確度如何?A:系統底層直接串接政府電子採購網與 g0v 的公開 API,資料與官方同步。配合每日早上的自動化排程掃描,能確保你在第一時間獲取最新、最準確的標案公告,不會有漏接的問題。
Q:設定中的「分數門檻」與「通知門檻」具體是如何運作的?A:這是一種防干擾的智能過濾機制。當標案符合你的「包含關鍵字」或「特定地區」時會累加分數。你可以設定「分數門檻」(例如 12 分才算及格被收錄)以及更高的「通知門檻」(例如 20 分才主動發 LINE 通知)。這套計分邏輯也可以請 AI 幫忙撰寫與優化,確保推播給你的都是精準的高價值商機。
Q:我完全沒有程式基礎,也能學會用 Vibe Coding 做出這個系統嗎?A:絕對可以!Vibe Coding 的核心精神就是讓 AI 成為你的工程師。只要你能清楚定義商業邏輯與需求(如:需要什麼欄位、用什麼方式通知),配合適當的 AI 工具引導,即使是零基礎也能一步步建置出這套自動化系統。
相關連結
Tender Radar 體驗網站
2026/3/24
AI工具 AI自動化 Vibe CodingGoogle Stitch MCP 教學:如何結合 AI 自動化快速生成 Next.js 網站 UI
Google 近期推出的 Stitch 在開發者社群中引起了廣大迴響,其強大的 UI 生成能力令人驚豔。透過結合 MCP (Model Context Protocol) 協定,我們可以讓 AI Agent 自動化處理繁瑣的前端切版工作。
本文將以一個「美甲美容預約系統」的 Next.js 網站為例,帶你一步步拆解如何從零開始,利用 Google Stitch MCP 快速產出具備高質感的網頁 UI。
先收藏 3 個官方入口如果你想快速上手,建議先把下面 3 個官方資源打開,後續安裝與操作時會用得到:
Stitch 官網:先了解 Stitch 的整體能力,包含從提示詞生成 UI、調整版型與匯出成果的核心流程。
Stitch MCP 官方安裝文件:用來設定 MCP Server、完成 API Key 綁定,這是讓 AI Agent 真正能呼叫 Stitch 的關鍵步驟。
stitch-skills GitHub 倉庫:Google Labs 提供的 Agent Skills 集合,能讓 Cursor、Claude Code、Gemini CLI 等工具更有效率地配合 Stitch 工作。
如何快速完成 Stitch MCP 環境部署?要讓 AI 能夠直接呼叫 Stitch 的生成能力,我們需要先完成 MCP 伺服器的安裝與 API 金鑰設定。
安裝 Stitch MCP 伺服器在您的 AI 代理開發環境(例如 Cursor、Antigravity 等支援 MCP 的工具)中,開啟 MCP Servers 管理介面,搜尋 stitch 並點擊安裝 (Install)。這一步將會自動化載入所需的環境設定。若想對照完整流程,可以直接參考 Stitch MCP 官方安裝文件。
獲取 API 金鑰 (API Key)安裝過程中,系統會引導您前往 Stitch 的官方網頁設定。請在設定頁面中點擊「建立金鑰」,生成專屬的 API 金鑰,並將其貼回您的 MCP 設定中妥善儲存以完成身分驗證。
擴充 AI 開發火力:安裝 Stitch Skills光有基礎 MCP 還不夠,為了讓 AI 具備更專業的前端工程師思維,我們需要導入 stitch-skills。
這是一個專為 Stitch MCP 伺服器設計的 Agent 技能函式庫,相容於 Gemini CLI、Claude Code 與 Cursor。透過安裝 GitHub 上的 stitch-skills 擴充套件,AI 就能夠遵循更嚴謹的開發標準進行作業,大幅減少生成過程中的邏輯錯誤。
根據該 GitHub 倉庫說明,stitch-skills 內建多種實用能力,例如:
stitch-design:負責 Stitch 設計工作流的統一入口。
stitch-loop:可從單一提示詞延伸成完整多頁網站流程。
design-md:協助整理設計系統與 DESIGN.md 文件。
react:components:將 Stitch 畫面轉成 React 元件系統,並維持設計 Token 一致性。
如果你平常就是用 AI 編輯器協作開發,這一層 skills 幾乎就是把 Stitch 從「會生成畫面」升級成「更懂前端交付流程」。
實戰演練:從需求規劃到自動生成 Next.js 網站環境建置完畢後,我們就可以開始向 AI 下達開發指令 (Prompt)。以下為本次美甲預約網站的標準化生成流程:
1. 啟動 SDD (軟體設計文件) 開發流程不要讓 AI 直接寫程式碼,而是要求它先執行 SDD (Software Design Document) 流程。AI 會依序產出結構化的規格文件(Spec)、開發計畫(Plan)與任務清單(Task)。這能確保 AI 清楚理解版面規劃,包含:導覽列 (Navbar)、Hero 區塊、服務項目、作品集與顧客評價等區塊。
1我想做一個美容美甲的預約系統,使用next.j做,先做首頁就好 ,執行 SDD 開發流程,依序產出結構化的 spec、plan 與 task 等規劃文件
2. 制定設計規範 (Design Tokens)在產出程式碼前,AI 會依據主題(如:柔和女性化、優雅高質感)自動建立設計系統。例如設定主色為「玫瑰粉 (#D4A5A5)」、背景色為「奶油米」,並指定字型(Playfair Display 與 Inter)。這些 Tokens 將成為後續 UI 生成的核心基準。
3. 呼叫 create_project 執行 UI 生成當規劃完成後,AI 會調用 Stitch MCP 的 create_project 方法。系統會自動下載所需套件(如 Tailwind CSS)、處理字型與圖標,並開始生成首頁的設計稿與原始碼。
完美還原設計稿:如何解決排版誤差?在初步生成後,您可能會發現瀏覽器渲染的畫面(localhost:3000)與 Stitch 原始設計稿有些微出入。這時不需要手動調整 CSS,只需遵循以下步驟:
反饋錯誤訊息: 將終端機或畫面上的報錯資訊直接貼給 AI 進行初步修復。
要求零誤差校正: 明確指示 AI:「網頁呈現與 Stitch 原始設計稿不太一樣,請幫我確認並修正」。
自動重構: AI 會重新比對 Tailwind tailwind.config.ts 中的顏色設定、全域 CSS 屬性與各個 Component(如 Navbar、Hero Section)的 HTML 結構,確保最終輸出的 Next.js 程式碼與設計稿達到 100% 零誤差轉換。
開發者反思: 當 AI 已經能包辦 UI 介面設計與繁瑣的切版工作時,未來的軟體工程師應將重心轉移至「架構設計」、「需求分析」與「商業邏輯整合」,這才是人類開發者無可取代的價值。
常見問答 (FAQ)Q:Google Stitch 的使用額度限制是什麼?A:目前系統每日提供 400 個額度 (Credits)。根據實測,透過 AI 完整生成一個包含豐富區塊(Hero、作品集、評價等)的高質感首頁,大約就會消耗掉 4 個額度。
Q:Stitch MCP 支援哪些 AI 開發工具?A:只要是支援 MCP (Model Context Protocol) 協定的開發工具皆可使用,主流工具包含 Cursor、Gemini CLI、Claude Code 以及 Antigravity 等。
Q:AI 生成的網頁設計如果不滿意可以修改嗎?A:可以的。您可以透過對話框下達新的提示詞 (Prompt),例如「請將按鈕顏色改為深色」或「調整作品集區塊的排版」,AI 會自動調用相關程式碼進行局部更新。
相關連結
Stitch 官網
Stitch MCP 官方安裝文件
stitch-skills GitHub 倉庫
2026/3/23
AI自動化 n8n API串接n8n 串接 LINE 官方帳號:Webhook 與 API 設定全攻略 | (EP.1) n8n 自動化 API 串接教學
使用 n8n 串接 LINE 官方帳號,最彈性且穩定的做法並非依賴專用的第三方節點,而是回歸本質,直接使用基礎的網路傳輸節點:
透過 Webhook 節點 接收來自 LINE 的 Webhook 事件。
透過 HTTP Request 節點 呼叫 LINE Messaging API 來回覆或推送訊息。
這種「不依賴特定模組」的架構,不僅能支援 LINE 最新的 API 功能,在未來擴充與維護上也最為自由。
n8n 串接 LINE 的核心運作架構為何?要建立流暢的自動化回覆,整個資訊流的方向如下:
使用者觸發: 使用者傳送訊息給 LINE 官方帳號。
事件推送: LINE 伺服器將該事件(Event)打包成 JSON,以 POST 方式傳送至你設定的 n8n Webhook URL。
資料解析: n8n 接收後,過濾並解析使用者的訊息內容。
執行回應: n8n 透過 HTTP Request 節點,帶著身分驗證(Token)呼叫 LINE Reply API 或 Push API,將回覆傳送給使用者。
💡 專家提示: LINE 官方文件明確指出,當使用者與官方帳號互動時,LINE 會發送 Webhook Event。而 n8n 的 Webhook 與 HTTP Request 節點完美對應了「接收」與「發送」這兩個必要動作。
開始前,你需要準備哪些開發環境?在建立工作流程前,請確保你已準備好以下兩端的設定:
1. LINE Developers 端請登入 LINE Developers Console,建立並設定你的 Messaging API Channel:
取得 Channel access token(用於 API 呼叫身分驗證)。
取得 Channel secret(用於後續的安全性簽章驗證)。
準備好填寫 Webhook URL 的位置(稍後從 n8n 取得)。
LINE 官方開發入口可參考:LINE Developers
2. n8n 端你需要一個 可從外網透過 HTTPS 存取 的 n8n 伺服器:
LINE 的 Webhook 嚴格要求必須是公開的 HTTPS 網址。
請務必使用 n8n Webhook 節點提供的 Production URL(正式網址),Test URL 僅供編輯器內手動測試使用。
若你的 n8n 架設在 Reverse Proxy(如 Nginx、Cloudflare Tunnel)後方,請確保系統環境變數的 Webhook Base URL 設定正確。
實戰教學:3 步驟完成 n8n 與 LINE Webhook 設定步驟 1:建立 n8n Webhook 節點 (接收入口)在 n8n 中新增一個 Webhook 節點,這是整個自動化的起點:
HTTP Method: POST
Path: 自訂路徑,例如 line-webhook
Respond: 設為 Immediately 或 Using Respond to Webhook Node(建議盡速回應 200 OK)。
設定完成後,複製節點上的 Production URL(例如:https://your-domain.com/webhook/line-webhook)。將此網址貼回 LINE Developers Console 的 Webhook URL 欄位並啟用,同時點擊 Verify 測試連線。
步驟 2:加入資料分流與判斷 (IF / Switch)LINE 送來的事件很多種(加入好友、封鎖、文字訊息、圖片等)。透過 IF 或 Switch 節點,過濾出你想處理的事件,例如僅處理文字訊息:
條件設定:{{ $json.body.events[0].type }} === "message"
條件設定:{{ $json.body.events[0].message.type }} === "text"
步驟 3:設定 HTTP Request 節點 (回覆訊息)過濾出文字後,使用 HTTP Request 節點呼叫 LINE Reply API:
Method: POST
URL: https://api.line.me/v2/bot/message/reply
Authentication: 可使用 Header Auth 或直接在 Headers 手動加入。
Headers:
Authorization: Bearer {{你的_CHANNEL_ACCESS_TOKEN}}
Content-Type: application/json
Body (JSON):123456789{ "replyToken": "={{$json.body.events[0].replyToken}}", "messages":[ { "type": "text", "text": "你剛剛說的是:{{$json.body.events[0].message.text}}" } ]}
⚠️ 絕對不能省的 Content-Type 設定:雖然你已經設定了 Bearer Auth 來驗證身分,但 **務必手動加上 Content-Type: application/json**。Authorization 管的是「你是誰」,而 Content-Type 是告訴 LINE「你送的資料格式」。如果漏掉這行,LINE API 非常容易直接回傳 400 Bad Request 錯誤。
資訊安全必備:如何在 n8n 實作 LINE 簽章驗證?為了防止惡意攻擊者偽造 LINE 的請求打爆你的 Webhook,LINE 官方強烈建議驗證請求標頭中的 x-line-signature。
簽章驗證官方文件可參考:Verify webhook signature
在 n8n 的實作步驟:
開啟原始內容: 在 Webhook 節點設定中開啟 Raw Body 選項,因為簽章驗證必須使用「完全未經解析的原始 Request Body」,若經過 JSON Parser 重整,計算出的雜湊值就會出錯。
加密運算: 加入 Crypto 節點,選擇 HMAC-SHA256 演算法。
設定密鑰: 將 LINE 的 Channel secret 作為加密 Key,對 Raw Body 進行加密。
編碼與比對: 將加密結果轉為 Base64 格式,並使用 IF 節點比對是否與 Header 中的 x-line-signature 完全一致。
進階實用情境:圖片處理與主動推播當你的基礎文字 echo bot 跑起來後,可以嘗試擴充以下業務邏輯:
1. 接收與處理圖片 (Image Handling)
事件觸發後取得 message.id。
透過 HTTP Request 發送 GET /v2/bot/message/{messageId}/content 取得圖片。
將下載的圖片串接後續節點(如上傳至 Google Drive、S3,或丟給 AI Vision 進行影像分析)。
2. 主動推播通知 (Push Messages)不需等待使用者講話,只要你有對方的 userId,就能利用 Push API 主動發送訊息。非常適合用於:電商訂單狀態更新、報名成功通知、定時提醒或 AI 每日摘要推播。
邁向企業級:如何規劃高擴充性的 n8n 自動化架構?如果你打算打造正式商業用的 LINE 自動化系統,建議將 n8n 工作流拆分為「兩層式架構」:
入口層 (Gateway Workflow):專門負責 Webhook 接收、簽章驗證、回覆 HTTP 200 OK 給 LINE(避免超時),並將事件標準化後,透過子工作流 (Execute Workflow node) 傳遞下去。
業務層 (Business Workflows):根據事件類型觸發不同的業務邏輯。例如:FAQ 智能客服 (串接 OpenAI)、會員資料寫入 (串接 Google Sheets / CRM)、預約系統建立 (串接 Notion / Airtable)。
這樣拆分的好處是:不僅能大幅降低 LINE Reply Token 逾時的風險,未來擴充任何 AI 工具或資料庫都會變得異常輕鬆。
常見問答 (FAQ)Q:HTTP Request 節點已經設定了 Bearer Auth,還需要手動加上 Content-Type 嗎?A:需要,強烈建議手動加上! Authorization: Bearer xxx 僅負責身分驗證,而 Content-Type: application/json 是告訴 LINE 伺服器你傳送的資料格式。雖然某些 n8n 版本在 Body Type 選擇 JSON 時會自動補上,但為了避免難以除錯的 400 Bad Request 錯誤,手動在 Header 加上 Content-Type 是最穩妥的最佳實務。
Q:為什麼我在 LINE Developers 後台點擊 Verify Webhook,一直測試失敗?A:最常見的原因有兩個:第一,你在 n8n 提供的是 Test URL(僅限編輯模式有效),請務必改用 Production URL 並啟用 (Activate) 該工作流。第二,若你的 n8n 架設在反向代理伺服器(如 Nginx、Cloudflare)後方,請檢查 WEBHOOK_URL 系統環境變數是否有正確設定為對外公開的 HTTPS 網域名稱。
Q:LINE 的 Reply Token 有時效限制,如果我的流程需要很長的運算時間(例如呼叫 AI 整理資料)該怎麼辦?A:LINE 規定 Webhook 必須盡快給予 200 OK 回應,且 Reply Token 的有效時間非常短。實務上的做法是:Webhook 接收後立刻回傳「已收到您的訊息,處理中…」,接著將耗時任務(如 AI 分析)往後丟給非同步流程處理。當資料處理完畢後,改用 Push API 主動推播最終結果給該使用者的 userId。
官方文件延伸閱讀
LINE Developers
Verify webhook signature
Sending messages
2026/3/20
商業策略 AI工具 AI自動化SaaS 的下一站?深度解析 Agent-as-a-Service (AaaS) 如何重新定義企業軟體
這幾年大家很習慣用 SaaS 來理解企業軟體。你買 CRM、買 ERP、買 Helpdesk、買行銷自動化平台,本質上都是買一套可以被操作的系統。資料放進去、流程建起來,再由人去點按鈕、查資訊、跑報表、送審核、追進度。說穿了,SaaS 賣的是工具。
但 AI Agent 的出現,正在慢慢改變這件事。
未來企業採購的,可能不再只是「一套讓員工操作的軟體」,而是「一個能自己理解任務、自己呼叫工具、自己執行流程、必要時再請人核准的數位工作者」。這種模式,可以叫做 Agent-as-a-Service (AaaS)。它不是單純把聊天機器人換個名字而已,而是企業軟體邏輯的一次根本轉向:從賣功能,變成賣結果。
為什麼說 SaaS 賣介面,而 Agent 賣的是「工作能力」?我們先把差異講清楚。
在 SaaS 時代,人是流程的中心。系統提供介面,員工負責操作。你要查客戶資料,自己進 CRM;你要處理請款,自己比對發票、訂單和驗收單;你要安排面試,自己來回寄信、協調時段、更新系統狀態。
Copilot 時代往前走了一步。AI 會幫你摘要、寫初稿、提出建議,但主導權還是在人手上。它像副駕,會提醒你、幫你補齊,但方向盤還是你在握。
到了 Agent-as-a-Service 時代,邏輯徹底不同了。人不再負責一個個步驟地操作系統,而是直接下達目標:
「幫我準備這個客戶的續約會議。」
「幫我處理這批請款。」
「幫我找出最近結帳 (Checkout) 變慢的原因並提出修正。」
接著由代理自己拆解任務、選用工具、執行流程,最後再把結果交回來,或是在關鍵節點請你核准。這時候你買的不是 CRM、不是 ERP 外掛、不是 Chatbot,而是某種可交付工作成果的能力。
一句話總結:SaaS 賣的是工具介面,Agent-as-a-Service 賣的是可衡量的工作成果。
AI 補足了「行動力」:從回答器進化為執行者為什麼這件事現在開始變得真實?因為過去幾年,AI 最缺乏的是「行動能力」。
大型語言模型 (LLM) 很會寫、很會總結、很會回答問題,但它本來不會真的做事。它可以告訴你怎麼報帳,卻不能幫你進系統送出;可以幫你草擬客服回覆,卻不能自己查訂單、發退款;可以幫你整理會議重點,卻不能主動幫你排下次會議、更新 CRM。
而 Agent 的核心,正是把這些能力補上。現在的代理系統,通常開始具備以下特徵:
目標理解:能理解較高階的目標,不只回單一問題。
任務拆解:能把一件事拆成多個步驟。
工具整合:能呼叫外部工具與 API。
上下文串聯:能讀文件、查知識庫、整合上下文。
記憶留存:能保留短期或長期記憶。
分工協作:能在多個代理之間分工合作。
安全卡控:能在高風險步驟加入核准與限制。
這讓 AI 從「回答器」慢慢變成「執行者」。無論是 NVIDIA 提出的 Agentic AI、Microsoft 的完整 Workflow 執行,還是 Salesforce 包裝的 Agentic Enterprise,都指向同一件事:企業軟體的價值,開始從 UI 轉移到自動完成工作。
10 個 Agent-as-a-Service 顛覆企業流程的真實應用場景要理解 AaaS 的威力,我們可以從企業中最常見的 10 個職能來看:
1. 客服代理 (Customer Service Agent)客戶說:「訂單還沒到,我想取消。」Agent 能自己查狀態、確認規則、發退款、寄通知,只在超出權限時才轉交真人。企業買的不再是客服介面,而是處理一線任務的服務。
2. IT 支援代理 (IT Helpdesk Agent)員工說:「VPN 壞了。」代理會先驗證身分,檢查裝置狀態、重設憑證、建立 Ticket 並通知管理員。它不是單純回答 FAQ,而是直接執行 IT SOP。
3. 業務代理 (Sales Agent)下達指令:「幫我準備 A 客戶續約會議。」代理會去抓 CRM 紀錄、整理未解決問題、估算流失風險、做簡報初稿並順手排會。你買的是「續約推進能力」。
4. 財務與採購代理 (Finance & Procurement Agent)代理自動比對 PO、發票與驗收單,抓出重複請款或異常金額。低風險自動送審,高風險交主管。這是在處理真正的交易流程,而非只是產出報表。
5. 招募代理 (Recruiting Agent)從讀履歷、排序候選人、寄邀約、協調面試到整理下一輪建議,整條招募鏈路都能由代理協助執行。它是「招募流程專員」,而不僅是 HR 工具。
6. 行銷代理 (Marketing Agent)設定目標:「下週為這篇文章帶來 300 個 Demo Leads。」代理自己拆解策略、寫文案、分眾投放、監測 CTR/CVR、調整預算並每日回報。企業買的是「投放成果」。
7. 工程代理 (Engineering Agent)指令:「找出 Checkout 變慢的原因,修掉並開 PR。」代理會翻 Git 歷史、看 Logs、跑 Benchmark、定位問題並建立 PR。此時 UI 只是監督面板,價值在於解決問題。
8. 法務代理 (Legal Agent)代理能初步審查 NDA、MSA,標記風險條款、比對標準條文並提出紅線 (Redline) 建議。買的不是文件管理系統,而是「初階合約審查服務」。
9. 供應鏈代理 (Supply Chain Agent)監測缺料風險、預測延遲、模擬替代料件、重新計算排程並通知廠端。它不只是儀表板 (Dashboard),而是供應鏈的協調者。
10. 個人幕僚代理 (Personal Assistant Agent)整理郵件、追 Deadline、摘要會議、建立部落格草稿、安排日程,並記住你的偏好。你是在培養一個數位幕僚,而不是使用一個聊天視窗。
揮別單一大腦:多代理協作 (Multi-Agent) 才是未來企業架構真正有意思的地方,不是單一超級代理,而是多代理協作。
企業裡本來就不是只有一種角色,客服、財務、法務各有不同工具與權限。未來更合理的型態,不是一個全知全能的大腦,而是:
前台代理:負責跟人互動。
流程代理:負責執行 SOP。
資料代理:負責查詢、驗證、彙整。
審核代理:負責風險與合規。
協調代理:負責派工與整體規劃。
這樣的系統看起來就像一間虛擬公司。人類不會消失,而是從「逐步操作系統」轉變為「設定目標、管理例外、監督結果」。
Agent 會吃掉 SaaS 嗎?系統架構的四層演進AI 會殺死 SaaS 嗎?答案是:不會完全取代,但一定會重組。
SaaS 會從前台產品,慢慢退居為 Agent 背後的基礎設施。因為很多 SaaS 的真正價值,原本就不是 UI 本身,而是背後的資料模型、商業規則、權限設計與 API。未來的系統演進會呈現四個層次,一層疊一層:
System of Record:記錄資料 (傳統資料庫/核心系統)。
System of Workflow:讓人跑流程 (傳統 SaaS/BPM)。
System of Intelligence:提供建議 (Copilot 輔助)。
System of Action:直接執行工作 (Agent-as-a-Service)。
Agent 不是把所有系統砍掉重練,而是坐在它們上面,變成全新的「操作層」。
企業導入的真正痛點:治理、權限與人機協作很多人談 Agent 時只關注模型推理能力。但企業實際上線時,最痛的往往是以下幾點:
權限控管:代理到底能不能改資料、退費或碰付款?權限設計是核心。
**可追蹤性 (Auditability)**:它為何做這決策?用了哪些工具?在哪裡失敗?
成本控制:多步推理與工具呼叫都是成本。Token 花費、延遲與重試都會變成營運議題。
人機分工:哪些全自動?哪些半自動?哪些必須人工核准?
短期內,最現實的落地形態通常是:半自動代理 + 明確權限邊界 + 關鍵節點人工核准 + 完整 Audit Log。 產品設計的重點將從「操作介面」轉向「可被代理使用的系統」與「讓人監督代理的介面」。
開發者與商業模式的雙重典範轉移Agent-as-a-Service 不僅改變技術,也將重寫企業軟體的計價方式。
傳統 SaaS 多為按人頭訂閱 (Seat-based)。但如果工作主要是 Agent 在做,更合理的收費方式可能會變成:
基本授權費 + 每月代理執行次數
每完成一筆任務/Ticket 收費
每產出某種可驗證結果收費
產品經理將不再只盯著 DAU,而是關注「代理完成了多少工作」、「自動化率是否提升」、「錯誤成本是否可控」。AaaS 其實很像把 B2B SaaS 推向更接近顧問服務或流程外包 (BPO) 的方向,只是執行者變成了 AI。
結語:迎接「數位員工」的新時代SaaS 的核心是讓人更有效率地操作系統;AaaS 的核心則是讓系統直接替人完成工作。
這不表示人會消失,而是人的角色將往上提升:成為定義目標、監督風險、做最後判斷的管理者。企業採購的項目,也將從單純的「軟體授權」,進化為「可被管理、可穩定交付成果的數位工作能力」。在 Agent 時代,SaaS 依然存在,但它可能不再是舞台中央唯一的主角了。
常見問答 (FAQ)Q:企業導入 Agent-as-a-Service 會完全取代現有的 SaaS 系統嗎?A:不會。SaaS 不會消失,而是會「退居幕後」成為 Agent 的基礎設施。SaaS 系統內建的資料模型、權限與 API 將成為 AI 執行的基石,人類直接操作介面的頻率會降低,取而代之的是透過 Agent 來呼叫這些系統完成工作。
Q:目前 AI Agent 落地企業最關鍵的挑戰是什麼?A:最大的挑戰並非 AI 模型的聰明程度,而是「治理與安全」。包括精細的權限控管(Agent 能不能碰付款)、可追蹤性(決策過程是否留存稽核軌跡)、成本控制(Token 花費)以及人機分工的界線(關鍵決策需人工介入核准)。
Q:Agent-as-a-Service 會如何改變現有軟體的計價模式?A:它將顛覆傳統 SaaS 按人頭計費(Seat-based)的模式。未來的計價將更傾向「按工作成果(Outcome-based)」或「按任務執行次數(Task-based)」收費,企業實質上是在為 AI 代理交付的商業價值與自動化率買單。
2026/3/20
AI工具 AI自動化從提示詞到 Skill:5 個實務做法打造高效率 AI 自動化工作流
為什麼你的「萬能提示詞」越來越不管用?很多人剛開始接觸 AI 自動化時,習慣用一大段提示詞(Prompt)把整個流程包起來:角色設定、執行步驟、輸出格式、限制條件,全部塞進同一段文字裡。初期這樣做很直覺,只要 Prompt 寫得夠完整,確實能產出不錯的結果。
但隨著自動化工作流變長、變複雜,你會發現:提示詞可以完成單一任務,卻無法穩定承擔完整的工作流。 這通常不是因為 AI 模型不夠聰明,而是你把太多不同層級的要求,全綁死在同一段文字裡了。
這會導致三個致命的痛點:
產出不穩定: 同一段提示詞換了一份輸入資料,AI 的理解方式可能就跟著變。你以為交代的是嚴謹的 SOP,AI 卻常常在「臨場發揮」。
缺乏靈活度: 流程中只要有一個小環節需要微調(例如:先摘要再分頁,改成先抽重點再套模板),整份 Prompt 就牽一髮動全身,極難修改。
維護成本高昂: 每次執行任務都要把相同的規則、格式、限制重新輸入一次,不僅浪費 Token 算力與上下文空間,也讓後續的調整變得異常笨重。
破解迷思:Skill 真的只是「提示詞升級版」嗎?從自動化工作流的角度來看,Prompt 比較像「一次性的流程描述」,而 Skill 則是「可按需調用的任務模組」。
很多人誤以為 Skill 只是把 Prompt 寫得更長、包裝得更完整,再塞幾個範例進去。這其實還是停留在「提示詞升級」的思維。
真正的本質差異在於:
Prompt 是把所有要求塞進一段話。
Skill 是把不同性質的要求,拆解成不同的功能模組。
以前你可能會寫出這樣的「大雜燴」指令:
123456你是一位專業教案設計師(角色設定)幫我讀這份教材(任務目標)先摘要、再切段、再產生簡報(處理步驟)每頁 3–5 行(格式規則)優先保留案例、不要太像 AI(風格限制)最後輸出 markdown(輸出模板)
這段指令能運作,但資訊全混在一起。Skill 的價值,就是將這些層級俐落拆分。例如:
任務與使用時機: 放進 SKILL.md
格式與品質規則: 歸檔於 references/
輸出骨架: 建立在 templates/
前處理與機械式整理: 交給 scripts/
修正經驗與檢核重點: 累積在 logs/ 或 checklists/
透過模組化拆分,AI 不需要每次都重新消化整包複雜規則,流程也不需要因為微調而整包重寫。這才是具備長期維護價值的自動化工作流。
實戰教學:從 Prompt 走向 Skill 的 5 大核心策略如果你手邊已經有一堆 Prompt 在跑流程,不需要全部推翻重來。建議逐步將裡面重複、固定、機械式的部分抽離出來。以下是 5 個最容易落地的做法:
1. 抽離固定規則:建立專屬的 Rule 文件很多 Prompt 越寫越長,是因為你一直在重複交代「長期成立的原則」(例如:每頁一個重點、避免長段落、不要照抄原文)。
這些內容不該佔用每次對話的篇幅,應該抽成獨立的規則檔。例如建立一份 references/slide_rules.md。未來只要涉及簡報整理任務,直接讓 AI 讀取這份規則即可。
專家心法: 將不常變動的原則,從「對話指令」轉移到「可重複引用的規則文件」。
2. 模組化輸出格式:讓 AI 填空取代通靈很多長篇 Prompt 其實都在描述「輸出該長什麼樣子」。與其用自然語言費力描述排版,不如直接給定結構模板。
例如,建立一份 templates/lesson_slides_template.md,直接定義:
第 1 頁:主題頁
第 2 頁:概念說明
第 3 頁:操作步驟
AI 不需要猜測你的排版邏輯,只要把產出的內容「填」進結構裡,穩定度將大幅提升。
3. 腳本化前處理:淨化雜亂的輸入資料AI 表現不穩,常常是因為輸入的原始資料太過混亂(如:逐字稿混雜、表格欄位不一)。如果把清理工作也丟給 Prompt,AI 一邊理解任務、一邊做清理工,極容易失控。
正確的做法是先用 Python 等腳本語言處理「機械式工作」,例如:長文切片、清理雜訊空白、抽出特定標題區塊。讓 AI 專注處理結構化後的乾淨素材。
4. 拆解龐大工作流:建立單一功能的 Skill 節點不要試圖用一段 Prompt 一口氣完成「讀教材 → 摘要 → 分頁 → 套模板 → 檢查字數」。這只會導致「前面理解錯,後面整串歪」。
將大流程拆解為單一功能的 Skill 模組:
content-extractor:專門抽重點與段落。
slide-planner:負責規劃頁次。
slide-writer:依模板寫出內容。
這樣不僅能局部重跑、除錯,還能隨時插入人工審閱點。
5. 累積修正經驗:將「踩坑紀錄」化為系統資產以前你可能每次遇到產出太長,就在 Prompt 補一句「控制在 8 頁內」,下次遇到又得重講。在 Skill 架構下,你可以將這些除錯經驗記錄下來,轉化為系統知識。
把這些踩坑經驗放進 logs/revision_notes.md 或 checklists/output_checklist.md,讓過去的錯誤變成未來系統自動避開的防護網。
進階應用:6 種高價值的 Skill 應用場景除了基本的範本套用,Skill 在實務工作流中還能扮演不同角色:
檢核型 Skill: 不負責產出,專職驗收。檢查字數、案例密度或是否具有濃厚的「AI 腔」。
轉換型 Skill: 將既有內容轉換載體。例如:逐字稿轉講義、SOP 轉 FAQ、長文轉社群貼文。
萃取型 Skill: 從生肉資料中精準抽離定義、步驟、案例或 KPI 數據,供後續生成模組使用。
路由型 Skill: 根據輸入資料的屬性,決定下一步該走哪條工作流(Workflow Orchestration)。
風格型 Skill: 內容骨架不變,僅抽換語氣模組以適配不同受眾(如:企業內訓版 vs. 社群貼文版)。
資料準備型 Skill: 負責前置的去識別化、刪除敏感資訊、欄位標準化等低調卻極度重要的工作。
自我檢核:5 個問題幫你釐清 Skill 設計方向想從「會寫提示詞」進化到「會設計 Skill 架構」,請試著用這 5 個問題檢視目前的工作流:
哪些內容我每次都在重講? 把它抽成規則檔(Rule)。
哪些格式我每次都在重複描述? 把它抽成模板(Template)。
哪些整理動作其實是機械式的? 把它交給腳本前處理(Script)。
哪些步驟其實可以獨立成一段流程? 把它拆成單一功能節點(Node/Skill)。
哪些錯誤我已經修過很多次? 把它寫成檢核表(Checklist)。
常見問答 (FAQ)Q:為什麼原本寫得很完整的 Prompt,換了一份資料產出就不穩定?A:因為過長的 Prompt 將「任務邏輯」與「格式規則」混雜在一起。當輸入資料改變時,AI 容易在龐雜的指令中迷失焦點,試圖在理解新資料與遵守舊規則之間尋找平衡,最終導致產出變成不可控的「臨場發揮」。
Q:我該如何開始第一步將現有的長 Prompt 轉換為 Skill?A:先從「抽離不變的元素」開始。不要急著重構整個流程,先把你每次都會寫到的「輸出格式規定」抽出來變成一個獨立的 Markdown 模板;接著,把「機械式的資料清理」交給簡單的腳本。這兩個動作就能立即有感提升 AI 產出的穩定度。
Q:將工作流拆分成多個 Skill 模組,會不會反而增加開發與執行的時間成本?A:短期內建立模板和規則檔確實需要一點設置時間,但長期來看是大幅節省成本的。多個 Skill 模組可以重複調用(例如你的「內容萃取 Skill」可以用於簡報,也能用於寫貼文),且當流程出錯時,你只需針對單一節點除錯,而不必浪費 Token 讓整段長 Prompt 重新跑一次。