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

目标:在 Obsidian 里直接完成技术文章写作与配图,把内容落到 Hexo 的 source/_postssource/images;发布时只需一次手动 git push 触发 GitHub Pages。

1. 前置条件(先确认这些存在)

  1. Hexo 仓库可用:能在仓库目录执行 git push origin main
  2. Obsidian 中安装并启用插件 Git(obsidian-git / Git)。
  3. 在 Hexo 里采用标准结构:
    • 文章:source/_posts/*.md
    • 图片:source/images/*

2. 一次性目录映射:Vault → 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 里写 HexoPosts/,保存即落到 source/_posts/
  • 把图片保存到 HexoImages/,并在文章中引用公开路径:
1
![](/images/<你的目录>/<图片名>.png)

3. Git 插件配置:让它“能识别仓库”(关键是语义)

你这套工作流不依赖自动推送;Git 插件的职责是识别仓库并在你需要时生成提交/提示变更

3.1 只改一个核心字段:Custom base path

  • Custom base path 不是绝对路径,而是相对 Vault 根目录的路径。

仓库根目录相对于 Vault 根目录的层级关系为:

  • 计算规则:从 Vault 根目录到 Hexo 仓库根目录,一层上跳 ../,一层下走则按目录名追加。

示例(如果两者相对层级是 Vault → ../../Blog):

1
Custom base path = ../../Blog

若出现 base path does not exist:优先重算相对层级,避免填绝对路径。

3.2 Custom Git binary path

  • 建议填 /usr/bin/git(可不填,取决于系统是否在 PATH)。

3.3 发布方式

  • 先不开自动推送:写完文章后仅在确认内容无误时再手动 git push

4. 手动发布(触发 GitHub Actions / Pages)

进入 Hexo 仓库根目录(示例):

1
cd /your/storage/Blog

发布步骤:

1
2
3
4
5
git status

git add source/_posts/<你的文章>.md source/images/<你的图片>
git commit -m "add: <标题简述>"
git push origin main

等待 Actions 完成,刷新 Pages 验证。

5. 小坑:改完 Git 插件配置,建议重启 Obsidian

若出现“配置明明已经对了但仍报错/仍提示 not ready”:

  • 建议:重启 Obsidian 再试

原因:插件可能尚在使用旧配置状态,重启后即可同步到新配置。

6. 结论

这套流程的可操作性来自三点:

  1. 软链接把写作目录直接落到 Hexo 的标准目录(避免复制步骤)。
  2. 图片引用使用 /images/...,确保发布后可见。
  3. 只在需要时手动 git push,并在改配置后重启 Obsidian 提升稳定性。