Auto Expense Tracker from LINE Messages with GPT-4 and Google Sheets

Go to Workflow
0 views
Built by Catalina Kuo Catalina Kuo
Created on June 07, 2026

Description


Overview
Do you often forget to record expenses?

你是不是會常常忘記紀錄花費?

Let Spending Tracker Bot help you!

讓 Spending Tracker Bot 來幫你!

This AI image/text Spending Tracker LINE Bot Workflow allows you to quickly create a customized spending tracker robot without writing a line of code. At any time, you can speak or send a photo, and the AI will parse it and automatically log the expense to your cloud ledger.

這套 AI 圖片文字記帳 LINE Bot Workflow ,讓你不用寫一行程式碼,就能快速打造一個量身訂製的記帳機器人。無論何時,只需要口述或發送一張照片,AI 就會幫你整理好自動計入雲端帳本

Preparation
① Enable the Google Sheets API in GCP and complete the OAuth setup
② Create the Google Sheet and populate the field names (Feel free to modify based on your own needs)
③ Configure the Webhook URL in the LINE Developers Console
④ OpenAI API Key

① 在 GCP 啟用 Google Sheets API,並完成 OAuth
② 建立並填好 Google Sheet 欄名 (按照自己的需求做更動)
③ 於 LINE Developers 控制台設定 Webhook URL
④ OpenAI API Key

Node Configurations

Webhook


Purpose: The URL is used to receive incoming requests from LINE.
Configuration: Paste this URL into the Webhook URL field in your LINE Developers Console.

用途: 要接收 Line 的 URL
設定: 將 URL 放到 Line Webhook URL

Switch based on Expense Type & Set/Https

Purpose: To distinguish whether the incoming message is text or an image.
Configuration: Use a Switch node to route the flow accordingly.

用途: 區分 text 或 image
設定: switch 分流

AI Agent

Purpose: To extract and organize the required fields.
Configuration: Chat Model & Structured Output Parser.

用途: 整理出需要的欄位
設定: Chat Model & Structured Output Parser

Create a deduplication field
Purpose: To prevent duplicate entries by creating a unique "for_deduplication" field.
Configuration: Join multiple field names using hyphens (-) as separators.

用途: 確保不會重複寫入,先創建一個"去重使用"欄位
設定: 用 - 連接多個欄位

Aggregrate & Merge_all

Purpose: To prevent duplicate entries in the data table.
Configuration: Read the Google sheet, extract the existing "for_deduplication" column into a dedupeList, and compare it against the newly generated "for_deduplication" value from the previous step.

用途: 防止重複寫入資料表
設定:讀取雲端表,將原本的"去重使用欄位"整理成dedupeList,與前一步整理好的"去重使用"欄位做比對

Response Switch

Purpose: To route data and send appropriate replies based on the content.
Configuration: Use the replyToken to respond after branching logic. Depending on the result, either write to the data table or return a message:
✅ Expense recorded successfully: <for_deduplication>
Irrelevant details or images will not be logged.
⚠️ This entry has already been logged and will not be duplicated.

用途: 資料分流,回應訊息
設定:使用 replyToken ,資料分流後,寫入資料表或回應訊息
✅ 記帳成功 : <去重使用欄位>
不相關明細或圖片,不會計入
⚠️ 此筆資料已記錄過,不會重複記帳

Step by step teaching notes
【Auto Expense Tracker from LINE Messages with GPT-4 and Google Sheets】

【AI 圖片文字記帳 Line Bot,自動記帳寫入 Google Sheet】

Nodes Used (5)

AI Agent
@n8n/n8n-nodes-langchain.agent
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured