从 Obsidian 直写 Hexo(软链接 + 手动 git push)

之前写博客的流程是:先在 Obsidian 里写好,然后复制内容到 Hexo 的 source/_posts 目录,再 git push。每次都要复制粘贴,觉得挺麻烦的,于是折腾了一个直接在 Obsidian 里写、写完直接 push 的方案。

思路

核心想法很简单——用软链接把 Obsidian 的写作目录直接指到 Hexo 的 source/_postssource/images。这样在 Obsidian 里写完保存,文件就自动落到 Hexo 的正确位置了,省了复制的步骤。

具体怎么做

假设你的目录结构是这样的:

  • Obsidian Vault:/your/storage/ObisidianStorage/Obisidian Vault
  • Hexo 仓库:/your/storage/Blog

在 Vault 根目录里创建两个软链接:

1
2
3
cd "/your/storage/ObisidianStorage/Obisidian Vault"
ln -s "/your/storage/Blog/source/_posts" HexoPosts
ln -s "/your/storage/Blog/source/images" HexoImages

建完之后在 Obsidian 侧栏就能看到 HexoPostsHexoImages 两个文件夹。写到 HexoPosts/ 里的文章直接就是 Hexo 的文章,图片存到 HexoImages/ 里就行。

文章里引用图片的时候用公开路径:

1
![](/images/<你的目录>/<图片名>.png)

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
2
3
4
cd /your/storage/Blog
git add source/_posts/你的文章.md source/images/你的图片
git commit -m "add: 文章标题"
git push origin main

push 之后等 GitHub Actions 跑完,刷新页面就能看到新文章了。

踩到的坑

改完 Git 插件配置之后,如果还报错或者提示 not ready重启一下 Obsidian 就行。插件有时候还在用旧配置,重启后就能读到新的了。这个坑我卡了一会儿才想到重启。

总结一下

这套方案其实就是三步:

  1. 软链接把 Obsidian 的写作目录落到 Hexo 的标准目录
  2. 图片用 /images/... 路径引用,保证发布后能正常显示
  3. 写完手动 git push,改配置后记得重启 Obsidian

比起之前复制粘贴的方式,省了不少事。