Obsidian 笔记部署为 Hexo 博客
一、目标
把 Obsidian 笔记发布到 Hexo 博客,并解决以下问题:
- 在 Obsidian 中把笔记转换为 Hexo 文章
- 在 Obsidian 中直接执行发布、生成、部署
- 用 Syncthing 同步多设备,但避免同步设备相关配置
- 在 Obsidian 中直接对
blog仓库做 Git pull / push
二、使用到的插件
本文实际使用了这几个插件:
- Hexo Toolkit(不是必须) : 用来把 Obsidian 特有语法尽量转换成 Hexo 兼容格式
- Hexo Integration
- 用来把当前笔记转换成 Hexo 文章、发布到
_posts、执行hexo g / hexo d
- 用来把当前笔记转换成 Hexo 文章、发布到
- Obsidian Git
- 用来在 Obsidian 中直接对 Git 仓库执行 pull / push / commit-and-sync
- BRAT
- 仅用于安装
Hexo Integration
- 仅用于安装
- hexo插件:
- hexo-backlink 用于转换obsidian文档中的wiki链接
三、插件安装
1. 安装 Hexo Toolkit
在 Obsidian 中打开:
设置 -> 第三方插件 -> 浏览
搜索:
Hexo Toolkit
安装并启用。
2. 安装 BRAT
在 Obsidian 中打开:
设置 -> 第三方插件 -> 浏览
搜索:
BRAT
安装并启用。
3. 用 BRAT 安装 Hexo Integration
安装好 BRAT 后:
- 打开命令面板
- 执行:
1 | BRAT: Add a beta plugin for testing |
- 安装完成后,到第三方插件列表中启用:
1 | Hexo Integration |
说明
Hexo Integration 当时在插件市场里搜不到,所以需要通过 BRAT 安装。
如果 BRAT 提示 GitHub API rate limit exceeded,可以:
等待限流恢复后再装
或使用 GitHub Token
或手动安装 release 文件
4. 安装 Obsidian Git
在 Obsidian 中打开:
设置 -> 第三方插件 -> 浏览
搜索:
Git
安装并启用。
5. 安装hexo-backlink
1 | npm install hexo-backlink |
然后在hexo博客配置文件_config.json中设置:backlink: true ,该插件可以将obsidian中的链接转换成hexo形式的链接
四、Hexo Integration 配置
1. 设置博客根目录
打开:
设置 -> 第三方插件 -> Hexo Integration
设置:
Root Directory= 你的 Hexo 博客根目录绝对路径
例如:
1 | D:/blog |
注意:如果你在多台设备同步一个目录,博客路径可能不同,此时需要忽略同步文件:Syncthing
2. 解决 publish 时 Baidu Translate 报错
实际使用时,Hexo Integration 有一个问题:
即使当前 permalink 方式不是 Baidu Translate,有时也会在 publish 时提示:
1 | Baidu app ID or API key not configured |
实际可用的处理方法
先在 Hexo Integration 设置中:
把 permalink 生成方式切到
Baidu Translate在
Baidu App ID和API Key里随便填一点内容再把 permalink 生成方式切回你真正想用的方式,例如:
Short hashPinyinNote title
这样之后就可以正常 publish。
3. 图片设置
如果希望发布后的图片使用普通 Markdown 语法,而不是 Hexo tag,则在 Hexo Integration 中设置:
Image syntax=Markdown
同时在 Hexo 的 _config.yml 中建议设置:
1 | post_asset_folder: true |
这样文章资源目录中的图片可以用相对路径引用。
3.1 远程图片
- 你可以将图片放到远程github仓库,然后在md文档中引用:
- 如
lankeren035用户的blog_assets远程仓库下的main分支下的img/head.png图片:https://github.com/lankeren035/blog_assets/blob/main/img/head.png - 引用路径:
https://cdn.jsdelivr.net/gh/lankeren035/blog_assets@main/img/head.png
- 如
五、Hexo Toolkit 的使用
如果笔记中使用了 Obsidian 特有语法,例如:
[[双链]]![[图片]]部分嵌入语法
那么在发布前先执行:
1 | ctrl + p |
注意
如果是文件链接,例如:
1 | {% post_link experience/obsidian/Syncthing 'Syncthing' %} |
要想被正确转换成 Hexo 链接,被链接的目标笔记本身需要有hexo-path属性,具体路径随便写
1 | hexo-path: /posts/syncthing |
否则不会正确转换。
转换后在右下角会显示hexo: success,你需要自己复制过来
六、Hexo Integration 的使用流程
1. 首次处理当前笔记
- 该步骤相当于保证每个blog有data, title等数据,其实只要你写了就不用该操作
先执行:
1 | Hexo Integration: Convert current file to Hexo format |
这一步用于:
给当前笔记补充 Hexo 所需 front matter
让该笔记进入 Hexo Integration 的工作流
2. 发布当前文章
执行:
1 | Hexo Integration: Publish current post |
说明
这一步只是把文章发布到 Hexo 源目录中,一般是:
1 | source/_posts |
但是你可能不希望所有文件都直接放在_posts目录下,对此你可以将整个blog文件夹放到vault里面。这样就不需要发布当前文章了,直接hexo g就行
3. 生成 Hexo 页面
执行:
1 | Hexo Integration: Generate hexo pages |
等价于:
1 | hexo g |
4. 部署博客
执行:
1 | Hexo Integration: Deploy hexo pages |
等价于:
1 | hexo d |
八、用 Syncthing 同步时的 ignore 设置
1. 目标
使用 Syncthing 同步 Obsidian / Hexo 相关目录时,需要避免同步以下内容:
Hexo Integration的本地路径配置Hexo 生成产物
缓存文件
deploy 目录
大体积本地依赖
Git 元数据
Obsidian 的设备级工作区配置
1 | # Ignore Hexo Integration local settings |
九、Git 插件配置
1. 目录结构
假设当前目录结构是:
1 | Vault/ |
其中:
blog/是 Git 仓库Obsidian 打开的是整个
Vault
2. Obsidian Git 设置
打开:
设置 -> 第三方插件 -> Git
把:
1 | Custom base path |
设置为:
1 | blog |
含义
这表示 Git 插件只对:
1 | Vault/blog |
这个子目录中的 Git 仓库执行操作。
3. 常用命令
在命令面板中可用:
1 | Git: Pull |
其中:
1 | Git: Commit-and-sync |
实际执行流程相当于:
1 | stage everything -> commit -> pull -> push |
也就是:
1 | git add . |
- obsidian使用:Obsidian