你有没有遇到过这种情况?

每次写完文章,都要打开后台、粘贴内容、调样式、设置标签……明明写文章才是核心,发布流程却占了一半时间。

说实话,我之前也是这样。直到我用 Python 写了一个自动发布脚本——从写完 Markdown 到文章上线,只需要一行命令


为什么要自动化发布?

手动发布的痛点很明显:

  • 重复操作多(每次都是同样的步骤)
  • 容易出错(复制粘贴格式经常乱)
  • 效率低(明明可以让机器做的事)

自动化之后,整个流程变成了:

写 Markdown → 运行脚本 → 文章上线 ✅


核心原理

Halo 博客提供了完整的 REST API,整个发布流程只需要两步:

第一步:创建 Snapshot(内容快照)

Snapshot 存储文章的实际内容(HTML 格式)。就像 Git 的 commit,每次发布都会生成一个快照。

snap_payload = {
    "apiVersion": "content.halo.run/v1alpha1",
    "kind": "Snapshot",
    "spec": {
        "rawType": "HTML",
        "rawPatch": html_content,
        "contentPatch": html_content,
    }
}

第二步:创建 Post(文章主体)

Post 关联 Snapshot,并设置 publish: true,Halo 的 reconciler 会自动完成发布。

post_payload = {
    "spec": {
        "title": "文章标题",
        "publish": True,
        "baseSnapshot": snap_name,
        "releaseSnapshot": snap_name,
    }
}

实战效果

用这套流程发布一篇文章,全程只需要:

  1. 写好 .md 文件
  2. 运行 python publish.py article.md
  3. 等待约 5 秒,文章自动上线

效率提升明显,再也不用手动操作后台了。


延伸:公众号风格排版

如果想让博客文章也有公众号那种精美排版效果,可以先用排版工具把 Markdown 转成带内联样式的 HTML,再通过 API 发布到 Halo。

效果就是——博客文章自带精美样式,不依赖主题


写在最后

自动化不是把人替换掉,而是把重复的事交给机器,让人专注在真正有价值的事上。

写好内容,剩下的交给代码。

💬 你在博客发布上有什么烦恼?

评论区聊聊~