n8n 這個名字其實不是第一次出現——Day 5 到 Day 7 就認識過它的基本操作,也理解了 Workflow、Trigger、Node 這三個核心概念。今天會再碰一次,但角度不一樣:前面是「先認識工具長什麼樣」,這次是「真正想清楚要用它自動化專題裡的哪一段流程」。進入第四階段,手上已經有能跑的情境生成、角色扮演功能,是時候回頭把 n8n 這塊真正接上系統了。
Trigger:讓流程開始執行的條件
Node:流程裡的一個個動作單位
Workflow:整個流程的總稱,由 Trigger 加上一串 Node 組成
Day 7 當時有先想像過一個應用場景:對話結束 → 整理資料 → AI 分析 → 整理報告 → 發送或儲存。今天要做的,就是把這個想像中的流程,對照現在手上實際做出來的系統,重新想一次「真正要怎麼接」。
現在的系統,哪一段適合交給 n8n
這幾週陸續做出來的東西是:Day 13 的情境生成 Prompt、後端的 API、前端的聊天介面。使用者現在可以完成一次「輸入情境 → 跟 AI 對話」的完整流程。
今天想清楚的是:n8n 不是用來取代這些已經做好的功能,而是用來接手「對話結束之後」的那一段。 之前學概念的時候想得比較籠統,今天具體列出來,對話結束後其實有三件事要依序發生:
把整段對話紀錄收集起來,整理成固定格式
丟給 AI 做英文錯誤分析和自然表達推薦
把分析結果整理成一份學習報告,想辦法交到使用者手上(先從「存起來」開始,不急著做寄信)
這三件事有先後順序、每一步都依賴上一步的結果,而且是在「某個事件發生後」才要啟動——完全符合 Trigger + 一串 Node 的架構,這時候才真正體會到為什麼當初架構圖會把 n8n 放在這個位置。
一個重新想過的問題:Trigger 到底該是什麼
Day 7 想像時,Trigger 寫得比較模糊,只想到「對話結束」這個概念。今天認真想了一下「對話結束」具體要怎麼被偵測到,發現有幾種可能做法:
使用者在介面上主動按下「結束對話」
連續幾分鐘沒有新訊息,視為自動結束
對話中出現某種完成信號(例如 Day 13 的輸出裡本來就有一個 success_criteria 欄位,理論上可以用來判斷任務是否達成)
今天先決定用最單純的方式開始:使用者主動按下按鈕,由前端呼叫一個 Webhook 網址通知 n8n。 比較複雜的自動偵測邏輯,等基本流程跑通了再考慮要不要加。這個取捨邏輯跟 Day 11 設計情境生成需求時用的「先求跑通,再談完善」是一致的。
Trigger 跟 Day 10 學的 Webhook,今天終於真正串起來
Day 10 學 Webhook 的時候,理解的是「反過來的 API」這個抽象概念。今天具體想了一下要怎麼用:n8n 可以產生一個專屬的 Webhook 網址,當作這個 Workflow 的 Trigger。前端只要在「結束對話」的按鈕事件裡,對這個網址發一個 POST 請求,把整段對話紀錄當作 Body 傳過去,n8n 那邊就會自動被喚醒,開始跑後面的 Node。
這一步讓 Day 10 學的東西第一次真正有了具體的落點,不再只是紙上談兵的流程圖。