最近我把自己的 Hexo 写作流程,收敛成了一个可复用的 hexo-blog-publisher skill。

它解决的不是“怎么写文章”这个创作问题,而是“每次写完都要重复走一遍发布流程”这个工程问题:

  • 文章放哪儿
  • 怎么预览
  • 什么时候检查 SSH
  • 如何避免误 push
  • 推送失败时怎么快速定位

这个 skill 的目标很简单:把重复动作固化,把风险动作加门禁。


这个 skill 做了什么

hexo-blog-publisher 把博客发布拆成 5 步:

  1. 加载配置(仓库路径、文章目录、远端地址、目标分支)
  2. 生成或修改文章(写入 source/_posts
  3. 导出 .md 预览并等待确认
  4. 推送前做 SSH 连通性检查
  5. 仅在“当次明确授权”后执行 push

核心约束是:不允许复用历史授权。即便你昨天说过“以后直接推”,今天要推时仍然要再次确认。


目录结构

1
2
3
4
5
6
7
8
9
skills/hexo-blog-publisher/
├── SKILL.md
├── .env
├── .env.example
├── scripts/
│ ├── check_ssh.sh
│ └── push_post.sh
└── references/
└── frontmatter-template.md

脚本职责很清晰:

  • check_ssh.sh:只做一件事,验证 SSH 到 git 远端是否可用。
  • push_post.sh:只提交目标文章并推送,内置防呆(无改动不提交、仓库不存在给出 clone 提示、禁止提交仓库外文件)。

配置一次,后面复用

.env 示例:

1
2
3
4
5
6
BLOG_REPO_PATH=~/blog
POSTS_SUBDIR=source/_posts
EXPORT_DIR=~/.openclaw/workspace/exports
REPO_SSH_URL=git@github.com:yourname/your-blog.git
REMOTE_NAME=origin
BRANCH=master

这几个字段基本覆盖了我日常发布所需的变量。


开源仓库(读者可直接体验)

我把这个 skill 放到了 GitHub:

  • 仓库地址:https://github.com/fii6/hexo-blog-publisher-skill
  • 当前是源码仓库,便于直接阅读和二次改造。

你可以按下面步骤快速体验:

1
2
3
git clone git@github.com:fii6/hexo-blog-publisher-skill.git
cd hexo-blog-publisher-skill
cp skill/.env.example skill/.env

然后编辑 skill/.env(至少改成你自己的 BLOG_REPO_PATHREPO_SSH_URL),再执行:

1
2
bash skill/scripts/check_ssh.sh
bash skill/scripts/push_post.sh <post_filename_or_path> "<commit_message>"

如果你想把它长期作为本地 skill 使用,可以放到 OpenClaw 的 skills 目录:

1
cp -r skill ~/.openclaw/workspace/skills/hexo-blog-publisher

我现在是怎么用它的(具体流程)

1)先让助手写/改,先预览

我会直接下这种指令:

  • “写一篇关于 xx 的博客,先给我 .md 预览,不要推送。”
  • “把这篇改成更口语化,仍然只改本地。”

这一步只做内容,不碰远端。

2)确认要发,再做连通性检查

1
bash skills/hexo-blog-publisher/scripts/check_ssh.sh

常见结果:

  • SSH_OK|...:可以继续
  • SSH_FAIL|...:先修 SSH,再谈推送
  • SSH_CONFIG_*:配置有问题(通常是 .env

3)收到“当次授权”后执行推送

1
bash skills/hexo-blog-publisher/scripts/push_post.sh <文章文件名或路径> "<commit message>"

例如:

1
bash skills/hexo-blog-publisher/scripts/push_post.sh hexo_blog_publisher_skill_guide.md "post: add hexo skill guide"

常见结果:

  • PUSH_OK|...:成功
  • NO_CHANGES|...:没有改动,避免空提交
  • REPO_NOT_FOUND|...:本地仓库缺失,会给出 clone 指令
  • POST_NOT_FOUND|...:文章路径不对

这个 skill 最有价值的地方

对我来说,不是省了几条命令,而是把“可错步骤”提前变成“可验证步骤”:

  • 先预览,避免把半成品推上去
  • 先连通性检查,避免推送时才发现 SSH 挂了
  • 当次授权门禁,避免误推
  • 只提交目标文件,避免顺手把别的改动带上

这类 skill 的价值,本质上是:把经验变成流程,把流程变成默认动作。

如果你也在用 Hexo,而且常常在“写完”和“发出”之间反复横跳,这套方法值得照着搭一版。