文章 / AI 自動化

n8n 發票自動化|AI 發票整理機器人完整教學

用 n8n 打造發票自動整理機器人!結合 AI 辨識發票、自動歸檔、產生報表,省下 90% 人工處理時間。

專業導讀

你有沒有遇過這種情況?月底一堆發票堆在信箱裡面,光是整理歸檔就花掉半天時間。我自己以前也是這樣,每個月花好幾個小時在做這種重複性超高的工作。後來我用 n8n 搭配 ChatGPT 打造了一套發票自動化系統,現在整個流程從收到 Email 到整理進試算表,全部自動跑完。

我在影片裡面直接 Demo 給大家看:「我們直接來 Demo,發票都會寄送到你的 Gmail 裡面,我們利用這一張 AWS 的 Invoice 發票來做一個示範。」整個流程跑完,從下載發票 PDF、用 ChatGPT 擷取內容、到寫入 Google 試算表,全部自動完成。就像我說的:「其實蠻方便的。」

這篇文章會帶你完整走過我的發票自動化方案,讓你也能省下大量人工處理時間。

你將學到

  • Gmail 篩選器與標籤的前處理設定方法
  • n8n Gmail Trigger 的觸發頻率與篩選條件設定
  • 附件自動下載到 Google Drive 的完整步驟
  • ChatGPT 解析發票內容並輸出標準 JSON 的 Prompt 設計
  • Google Sheets 發票清單的自動化記錄與管理
  • 我自己實測的結果和踩過的坑

什麼是 n8n 發票自動化?

n8n 發票自動化是透過 n8n 工作流引擎,結合 Gmail Trigger 自動偵測新發票郵件,將發票附件下載到 Google Drive 備份,再用 ChatGPT 解析發票內容並自動寫入 Google Sheets 試算表的完整自動化解決方案。 你只需要在 Gmail 設好篩選規則,系統就會自動幫你處理好一切。

很多人問我,為什麼不直接用現成的記帳軟體?重點來了,大部分記帳軟體的自動化功能其實很有限,而且每個月要付月費。用 n8n 自建的好處是:你可以完全客製化流程、串接任何你想要的服務,而且 n8n 社群版是免費的。

我在影片中用 AWS 的電子發票做示範,整個系統的核心流程很簡單:

  1. Gmail 觸發 – Gmail Trigger 偵測到新的電子發票郵件
  2. 確認資料 – 檢查郵件有沒有 ID,確認可以往下執行
  3. 下載備份 – 把發票 PDF 附件自動下載到 Google Drive
  4. 標記已讀 – 打上 n8n-done 標籤,避免重複處理
  5. AI 解析 – ChatGPT 擷取發票內容,輸出標準 JSON
  6. 寫入試算表 – 自動填入 Google Sheets 發票清單

就像我在影片裡面說的:「找發票的效率會提升好幾倍,以前找半天,現在只要幾分鐘就幫你完成了。」


為什麼需要發票自動化?

讓我帶你看一下手動處理跟自動化的差距有多大。我自己實測的結果是,光是省下來的時間就值得你花一個下午來建這套系統。

效率對比

指標 手動處理 n8n 自動化後 改善幅度
每月處理時間 4-6 小時 幾分鐘 省 95%+
資料輸入錯誤率 3-5% AI 自動提取 大幅降低
發票歸檔管理 散落各處 集中 Google Drive 統一管理
清單整理 手動輸入試算表 自動寫入 即時更新
重複處理風險 容易遺漏或重複 標籤防呆 每張只處理一次

這個很重要:我在流程中設計了兩道防呆機制。第一是把處理過的郵件標成已讀,第二是加上 n8n-done 標籤。就像我在影片裡說的:「n8n-done 是說我用 n8n 做完了,已讀是方便我看。這時候我們在檢視 Gmail 的時候,就會更有效率。」

三大自動化場景

場景一:個人工作室 / 自由接案者 每月發票量 20-50 張,主要是各種雲端服務的電子發票(像是 AWS、Google、各種 SaaS 工具)。用最基本的 Gmail Trigger + Google Drive + ChatGPT + Google Sheets 就能搞定。

