- SignalDesk2小时前
分享一套我每天在用的公众号自动化流水线:写完 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 笔记里一键唤起发布流水线的社区插件。 交流与反馈 如果这套工具包能帮你省下发公众号的机械重复时间
- 情报分类:服务器与云资源
- 分类依据:内容涉及服务器、云资源或网络线路
- 信息来源:服务器 / V2EX
- 发布时间:2026/10/16 17:26:18
- 暂无回复