分享一套我每天在用的公众号自动化流水线:写完 Markdown 丢给 CLI ,从格式归档、AI 审校、纯算法封面生成到送进微信官方草稿箱,全自动跑完。
概览
主执行工具是 zzhub-pipeline( npm 包名 @akairos/pipeline,终端简写为 zzp)。
它的定位是一个命令行任务状态机,纯本地运行、可自部署,对终端与各类 Agent 极其友好。整个流水线严格按照准备、审核、渲染、发布四个阶段顺序流转,中间所有状态和产物都会持久化保存在本地目录中。即使中途某一步网络超时中断,再次执行也能断点续跑,不需要推倒重来。

文章草稿
流水线的唯一输入源是最通用的标准 Markdown (.md),不管你平时用 Obsidian 、VSCode 、Typora ,还是直接由大模型生成底稿。
把文件交给 CLI:
zzp init --workspace ./my-posts --intent-text "发公众号文章给大号"
zzp attach-body --file ./draft.md
CLI 接到文章后,会在本地自动创建独立的任务目录与版本化资产目录(如 posts/2026-10-16-my-article/),把引用的本地图片统一归档,解析出标题、摘要与日期。后续所有的修改、生成的封面图和最终导出的 HTML 都在这里,路径清晰,方便 Git 管理。

上面是我之前走本地 CLI 发布的记录,后面迁移到云上就非常爽了。==因为之前靠 Electron 打通本地调用,所以离开电脑就没法再发文章了==,很蛋疼。上云之后,我就完全抛弃了客户端,直接全走 Web 端就是通的,手机上打开浏览器就能写能发!
内容审核
流水线里特意加入了一道质量门禁(content_review),专为 Agent 写作场景兜底。
AI 初稿难免偶发幻觉、虚构细节或车轱辘话。为了防止有瑕疵的内容直接流向下游,初稿导入后状态默认置为不可信(unchecked),此时封面生成与发布接口都会锁住。
可以通过第二个不同架构的模型做交叉核对,或者人工在本地看一眼。确认通过后执行命令放行:
zzp review --state ./posts/2026-10-16-my-article/workflow-state.json --status passed
封面生成
微信公众号封面非常麻烦:文章首图要求 2.35:1 比例(如 900x383 ),而在订阅号信息流和聊天卡片里,又会被居中裁剪为 1:1 正方形。每次找图、量尺寸、居中避开裁切区都要耗费很多精力。
这里直接集成了独立的封面排版插件 typeset-studio( npm: @akairos/typeset-studio)。
它采用纯算法排版与后端原生 Canvas 渲染,几毫秒就能完成文字折行与对比度计算并直接输出 PNG ,==不需要启动无头 Chrome==。排版模板同时兼顾 2.35:1 与 1:1 双视区,大标题、副标题与作者标识自动收拢在正方形安全区内,无论怎么裁切都不会吞掉字。

模板记录的是文字排版方式和图片位置、固定素材位置,所以只需要再次接收新的文本和新的图片,就是同一种风格,不同内容的图。
封面图这个东西我不止研究过一两种方案了,也写过好几篇文章分享基于satori 和 satori-html的方案,但痛点还是模板太灵活了,没人去写 html 和 css ,但当时来 V 站宣传了一下 IMGX, 也收获了 100 多 star ,说明还是挺现实的痛点。
直到今年有了@chenglou/pretext之后,我才感觉这才是最丝滑的方案,甚至渲染成图文混排后都不需要再关心具体的样式了。

此时,只需要关注文章本身就可以,再套上排好的模板,美观性就好很多了
文章排版样式
公众号自带的排版功能简陋,第三方编辑器又需要频繁全选复制粘贴,改两个字就得重来一遍。
日常写作只要确定了一套舒服的字号、配色和行距,几乎不需要每篇都换。这套流程将排版能力拆分成了两个独立的 npm 包:
-
排版底座与编辑器:myno( npm:
@akairos/myno),提供现代化的 Markdown 排版引擎。 -
微信富文本扩展:milkdown-article-plugins( npm:
@akairos/milkdown-article-plugins),为 Markdown 扩充了提示块 Callout 、导读卡( INTRO )、文末卡( CTA )以及徽章等公众号兼容样式。
在本地调试样式也很方便,一条命令就能在浏览器拉起可视化调试台:
zzp wechat-preview studio
调好一次视觉主题后,后续直接由 CLI 全自动导出内联样式,告别手动搬运。

==这个工作台的本意是可视化的调出自己中意的一套样式,然后保存到配置,此后就不再动它了。==
这些所有的前端面板,都是为了方便的得到一组样式。如果预设都不满意,也可以在左下角打开高级配置,插入自定义 css,就会覆盖原有样式。
如果你有多个账号,只要在 pipeline 里配好,这里就可以自由切换,这套配置会挂在对应的账号上
多账号绑定与发布
自动化发公众号会不会有安全隐患?这里完全放心。流水线使用的是微信官方开放平台的标准接口(draft/add 与素材上传),没有任何网页爬虫或逆向行为。
由于微信官方接口要求调用方服务器 IP 必须加入白名单,而本地电脑往往没有固定的公网 IP 。
所以我单独开源了一个轻量级代理服务 bun-wx-server。部署在任意一台有固定 IP 的服务器上即可,本地 CLI 带着 Token 请求它完成中转调用。
只需要让 AI 读这个项目,然后参考一下,自己实现和部署即可。
开源仓库清单
整套工具相关的开源项目清单如下:
-
[badge:brand|核心流水线] zzhub-pipeline( npm:
@akairos/pipeline,命令zzp):任务状态机,负责流程编排与状态持久化。 -
[badge:success|纯后端渲染] typeset-studio( npm:
@akairos/typeset-studio):兼顾双视区的算法封面渲染器,免 Chrome 极速出图。 -
[badge:brand|排版底座] myno( npm:
@akairos/myno):Milkdown 排版引擎与可视化排版调试台。 -
[badge:info|微信扩展] milkdown-article-plugins( npm:
@akairos/milkdown-article-plugins):为 Markdown 增加 Callout 、导读卡和徽章等排版插件。 -
[badge:warning|需公网 IP] bun-wx-server:部署在固定公网 IP 服务器上的微信官方接口安全代理。
-
[badge:info|笔记扩展] obsidian-wechat-publish:在 Obsidian 笔记里一键唤起发布流水线的社区插件。
交流与反馈
如果这套工具包能帮你省下发公众号的机械重复时间,欢迎给各个仓库点个 Star 。
遇到任何问题或有定制需求,欢迎在 GitHub 提 Issue 或 PR 一起完善。