0%

ObsidianVault固定目录Blogs到Hexo的自动更新

目标

把 Obsidian Vault 中固定目录 Blogs/ 的文章,自动同步到 petrezhucn 这个 Hexo 博客项目,并自动重新发布站点。

固定目录约定

  • Obsidian 仓库本地副本:/root/git/Obsidian-Vault
  • 博客源目录:/root/git/Obsidian-Vault/Blogs
  • Hexo 项目同步副本:/root/git/petrezhucn-sync
  • Hexo 项目主目录:/root/git/petrezhucn
  • 网站发布目录:/www/wwwroot/petrezhu.cn

以后只要把带 frontmatter 的 Markdown 笔记放进 Blogs/,就会进入博客发布链路。

当前自动化链路

1
2
3
4
5
6
7
本机 Obsidian -> push 到 Obsidian-Vault 仓库
-> 服务器拉取最新 Obsidian-Vault
-> 读取 /root/git/Obsidian-Vault/Blogs/*.md
-> 同步到 /root/git/petrezhucn-sync/source/_posts/
-> git commit + push 到 petrezhucn
-> 执行 Hexo 构建发布
-> 更新站点内容

关键脚本

1)同步脚本

1
/root/scripts/sync-obsidian-blogs-to-petrezhucn.sh

作用:

  • 先更新服务器本地的 Obsidian-Vault 仓库
  • 再读取 Blogs/ 目录中的文章
  • 同步到 Hexo _posts
  • 自动提交并 push 到 petrezhucn

2)发布脚本

1
/root/scripts/petrezhucn-webhook.sh

作用:

  • 拉取 petrezhucn 最新代码
  • 执行 Hexo 构建
  • 把生成结果发布到站点目录

3)手动一键执行

1
/root/scripts/sync-obsidian-blogs-to-petrezhucn.sh && /root/scripts/petrezhucn-webhook.sh

定时任务

当前已配置 cron,每天早上 6 点自动同步:

1
0 6 * * * flock -xn /root/scripts/sync-obsidian-blogs-to-petrezhucn.lock -c '/root/scripts/sync-obsidian-blogs-to-petrezhucn.sh'

如需稳妥,也可以手动再执行一次发布脚本。

Frontmatter 建议模板

1
2
3
4
5
6
7
8
9
10
11
12
13
---
id: 2026-05-25 17:00:08
title: 文章标题
date: 2026-05-25 17:00
tags:
- default
categories:
- default
links:
language: Markdown
comments: true
Keywords: keyword
---

注意事项

  1. 当前同步逻辑是“新增/覆盖”,不是自动删除。
  2. 如果删掉某篇博客,需同时删除博客仓库中的对应 _posts 文件,再重新发布。
  3. 如果文章里使用本地附件图片,后续还需要补图片同步;外链图片可直接使用。
  4. 若服务器上的 Obsidian 副本落后,脚本会先执行 fetch + reset --hard 到远端最新 main

本次落地结果

  • 已建立固定博客源目录:/root/git/Obsidian-Vault/Blogs
  • 已建立同步脚本与发布脚本
  • 已建立 Hexo 同步副本 petrezhucn-sync
  • 已完成从 Obsidian 到 Hexo 的自动更新验证

以后新增博客,直接放到 Blogs/ 即可。