場景二:中小企業財務部門 每月 100-500 張發票,來自不同供應商。我在影片裡有提到:「你也可以建立很多組的篩選器的條件,確保你的發票都歸類到 Invoice 正確的位置。」針對不同供應商設定不同的 Gmail 篩選器,全部統一管理。

場景三:跨國業務 如果你有來自不同國家的發票,ChatGPT 的 Prompt 可以設定不同的區域格式。我在影片中提到可以設定 UTF-8、繁體中文、年月日格式:「你要改成你要的地區,因為它會跟時區有關。」


Alex 的實戰觀察

我在建這套系統的時候,發現幾個很重要的眉角,這邊跟大家分享。

Gmail 篩選器的設定比你想像中重要。 我一開始在 Gmail 設篩選條件的時候,用了太寬鬆的關鍵字,結果抓到一堆不相關的郵件。後來我在影片裡示範了怎麼解決:「你會發現你的搜尋條件結果不夠精確,這樣的郵件也被包含進來,所以這時候我們要去細化你的篩選條件。」我的做法是在郵件主旨裡面加上 Invoice ID 這個關鍵字,這樣篩選出來的結果就精準多了。

Mime Type 的坑一定會踩到。 這是我在影片裡特別講的一個重點:「有時候 Gmail 會把他的 Mime Type 文件的格式標錯了,所以我們要進行檢查跟調整。」我在流程中加了一個 Change Mime Type 的步驟,確保下載的附件一定是 PDF 格式。如果你跳過這個步驟,後面 Extract From File 可能會讀不到正確的內容。

ChatGPT 的 Prompt Engineering 是整個系統的靈魂。 我在影片裡面說:「最重要最重要的是設定 ChatGPT 的提示,Prompt Engineering。」我的做法是告訴 ChatGPT「你是一個專業的電子發票整理助手」,然後明確定義輸出的 JSON 格式範本,包含發票編號、類型、日期、應付金額等欄位。加上這些條件限制之後,ChatGPT 輸出的結果就非常穩定。

老實說,這套系統的設計重點不是追求多複雜,而是確保每一步都穩穩的。 我用了兩個標籤(Invoice 和 n8n-done)加上已讀標記,就是為了避免重複處理。整個流程走完你在 Gmail 裡看一眼就知道哪些發票已經處理完、哪些還在排隊。


完整建置步驟

好,接下來我帶你一步一步把這套系統建起來。我會按照影片中的示範順序來講,你跟著抄就對了。

前置作業:Gmail 標籤與篩選器設定

在使用 n8n 之前,我們有前處理要做。就像我在影片裡說的:「需要先在 Gmail 裡面分類你的標籤跟一些自動化的設定。」

第一步:建立兩個 Gmail 標籤

  1. 001-invoice(電子發票)-- 用來標記所有發票類的郵件
  2. n8n-done – 用來標示 n8n 已經處理完成的郵件

第二步:設定 Gmail 篩選器

這一步很關鍵。我在影片裡用 AWS 發票做示範,搜尋條件是 Invoice ID:

  1. 在 Gmail 搜尋欄輸入你的篩選關鍵字(例如 Invoice ID)
  2. 確認搜尋結果只包含你要的發票郵件
  3. 如果結果不夠精確,就「去細化你的篩選條件」
  4. 點選「建立篩選器」
  5. 勾選「套用標籤」→ 選擇「001-invoice 電子發票」
  6. 勾選「也套用到符合條件的現有郵件」

我在影片裡面有個重要提醒:「不同來源的電子發票,比如說你的發票來自於不同的供應商或平台,比如說 Google、YouTube,你也可以建立很多組的篩選器的條件。」

第三步:確認篩選結果

到 Gmail 的設定 → 篩選器管理頁面,確認你的篩選器有正確套用。我自己就設了 AWS 發票過濾器、Google 收據過濾器等好幾組,根據需求來新增。

Step 0:Gmail Trigger – 自動觸發

當 Gmail 收到電子發票以後,我們用 n8n 的 Gmail Trigger 來自動觸發整個流程。

