本文记录我如何搭建一套完整的知识管理系统:用 Obsidian 写笔记、用 Quartz 发布博客、用 NotebookLM 构建 AI 知识库。

🎯 解决什么问题

在搭建这套系统之前,我面临这些困境:

问题痛点
笔记碎片化想法散落在各处,无法形成体系
没有输出平台学了很多但没地方展示
公私混杂不知道哪些该公开、哪些该保密
复习低效笔记写完就忘,没有「活」起来!

目标:建立一套「收集 → 整理 → 输出 → 复习」的闭环系统。


🧰 工具栈一览

工具角色为什么选它
Obsidian本地笔记编辑器Markdown、双向链接、插件生态
Quartz静态博客生成器原生支持 Obsidian 语法、图谱、反向链接
GitHub代码托管版本控制 + 自动部署触发
Cloudflare Pages网站托管免费、全球 CDN、自动 HTTPS
NotebookLMAI 知识库基于你的笔记回答问题

📐 整体架构

┌─────────────────────────────────────────────────────────────┐
│                       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-notesPrivate所有私人笔记、草稿、日记
Rain-notes-sitePublic博客源码 + 公开内容

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 install

2.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 中分别打开:

  1. Rain-notes(私有):日常笔记、草稿、收集
  2. 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 GitGit 同步

📤 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

  1. 登录 Cloudflare Dashboard
  2. 进入 PagesCreate a project
  3. 选择 Connect to Git → 授权 GitHub
  4. 选择 Rain-notes-site 仓库

5.2 构建配置

配置项
Framework presetNone
Build commandnpx quartz build
Build output directorypublic
Root directory/

如果需要完整的 Git 历史(显示文章日期)

Build command 改为:

git fetch --unshallow && npx quartz build

5.3 绑定自定义域名

  1. 在 Pages 项目设置中添加 Custom domain
  2. 按提示在 DNS 添加 CNAME 记录
  3. 等待 SSL 证书自动签发

🤖 Step 6:NotebookLM 知识库

6.1 导入笔记

  1. 打开 NotebookLM
  2. 创建新 Notebook
  3. 上传你的 Markdown 文件(或 PDF)

6.2 使用场景

  • 复习:让 AI 根据你的笔记出题
  • 查询:问「我之前写过关于 MQTT 的内容吗?」
  • 总结:让 AI 生成某个主题的摘要

6.3每个 notebook 只干一件事

  • P-*:用来做“项目评审、查漏补缺、生成文档骨架”

  • T-*:用来做“学习指南、自测题、易错点清单”

  • W-*:用来做“把你写的东西变成可读文章 + 英文摘要”

6.4 NotebookLM 输出落到 Quartz 哪儿?

  • 学习指南/自测题/概念图 → 放到 paths/ 或 notes/

  • 文档骨架/架构说明 → 放到 projects//

  • 文章结构优化/英文润色 → 放到 posts/articles/ 或 posts/til/


✅ 最佳实践

写作习惯

  1. 每天写 TIL:保持输出节奏
  2. 周末整理:把碎片升级成体系
  3. 月度复盘:回顾 + 归档

内容分级

标签含义是否发布
stage: seedling碎片/草稿
stage: budding能复现
stage: evergreen高质量✅ 重点推荐

安全建议

  • ⚠️ 私有仓库不要放敏感信息(密码、API Key)
  • ⚠️ 公开前检查是否有个人隐私
  • ⚠️ 定期备份两个仓库

🐛 常见问题

Q: 图片怎么处理?

方案:把图片放在 content/assets/ 目录,使用相对路径引用:

![图片描述](/assets/my-image.png)

Q: Obsidian 的 ![[embed]] 语法支持吗?

支持。Quartz 原生支持 Obsidian 的嵌入语法。

Q: 部署后页面空白?

检查:

  1. Build output directory 是否为 public
  2. 是否有构建错误(查看 Cloudflare 日志)
  3. quartz.config.tsbaseUrl 是否正确

Q: 反向链接不显示?

确保使用 [[wikilink]] 语法,而不是普通 Markdown 链接。


📚 参考资源


这套工作流让我从「想法散落各处」变成「收集→整理→输出→复习」的闭环。如果你也在寻找类似的解决方案,希望这篇文章对你有帮助。