里程碑
雅力馬思內~ : 雅思備考小精靈( 內有惡臭,不喜勿入 )
慢羊羊 @slowsheep發布於
專案背景
雅思考試迫在眉( 惱 ),但我原本做的雅思小助手,不管輸入什麼內容,幾乎都只會回覆五個 Band 8 單字。雖然可以累積詞彙量,但用了一段時間後,我發現光背單字完全不夠,口說、寫作、練習安排和進度追蹤也都很重要。
因此,我決定把原本單純的「雅思單字小助手」重新設計成 「 雅力馬思內~ 」,希望它不只是回答問題,而是真的可以根據使用者的目標分數、考試日期和弱項,安排比較適合的練習內容。
長期目標是做出一套涵蓋聽、說、讀、寫的個人化學習計畫;第一版則先完成口說、寫作、單字複習、每日提醒及學習報告等核心功能。
想解決的問題
這次主要想改善三個問題。
第一,原本的機器人缺少明確的功能分類。不論使用者想聊天、練習或詢問問題,最後都很容易得到五個新單字,使用方式比較單一。
第二,機器人不知道使用者的學習目標。準備 Band 6.5 和 Band 8.0 的人,需要的題目難度和回饋方向其實不太一樣;距離考試一個月和半年,讀書安排也應該有所不同。
第三,原本的對話只有一次性的回答,沒有保存待完成的題目、練習紀錄和分數,因此很難形成「出題、作答、批改、再次複習」的完整學習流程。
製作方式
這個專案使用 n8n 串接 LINE Messaging API 和 Gemini AI,主要流程可以簡化成:
LINE 傳送訊息 → Webhook 接收 → 判斷使用者狀態 → AI 出題或批改 → 製作 Flex Message → HTTP Request 回覆 LINE
1. Webhook 接收 LINE 訊息
當使用者傳送文字或點擊 Flex Message 裡的按鈕時,LINE 會把事件送到 n8n 的 Webhook。
流程會先讀取使用者的 LINE user ID、文字內容、reply token,以及按鈕傳回來的 postback 資料,再判斷這次互動要進入哪一個功能。
2. 新手個人化設定
使用者第一次開啟小助手時,不會立刻收到題目,而是先完成簡單的學習設定,包括:
- IELTS 目標分數
- 預計考試日期
- 目前最想加強的科目
- 每日練習提醒時間
這些資料會影響之後的出題難度和回饋內容。
例如使用者設定目標為 Band 7.0、弱項為 Speaking,AI 在產生口說題目及建議時,就會以 7.0 的程度作為參考,而不是所有人都收到相同內容。
【可搭配畫面:目標分數、弱項與提醒時間設定】
3. 日期選擇功能
考試日期不是讓使用者自己輸入文字,而是使用 LINE Flex Message 的 datetimepicker action。
當使用者按下「選擇日期」後,LINE 會開啟原生日期選擇器。選完日期後,LINE 透過 postback event 將結果傳回 n8n,日期會出現在:
event.postback.params.date
n8n 再將這個日期存進使用者資料,之後就可以用來計算距離考試還有多少時間,並作為學習報告和練習安排的參考。
如果還沒決定考試日期,也可以按「尚未決定」,繼續完成後面的設定。
【可搭配畫面:考試日期選擇卡】
4. IF 節點的判斷邏輯
這次 workflow 裡比較重要的是 IF 節點。
前面的程式節點會先分析使用者目前的操作,產生一個 useAI 值:
useAI = true:需要 AI 產生新內容useAI = false:只需要顯示固定介面
IF 節點會根據這個值,把流程分成兩條路。
需要 AI 的功能,例如口說出題、回答批改、作文批改、產生單字或學習報告,會先顯示 LINE loading 動畫,再交給 AI Agent 處理。
不需要 AI 的功能,例如新手設定、主選單、設定頁面或「請貼上作文」的提示,則直接套用事先寫好的 Flex Message,不必浪費一次 AI 請求。
這樣做除了可以節省等待時間和 API 用量,也能讓按鈕與設定畫面保持固定,不會因為 AI 每次生成的結果不同而跑版。
5. AI Agent 與 Flex Message 分工
第一版沒有讓 AI 直接產生整份 Flex Message。
AI Agent 只負責輸出結構化內容,例如:
- 題目
- 主題
- 作答提示
- 預估分數
- 各項評語
- 改善方向
- 建議版本
接著再由 n8n 的 Code 節點,把這些內容放進固定的 Flex Message 模板。
這種做法比直接要求 AI 寫完整 LINE JSON 穩定,也比較容易統一配色、按鈕位置和版面風格。
最後再透過 HTTP Request 節點呼叫 LINE Reply API,把訊息傳回使用者。
第一版功能架構
個人化學習設定
第一次使用時,會依序詢問目標分數、考試日期、弱項與提醒時間。完成後會顯示個人化主選單,之後也可以從設定中重新調整。
【可搭配畫面:設定完成與主選單】
每日任務與定時提醒
使用者可以選擇每天早上 08:00、中午 12:00 或晚上 20:00 接收提醒,也可以先關閉提醒。
n8n 每個整點會檢查一次提醒名單,如果目前時間符合使用者設定,而且當天還沒有推送過,就會透過 LINE Push API 傳送每日題目。
為了避免使用者只是收到題目,之後傳一句普通訊息也被當成答案,系統只有在使用者按下「開始作答」後,才會正式進入等待批改的狀態。
IELTS 口說練習
使用者可以從主選單開始口說模擬。AI 會依照目標分數產生 IELTS Speaking 題目、作答提示,以及可以使用的單字或片語。
第一版先採文字回答。使用者送出答案後,AI 會從以下面向提供回饋:
- Fluency & Coherence
- Lexical Resource
- Grammar
因為目前收到的是文字,而不是錄音,所以不會假裝評估 Pronunciation。
批改結果會顯示非官方的預估 Band、各項表現、最需要改善的地方,以及一份修改後的建議答案。
【可搭配畫面:Speaking Part 2 題目、Band 6.5 回饋與建議版本】
Writing Task 2 批改
使用者點選「作文批改」後,可以直接貼上完整的 Task 2 作文。
AI 會依照 Task Response、Coherence & Cohesion、Lexical Resource 和 Grammatical Range & Accuracy 四個面向提供練習用評分與修改建議。
為了避免 Flex Message 太長,主要分數和重點會放在卡片中,較長的建議版本則另外使用文字訊息顯示。
單字學習與填空複習
單字功能不再每次對話都自動出現,而是變成主選單中的獨立功能。
AI 會依照使用者的目標分數與弱項產生五個較實用的 IELTS 單字或搭配詞,並附上中文解釋和例句。
學完後可以直接進入填空測驗。系統會保存最近的單字與測驗內容,在使用者作答後公布分數和錯題。
學習進度報告
每次完成口說、寫作或單字練習後,系統都會保存簡單的練習紀錄。
學習報告會整理目前的預估程度、本次亮點、優先改善項目,以及下一步建議,讓使用者不只是一直做題,也能知道自己目前卡在哪裡。
【可搭配畫面:學習進度、亮點與優先加強項目】
一般對話
如果使用者傳送的內容不屬於待批改答案,也不是特定功能指令,AI 會正常回覆並推薦適合的下一步。
這也解決了舊版「不管說什麼都回覆五個單字」的問題。
完成結果
第一版完成後,這個作品已經從單純的單字聊天機器人,變成具有設定、出題、作答、批改、提醒和進度回顧流程的 IELTS 學習小精靈。
我覺得這次最大的改變,不只是加入更多功能,而是開始思考「使用者現在正在做什麼」。透過 postback、狀態紀錄和 IF 節點,機器人可以知道使用者是在進行初次設定、等待題目、提交答案,還是單純想回到主選單。
製作過程中,我也發現 AI 很適合負責需要變化的內容,例如出題和回饋;但像選單、按鈕和訊息版面,還是交給固定模板處理比較穩定。
目前第一版以口說、寫作和單字複習為主,接下來希望加入錄音辨識、發音回饋,以及更完整的閱讀和聽力題型,讓它更接近一套真正涵蓋聽、說、讀、寫的個人化雅思備考工具。
0 個愛心0 則留言
登入並驗證手機後就能留言。登入