里程碑
用口語化記住deadline,LINE × Google 日曆雙向同步的 AI 助理
欸比 @abby.liao發布於 已編輯
🧚 作品簡介
三小喵是一個住在 LINE 裡的 AI 助理。想到什麼期限就丟一句話,它會自動整理成 Google 日曆行程;在日曆新增的行程,它也會同步通知你。作業截止前、考試前一天,LINE 和日曆都會提醒。
📌 為什麼做這個
我是中原資管+應外雙主修的大三學生,每週同時有好幾份作業、報告和小考。期限散落在課堂口頭宣布、Moodle 和各個群組訊息裡,每次都要翻好幾個地方才知道「這週到底要交什麼」。
我想要一個不用打開任何 App、不用填表格的方式:想到就丟一句話,剩下的交給 AI 整理。LINE 是我每天都會打開的地方,所以我讓 AI 小精靈住在 LINE 裡。
✨ 它能做什麼
- 一句話記期限:傳「英文 期中報告 下週三晚上十點前交」,AI 自動判斷科目、類型、日期與時間,寫進 Google 日曆
- 不確定就追問:傳「英文 小考」,它會追問日期和時間,不會亂猜
- 圖文選單快速查詢:點「這週待辦」「明天要交」「近期考試」「快到期了」「這個月」,依時間排序列出,3 天內到期的加上 ⚠️
- 修改、刪除、完成:「改成晚上八點前」「把會議刪掉」「微積分考完了」,直接修改日曆上原本那一筆,完成的加上 ✅
- 雙向同步:直接在 Google 日曆新增行程,小精靈偵測到後會推播 LINE 通知
- 自動分色:考試標紅色、作業和報告標藍色,日曆一眼看懂輕重
- 雙重提醒:作業截止前 3 小時、10 分鐘提醒,考試前一天提醒,日曆通知與 LINE 推播同步送出
🛠 怎麼做的
架構:LINE ↔ n8n ↔ Google 日曆
- LINE → 日曆:LINE Webhook 收到訊息後,先送出「輸入中」動畫,再交給 AI Agent(Gemini 3.5 Flash Lite)。AI Agent 帶有對話記憶,以及新增、查詢、修改、刪除、標記完成 5 個 Google 日曆工具,處理完再用 HTTP Request 回覆 LINE
- 日曆 → LINE:Google Calendar Trigger 每分鐘偵測日曆變動,過濾掉小精靈自己建立的行程避免重複通知,再推播到 LINE
- 定時提醒:Schedule Trigger 每 5 分鐘檢查接下來的行程,時間到就推播提醒
- 資料存放:直接把 Google 日曆當資料庫,不另外建表,手機和電腦的日曆 App 都看得到,也不會有兩份資料不同步的問題
- 介面:設計 6 格圖文選單與小精靈頭貼,常用查詢點一下就完成
實作過程中,我也搭配 Claude 協助除錯、排查設定問題,以及設計圖文選單素材,體驗了「人負責定義需求、AI 協助實作」的協作方式。
🧠 我為 AI 設計的 System Prompt
小精靈的「腦袋」是 n8n 的 AI Agent,搭配 5 個 Google 日曆工具(新增、查詢、修改、刪除、標記完成)。我在 System Prompt 裡定義了三類規則:
- 時間規則:把「下週五」「晚上十點前」換算成實際日期與時間;作業沒說時間才預設 23:59,考試沒說時間一定先追問
- 工具使用規則:明確規定什麼情況用哪個工具,例如「改時間」一定要找到原本那筆來修改,不能另外新增
- 回覆規則:繁體中文、8 行以內、不用 Markdown(LINE 不支援),3 天內到期加 ⚠️
其中最關鍵的是時間規則和修改規則,這兩段都是實測踩坑後才補上的(完整版見附件 7SystemPrompt.md)。
節錄:作業/報告:start 與 end 都等於截止時間。沒說時間才預設 23:59。考試:start = 考試開始時間,end = start + 2 小時;沒說時間先追問。修改既有行程 → 先 get_events 找到該行程的 id,再呼叫 update_event 修改原本那筆。絕對不要另外新增一筆。刪除或取消行程 → 先 get_events 找 id,再呼叫 delete_event。若有多筆可能符合,先列出請使用者選。
🧗 過程中遇到的問題
- n8n Cloud 試用期到期:改在自己的電腦架設 n8n,並用 cloudflared 建立對外通道,讓 LINE 和 Google 能把資料送進來。缺點是電腦休眠或斷網時,通道網址會改變,需要重新設定 Webhook
- Google 日曆授權卡關:自架 n8n 需要自己到 Google Cloud 建立 OAuth 憑證,過程中遇到「帳號必須開啟兩步驟驗證」「測試使用者沒存到」「回呼網址與登入網址不一致」三個問題,逐一排除後才授權成功
- AI 模型被淘汰:原本用的 Gemini 2.5 Flash 已不開放給新金鑰使用,換新模型後又遇到伺服器塞車(503 錯誤),最後加上自動重試,並改用更快的 Flash Lite,回覆時間從約 24 秒縮短到約 7 秒
- AI 理解時間的偏差:說「晚上十點前交」被記成 23:59,要求改時間卻變成另外新增一筆。後來在提示詞中寫清楚時間規則,並補上「修改」「刪除」兩個工具才解決
💭 心得
「做出來」不難,「讓它一直活著」才難
一開始我以為最難的是 n8n 節點怎麼串。真正做下去才發現,最卡的是怎麼讓電腦後端一直保持開著。n8n Cloud 試用期一到,整個機器人就停了;改成自己架設後,隔天早上一打開,通道又失效了:電腦休眠、熱點斷線,網址就換了一個,LINE 的訊息全部送不進來。
那一刻我才真正理解,一個服務能「穩定上線」,背後要考慮的遠比功能本身多:主機要不要一直開、網址會不會變、模型會不會被淘汰、伺服器塞車時要不要重試。這些在課本裡只是一行字,自己遇到才知道每一個都會讓產品直接停擺。
當我開始用它,需求就自己長出來了
第一次在 LINE 收到小精靈的回覆、看到日曆自動跳出行程時,真的超爽!但這份開心只維持了幾分鐘,我馬上開始挑毛病:
- 考試和作業都是藍色,一眼分不出輕重 → 考試要變紅色
- 想刪掉一筆行程,它卻把標題改成「✅ 刪除行程」→ 刪除就要真的消失
- 只有日曆會提醒,但我最常看的是 LINE → 作業截止前 3 小時、10 分鐘都要推播,考試前一天也要
這是我第一次以「使用者」的身分對自己做的產品提需求,也讓我體會到:好的需求不是坐在桌前想出來的,而是真的用了、卡住了,才知道缺什麼。
最好玩的部分:把模糊的話翻譯成規則
對人來說,「晚上十點前交」再直覺不過,但對 AI 來說,每一個「理所當然」都要寫成明確的規則:說了時間就照說的時間,沒說才用預設值;作業的行程要標在截止時間點上,提醒才算得準;「改成…」要找到原本那筆來修改,不能重新建立。
我發現,AI Agent 的品質取決於規則寫得多清楚、給它的工具夠不夠。定義需求,再把它轉譯成電腦能執行的規則,是整個過程中最有挑戰、也最好玩的部分,這也正是我想往 PM × 資料分析 × AI 發展的原因:站在使用者和技術之間,把「想要什麼」翻譯成「怎麼做到」。
和 AI 協作的分工
這次 Claude 協助我排查錯誤、讀執行紀錄找出問題,也幫忙設計圖文選單和頭貼;我負責決定要做什麼:要解決什麼問題、哪個規則不對、下一個功能是什麼。當 AI 能處理越來越多「怎麼做」,人的價值就越來越集中在「做什麼、為什麼做、做得好不好」。技術上,我對 n8n 熟悉了很多:從 Webhook、AI Agent 的工具設定,到排程觸發、錯誤重試,每個節點都是實際踩過坑才真正搞懂。
🚀 未來想加的功能
- 轉傳課程群組公告,自動抓出期限
- 期中、期末考範圍與課堂筆記紀錄
- 改用固定網址通道或雲端主機,讓三小喵 24 小時穩定上線
1 個愛心0 則留言
登入並驗證手機後就能留言。登入