Quartz
a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites
🎯 为什么需要它
你有一个 Obsidian 知识库,里面积累了大量笔记、双向链接和图谱关系。你想把这些笔记发布到网上,让别人也能浏览你的数字花园(Digital Garden),但又不想手动维护一个网站。
Quartz 就是为这个场景而生的。它是一套基于 TypeScript 的静态站点生成器,专门将 Markdown 内容(尤其是 Obsidian 风格的笔记)转化为功能完备的网站,具备双向链接、图谱视图、全文搜索等数字花园核心特性。
一句话定位
把你的 Obsidian 知识库变成一个可在线访问的数字花园,零后端、免费托管。
它解决的核心痛点
- Obsidian Publish 太贵 — 每月 $8/用户,Quartz 完全免费
- 手动建站太累 — 传统 SSG(Hugo/Astro)需要自己实现双向链接、图谱、backlinks
- 知识需要流动 — 笔记不该锁在本地,数字花园理念鼓励公开分享和持续迭代
✅ 核心优势
| 优势 | 说明 |
|---|---|
| Obsidian 原生兼容 | 支持 wikilinks、transclusions(嵌入)、backlinks、标签、frontmatter — 你的 Obsidian 笔记无需任何修改即可发布 |
| 开箱即用的功能堆栈 | 全文搜索、图谱视图、LaTeX 数学公式、代码高亮、链接预览弹窗、评论系统、国际化 — 全部内置 |
| SPA 级别的页面速度 | 客户端预加载 + SPA 路由,页面切换几乎零延迟,bundle 体积极小 |
| TypeScript 插件系统 | 三层管道架构:Transformers(解析)→ Filters(过滤)→ Emitters(生成),全部可自定义 |
| 热重载开发体验 | 配置文件修改即时生效,内容修改增量构建,开发迭代极快 |
| 零后端、免费托管 | 纯静态输出,可部署到 GitHub Pages、Cloudflare Pages、Vercel、Netlify 任何静态托管 |
| Docker 支持 | 提供官方 Docker 配置,适合需要容器化部署的团队 |
⚡ 性能表现
Quartz v4 使用 esbuild 作为构建工具,构建速度极快。
构建性能
- 构建工具:esbuild(Go 编写的超快 JS bundler)
- 增量构建:内容修改时只重建变更部分,大型知识库(1000+ 笔记)也能秒级构建
- 热重载:配置修改和内容修改都支持 HMR,开发体验流畅
运行时性能
- SPA 路由:首次加载后,页面切换通过客户端路由实现,无需整页刷新
- 预加载:鼠标悬停链接时自动预加载目标页面
- Bundle 体积:TypeScript 85.2% + SCSS 8.3%,输出为纯静态 HTML/CSS/JS,体积小
- 零服务端依赖:纯静态文件,CDN 友好,TTFB 极低
社区用户反馈:1000+ 笔记的大型知识库,完整构建约 5-10 秒,增量构建 < 1 秒。页面加载 Lighthouse 评分普遍 95+。
🚀 快速上手
前置要求
- Node.js >= v22
- npm >= v10.9.2
- Git
Step 1:克隆并初始化
git clone https://github.com/jackyzha0/quartz.git
cd quartz
npm i
npx quartz create
npx quartz create 会引导你选择:从现有 Obsidian vault 导入内容,或创建空白项目。
Step 2:放入你的内容
将你的 Markdown 笔记放入 content/ 目录。Quartz 会自动识别 wikilinks、frontmatter、标签等 Obsidian 语法。
content/
├── index.md # 首页
├── notes/
│ ├── my-note.md # 你的笔记
│ └── another.md
└── tags.md # 标签页
Step 3:本地预览
npx quartz build --serve
访问 http://localhost:8080 即可预览。修改内容会自动热重载。
Step 4:配置你的站点
编辑 quartz.config.ts 自定义站点信息:
const config: QuartzConfig = {
configuration: {
pageTitle: "My Digital Garden",
enableSPA: true,
enablePopovers: true,
baseUrl: "yoursite.com",
// ... 更多配置
},
plugins: {
transformers: [
Plugin.FrontMatter(),
Plugin.Latex({ renderEngine: "katex" }),
// ...
],
filters: [Plugin.RemoveDrafts()],
emitters: [
Plugin.AliasRedirects(),
Plugin.ComponentResources(),
// ...
],
},
}
Step 5:部署上线
npx quartz build
构建产物在 public/ 目录,推送到 GitHub 后可配置 GitHub Pages / Cloudflare Pages / Vercel 自动部署。
典型部署流程(GitHub Pages)
- Fork Quartz 仓库到你的 GitHub 账号
- 在
content/目录放入你的笔记 - 推送到
main分支 - 在仓库 Settings → Pages 中启用 GitHub Actions 部署
- 每次 push 自动构建并发布
📦 适用场景
✅ 最佳使用场景
| 场景 | 为什么适合 |
|---|---|
| 个人数字花园 | Quartz 的核心设计目标,双向链接 + 图谱视图完美匹配 |
| Obsidian 笔记发布 | 原生兼容 Obsidian 语法,零修改直接发布 |
| 技术博客 | 支持代码高亮、LaTeX、标签分类,适合技术写作 |
| 团队知识库 | Docker 支持 + 静态托管,适合小团队内部知识共享 |
| 学生/研究者主页 | 免费、快速、可自定义,适合学术笔记和研究记录 |
⚠️ 不太适合的场景
| 场景 | 原因 |
|---|---|
| 大型企业文档站 | Quartz 定位是个人/小团队工具,缺乏多语言版本管理、权限控制等企业特性 |
| 电商 / 动态网站 | 纯静态生成,无服务端渲染,不适合需要动态交互的场景 |
| 非 Markdown 内容 | 核心围绕 Markdown 设计,如果你的内容以富文本/视频为主,不是最佳选择 |
| 需要极致构建速度的超大站 | 万级页面场景下,Hugo(Go 原生)的构建速度更有优势 |
⚠️ 已知坑
Quartz v4 要求 Node.js >= v22,很多开发者本地环境还是 v18/v20。升级 Node 版本是第一个门槛。建议使用 nvm 或 fnm 管理 Node 版本。
Quartz 使用了较多客户端 JS 来实现 SPA 路由、搜索、图谱等功能。对于追求「零 JS」的纯静态站场景,这是一个权衡。社区有用户反馈这一点。
Quartz v4 是从零开始的重写版本。如果你之前用的是 v3,升级到 v4 几乎等于迁移新项目,配置方式、目录结构、插件系统全部不同。
虽然不需要写代码,但配置文件是 TypeScript 格式(quartz.config.ts),非开发者可能觉得不如 YAML/TOML 直观。好在有 TypeScript 语言服务的 IDE 会提供类型提示。
文档站 quartz.jzhao.xyz 偶尔出现 DNS 解析问题。备用方案:直接阅读仓库中的 docs/ 目录源文件。
最新正式 Release 是 2023 年 8 月的 v4.0.8,此后没有新的 Release tag。但主分支仍在持续 commit(1,600+ commits),说明项目活跃但不频繁发版。使用时建议直接跟踪 main 分支。
🆚 竞品对比
| 维度 | Quartz | Hugo + Blowfish | Astro | Obsidian Publish |
|---|---|---|---|---|
| 定位 | 数字花园专用 SSG | 通用 SSG + 数字花园主题 | 通用 Web 框架 | Obsidian 官方发布服务 |
| 语言 | TypeScript | Go | TypeScript | 闭源 |
| Obsidian 兼容 | ⭐⭐⭐⭐⭐ 原生 | ⭐⭐⭐ 需配置 | ⭐⭐ 需插件 | ⭐⭐⭐⭐⭐ 完美 |
| 构建速度 | 快(esbuild) | 极快(Go 原生) | 中等 | 不需要构建 |
| 开箱功能 | 搜索/图谱/backlinks/标签全内置 | 需主题和插件组合 | 需自己组装 | 与 Obsidian 一致 |
| 定制能力 | 高(TypeScript 插件) | 高(Go 模板) | 极高(任意框架) | 低 |
| 学习曲线 | 中等 | 中等偏高 | 高 | 极低 |
| 费用 | 免费 | 免费 | 免费 | $8/月/用户 |
| 社区规模 | 12.3k stars | Hugo 78k+ stars | 48k+ stars | 官方产品 |
选型建议
- 选 Quartz:你用 Obsidian,想免费发布数字花园,需要开箱即用的双向链接/图谱/搜索
- 选 Hugo:你追求极致构建速度,内容量巨大(万级页面),不介意自己配置数字花园功能
- 选 Astro:你需要高度定制的网站,团队有前端开发能力,数字花园只是其中一个需求
- 选 Obsidian Publish:你不想折腾任何技术细节,愿意付费换取零维护体验
🌍 生态社区
项目数据
| 指标 | 数据 |
|---|---|
| GitHub Stars | 12,300+ |
| 总 Commits | 1,626 |
| 正式 Releases | 4 个(v4.0.8 Latest, 2023-08-21) |
| 主语言 | TypeScript 85.2% / SCSS 8.3% |
| License | MIT |
| 主分支 | v4(活跃开发中) |
社区资源
- 官方文档:quartz.jzhao.xyz(也有仓库内
docs/目录可离线阅读) - Discord 社区:活跃的用户交流群,问题响应较快
- Showcase:官方文档有 showcase 页面,展示大量真实用户站点
- 视频教程:Nicole van der Hoeven 等 YouTuber 有详细的视频上手指南
维护状态评估
虽然最新 Release 停留在 2023 年 8 月,但主分支持续有 commit,Issues 仍在响应。项目由作者 Jacky Zhao 个人维护,社区贡献活跃。属于「个人项目但社区健康」的状态。
💡 引入评估
值不值得引入?
如果你使用 Obsidian 管理笔记并想发布为数字花园,Quartz 是当前最佳选择。它在 Obsidian 兼容性、开箱功能、免费三个维度上没有竞品能同时满足。
引入决策树
- 你用 Obsidian 吗?→ 是 → 继续
- 你想免费发布吗?→ 是 → 继续
- 你需要双向链接/图谱/搜索吗?→ 是 → 选 Quartz
- 你愿意付费省事吗?→ 是 → 考虑 Obsidian Publish
- 你需要极致构建速度(万级页面)?→ 是 → 考虑 Hugo
🔗 相关链接
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | jackyzha0/quartz |
| 官方文档 | quartz.jzhao.xyz |
| 作者博客 | Networked Thought |
| 视频教程 | Nicole van der Hoeven - How to set up Quartz |
| 社区展示 | Showcase |