从 Obsidian 直写 Hexo(软链接 + 手动 git push)
之前写博客的流程是:先在 Obsidian 里写好,然后复制内容到 Hexo 的 source/_posts 目录,再 git push。每次都要复制粘贴,觉得挺麻烦的,于是折腾了一个直接在 Obsidian 里写、写完直接 push 的方案。
思路
核心想法很简单——用软链接把 Obsidian 的写作目录直接指到 Hexo 的 source/_posts 和 source/images。这样在 Obsidian 里写完保存,文件就自动落到 Hexo 的正确位置了,省了复制的步骤。
具体怎么做
假设你的目录结构是这样的:
- Obsidian Vault:
/your/storage/ObisidianStorage/Obisidian Vault - Hexo 仓库:
/your/storage/Blog
在 Vault 根目录里创建两个软链接:
1 | cd "/your/storage/ObisidianStorage/Obisidian Vault" |
建完之后在 Obsidian 侧栏就能看到 HexoPosts 和 HexoImages 两个文件夹。写到 HexoPosts/ 里的文章直接就是 Hexo 的文章,图片存到 HexoImages/ 里就行。
文章里引用图片的时候用公开路径:
1 |  |
Obsidian Git 插件配置
我的 Vault 里装了 obsidian-git 插件,需要让它识别到 Hexo 仓库。
关键配置是 Custom base path——这个填的不是绝对路径,而是相对 Vault 根目录的路径。
比如从 Vault 根目录到 Blog 仓库的相对路径是 ../../Blog,那就填:
1 | Custom base path = ../../Blog |
我一开始填了绝对路径,结果一直报 base path does not exist。后来改成相对路径就好了。
Custom Git binary path 填 /usr/bin/git 就行,如果 git 在 PATH 里不填也行。
自动推送我先没开,写完文章确认没问题了再手动 push,这样比较稳妥。
发布
进 Hexo 仓库目录:
1 | cd /your/storage/Blog |
push 之后等 GitHub Actions 跑完,刷新页面就能看到新文章了。
踩到的坑
改完 Git 插件配置之后,如果还报错或者提示 not ready,重启一下 Obsidian 就行。插件有时候还在用旧配置,重启后就能读到新的了。这个坑我卡了一会儿才想到重启。
总结一下
这套方案其实就是三步:
- 软链接把 Obsidian 的写作目录落到 Hexo 的标准目录
- 图片用
/images/...路径引用,保证发布后能正常显示 - 写完手动 git push,改配置后记得重启 Obsidian
比起之前复制粘贴的方式,省了不少事。