在 n8n 中設定 Gmail Trigger 節點,有三個關鍵設定:

  1. 觸發頻率:我設定每一個小時整點觸發。當然你也可以設定每分鐘,看你的需求。
  2. 篩選條件 – 郵件標籤:選擇「001-invoice 電子發票」這個 Label,確保只抓到發票類的郵件。
  3. 篩選條件 – 郵件狀態:必須是「未讀」的郵件,利用這個來辨別哪些還沒處理過。

設定好之後,觸發器會自動偵測符合條件的新郵件。我在影片裡也有提到:「它如果今天有附件,你就下載對應的電子發票 PDF。所以當你 Gmail 收到新的電子發票,符合這些條件的時候,n8n 就會開始自動處理。」

觸發之後,你可以在 n8n 的 Schema 面板看到郵件的 ID、標題、發送時間、寄件人等資訊,確認資料都正確讀取了。

記得設定好 Google OAuth 認證,不然 Gmail 節點會連不上。

Step 0.5:If Data Output – 確認有資料

這一步是安全檢查。我在影片裡解釋了這個節點的用途:「這個是確認如果他有郵件的 ID,這個 JSON ID,那他就往下走,代表我確認成功,可以執行。」

用一個 If 節點判斷 Gmail Trigger 有沒有回傳資料,有的話才繼續往下執行。這個小小的步驟可以避免空跑的情況。

Step 1:下載電子發票到 Google Drive

確認有資料之後,下一步就是把發票附件下載到 Google Drive。我在影片裡說:「方便統一管理電子的發票,不用每一次手動都要去整理你的郵件。」

1.1 確認附件類型(Change Mime Type)

這一步很多人會跳過,但我建議不要省略。我在影片裡特別提到:「有時候 Gmail 會把 Mime Type 文件的格式標錯了,所以我們要進行檢查跟調整。」

用一個 Code 節點做以下處理:

  • 檢查 File Extension 是不是 .pdf
  • 如果是 PDF,強制設定 Mime Type 為 application/pdf
  • 確保檔案類型一致,避免系統錯誤的讀取

1.2 上傳到 Google Drive

用 Google Drive 節點把發票上傳到指定資料夾。我在影片裡設定了三個參數:

  1. Input Binary Field:設定 attachment_0,對應到郵件的第一個附件
  2. File Name:使用電子郵件的標題作為檔案名稱(例如 AWS Web Services Invoice Available)
  3. Parent Folder:用 URL 指定 Google Drive 的存放位置(例如 n8n-Invoice 資料夾)

上傳完成後,記得到 Google Drive 刷新一下,確認檔案名稱和上傳時間跟發票郵件是對應的。像我在影片裡說的:「確保每一封的發票郵件都可以完整的下載跟備份,未來查詢的時候我們就來 Google Drive 查就比較方便。」

Step 1.5:標記已處理的郵件

發票上傳完之後,我們要做兩件事來避免重複處理:

第一件事:新增 n8n-done 標籤

用 Gmail 節點,利用郵件的 ID,把 n8n-done 標籤加上去。我在影片裡解釋:「n8n-done 是說我用 n8n 做完了。」

第二件事:把郵件標成已讀

一樣用 Gmail 節點,把郵件的狀態改成已讀。我說:「已讀是方便我看,每一個發票都只處理一次。」

這樣做的好處是,你在 Gmail 裡面一眼就能看出來:「都是灰的已讀,哪些是 n8n 有執行的,標的出來。」檢視郵件的時候就可以清楚哪些發票已經存檔、哪些還在處理。

Step 2:ChatGPT 解析發票內容

這一步是用 ChatGPT 來整理發票的內容,並且匯出資訊變成發票的清單。

2.1 Extract From File – 擷取 PDF 內容

先用 n8n 的 Extract From File 節點,把 PDF 轉成文字資料:

  • 選擇附件類型:From PDF
  • Input Binary Field:attachment_0
  • 輸出 JSON 格式的文字內容

我在影片裡說明:「我們會使用 Extract From File 的功能來處理 Gmail 下載的電子發票附件,把初步的發票號碼、金額、日期等關鍵訊息整理成系統可以讀的格式,再往 ChatGPT 送。」

2.2 ChatGPT 解析與格式化

接下來是整個系統最重要的環節。我在影片裡特別強調:「最重要最重要的是設定 ChatGPT 的提示,Prompt Engineering。」

