n8n 發票自動化|AI 發票整理機器人完整教學
更新於 2026年2月11日
📥 工作流 JSON 下載:GitHub 範例庫 | 💬 社群討論:Skool 雲端方程式 Cloud F1
專業導讀
你有沒有遇過這種情況?月底一堆發票堆在信箱裡面,光是整理歸檔就花掉半天時間。我自己以前也是這樣,每個月花好幾個小時在做這種重複性超高的工作。後來我用 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 的電子發票做示範,整個系統的核心流程很簡單:
- Gmail 觸發 — Gmail Trigger 偵測到新的電子發票郵件
- 確認資料 — 檢查郵件有沒有 ID,確認可以往下執行
- 下載備份 — 把發票 PDF 附件自動下載到 Google Drive
- 標記已讀 — 打上 n8n-done 標籤,避免重複處理
- AI 解析 — ChatGPT 擷取發票內容,輸出標準 JSON
- 寫入試算表 — 自動填入 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 標籤
- 001-invoice(電子發票)— 用來標記所有發票類的郵件
- n8n-done — 用來標示 n8n 已經處理完成的郵件
第二步:設定 Gmail 篩選器
這一步很關鍵。我在影片裡用 AWS 發票做示範,搜尋條件是 Invoice ID:
- 在 Gmail 搜尋欄輸入你的篩選關鍵字(例如
Invoice ID) - 確認搜尋結果只包含你要的發票郵件
- 如果結果不夠精確,就「去細化你的篩選條件」
- 點選「建立篩選器」
- 勾選「套用標籤」→ 選擇「001-invoice 電子發票」
- 勾選「也套用到符合條件的現有郵件」
我在影片裡面有個重要提醒:「不同來源的電子發票,比如說你的發票來自於不同的供應商或平台,比如說 Google、YouTube,你也可以建立很多組的篩選器的條件。」
第三步:確認篩選結果
到 Gmail 的設定 → 篩選器管理頁面,確認你的篩選器有正確套用。我自己就設了 AWS 發票過濾器、Google 收據過濾器等好幾組,根據需求來新增。
Step 0:Gmail Trigger — 自動觸發
當 Gmail 收到電子發票以後,我們用 n8n 的 Gmail Trigger 來自動觸發整個流程。
在 n8n 中設定 Gmail Trigger 節點,有三個關鍵設定:
- 觸發頻率:我設定每一個小時整點觸發。當然你也可以設定每分鐘,看你的需求。
- 篩選條件 — 郵件標籤:選擇「001-invoice 電子發票」這個 Label,確保只抓到發票類的郵件。
- 篩選條件 — 郵件狀態:必須是「未讀」的郵件,利用這個來辨別哪些還沒處理過。
設定好之後,觸發器會自動偵測符合條件的新郵件。我在影片裡也有提到:「它如果今天有附件,你就下載對應的電子發票 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 節點把發票上傳到指定資料夾。我在影片裡設定了三個參數:
- Input Binary Field:設定
attachment_0,對應到郵件的第一個附件 - File Name:使用電子郵件的標題作為檔案名稱(例如
AWS Web Services Invoice Available) - 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)建立不同的篩選器,然後統一匯入同一個試算表。這是大部分現成軟體做不到的彈性。
重點整理
- 前置作業很重要:在 Gmail 建立正確的標籤(Invoice、n8n-done)和精確的篩選器,是整個自動化能穩定運行的基礎
- Gmail Trigger 的三個關鍵設定是觸發頻率、郵件標籤篩選、郵件未讀狀態,三者搭配才能精準抓到新發票
- Mime Type 一定要檢查,Gmail 有時候會把文件格式標錯,加一個 Change Mime Type 步驟可以避免後續出錯
- Google Drive 統一備份讓你未來查詢發票時有一個集中管理的地方,不用再翻 Email
- 雙重標記防呆:n8n-done 標籤加上已讀標記,確保每張發票只處理一次,不會重複
- ChatGPT Prompt Engineering 是靈魂:明確定義輸出的 JSON 格式和欄位範本,AI 輸出的結果才會穩定
- Google Sheets 用發票編號做唯一代碼,搭配 Append or Update Row 操作,實現自動新增和更新
- 免費模板直接用:下載 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 通知(每次處理完發票就推播通知)、加上月度報表自動產生、或是串接你的會計系統。甚至可以加上異常金額警示,超過某個金額就自動提醒。先把基本版跑穩,再一步一步加功能,這是我最推薦的方式。
下一步行動
🎓 想更有系統地學會這些技巧? 到 AI 職場工作術(雲端方程式 Cloud F1 旗艦課程) 看看完整的實作路徑。
如果你看完這篇想動手試試,我建議你按這個順序來:
- 先用 Docker 把 n8n 裝起來
- 設定好 Gmail OAuth 認證(參考 Google OAuth 教學)
- 在 Gmail 建立 Invoice 和 n8n-done 兩個標籤
- 針對你最常收到的發票類型設定 Gmail 篩選器
- 按照本文的步驟建立 n8n 工作流
- 用一張發票測試整個流程,確認每一步都正常
就像我在影片最後說的:「免費的模板就直接提供在下面連結,你只要下載這個 JSON 檔匯入以後就可以用。」
先求大概懂,再開始用,最後才能做成功!
想學更多 n8n 自動化技巧? 加入我們的 Skool 社群,和其他自動化愛好者一起學習交流!
相關資源
- n8n 零基礎完整教學 2026 — 從安裝到第一個工作流
- n8n 自動化完整指南 — 自動化策略與最佳實踐
- n8n HTTP Webhook 教學 — 進階 API 串接技巧
- n8n 功能完整指南 — 所有節點功能介紹
- n8n Google OAuth 設定 — Gmail 節點認證教學
- n8n 本地部署教學 — Docker 安裝與設定
- YouTube 完整教學:EP01 發票自動化
- n8n 官方文件:n8n Documentation
- OpenAI API 文件:GPT-4o Vision
✍️ 關於作者:Alex 是一位專注於 n8n 自動化和 AI 應用的技術教育者,透過 YouTube 頻道和 Skool 社群幫助超過數千位學員掌握自動化技能。