GitHub Actions + Notion API:自動把 dev 分支的 Commit 同步到 Notion

編譯摘要

GitHub Actions + Notion API:Commit 同步到 Notion — 編譯摘要

濃縮

核心結論

  1. 透過 [[GitHub Actions]] 監聽 dev 分支的 push 事件,用 curl 打 Notion API 即可實現 commit 紀錄自動同步,不需要第三方服務,設定約十分鐘。
  2. Notion Integration 建好後必須手動將資料庫 Share 給 Integration(給 Can edit 權限),否則 API 會回 403。這是最常被遺漏的步驟。
  3. commit message 中的特殊字元(引號、換行)需要 JSON 跳脫處理,否則 API 請求的 JSON 會壞掉。

關鍵證據

  • Workflow 僅需一個 step:用 curl + Python JSON 跳脫,直接呼叫 Notion API 建立 page。
  • Database ID 容易與 View ID(?v= 後面的值)搞混。
  • force push / rebase 會導致重複寫入,需額外用 Notion filter API 做去重。

質疑

依賴哪些前提假設?

  • 假設團隊使用 Notion 做專案管理。
  • 假設 commit message 品質足夠好,同步到 Notion 後有參考價值。
  • 假設 Notion API 的穩定性與速率限制不會造成問題(Notion API rate limit 為 3 req/s)。

換產業/規模/技術棧還成立嗎?

  • 相同概念可替換為其他工具組合:GitLab CI + Jira API、Bitbucket Pipelines + Linear API 等。
  • 大型團隊的 commit 量可能很大,每次 push 都寫 Notion 可能衝擊 API 限制。
  • monorepo 環境需要調整 REPO 變數的設計。

反例或邊界條件

  • squash merge 時,GitHub 的 head_commit 只有合併後的那一筆,原始的多筆 commit 會遺失。
  • 如果 Notion token 過期且沒有告警機制,同步會靜默失敗。

對標

其他領域的類似現象

  • 會計業的日記帳自動化:每筆交易自動記錄到帳冊,與 commit 自動同步到 Notion 同理。
  • 物流業的貨物追蹤:每個節點狀態自動更新到中央系統。

知識可遷移到哪些場景

  • 任何「事件驅動 → 寫入外部系統」的 [[Webhook 整合]]模式。
  • 部署紀錄同步、PR 狀態同步、issue 狀態同步等 DevOps 自動化場景。

關聯概念

  • [[GitHub Actions]]
  • [[Webhook 整合]]
  • [[Notion API]]
  • [[DevOps 自動化]]
  • [[事件驅動架構]]