{"repo":"kylinfish/mailquill","free":true,"listed":false,"github":"https://github.com/kylinfish/mailquill","clone":"git clone https://github.com/kylinfish/mailquill.git","description":"Local, rule-based Gmail finance archiving & reporting — your bank statements, quietly reconciled. 100% local, zero cloud.","language":"Python","stars":25,"topics":["dashboard","gmail","offline","pdf","personal-finance","privacy","rule-based","taiwan"],"license":"MIT","category":"media-processing","readme_excerpt":"把散落在 Gmail 裡的銀行／信用卡帳單，安靜地收攏成一本私密、離線的財務帳。 Mailquill 讀取你 Gmail 中的台灣銀行／信用卡財務信件（電子帳單、消費通知、收據），解密 PDF、用 純規則 解析成結構化交易、做兩層分類，寫入 CSV（唯一真實來源），再產生一份 自包含的離線 HTML 儀表板 ，讓你核對消費紀錄／金流／類別統計。 🔒 全本地處理 ：純 rule-based， 零 LLM、零雲端 ；Gmail 僅唯讀存取。你的帳單、金額、卡號從不離開這台電腦。 --- ✨ 特色 - 收件匣直接變帳本 — 依你在 Gmail 已分類的 Label 抓信，自動辨識銀行、解析明細。 - 解密加密 PDF — 用你本地的密碼清單（ passwords.txt ）自動嘗試解鎖電子帳單。 - 純規則、可稽核 — 每家銀行一支 parser，正則對版型；不猜、不呼叫任何模型，結果可複現。 - 兩層分類、隨你調 — 關鍵字 → (第一層, 第二層) ，大小寫／全半形不敏感；改完一鍵重分類。 - 離線互動儀表板 — 單一 HTML 檔，零外部資源；可依銀行／分類／月份篩選，支援深色主題、正負金額紅綠標示、未分類整理面板。 - 永不靜默丟資料 — 無對應 parser、PDF 解不開、金額解析失敗，都會列成清單讓你逐步補齊。 --- 📸 畫面預覽 總覽 ：淨消費／筆數／月均 + 月度趨勢；一鍵切換深色主題，分類／品類支援階層勾選（虛線＝部分選取）。 分類拆解 ：第一層占比圓餅 + 第二層品類 Top，長條／圓餅可切換。 負向表列 ：品類「排除」模式（紅色刪除線）＋跨銀行篩選。 --- 🚀 快速開始 完整的 Google Cloud OAuth 申請、設定檔與密碼清單步驟，請見 設定指南 · docs/SETUP.md 。 mailquill 與 python -m mailquill.cli 等價。 --- 🔁 一次抓信，之後只重建／重報表（不用一直重抓） Mailquill 的核心是 CSV 是唯一真實來源（single source of truth） ，SQLite 與 HTML 報表都只是它的衍生產物、隨時可丟可重建。這讓大多數日常操作 完全不需要再連 Gmail ： 你想做的事 指令 會不會連 Gmail？ --- --- --- 納入新到的帳單信 mailquill run ✅ 需要（只有這件事需要） 改了分類規則，想重新歸類 mailquill rebuild ❌ 只讀 CSV → 重新分類 → 重建 DB 換報表視角／樣式、重出儀表板 mailquill report ❌ 只讀 DB → 產生 HTML SQLite 不小心壞了／刪了 mailquill rebuild ❌ 由 CSV 完整重建 實務上 ：第一次 run 之後，你多半只會在調分類時跑 rebuild 、想看不同切面時跑 report 。抓信是最慢、最耗額度的一步——把它跟「分類／出表」解耦，就能反覆微調而不必重抓。 --- 🏦 支援的銀行 銀行 parser 代號 帳單來源 狀態 --- --- --- --- 國泰世華 Cathay cathay Gmail 附件 PDF ✅ 聯邦銀行 UBOT ubot Gmail 內文／附件 ✅ 台新 Taishin / Richart taishin Gmail 內文／附件 ✅ 玉山銀行 E.SUN esun Gmail 附件 PDF ✅ 永豐銀行 SinoPac sinopac Gmail 附件 PDF ✅ 富邦銀行","default_branch":null,"files":null,"tree":[],"storefront":"/r/kylinfish","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/kylinfish/mailquill/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}