公众号自动发布实战(一):三条路线选型与全流程搭建

1 阅读1分钟

我运营内容矩阵时攒了一批 Markdown 文章,要发到微信公众号。手动发的流程是:后台新建图文 → 复制内容重新排版 → 逐张传图 → 裁封面填摘要,一篇 20 分钟,全是重复劳动。

这个系列用公众号官方 API 实现一条命令完成「Markdown → 排版 → 传图 → 封面 → 草稿箱」全流程,实测 30 篇文章 20 分钟推完,30/30 成功。个人订阅号即可使用,无需认证、无需服务器。

系列共三篇:本篇(一)讲选型与整体架构;(二)讲 API 接通的细节与报错处理;(三)讲排版转换的三个硬限制与代码实现。

全流程架构图,本地 md 到微信草稿箱的五个环节

一、三条技术路线对比

路线原理致命伤
网页模拟登录模拟浏览器操作后台(Playwright 等)每次登录要管理员扫码、会话会过期,自动化变「自动打断」
第三方群发工具授权平台代发账号和文章数据过第三方服务器,安全不可控
官方 APIdraft/add 等接口直调订阅号每天群发限 1 次(可接受,见下文排期策略)

官方接口的调用门槛比想象低:AppID + AppSecret 换 access_token(7200 秒有效的调用凭证),之后所有操作凭 token 调用。本文方案用到的 4 个接口全部对个人订阅号开放:

接口用途
cgi-bin/tokenAppID+Secret 换 access_token
cgi-bin/media/uploadimg上传正文图片,返回微信图床 URL
cgi-bin/material/add_material上传封面为永久素材,返回 thumb_media_id
cgi-bin/draft/add新建草稿(另有 freepublish/submit 可直接发布)

二、整体流程设计

article.md
  ├─ 1. 解析 frontmatter(标题/作者/摘要)
  ├─ 2. Markdown → HTML,逐标签注入内联样式(微信只认内联样式)
  ├─ 3. 正文图片:下载外链图 → 压缩 → uploadimg 转存微信图床 → 替换 URL
  ├─ 4. 封面图:压缩至 64KB 内 → add_material(type=thumb) → thumb_media_id
  ├─ 5. draft/add 新建草稿
  └─ 6.(可选)freepublish/submit 直接发布

四接口调用时序图,标注每步输入输出

设计上有三个关键决策:

1. 推到草稿箱,不直发。 订阅号群发每天限 1 次,但推草稿箱不限量。批量推草稿 + 每日人工点发表,既绕开额度限制,又保留发布前最后一道人工检查。脚本留 --publish 开关,随时可切全自动。

2. token 本地缓存。 token 有效期 2 小时,批量推 30 篇只获取一次,缓存在本地文件,5 分钟余量提前刷新。

3. 推送后回写状态。 草稿创建成功后,脚本自动把文章 frontmatter 的 status 改为 已推草稿 并记录 wechat_media_id,本地稿件与草稿箱一一对应,批量维护不混乱。

三、实测效果

  • 30 篇 Markdown → 草稿箱:约 20 分钟,30/30 成功(手动预估 10 小时)
  • 166 张正文图全部自动转存微信图床,零外链残留
  • 瓶颈在图片转存(下载 + 压缩 + 上传),纯接口调用只占零头

四、环境与依赖

pip install markdown requests pillow

凭证通过环境变量或 .env 文件注入(WECHAT_APPID / WECHAT_APPSECRET),不写死在代码里。

下篇预告

架构跑通只是开始,真正耗时间的是调试期的报错。下篇《公众号自动发布实战(二)》逐个拆解:40164 IP 白名单(家用宽带动态 IP 的应对)、token 失效、额度限制,附实测整理的报错对照表和排期策略实现。

如果这篇对你有用,欢迎关注看「AI 工具人 PM 实战」系列更新;你的内容分发链路是全自动还是半自动,卡在哪一环?评论聊聊;觉得有用就收藏备用。