跳至主要內容

里程碑

雅力馬思內~ : 雅思備考小精靈( 內有惡臭,不喜勿入 )

慢羊羊 @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 則留言

登入並驗證手機後就能留言。登入