在 Day 5 我們成功抓取了 Database rows,並清理成乾淨的 JSON。
在 Day 6 我們更進一步,把 Page 與 Block 的內容展開,將學習筆記真正的知識(文字、程式碼、清單…)結構化儲存。
但是 —— 我們的 Notion 裡一定會有多個 Database、每個 Database 裡有很多 Page,而每個 Page 又有好幾個 Block,手動呼叫 API 很快就會遇到瓶頸。
因此,今天我們要設計一個自動化 Pipeline,把「Database → Page → Block → JSON」的流程完整串起來。
Pipeline 就像一條工廠輸送帶:原料經過一站一站加工,最後變成可用的產品。而在資料工程領域裡,Pipeline 代表一組自動化流程,用來收集、清理、轉換資料,並輸出到標準格式或資料庫。
在設計這個 Pipeline 時,需要考慮幾個關鍵要素:
.env
或設定檔載入 API Token 與基本參數。last_edited_time
判斷,避免重複處理。/databases/{id}/query
→ 取得所有 rows。/blocks/{page_id}/children
→ 拉出內容。Block
解析成統一 JSON
格式。metadata
(page_id、database_id、timestamp)。Page
輸出成結構化 JSON
:
{
"page_id": "xxx",
"title": "Python Variables",
"db_id": "yyy",
"last_edited_time": "2025-09-20T12:34:56Z",
"blocks": [
{"type": "heading_2", "text": "Python Variables"},
{"type": "paragraph", "text": "變數用來存資料..."},
{"type": "code", "language": "python", "text": "x = 5"}
]
}
data/clean/
,以 JSON
格式存檔。[Databases.yml]
│
▼
[Fetch Database rows] → [Fetch Page blocks] → [Parse blocks]
│ │
└───────────────[組合與清理]───────────────┘
│
▼
[輸出 JSON]
今天,我們設計了一條 Notion 自動化 Pipeline,把「Database → Page → Block → JSON」的流程概念化,並考慮了增量更新與資料清理。
在 Day 8,我們將正式實作這條 Pipeline:
Database
Page
與 Block
JSON
,存檔輸出