里程碑
我的 LINE 記帳+美食筆記小精靈|n8n × LINE × Gemini
123 @123發布於
我的 LINE 記帳+美食筆記小精靈|n8n × LINE × Gemini
用 LINE 傳一句「午餐 120」就能記帳,問一句「這個月飲食花多少」就能拿到統計,問「一蘭好吃嗎」就能查到自己以前怎麼評價這家店。
一、專案背景
我試過很多記帳 App,但每次都撐不過兩週。原因很簡單:記一筆要先打開 App、選分類、輸入金額,步驟太多,常常想說晚點再記,結果就忘了。
LINE 是我每天都會打開的 App,如果記帳就像傳訊息給朋友一樣,應該比較容易持續下去。所以我用 n8n 串接 LINE 和 AI,做了一個專屬於我的記帳小精靈。
二、想解決的問題
- 記帳太麻煩:希望用一句自然的話就能記帳,不用手動選分類。
- 記了不會看:希望直接在 LINE 問「這個月花多少」「這週比上週多花多少」就能得到答案。
- 吃過的店記不住:常常想不起來「那家拉麵好不好吃」。既然吃飯都會記帳,不如順便記下評價和店家,變成自己的美食筆記。
三、做法
使用工具
- n8n:串接所有服務的自動化流程
- LINE Messaging API:接收與回覆訊息
- Google Gemini(AI Agent):理解使用者想做什麼
- Google Sheets:當作資料庫,欄位為 date、category、item、amount、taste_rating、note
流程架構
LINE 訊息
→ Webhook(接收訊息)
→ AI 判斷意圖(Gemini + 對話記憶,輸出固定格式的 JSON)
→ 驗證AI輸出(檢查格式,不合格就改成回覆提示)
→ 依照意圖分流(Switch,共 8 條分支)
├ 記帳 → 寫入記帳表 → 檢查重複 → 回覆確認
├ 查詢 → 讀取資料 → 統計支出 → 回覆統計
├ 追問 → 直接回覆
├ 聊天 → 直接回覆
├ 刪除 → 讀取資料 → 找最後一筆 → 刪除 → 回覆刪了什麼
├ 美食清單 → 讀取資料 → 依店家整理 → 回覆清單
├ 修改 → 讀取資料 → 準備修改 → 更新最後一筆 → 回覆改了什麼
└ 店家查詢 → 讀取資料 → 整理這家店的紀錄 → 回覆每條分支最後的「回覆」,都是用 HTTP Request 節點呼叫 LINE 的 Reply API,把結果傳回聊天室。
幾個重要的設計
1. AI 只負責「理解」,計算交給程式
AI 很會理解「這個月飲食花多少」是什麼意思,但不擅長精準加總,還可能編出不存在的數字。所以我讓 AI 只輸出「要查哪個期間、哪個分類」,實際的篩選和加總都由 Code 節點計算,確保數字一定正確。
2. 每一則 AI 輸出都要經過檢查,而且出錯也要有回應
AI 偶爾會輸出格式錯誤的內容。我在 AI 後面加了一個驗證節點,檢查日期、金額、分類都合法後才會寫入試算表。檢查不通過時,不是讓流程默默中斷,而是回覆「抱歉,這則訊息我沒有處理成功(原因)」,讓我知道發生了什麼事。
3. 用對話記憶處理「補資訊」
加上 Simple Memory 後,傳「午餐」時小精靈會追問金額,接著回「25」就會合併成一筆「午餐 25」。
4. 會刪除或修改資料的動作,設計得保守一點
- 只有明確說「刪除上一筆」才會刪;只說「刪除」時會先確認。
- 正在追問金額時說「算了」,只會取消尚未完成的那一筆。
- 修改上一筆時,如果我說的品項和最後一筆對不上(例如最後一筆是牛排,我卻說「咖啡店是星巴克」),就不會修改。
5. 美食資料依「店家+地點」整理
同一家連鎖店的不同分店,口味可能不一樣。所以信義區的一蘭和沒記地點的一蘭會分開計算評價和次數,不會混在一起。
6. 重複時提醒,而不是直接擋掉
同一天記了兩次午餐,可能是記錯,也可能是真的吃了兩頓。所以小精靈會照常記帳,但在回覆中提醒「今天已經記過午餐」,讓我自己判斷要不要刪除。
7. 一次記多筆,但要嘛全記、要嘛都不記
「早餐 60 午餐 120 捷運 35」會拆成三筆。只要其中一筆缺金額,整批都先不寫入,追問補齊後再一起記,避免試算表裡出現只記了一半的資料。
四、成果
目前功能
| 類別 | 功能 | 說明 | 傳送範例 |
|---|---|---|---|
| 記帳 | 自然語言記帳 | 自動判斷日期與分類(飲食、交通、購物、娛樂、生活用品、其他) | 午餐 120/昨天晚餐 200 |
| 一次記多筆 | 一則訊息拆成多筆,任一筆缺資訊就整批先不記 | 早餐 60 午餐 120 捷運 35 | |
| 缺資訊追問 | 缺金額或品項時追問,補上後自動合併 | 午餐 → 25 | |
| 重複提醒 | 同一天第二次記同一餐,或完全相同的消費時提醒 | 午餐 120 → 午餐 180 | |
| 錯誤提示 | 日期不存在或格式有誤時說明原因,不會亂記 | 2/30 午餐 100 | |
| 查詢 | 支出查詢 | 今天、昨天、指定日期、本週、上週、本月、指定月份 | 這個月花多少/上週五花多少 |
| 依分類查詢 | 只看某一個分類,列出每一筆明細 | 這個月飲食花多少 | |
| 週比較 | 本週與上週比較,附日期範圍與分類差異 | 這週比上週多花多少 | |
| 美食筆記 | 評價與店家 | 自動拆出店家、地點和評價 | 信義區一蘭拉麵 180 很好吃 |
| 美食清單 | 依店家+地點整理 | 好吃清單/踩雷清單 | |
| 店家查詢 | 查某家店的評價、次數、點過什麼 | 我有去過咖哩大師嗎 | |
| 修正 | 刪除 | 刪除最後一筆並告訴你刪了什麼 | 刪除上一筆 |
| 修改 | 補上或修改上一筆的店家、地點、評價 | 牛排店是王品/上一筆改成好吃 |
示範對話
查詢、週比較、店家查詢和美食清單的畫面請見下方截圖,這裡補充幾個截圖沒有呈現的情境。
一次記多筆+重複提醒
我:晚餐 200
小精靈:已記帳:晚餐 200 元,分類:飲食
我:早餐 50 晚餐 200
小精靈:已記 2 筆,共 $250
・早餐 $50(飲食)
・晚餐 $200(飲食)
⚠️ 今天已經有一筆一模一樣的「晚餐 $200」
如果是記錯了,可以傳「刪除上一筆」
我:刪除上一筆
小精靈:🗑️ 已刪除上一筆:2026-10-24 晚餐 $200缺資訊時整批先不記
我:早餐 午餐 120 捷運 35
小精靈:午餐 120、捷運 35 收到了,請問早餐花了多少錢?
我:60
小精靈:已記 3 筆,共 $215
・早餐 $60(飲食)
・午餐 $120(飲食)
・捷運 $35(交通)追問中途取消(不會誤刪已經記好的資料)
我:午餐
小精靈:請補充這筆午餐的消費金額
我:刪除
小精靈:好的,已取消這筆記帳還不支援的功能會說明,而不是亂回答
我:10/1 到 10/15 花多少
小精靈:目前支援今天、昨天、指定日期、本週、上週、本週與上週比較、
本月及指定月份查詢,暫不支援自訂日期區間查詢。作品畫面
(附圖 1:n8n 完整流程)
(附圖 2:LINE 記帳與分類查詢)
(附圖 3:本週 vs 上週比較)
(附圖 4:店家查詢,同一家店不同分店分開列)
(附圖 5:好吃清單與踩雷清單)
(附圖 6:Google Sheets 資料)
0 個愛心0 則留言
登入並驗證手機後就能留言。登入