跳至主要內容

里程碑

我的 LINE 記帳+美食筆記小精靈|n8n × LINE × Gemini

123 @123發布於

我的 LINE 記帳+美食筆記小精靈|n8n × LINE × Gemini

用 LINE 傳一句「午餐 120」就能記帳,問一句「這個月飲食花多少」就能拿到統計,問「一蘭好吃嗎」就能查到自己以前怎麼評價這家店。


一、專案背景

我試過很多記帳 App,但每次都撐不過兩週。原因很簡單:記一筆要先打開 App、選分類、輸入金額,步驟太多,常常想說晚點再記,結果就忘了。

LINE 是我每天都會打開的 App,如果記帳就像傳訊息給朋友一樣,應該比較容易持續下去。所以我用 n8n 串接 LINE 和 AI,做了一個專屬於我的記帳小精靈。

二、想解決的問題

  1. 記帳太麻煩:希望用一句自然的話就能記帳,不用手動選分類。
  2. 記了不會看:希望直接在 LINE 問「這個月花多少」「這週比上週多花多少」就能得到答案。
  3. 吃過的店記不住:常常想不起來「那家拉麵好不好吃」。既然吃飯都會記帳,不如順便記下評價和店家,變成自己的美食筆記。

三、做法

使用工具

  • 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 則留言

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