obsidian 发布博客
1. 背景
obsidian 官方有发布功能, 但是本着白嫖的 '优良美德', 我选择了 obsidian-digital-garden
优点
- 大部分的 obsidian 特性 (比如双链, admontion, 预览...) 都能发布上去
- 发布操作简单, 配置下 frontmatter, 运行一个命令即可
- 可以同步本地 obsidian 的主题, 也是你现在电脑/手机里的 obsidian 主题 (包括你自己的主题配置) 都能发布到博客里
- 免费 🤣
2. 快速上手
详细操作参考 官方文档 (因为可能会变化), 我简单说下主要步骤
- 申请 vercel 账号和 github 账号
- vercel 是免费的云平台, 这里用它的免费额度发布静态站点 (也就是博客)
- github 用来存储你的博客, 你在 obsidian 的配置更新, 发布都是直接操作到 github 中的博客仓库
- 根据官方文档, 通过一个博客模板仓库一键创建 vecel 项目和 github 仓库
- 在本地的 obsidian 中发布博客
3. 我的额外操作
官方文档已经写很明白的部分我是不喜欢再写一次, 所以上面的 快速开始 就简单略过。这一节,介绍的是文档上没提到的
3.1. vercel绑定自定义域名

新增一个域名后,他会提示你到域名管理后台配置一个 CNAME 配置

我的域名是用 cloudflare 管理的, 这里有一个坑点。
cloudflare 默认会出现无限重定向情况,就是我访问 blog.我的域名 时候他会又重定向 blog.我的域名。
我最终的配置是



3.2. 在首页列出所有博客
这个插件虽然提供了展示文件树的功能,但是我不喜欢,我的文件树很深,但是我会发布出来的博客比较少,所以这个文件树的体验会比较差。
我更喜欢在首页,列出所有博客,所以用了 dataview 语法
\`\`\`dataview
TABLE WITHOUT ID file.link AS "文章",updated as 更新时间, created as 创建时间 FROM ""
WHERE dg-publish = true AND !dg-home
SORT created DESC
\`\`\`
这个语法会列出所有要发布的博客 (dg-publish=true), 除了首页 (!dg-home),按照创建时间排序。
updated 和 created 不是 dateview 内置的属性, 是我笔记内的 frontmatter 属性