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

!INTRO 导读

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

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

web端发布文章

概览

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

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

图注:zzhub-pipeline 规范化四阶段自动化流水线

文章草稿

流水线的唯一输入源是最通用的标准 Markdown(.md),不管你平时用 Obsidian、VSCode、Typora,还是直接由大模型生成底稿。

把文件交给 CLI:

bash 复制代码
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),此时封面生成与发布接口都会锁住。

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

bash 复制代码
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 双视区,大标题、副标题与作者标识自动收拢在正方形安全区内,无论怎么裁切都不会吞掉字。

web界面

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

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

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

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

文章排版样式

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

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

  • 排版底座与编辑器:myno(npm: @akairos/myno),提供现代化的 Markdown 排版引擎。

  • 微信富文本扩展:milkdown-article-plugins(npm: @akairos/milkdown-article-plugins),为 Markdown 扩充了提示块 Callout、导读卡(INTRO)、文末卡(CTA)以及徽章等公众号兼容样式。

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

bash 复制代码
zzp wechat-preview studio

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

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

这些所有的前端面板,都是为了方便的得到一组样式。如果预设都不满意,也可以在左下角打开高级配置,插入自定义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 一起完善。

相关推荐
陶醉的松鼠1 小时前
前端容易忽略的 debugger 调试技巧
前端
我命由我123451 小时前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
龙九山1 小时前
我的 10 个 npm 插件,差点被 AI 判了死刑
前端·开源
deli0071 小时前
键盘按键测试:按下就点亮,keydown 延迟精确到 1 毫秒
前端
Amos_Web1 小时前
通过 Rspack 源码学 Rust(三):用 Default 与 std::mem::take 取出字段所有权
前端
MetWeave1 小时前
风怎么流动:色斑告诉你多大,告诉不了你去哪
前端·数据可视化
Amos_Web1 小时前
Rspack 源码解析(三十三):Module Federation 如何用 RemoteModule 与 ContainerEntryModule 表示远程代
前端
特立独行的猫A2 小时前
仓颉语言实现的Harness: 一口气派三个子代理,cjh 的并发不是“多线程“,是“进程树“
前端·harmonyos
Dumbness2 小时前
农历转换的 4 个边界:2 月 30 日能转出"正月十四"、小月没有三十、闰月、立春到春节之间的干支
前端·javascript