OpenAI 節點的設定:

  • Operation: Message a Model
  • Model: GPT-4o-Mini(CP 值最高的選擇)
  • Role: System(系統角色)
  • Output: JSON 格式

我的 Prompt 設計重點:

你是一個專業的電子發票的整理助手,請協助我將任意的發票資訊轉換成統一的格式和標準的 JSON 檔案。

按照下面的範本來生成結果:
- invoice_id:發票編號
- invoice_type:發票類型
- invoice_date:發票日期
- amount_due:應付金額
- account_number:帳戶號碼

條件:
- 符合 JSON 標準
- UTF-8 編碼
- 繁體中文
- 日期格式:年/月/日

就像我在影片裡說的:「你就照著抄,抄功課就對了。」然後你要改成你需要的地區和格式,因為跟時區有關。

2.3 整理數據

ChatGPT 解析完成後,用一個 Code 節點把 JSON 資料整理乾淨,準備寫入 Google Sheets。我在影片裡說:「這裡其實就很簡單,是把剛剛 JSON 檔裡面的資料直接放進來,然後回傳這一整串資料比較清楚。」

Step 3:寫入 Google Sheets 發票清單

最後一步,把整理好的發票資料自動寫入 Google Sheets。

Google Sheets 試算表欄位結構:

欄位 說明 範例
電子發票編號 唯一識別碼 2035799125
發票類型 服務類型 AWS Web Services
日期 發票日期 2026/02/02
應付金額 含稅總金額 $3.10 USD
帳戶號碼 帳號資訊 XXXX-XXXX

Google Sheets 節點設定:

  • Operation: Append or Update Row(要嘛增加、要嘛更新)
  • Document URL: 用 URL 指定試算表位置
  • Sheet: 選擇「發票清單」分頁
  • Mapping Column Mode: 手動設定,把 JSON 欄位對應到試算表欄位
  • Matching Column: 用電子發票編號作為唯一的代碼

我在影片裡特別說明:「我們都認這個電子發票的編號作為唯一的代碼。」這樣每次有新的電子發票進來,系統都可以即時更新發票清單,不會重複新增同一張發票。


各方案比較

方案 成本 自動化程度 客製化程度 學習曲線 適合對象
n8n + ChatGPT 免費(社群版)+ API 費用 全自動 非常高 中等 想自建的技術愛好者
Zapier + OCR $20-50/月 半自動 中等 低 不想折騰的一般使用者
專業記帳軟體 $30-100/月 部分自動 低 低 有預算的企業
純手動處理 $0 完全手動 N/A N/A 發票量很少的人
Python 自建 $0 + API 費用 全自動 最高 高 工程師

我的觀察是,n8n 的優勢在於你可以完全按照自己的需求來客製化。就像我在影片裡示範的,你可以針對不同供應商(AWS、Google、YouTube)建立不同的篩選器,然後統一匯入同一個試算表。這是大部分現成軟體做不到的彈性。


重點整理

  1. 前置作業很重要:在 Gmail 建立正確的標籤(Invoice、n8n-done)和精確的篩選器,是整個自動化能穩定運行的基礎
  2. Gmail Trigger 的三個關鍵設定是觸發頻率、郵件標籤篩選、郵件未讀狀態,三者搭配才能精準抓到新發票
  3. Mime Type 一定要檢查,Gmail 有時候會把文件格式標錯,加一個 Change Mime Type 步驟可以避免後續出錯
  4. Google Drive 統一備份讓你未來查詢發票時有一個集中管理的地方,不用再翻 Email
  5. 雙重標記防呆:n8n-done 標籤加上已讀標記,確保每張發票只處理一次,不會重複
  6. ChatGPT Prompt Engineering 是靈魂:明確定義輸出的 JSON 格式和欄位範本,AI 輸出的結果才會穩定
  7. Google Sheets 用發票編號做唯一代碼,搭配 Append or Update Row 操作,實現自動新增和更新
  8. 免費模板直接用:下載 JSON 檔匯入 n8n 就可以跑,不用從零開始建

常見問題 FAQ

n8n 發票自動化的整個流程需要多少時間建置?

