里程碑
我的 NTU COOL 課業規劃提醒專屬小精靈
Yee Jun @_yeejunnnn發布於 已編輯
專案作品展示
結合 n8n 自動化工作流、AI Agent(LLM 模型調用)、LINE Messaging API 以及 iOS 原生捷徑自動化(Shortcuts Automation) 打造的個人化雙軌課業助理。這個系統兼具「主動推播未讀作業至 iPhone 提醒事項」與「在 LINE 即時對話式查詢作業並規劃讀書進度」兩大能力。
---
1. 專案背景與想解決的問題
背景
大學修課很多,課程的作業、專案報告、小考分散於NTU COOL 上。學生需要頻繁手動登入平台、點進各門課程查看截止日期和功課更改,我自己之前是把cool的日曆串接到apple calendar裏面,但是常常因爲沒看到功課發佈詳情或者因爲沒寫截止日期而漏掉功課。
想解決的問題
- 遺忘 Deadline:缺乏跨裝置的主動提醒機制,常常在截止前數小時才驚覺作業沒交。
- 手動排程繁瑣:每學期需要花時間手動把每科作業抄到行事曆或待辦清單中。
- 缺乏彈性互動:一般的單向日曆訂閱只會死板標註截止時間,每次開行事曆只有臨近時間才會關注到,無法隨時分析出「最近哪科最急?」
2. 系統架構與做法
我自己本身從來沒搭建過n8n但是上完課發現它很有趣,基本上是我把想法喂給AI然後它告訴我有什麽方法可以實現讓我選擇。
這次的專案採用 「雙向整合架構」,拆分為兩大自動化流程:
| 模組 | 使用技術 / 節點 | 功能說明 |
|---|---|---|
| 主工作流(LINE AI Agent) | Webhook、AI Agent、Chat Model、Call Workflow (Tool)、HTTP Request | 監聽 LINE Webhook 訊息,交由 AI Agent 判斷語意;若需課業資料則動態呼叫子流程 Tool,並將自然語言回覆發布至 LINE Messaging API。 |
| 子工作流(資料中台 - 小專案) | Execute Workflow Trigger、HTTP Request (iCal)、Parse iCal Events、Filter Items、Stop and Return | 解析 NTU COOL 行事曆 iCal 來源,提供即時作業數據。具備雙分支設計,同時支援 AI Agent 查詢與 iOS 捷徑推播比對。 |
| 主動推播終端 | iOS 捷徑自動化(Automation) | 手機每日定時(10:00、12:00 等)自動呼叫 Webhook,擷取新作業並提前 4 天自動加入 iPhone「提醒事項」App,並回傳 Ack 防重複寫入。 |
| 即時互動終端 | LINE 官方帳號(Bot) | 隨時用口語發問(如「最靠近的功課是什麼?」),小精靈即時回答並規劃時間區間。 |
3. 實作過程中遇到的問題與解決方案
問題 1:子流程作為 AI Tool 調用時報錯 Missing node to start execution
- 原因:原本的「小專案」子流程使用 Webhook 觸發(專供 iOS 捷徑使用)。在 n8n 中,若子工作流程要被另一個工作流程(AI Agent)當作 Tool 呼叫,必須具備專屬觸發節點。這是我原本不具備的基礎知識。
- 解決方案:在子流程畫布前端新增
When Executed by Another Workflow(Execute Workflow Trigger)節點,連入資料抓取節點並儲存發布,這樣主流程的 AI Agent 就能夠順利喚起該子流程。
問題 2:LINE 回覆節點頻繁出現 Not valid JSON 與 Bad request
- 原因:
- AI 生成多行課業回覆時帶有換行符號(
\n)與雙引號,若在 JSON 字串中直接拼接插值變數("text": "{{ $json.output }}"),換行會直接破壞 JSON 語法結構。 - HTTP Request 節點的
Headers缺少Content-Type: application/json或Authorization: Bearer <Token>。
- 解決方案:
- 在 HTTP Request 節點中規範標準 JSON,針對輸出文字採用
{{ JSON.stringify($json.output) }}確保換行與特殊字符被正確跳脫。 - 完整補齊 LINE Messaging API 的認證標頭,確保 Token 格式具備
Bearer前綴。
問題 3:AI 查詢結果不準確(部分作業憑空消失)
- 原因:子流程原本包含了「已發送比對(Filter New Items)」邏輯,凡是被 iOS 捷徑推播過的作業都會被濾除,導致 AI Agent 拿到的是空資料或殘缺清單。
- 解決方案:採用 雙路輸出分支。將 iOS 捷徑的比對過濾路徑保留;同時從
Parse iCal Events另外拉出分支連接至Stop and Return節點回傳完整數據,既不破壞原有 iOS 捷徑功能,又確保 AI 隨時享有最新完整的課業總表。爲了方便確認也順手讓它吧 NTU COOL 作業完整網址附上。
問題 4:LINE 介面排版混亂(Markdown 未渲染)
- 原因:LINE 聊天室不支援標準 Markdown 表格(
|---|)、粗體(**)以及超連結遮罩語法([文字](連結)),造成訊息跳出大量原始碼符號我自己看起來會很亂不整齊。 - 解決方案:重構 AI Agent 的 System Message,明定 LINE 輸出排版規則:禁止使用 Markdown 表格與星號,改以「換行、引號「」、適當 Emoji(📌、⏰、💡)」分段條列,並注入當前基準日期
{{ $now.format('yyyy-MM-dd HH:mm') }},讓時間計算與視覺呈現一致精確。
4. 專案產出與成果示範
作品畫面展示
圖 1:子流程(小專案)架構)
・包含 When Executed by Another Workflow 觸發點
・Parse iCal Events 進行日曆解析
・兼容 iOS Shortcut Request 與 AI 呼叫雙路徑
圖 2:主流程(LINE AI Agent)
・由 Webhook 接收 LINE 訊息,傳給 AI Agent(MiniMax)運算,最後透過 HTTP Request 送出 LINE 回覆
・掛載 Call 小專案 作為 Tool 工具節點
圖 3 、4與圖 5:iOS 捷徑自動化推播
・設定多個每日定時觸發點
・取得 NTU COOL 待辦事項並自動將時間倒扣 4 天
・自動寫入 iPhone 原生提醒事項
圖 6:LINE 聊天室實際對話成果
・自動鎖定最緊急的作業(例如邏輯電路 HW1)
・條列後續考試與作業時間軸
・拆解衝刺讀書計畫
實際使用示範
當使用者在 LINE 詢問:
「最靠近的一個功課是什麼?」
LINE AI 小精靈即時回覆:
- 即時鎖定最近死線:精確點出「HW1 — 邏輯電路(截止時間:10/16 17:30)」並直接附帶 NTU COOL 作業完整網址。
- 統整後續行程清單:列出線上學術英語、工程數學、資料結構、電磁學等各科作業的截止時間。
- 讀書計畫拆解與心理支持:依緊急程度規劃衝刺時間軸(如先衝刺 HW1,再複習英語小考),給予正向鼓勵。
該去趕功課了我們要期中了 Q..Q
3 個愛心1 則留言
登入並驗證手機後就能留言。登入