本文记录我如何搭建一套完整的知识管理系统:用 Obsidian 写笔记、用 Quartz 发布博客、用 NotebookLM 构建 AI 知识库。
🎯 解决什么问题
在搭建这套系统之前,我面临这些困境:
| 问题 | 痛点 |
|---|---|
| 笔记碎片化 | 想法散落在各处,无法形成体系 |
| 没有输出平台 | 学了很多但没地方展示 |
| 公私混杂 | 不知道哪些该公开、哪些该保密 |
| 复习低效 | 笔记写完就忘,没有「活」起来! |
目标:建立一套「收集 → 整理 → 输出 → 复习」的闭环系统。

🧰 工具栈一览
| 工具 | 角色 | 为什么选它 |
|---|---|---|
| Obsidian | 本地笔记编辑器 | Markdown、双向链接、插件生态 |
| Quartz | 静态博客生成器 | 原生支持 Obsidian 语法、图谱、反向链接 |
| GitHub | 代码托管 | 版本控制 + 自动部署触发 |
| Cloudflare Pages | 网站托管 | 免费、全球 CDN、自动 HTTPS |
| NotebookLM | AI 知识库 | 基于你的笔记回答问题 |
📐 整体架构
┌─────────────────────────────────────────────────────────────┐
│ Obsidian │
│ ┌───────────────────┐ ┌───────────────────────────────┐ │
│ │ Rain-notes │ │ Rain-notes-site/content │ │
│ │ (私有仓库) │───▶│ (公开仓库) │ │
│ │ 草稿/日记/收集 │复制 │ 发布用内容 │ │
│ └───────────────────┘ └───────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ git push
▼
┌─────────────────────────────────────────────────────────────┐
│ GitHub │
│ Rain-notes-site 仓库 │
└─────────────────────────────────────────────────────────────┘
│
│ Webhook 触发
▼
┌─────────────────────────────────────────────────────────────┐
│ Cloudflare Pages │
│ 自动构建 → 部署到全球 CDN │
│ https://你的域名.com │
└─────────────────────────────────────────────────────────────┘
🚀 Step 1:创建 GitHub 仓库
1.1 创建两个仓库
| 仓库名 | 可见性 | 用途 |
|---|---|---|
Rain-notes | Private | 所有私人笔记、草稿、日记 |
Rain-notes-site | Public | 博客源码 + 公开内容 |
1.2 克隆到本地
# 克隆公开仓库(博客)
git clone https://github.com/你的用户名/Rain-notes-site.git
# 克隆私有仓库(笔记)
git clone https://github.com/你的用户名/Rain-notes.git🌿 Step 2:部署 Quartz
2.1 初始化 Quartz
cd Rain-notes-site
# 使用 Quartz 模板(如果是新项目)
git clone https://github.com/jackyzha0/quartz.git .
npm install2.2 本地预览
npx quartz build --serve打开 http://localhost:8080 查看效果。
2.3 配置 quartz.config.ts
关键配置项:
const config: QuartzConfig = {
configuration: {
pageTitle: "Rain's Digital Garden", // 网站标题
enableSPA: true, // 单页应用模式
enablePopovers: true, // 悬浮预览
locale: "zh-CN", // 语言
baseUrl: "你的域名.com", // 部署域名
// ...
},
}为什么选 Quartz 而不是 Hugo?
Quartz 专为 Obsidian 用户设计,开箱即用:
- ✅ 原生支持
[[wikilink]]语法- ✅ 自动生成反向链接(Backlinks)
- ✅ 内置知识图谱(Graph View)
- ✅ 全文搜索
- ✅ 暗色模式
Hugo 需要额外写脚本转换 Obsidian 语法,维护成本高。
📝 Step 3:配置 Obsidian
3.1 打开两个仓库
在 Obsidian 中分别打开:
- Rain-notes(私有):日常笔记、草稿、收集
- Rain-notes-site/content(公开):准备发布的内容
3.2 推荐的目录结构
私有仓库(Rain-notes):
Rain-notes/
├── 0-Inbox/ # 快速收集
├── 1-工作/
├── 2-生活/
├── 3-学习/
├── 4-Archives/ # 归档
├── Daily/ # 每日笔记
├── Publish/ # 待发布(同步到公开仓库)
└── Templates/ # 模板
公开仓库(Rain-notes-site/content):
content/
├── index.md # 首页
├── start-here.md # 入口
├── about.md # 关于我
├── now.md # 近况
├── posts/ # 文章
│ ├── til/ # 今日所学
│ └── articles/ # 长文
├── notes/ # 笔记
├── projects/ # 项目
└── paths/ # 学习路径
3.3 推荐插件
| 插件 | 用途 |
|---|---|
| Templater | 模板系统 |
| Calendar | 日历视图 |
| Periodic Notes | 周期笔记 |
| Dataview | 数据查询 |
| Obsidian Git | Git 同步 |
📤 Step 4:发布流程
4.1 日常写作流程
1. 在 Rain-notes 中写笔记
↓
2. 笔记成熟后,复制到 Publish/ 文件夹
↓
3. 同步 Publish/ 到 Rain-notes-site/content/
↓
4. git add → git commit → git push
↓
5. Cloudflare Pages 自动部署
4.2 同步脚本(可选)
创建 sync.sh 简化同步:
#!/bin/bash
# 同步 Publish 目录到博客
rsync -av --delete \
~/Rain-notes/Publish/ \
~/Rain-notes-site/content/posts/
# 提交并推送
cd ~/Rain-notes-site
git add .
git commit -m "Update: $(date '+%Y-%m-%d %H:%M')"
git push☁️ Step 5:Cloudflare Pages 部署
5.1 连接 GitHub
- 登录 Cloudflare Dashboard
- 进入 Pages → Create a project
- 选择 Connect to Git → 授权 GitHub
- 选择
Rain-notes-site仓库
5.2 构建配置
| 配置项 | 值 |
|---|---|
| Framework preset | None |
| Build command | npx quartz build |
| Build output directory | public |
| Root directory | / |
如果需要完整的 Git 历史(显示文章日期)
Build command 改为:
git fetch --unshallow && npx quartz build
5.3 绑定自定义域名
- 在 Pages 项目设置中添加 Custom domain
- 按提示在 DNS 添加 CNAME 记录
- 等待 SSL 证书自动签发
🤖 Step 6:NotebookLM 知识库
6.1 导入笔记
- 打开 NotebookLM
- 创建新 Notebook
- 上传你的 Markdown 文件(或 PDF)
6.2 使用场景
- 复习:让 AI 根据你的笔记出题
- 查询:问「我之前写过关于 MQTT 的内容吗?」
- 总结:让 AI 生成某个主题的摘要
6.3每个 notebook 只干一件事
-
P-*:用来做“项目评审、查漏补缺、生成文档骨架”
-
T-*:用来做“学习指南、自测题、易错点清单”
-
W-*:用来做“把你写的东西变成可读文章 + 英文摘要”
6.4 NotebookLM 输出落到 Quartz 哪儿?
-
学习指南/自测题/概念图 → 放到 paths/ 或 notes/
-
文档骨架/架构说明 → 放到 projects/
/ -
文章结构优化/英文润色 → 放到 posts/articles/ 或 posts/til/
✅ 最佳实践
写作习惯
- 每天写 TIL:保持输出节奏
- 周末整理:把碎片升级成体系
- 月度复盘:回顾 + 归档
内容分级
| 标签 | 含义 | 是否发布 |
|---|---|---|
stage: seedling | 碎片/草稿 | ❌ |
stage: budding | 能复现 | ✅ |
stage: evergreen | 高质量 | ✅ 重点推荐 |
安全建议
- ⚠️ 私有仓库不要放敏感信息(密码、API Key)
- ⚠️ 公开前检查是否有个人隐私
- ⚠️ 定期备份两个仓库
🐛 常见问题
Q: 图片怎么处理?
方案:把图片放在 content/assets/ 目录,使用相对路径引用:
Q: Obsidian 的 ![[embed]] 语法支持吗?
支持。Quartz 原生支持 Obsidian 的嵌入语法。
Q: 部署后页面空白?
检查:
- Build output directory 是否为
public - 是否有构建错误(查看 Cloudflare 日志)
quartz.config.ts中baseUrl是否正确
Q: 反向链接不显示?
确保使用 [[wikilink]] 语法,而不是普通 Markdown 链接。
📚 参考资源
这套工作流让我从「想法散落各处」变成「收集→整理→输出→复习」的闭环。如果你也在寻找类似的解决方案,希望这篇文章对你有帮助。