如果你跟著我的影片和這篇教學一步一步做,大概 1-2 小時就能完成基本版。 最花時間的部分其實是前置作業:設定 Gmail 標籤和篩選器。我在影片裡花了不少時間示範怎麼細化篩選條件,因為如果篩選不精確,後面所有步驟都會出問題。n8n 的工作流本身設定很直覺,照著抄就對了。建議先用一張發票測試整個流程,確認每一步都正常之後再開啟自動觸發。

ChatGPT 解析發票的費用大概多少?

使用 GPT-4o-Mini 模型,每張發票的 API 費用非常低,大約台幣 0.5-1 元。 我在影片裡選擇的就是 4o-Mini,因為對於發票這種結構化的文件,不需要用到最貴的模型就能有很好的效果。每月處理 100 張發票,API 費用大概在台幣 50-100 元之間,比起你花的人工時間真的便宜太多了。如果你想要更高的準確率,也可以換成 GPT-4o,費用會稍微高一點。

如果發票附件不是 PDF 格式怎麼辦?

我在影片裡特別處理了 Mime Type 的問題,因為 Gmail 有時候會把文件格式標錯。 如果你收到的是圖片格式(JPG/PNG)的發票掃描檔,需要額外加一個 OCR 辨識步驟。但對於大部分的電子發票來說,都是 PDF 格式,用 Extract From File 節點就能擷取內容。如果遇到 HTML 格式的 Email 內嵌發票,可以直接從郵件內文擷取,不需要額外處理附件。

怎麼處理來自不同供應商的發票?

重點在於 Gmail 篩選器的設定。 我在影片裡有示範:「不同來源的電子發票,比如說來自不同的供應商或平台,你也可以建立很多組的篩選器的條件,確保你的發票都歸類到 Invoice 正確的位置。」所以你可以同時設定 AWS 發票過濾器、Google 收據過濾器等好幾組,全部統一貼上 Invoice 標籤,n8n 就會一視同仁地處理。ChatGPT 的強項就是不管哪家的發票格式,它都能抓出關鍵資訊。

n8n 社群版免費嗎?功能夠用嗎?

社群版完全免費,而且對於發票自動化來說功能綽綽有餘。 Gmail Trigger、Google Drive、OpenAI、Google Sheets 這些節點在社群版全部都有,不需要付費版。唯一的限制是社群版需要自己部署(用 Docker 最方便),但這反而是優點,因為你的發票資料完全留在自己的伺服器上。如果你還沒安裝 n8n,可以參考我的 n8n 本地部署教學。

這套系統可以擴展嗎?

當然可以,這也是用 n8n 自建的最大優勢。 我在影片裡展示的是最基本的版本,你可以根據自己的需求加功能。比如說加上 Slack 通知(每次處理完發票就推播通知)、加上月度報表自動產生、或是串接你的會計系統。甚至可以加上異常金額警示,超過某個金額就自動提醒。先把基本版跑穩,再一步一步加功能,這是我最推薦的方式。


下一步行動

如果你看完這篇想動手試試,我建議你按這個順序來:

  1. 先用 Docker 把 n8n 裝起來
  2. 設定好 Gmail OAuth 認證(參考 Google OAuth 教學)
  3. 在 Gmail 建立 Invoice 和 n8n-done 兩個標籤
  4. 針對你最常收到的發票類型設定 Gmail 篩選器
  5. 按照本文的步驟建立 n8n 工作流
  6. 用一張發票測試整個流程,確認每一步都正常

就像我在影片最後說的:「免費的模板就直接提供在下面連結,你只要下載這個 JSON 檔匯入以後就可以用。」

先求大概懂,再開始用,最後才能做成功!

想學更多 n8n 自動化技巧? 加入我們的 Skool 社群,和其他自動化愛好者一起學習交流!


相關資源


✍️ 關於作者:Alex 是一位專注於 n8n 自動化和 AI 應用的技術教育者,透過 YouTube 頻道和 Skool 社群幫助超過數千位學員掌握自動化技能。

新文章與模板通知

延伸閱讀

不確定 AI 該從哪裡開始?

兩小時免費 AI 健檢:我們一起找出你公司最高 ROI 的切入點,帶走一份可執行的評估。