0. 架构总览
本方案实现了:私有库创作 → 自动化同步 → 公开站点部署。
-
物理隔离:工作库与私人库完全独立,互不干扰。
-
安全性:源文件保持
Private,仅通过 Quartz 渲染后的静态页面Public。 -
自动化:
git push即发布,无需手动干预。
架构图:
CRM_developer、_personal-note : 两个不同位置的笔记库
graph TD subgraph "Local Writing (Private)" A[CRM_developer] B[_personal-note] end subgraph "Automation (CI/CD)" A -- "Push Action" --> C{Quartz Repo} B -- "Push Action" --> C end subgraph "Global Deployment" C -- "Webhook" --> D[Cloudflare Pages + Acess] D -- "Render" --> E((Public Site)) end
1. 前置准备
-
GitHub PAT (Personal Access Token):
-
前往 GitHub Settings 生成一个 Token,需具备
repo权限。 -
在
CRM_developer和_personal-note的仓库设置中,添加该 Token 为 Secret,命名为PERSONAL_ACCESS_TOKEN。
-
-
部署仓库:
- 准备好已经配置好的 Quartz 4 仓库。
2. 核心同步脚本
在每个内容库(工作库/私人库)的 .github/workflows/ 下创建 sync-to-quartz.yml:
name: Sync Obsidian Vault to Quartz
on:
push:
branches:
- master # 当源仓库 master 分支有 push 时触发
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Checkout Obsidian Vault (源仓库)
uses: actions/checkout@v4
with:
repository: Yeh-Wang/CRM_developer #仓库位置
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} #更改为自己的secrets变量
ref: master #分支
- name: Copy notes to temp folder #虚拟环境执行操作
run: |
mkdir -p $GITHUB_WORKSPACE/vault-content
rsync -av --exclude 'vault-content' $GITHUB_WORKSPACE/ $GITHUB_WORKSPACE/vault-content/
- name: Checkout Quartz repo (目标仓库)
uses: actions/checkout@v4
with:
repository: Yeh-wang/deploy-vault
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
ref: v4
path: quartz
- name: Sync content to Quartz
run: |
rm -rf quartz/content/working-vault/*
cp -r vault-content/* quartz/content/working-vault/
cd quartz
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
git commit -m "Sync notes from CRM_developer"
git push origin v43. 关键细节优化 (避坑指南)
🔗
4. 部署至 Cloudflare Pages
-
在 Cloudflare Pages 后台连接你的
Quartz仓库。 -
构建命令:
npm install && npx quartz build(根据你的 Quartz 版本而定)。 -
构建输出目录:
public。 -
环境变量:确保 Node 版本大于 18.14。
Tip: 每次你在 Obsidian 中按下
Ctrl+S并git push,Cloudflare 都会在 2 分钟内自动更新你的全网数字花园。