用 60 行 Python 脚本,把写好的内容发到公众号
你是不是也这样:文章在本地写得好好的,要发公众号时却得登后台、复制粘贴、调格式、传图片、再点发布。
内容在本地,发布在网页,中间全靠手。
其实发一篇公众号图文,底层就三个接口。用 requests 写个不到 60 行的小脚本,就能把"写好的内容"直接变成草稿箱里的一篇。
一、发公众号到底要几步
微信官方把"发文章"拆成了一串标准接口,但最小可用链路只有三步:
二、核心代码(不到 60 行)
整个脚本只依赖 requests,四个函数串起来:
API = "https://api.weixin.qq.com/cgi-bin""""1) 稳定版接口拿 token,每次现取,不缓存""" "grant_type": "client_credential", return resp["access_token"]def upload_image(token, path): """2) 传封面图,返回 media_id(永久素材,≤10MB)"""f"{API}/material/add_material?access_token={token}&type=image", files={"media": open(path, "rb")}, def upload_article_image(token, path): """3) 传正文里的图,返回 mmbiz 链接(≤1MB,微信会过滤外链图)"""f"{API}/media/uploadimg?access_token={token}", files={"media": open(path, "rb")}, def publish_draft(token, title, html, cover_path): cover = upload_image(token, cover_path) f"{API}/draft/add?access_token={token}", 封面 + 建草稿这两步,就这么多。
三、三步上手
填凭据:把脚本里的 APPID / APPSECRET 换成你的(后台「基本配置」里拿)跑命令:直接喂一个 Markdown 文件,脚本会自动转 HTML、本地化正文图、建草稿python minimal_publish.py \ --md 文章.md \ --cover 封面.png
跑完,登录公众号后台「草稿箱」就能看到这篇,点「发布」即可。
四、一个必须知道的坑:正文图要本地化
这是新手必踩的:微信会过滤掉正文里的外链图片。你直接把图床链接写进正文,读者打开是裂图。
所以正文里的每张图,都得先走 media/uploadimg 上传,换成微信自己的 mmbiz 链接。
好消息是,上面那个脚本已经帮你做了——它会扫描 Markdown 里的 ,自动上传并替换成 mmbiz 链接,你只需要把图片放在本地、在 Markdown 里正常引用就行。
注意单张正文图上限 1MB,超了微信会拒收,记得先压缩。
调用接口的服务器IP 必须加进公众平台「IP 白名单」,否则报 40164接口需要已认证服务号,个人订阅号大部分用不了。封面上限 10MB,正文图单张 ≤1MB六、想要更全自动?
如果你后面真的每天发、需要"一行命令直接发布 + 等结果回调 + 多实例不互踢",那才需要上完整版:token 双层缓存、并发锁、AES 回调验签……这些我都打包好了放在同一个仓库里,需要时再上,不急。但现在,这 60 行已经够你把重复劳动省下来了。
写在最后
把重复劳动交给脚本,把精力留给真正重要的事——写内容。
上面这套极简脚本和配套说明都在仓库里,照着三步就能跑起来。如果你是那种"能少写一行是一行"的人,这版应该正合适。
觉得有用就点个「在看」,或者转发给那个还在手动搬文章的朋友。