返回集市
文章阿康

开源!全套公众号写作、封面、发布自动化工具包!

!INTRO 导读 分享一套我每天在用的公众号自动化流水线:写完 Markdown 丢给 CLI,从格式归档、AI 审校、纯算法封面生成到送进微信官方草稿箱,全自动跑完。 写公众号很耗时间的通常是文章写完后的各种发布杂活:排版样式贴进编辑器经常格式错乱、封面要在 2.35:1 长图和 1:1 正方形之间反复裁剪、多账号还得频繁退登切换。为了把这套日常发布流程

!INTRO 导读

分享一套我每天在用的公众号自动化流水线:写完 Markdown 丢给 CLI,从格式归档、AI 审校、纯算法封面生成到送进微信官方草稿箱,全自动跑完。

写公众号很耗时间的通常是文章写完后的各种发布杂活:排版样式贴进编辑器经常格式错乱、封面要在 2.35:1 长图和 1:1 正方形之间反复裁剪、多账号还得频繁退登切换。为了把这套日常发布流程彻底自动化,我写了一套命令行工具,并把相关的几个核心模块全部开源了出来。

0.61

概览

主执行工具是 zzhub-pipeline(npm 包名 @akairos/pipeline,终端简写为 zzp)。

它的定位是一个命令行任务状态机,纯本地运行、可自部署,对终端与各类 Agent 极其友好。整个流水线严格按照准备、审核、渲染、发布四个阶段顺序流转,中间所有状态和产物都会持久化保存在本地目录中。即使中途某一步网络超时中断,再次执行也能断点续跑,不需要推倒重来。

zzhub-pipeline 自动化流水线运作架构

文章草稿

流水线的唯一输入源是最通用的标准 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 管理。

1.00

上面是我之前走本地CLI发布的记录,后面迁移到云上就非常爽了。==因为之前靠Electron打通本地调用,所以离开电脑就没法再发文章了==,很蛋疼。上云之后,我就完全抛弃了客户端,直接全走Web端就是通的,手机上打开浏览器就能写能发!

内容审核

流水线里特意加入了一道质量门禁(content_review),专为 Agent 写作场景兜底。

AI 初稿难免偶发幻觉、虚构细节或车轱辘话。为了防止有瑕疵的内容直接流向下游,初稿导入后状态默认置为不可信(unchecked),此时封面生成与发布接口都会锁住。

可以通过第二个不同架构的模型做交叉核对,或者人工在本地看一眼。确认通过后执行命令放行:

zzp review --state ./posts/2026-10-16-my-article/workflow-state.json --status passed

!TIP 交叉审校

用一款模型写完初稿后,可以用另一款不同架构的模型(如 Claude 或 DeepSeek 或 Gemini )跑盲审,专挑错别字、事实硬伤和多余套话。

封面生成

微信公众号封面非常麻烦:文章首图要求 2.35:1 比例(如 900x383),而在订阅号信息流和聊天卡片里,又会被居中裁剪为 1:1 正方形。每次找图、量尺寸、居中避开裁切区都要耗费很多精力。

这里直接集成了独立的封面排版插件 typeset-studio(npm: @akairos/typeset-studio)。

它采用纯算法排版与后端原生 Canvas 渲染,几毫秒就能完成文字折行与对比度计算并直接输出 PNG,==不需要启动无头 Chrome==。排版模板同时兼顾 2.35:1 与 1:1 双视区,大标题、副标题与作者标识自动收拢在正方形安全区内,无论怎么裁切都不会吞掉字。

1.00

模板记录的是文字排版方式和图片位置、固定素材位置,所以只需要再次接收新的文本和新的图片,就是同一种风格,不同内容的图。

封面图这个东西我不止研究过一两种方案了,也写过好几篇文章分享基于satori 和 satori-html的方案,但痛点还是模板太灵活了,没人去写html和css,但当时去V站宣传了一下,也收获了100多star,说明还是挺现实的痛点。

直到今年有了@chenglou/pretext之后,我才感觉这才是最丝滑的方案,甚至渲染成图文混排后都不需要再关心具体的样式了。

1.00

此时,只需要关注文章本身就可以,再套上排好的模板,美观性就好很多了

文章排版样式

公众号自带的排版功能简陋,第三方编辑器又需要频繁全选复制粘贴,改两个字就得重来一遍。

日常写作只要确定了一套舒服的字号、配色和行距,几乎不需要每篇都换。这套流程将排版能力拆分成了两个独立的 npm 包:

  • 排版底座与编辑器:myno(npm: @akairos/myno),提供现代化的 Markdown 排版引擎。
  • 微信富文本扩展:milkdown-article-plugins(npm: @akairos/milkdown-article-plugins),为 Markdown 扩充了提示块 Callout、导读卡(INTRO)、文末卡(CTA)以及徽章等公众号兼容样式。

在本地调试样式也很方便,一条命令就能在浏览器拉起可视化调试台:

zzp wechat-preview studio

调好一次视觉主题后,后续直接由 CLI 全自动导出内联样式,告别手动搬运。

1.00

==这个工作台的本意是可视化的调出自己中意的一套样式,然后保存到配置,此后就不再动它了。==

这些所有的前端面板,都是为了方便的得到一组样式。如果预设都不满意,也可以在左下角打开高级配置,插入自定义css,就会覆盖原有样式。

如果你有多个账号,只要在pipeline里配好,这里就可以自由切换,这套配置会挂在对应的账号上

多账号绑定与发布

自动化发公众号会不会有安全隐患?这里完全放心。流水线使用的是微信官方开放平台的标准接口(draft/add 与素材上传),没有任何网页爬虫或逆向行为。

由于微信官方接口要求调用方服务器 IP 必须加入白名单,而本地电脑往往没有固定的公网 IP。

所以我单独开源了一个轻量级代理服务 bun-wx-server。部署在任意一台有固定 IP 的服务器上即可,本地 CLI 带着 Token 请求它完成中转调用。

只需要让AI读这个项目,然后参考一下,自己实现和部署即可。

!IMPORTANT 安全底线

==只发布到草稿箱,绝不私自群发==。最终推送必须由作者在手机端扫码预览后手动点击群发,避免自动化失误导致内容误发。手里有多个账号时,在配置里加上别名即可一键分发。

开源仓库清单

整套工具相关的开源项目清单如下:

  • 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 笔记里一键唤起发布流水线的社区插件。

!CTA 交流与反馈

如果这套工具包能帮你省下发公众号的机械重复时间,欢迎给各个仓库点个 Star。

遇到任何问题或有定制需求,欢迎在 GitHub 提 Issue 或 PR 一起完善。