Notion + Quarto
博客工具
- 写作平台:Notion
- 博客平台:Quarto
- 博客主题:cosmo
- 部署平台:Netlify
环境准备
博客搭建指南
1. Fork模板仓库
点击 Fork 本模板仓库到个人 Github 账号仓库下并 clone 到本地
2. 安装依赖
在项目根目录下运行命令安装依赖
npm install @elog/cli -g
3. 新建 Elog 本地调试文件
在项目根目录中复制.elog.env.example文件并改名为.elog.env,此文件将用于本地同步Notion 文档
4. 配置 Notion 关键信息
从 Elog-Quarto 复制数据库到你自己的 Notion 空间,后续对样例文件的修改需要按规则来,如果没有把握就不要随意修改属性,只更新内容和目录部分。
按照文档提示配置 Notion 并获取 token 和 databaseId,在本地.elog.env中写入
plain text NOTION_TOKEN=获取的token NOTION_DATABASE_ID=获取的databaseId
在 Notion 里配置 Connection 的信息如下:

5.配置代理信息
为保证 Notion API 能顺利访问 Notion 后台接口,需要配置代理信息
# http 代理,替换成你的代理地址端口
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
# 同步数据
elog sync -e .elog.env6.启动 Quarto
数据如果同步正确,你的 Notion 数据都会下载为 Markdown 并存放在 docs 目录,你可以根据 _quarto 的配置信息来修改项目配置以决定你让 Quarto 来如何显示你的效果。
在项目根目录运行 Quarto 启动命令,会自动打开本地博客
quarto preview
7. 配置站点
根据 Quarto 配置文档,配置你的博客直到你满意为主,你也可以换别的主题,这里不做演示。
仓库目录下的 docs 目录里的 index.qmd、folder1.qmd 为示例文件,可以任意修改。
总体原则,把动态需要修改的内容尽量放置在 Notion 里,其它 Quarto 工程设置尽量放置在 docs 目录下的工程文件。
这里特意把“首页”和“关于”两个页面拆成了父子页面设计,有关配置和显示式样的内容在代码目录的 docs/index.qmd 和 docs/about.qmd 页面里设置,可以按 Quarto 的要求灵活修改。对于动态需要更新的内容,可以在 Notion 里的“首页”(本质上是 urlname 为 index-subpart)和“关于”(本质上是 urlname 为 about-subpart)页面调整。
8. 提交代码到 github
本地访问没问题直接提交所有文件到 Github 仓库即可。
如果 Notion 里的内容有更新,则重新执行第5步,知道内容满意为止。
9. 部署到 Netlify
站点可以托管到 Vercel 或是 Netlify 这类静态生成网站,从而保证自动构建。
注册 Netlify 账号并绑定 Github,在 Netlify 导入 该项目,Quarto 比较复杂不同于 Hexo ,需要逐步验证在 Netlify 的部署(有兴趣了解的可以读一下官方文档 Netlify – Quarto)。
因为本项目的模版文件为定制化设置,所以请严格按照本教程里的说明来配置:
- Quarto 比较复杂,所以 build 配置要特别注意,尤其是“Build command”和“Publish directory”,否则很容易失败。

- 在 docs 目录下新建 _publish.yml 文件验证内容能否正常发布到 netlify,该文件的模版如下:
plain text - source: project netlify: - id: "5f3abafe-68f9-4c1d-835b-9d668b892001" url: "https://tubular-unicorn-97bb3c.netlify.app"
- 检查发布是否正常:
plain text quarto render quarto publish netlify
- 打开配置的 netlify URL,如果能正常看到站点,就表示一切正常。
- 检查 docs/netlify.toml 文件,检查里面的 Quarto 版本号是否和你本地一致,只要差别不大应该都一样,如果不一样可以修改为和你本地版本一致,然后提交到 Github 触发自动构建。
自定义 Elog 配置
如果想自定义 Elog 配置,可访问 Elog 文档
博客示例
Q & A
以下收集到的一些常见疑问,写到下面。
为什么要用 Quarto?
这是一个好问题,在有了 Hugo、Hexo 等一系列静态建站工具,为什么还要用 Quarto 呢?
Quarto 的主要场景是科学写作,尤其是在文献交叉引用环节做得很好,语法特别简单利落。而 Hugo、Hexo 这些工具并不原生支持 BibTeX 参考文献引用,就算有一些插件能用上 BibTeX,语法上也没有 Quarto(实际上是 pandoc)舒服。
为什么要用 Elog + Quarto?
Notion 或是语雀这些工具对 BibTeX 这些支持不足,无法自动引用参考文献,所以无法直接依赖 BibTeX 来导出生成完整的文章。Zettlr 虽然支持 BibTeX,但是作为一个编辑器来讲,这方面体验做得并不好。
Quarto 本身不提供编辑器,或者说 R Studio 自带的编辑器不好用,我们依然喜欢在 Notion、语雀或是 Joplin 里来写原文,同时标上参考文献等,再导出来用 Quarto 排版生成。这样的流程是实践下来最舒服的,比较专业的记事本软件在写作本身方面确实体感比 Visual Studio Code 这类好太多了。
如果手工从 Notion、语雀或是 Joplin 导出 markdown,又面临一个图片的问题。
而 Elog 恰恰把这些问题都解决了,可以完整的按预期导出文字、图片来供 Quarto 后续自动排版。
Elog + Quarto 这套组合是我实践下来感觉最舒服的。
为什么要用 Elog + Quarto + Github + Netlify?
如果只是用 Notion 来写作,用 Elog 来拉取文件到本地,在用 Quarto 来预览排版,那还是需要有一个手动发布的工作。如果是发布成书籍,本地操作是没有任何问题的。但是如果是想发布为个人网站,那则需要用 Quarto 的 publish 功能,每次手动操作,略显烦人。
可以把配置好的 Quarto 提交到 Github 仓库,同时通过 Netlify 来自动发布,这样一个流程下来,非常丝滑,如果需要更进一步自动化的话,还可以继续研究怎么让 Github 来通过 Elog 自动拉取。
因为我习惯在真正发布前,在本地通过 Quarto 来预览效果,所以我没有进一步做自动化工作,有兴趣的读者可以试验一下,有经验欢迎分享。
除了 Notion 还可以用其他记事本软件吗?
除了 Notion 以外的其它记事本,原理一样,比如语雀。不过因为我没有语雀的会员账号所以没有 token 鉴权,我就么有试验。
除了 Netlify,其它类似 https://vercel.com/ 也可以支持自动部署吗?
只要能支持静态站点自动发布的服务商,应该都可以,但是 Vercel 我没有试验,如果实践中碰到问题可以讨论。
另外,Quarto 因为比 Hugo、Hexo 本身就要复杂,所以在部署服务商那里部署的工作要复杂一些。