Jun.

Articles are written in Traditional Chinese.

AI BLOG
2026-09-03Updated 2026-09-04Retrospective

JunObsNote 學習筆記自動發佈系統複盤

JunObsNote 學習筆記自動發佈系統複盤 封面

寫完的學習筆記躺在硬碟裡,沒人看得到,也沒辦法拿來證明自己做過什麼。

這個專案把個人筆記庫改造成一條全自動的發佈管線,讓筆記隨時能變成公開作品。這座筆記庫叫 JunObsNote,是我平常寫學習筆記跟專案複盤的地方,用 Obsidian 管理。

筆記本身有沒有寫完,跟我要不要讓外人看到,是兩件事

發佈只看「公開」欄位,另一個「成熟度」欄位(速記、進行中、完成、封存)只標示進度。還在摸索的筆記也能先公開;沒打開公開開關的內容,寫得再完整也不會外流。

note技術細節:欄位設計

frontmatter 裡有一個「對外定位」欄位,值填「作品」或「佐證」,這就是唯一的公開開關;成熟度另存一個獨立欄位。排程只挑同時「有打開對外定位」且「內容有變動」的筆記處理。

一支排程程式在背後把潤稿、體檢、建站、部署全部串起來

管線分兩段,本機每天掃過筆記庫,找出打開公開開關、有變動的筆記,交給 AI 潤成文章,跑過機械檢查後推送出去。雲端只負責建站與部署,不呼叫任何 AI,不需要持有任何金鑰。

graph LR
  A[筆記填上公開開關] --> B[本機排程 AI潤稿加體檢]
  B --> C[推送到程式庫]
  C --> D[雲端建站]
  D --> E[部署上線]
note技術細節:建站與部署選型

靜態網站框架用 Quartz 第4代而非最新的第5代,因為第5代改成外掛靠符號連結載入,在 Windows 本機建置會被權限擋下來;第4代自帶外掛,本機與雲端都穩定。部署選 Cloudflare Pages 而非 GitHub Pages,因為 GitHub 免費方案不支援私有程式庫直接發佈——這座筆記庫本身必須保持私有,公開的只有潤稿後的產出。雲端流程只需要兩把 Cloudflare 憑證。

換成本機工具生成文字,呼叫成本大降

潤稿呼叫本機登入的 AI 工具,吃既有訂閱額度,不需要 API 金鑰,呼叫費用大降。代價是排程能不能跑完要看工具有沒有登入,一旦過期整條線就停擺,這是換掉外部依賴時願意接受的取捨。

note技術細節:成本變化

換掉之前每次潤稿約消耗 3 萬 token 的呼叫成本,換成本機工具後降到約 300 token,因為吃的是已登入的訂閱額度而非按量計費的 API。

封面圖刻意留給人眼把關

封面圖走一支獨立程式,只呼叫圖片生成服務,跟文字生成分開,不共用金鑰。本機文字工具不會畫圖,封面因此獨立於管線之外:每張圖我都親眼看過,確認人物沒變形、沒冒出奇怪文字,才收進正式產出。這類失敗機械檢查抓不出來,只能靠人眼把關。

note技術細節:生圖成本

每張封面成本約 0.134 美元,選定生圖模型前先跑過幾組對照,確認人物一致性可接受才固定下來。

寫在指示裡的規則,實際上守不住

潤稿規則明文禁止某些用詞、要求控制篇幅、要求特定排版結構,但光靠文字指示,AI 不一定照做。有標準答案的規則,交給程式檢查比交給指示可靠。字數尤其明顯:AI 沒辦法邊寫邊精準計數,指示裡寫上限也常超標,因此改成寫完先量字數,超標才回頭壓縮,且限定只能砍敘述、不能動需要保留的區塊。

note技術細節:體檢抓到的實際問題

掃描舊文章發現:自稱誤用集體語氣、主線篇幅全數超出上限、部分程式碼區塊在潤稿過程中被悄悄改動或砍掉、還有指向未公開頁面的死連結,以及不該出現的裝飾符號。修法是寫完先自動量字數,超標才回頭壓縮,且限定只能砍敘述;篇幅上限依文章類型分三檔:面向完全外部讀者的作品類最短、主線上限 1200字,技術細節重的佐證類最寬鬆到 2500字。

忙到沒空寫心得的日子,交給機器自己去挖素材

手上同時推進多個專案,忙完一個段落常跳下一個,沒空整理成筆記。另外接了每日排程:機器掃過各專案版本紀錄當素材來源,找到有動靜的專案就寫成一篇好懂的短文,寫進筆記庫,交給同一條發佈管線處理。沒有素材的日子就不寫,不會硬擠一篇出來。

note技術細節:素材來源

每日排程讀取各專案的 git commit log 當作變動依據,只挑當天有實際提交的專案觸發撰寫。

管線穩定運作,代價是登入狀態跟封面一致性都要我盯著

管線每天穩定運作,我唯一介入的是封面把關、決定筆記公開。最大代價是文字生成依賴本機工具登入,過期就停擺,重新登入後補跑即可。另一個代價是視覺一致性:封面保留人工把關,新舊文章配圖風格有落差,這是接受的取捨。

相關

Back to AI BLOG