電子報自動 Ingestion Pipeline
用途
每日從 Gmail 抓訂閱的電子報,轉成 Markdown stub 存入知識庫 inbox,並打「已處理」標籤防止重複 ingestion,讓多份電子報統一入庫不靠手動複製。
何時用
- 適合:訂閱 3 份以上電子報、想把電子報內容統一匯入知識庫(如 Obsidian / Notion / Git repo)、每天花時間手動複製整理的使用者。
- 不要用:只追單一電子報、或訂閱量少(每天 1-2 封),不需要 pipeline 架構,直接貼給 Claude 問就好;或者你的電子報是 HTML-heavy 格式(大量圖片、無純文字版本),解析品質會很差。
Prompt
請執行電子報每日 Ingestion Pipeline:
設定:
- Registry 檔案:{{registry.yaml 路徑}}(含 active sources:寄件者/slug/每幾天查一次)
- 去重記錄:{{ingested-threads.yaml 路徑}}(已處理 Gmail thread ID 集合)
- 輸出目錄:{{inbox 目錄路徑}}(每份電子報存成 {slug}-YYYY-MM-DD.md)
- 已處理 Gmail 標籤:{{已處理標籤名稱(如 newsletters/ingested)}}
步驟:
1. 讀取 registry.yaml,取出所有 active sources
- 根據每個 source 的「check_every_days」計算本次應查幾天前的新件
2. 讀取 ingested-threads.yaml,建立已處理 thread ID 集合(去重用)
3. 對每個 active source,執行 Gmail search_threads:
from:{{sender}} newer_than:{{N}}d
過濾已在去重集合裡的 thread(跳過不重複處理)
4. 對每個新 thread:
a. 擷取純文字內容(去除 HTML tag、unsubscribe footer)
b. 生成 Markdown stub:
- frontmatter:source / date / subject / status: raw
- body:電子報全文(繁中摘要可選)
c. 存到 {{inbox目錄}}/{{slug}}-YYYY-MM-DD.md
d. 把 thread ID 加入 ingested-threads.yaml
e. 用 Gmail MCP 對該 thread 打「已處理」標籤
5. 輸出執行摘要:
處理 X 個來源 / 新增 Y 封 / 跳過已處理 Z 封 / 失敗 W 封(列出原因)範例 / 變體
- 填好變數:registry.yaml 填各訂閱電子報(如 TLDR AI / Lenny's Newsletter / The Rundown AI);inbox 目錄填
assets/0-foundation/inbox/newsletters/;已處理標籤填newsletters/ingested。 - 變體(加摘要萃取):在步驟 4b 的 body 前加「先讓 AI 生成 3 句繁中摘要,存在 frontmatter 的 summary 欄位」,讓 stub 直接有摘要可用於晨報。
- 變體(只跑單一來源):在 prompt 開頭加「只處理 registry 中 slug = {{特定slug}} 的 source」,適合測試新來源的 ingestion 效果。
🎯 範例輸出(實測)
在 Claude Code 跑這句、把
{{變數}}填成「registry.yaml:assets/0-foundation/inbox/newsletters/registry.yaml;ingested-threads.yaml:assets/0-foundation/inbox/newsletters/.ingested-threads.yaml;inbox 目錄:assets/0-foundation/inbox/newsletters/;已處理標籤:newsletters/ingested」的結果:
點開看 AI 實際輸出
步驟 1 — 讀取 registry.yaml
載入 3 個 active sources:
- slug: tldr-ai, sender: dan@tldrnewsletter.com, check_every_days: 1
- slug: lennys-newsletter, sender: lenny@lennysnewsletter.com, check_every_days: 7
- slug: the-rundown, sender: newsletter@therundown.ai, check_every_days: 1步驟 2 — 去重集合
從 .ingested-threads.yaml 載入 47 個已處理 thread ID。
步驟 3 — Gmail 搜尋結果
tldr-ai:找到 2 個新 thread(1 個已在去重集合,跳過)→ 1 個新件lennys-newsletter:找到 0 個新 thread(本週已處理)the-rundown:找到 1 個新 thread → 1 個新件
步驟 4 — 生成 Markdown stub
assets/0-foundation/inbox/newsletters/tldr-ai-2026-06-04.md
---
source: tldr-ai
date: "2026-06-04"
subject: "TLDR AI 2026-06-04: OpenAI GPT-5 details leak"
status: raw
---
[電子報全文純文字版]同樣生成 the-rundown-2026-06-04.md。
步驟 5 — 執行摘要
處理 3 個來源 / 新增 2 封 / 跳過已處理 1 封 / 失敗 0 封
💡 實測心得:HTML-heavy 電子報(如有大量圖片的行銷信)解析後純文字很稀疏,建議在 registry.yaml 幫每個 source 標記 format: html_heavy,pipeline 就能選擇「只抓 subject + 前 200 字」的輕量模式,避免存進一堆無意義的 HTML 殘留。
延伸
簡單來說,這個 pipeline 的核心設計是「增量去重」——用 thread ID 作為去重主鍵,保證每封電子報只入庫一次,就算每天跑多次也不會重複。這比用日期去重更可靠,因為同一天可能有多封不同主題的信。
跑通之後,建議搭配「整合式每日晨報」的「步驟 4 研究摘要」——inbox 裡有新電子報 stub,晨報就能自動引用最新研究內容,形成完整的知識流入循環。