把 Obsidian vault 透過 Quartz 4 發佈成靜態網站的紀錄。發佈層與筆記本體分屬兩個 repo,本 vault 不含任何 Quartz 設定。
架構(分離雙 repo)
- 筆記本體:本 repo
obsidian-memory,只有Inbox/、Cards/、Topics/與 skills,無 Quartz 設定檔。 - 發佈層:獨立 repo obsidian-deploy,存放
quartz.config.ts、quartz.layout.ts、CI 與稽核腳本。 - 串接方式:發佈 repo 的 CI 用
actions/checkout把obsidian-memory整個 clone 進content/(獨立 checkout,非 submodule),Quartz 把content/當 vault 根目錄讀取。 - 發佈範圍:
ignorePatterns(定義在發佈 repo 的quartz.config.ts)排除.obsidian、整個Inbox/(含 YouTube 與 Clippings)、根目錄治理檔(CLAUDE.md、AGENTS.md、README.md、card-quality.md、vault-map.md、SYSTEM-DESIGN.md)與 CI checkout 後落在content/的工程檔;實際只發佈Cards/、Topics/與根index.md。完整清單以發佈 repo 的quartz.config.ts為準。 - 部署網址:bugloop.com(GitHub Pages + 自訂網域)。
部署流程
部署由發佈 repo(obsidian-deploy) 的 main 觸發,不是本 vault:
- 自動觸發:push 到 obsidian-deploy
main且異動到 Quartz 層檔案(quartz/**、quartz.config.ts、quartz.layout.ts、package.json/package-lock.json、deploy.yml)。 - 本 vault 筆記變動「不會」自動觸發:改了
obsidian-memory的筆記後,要到 obsidian-deploy 手動workflow_dispatch才會重新抓最新內容重建。 - CI(
deploy.yml)依序:checkout 兩 repo(deploy 自身 + vault 進content/)→ Node 22npm ci→npx quartz build產出public/→upload-pages-artifact→deploy-pages部署到 GitHub Pages。 - 完成後發 Discord 成功/失敗通知(webhook 走
secrets.DISCORD_WEBHOOK)。
重點設定
quartz.config.ts(在發佈 repo)關鍵值:
pageTitle: "Memory Pieces"
baseUrl: "bugloop.com"
locale: "zh-TW"
enableSPA: true
defaultDateType: "created" // 用 created 當顯示日期
// ignorePatterns 見上方「發佈範圍」,以發佈 repo 原始檔為準筆記格式
- 用 frontmatter
title當標題,不用# heading draft: true可隱藏未完成的筆記- Wikilinks 連筆記,Markdown link 連 tag 頁面和外部連結