当前位置:首页>python>用60行Python脚本,把写好的内容发到公众号(不用背一套复杂工程)

用60行Python脚本,把写好的内容发到公众号(不用背一套复杂工程)

  • 2026-09-10 16:31:40
用60行Python脚本,把写好的内容发到公众号(不用背一套复杂工程)

用 60 行 Python 脚本,把写好的内容发到公众号

你是不是也这样:文章在本地写得好好的,要发公众号时却得登后台、复制粘贴、调格式、传图片、再点发布。

内容在本地,发布在网页,中间全靠手。

其实发一篇公众号图文,底层就三个接口。用 requests 写个不到 60 行的小脚本,就能把"写好的内容"直接变成草稿箱里的一篇。

一、发公众号到底要几步

微信官方把"发文章"拆成了一串标准接口,但最小可用链路只有三步:

  • 拿 access_token(调用任何接口的通行证)
  • 传封面图(走永久素材接口 material/add_material)
  • draft/add
     建草稿
  • 就这三步。草稿建好,登录后台点一下「发布」就完成了。

  • 至于"自动发布、结果回调、token 并发刷新"那些,都是锦上添花的工程化增强——一开始根本用不上。

二、核心代码(不到 60 行)

整个脚本只依赖 requests,四个函数串起来:

import json
import requests  
API = "https://api.weixin.qq.com/cgi-bin"
def get_token(): 
"""1) 稳定版接口拿 token,每次现取,不缓存"""
     resp = requests.post(
f"{API}/stable_token",         
      json={            
      "grant_type": "client_credential",            
      "appid": APPID,            
      "secret": APPSECRET,         
    },  
  timeout=20,     
).json()    
return resp["access_token"]
def upload_image(token, path):    
"""2) 传封面图,返回 media_id(永久素材,≤10MB)"""
resp = requests.post(      
f"{API}/material/add_material?access_token={token}&type=image",         
   files={"media": open(path, "rb")},        
  timeout=30,   
  ).json()  
return resp["media_id"]
def upload_article_image(token, path):   
"""3) 传正文里的图,返回 mmbiz 链接(≤1MB,微信会过滤外链图)"""
 resp = requests.post(    
f"{API}/media/uploadimg?access_token={token}",      
   files={"media": open(path, "rb")},      
   timeout=30,   
  ).json()   
return resp["url"]
def publish_draft(token, title, html, cover_path):  
"""4) 传封面 + 建草稿"""
   cover = upload_image(token, cover_path)   
    resp = requests.post(   
f"{API}/draft/add?access_token={token}",     
    data=json.dumps(         
    {         
"articles": [{     
"title": title,           
"content": html,           
"thumb_media_id": cover,        
"need_open_comment": 0,          
       }]      
       },      
       ensure_ascii=False,     
    ).encode("utf-8"),      
   timeout=30,  
   ).json()  
return resp["media_id"]

封面 + 建草稿这两步,就这么多。

三、三步上手

装依赖:pip install requests
填凭据:把脚本里的 APPID / APPSECRET 换成你的(后台「基本配置」里拿)
跑命令:直接喂一个 Markdown 文件,脚本会自动转 HTML、本地化正文图、建草稿
python minimal_publish.py \   --md 文章.md \   --cover 封面.png 

跑完,登录公众号后台「草稿箱」就能看到这篇,点「发布」即可。

四、一个必须知道的坑:正文图要本地化

这是新手必踩的:微信会过滤掉正文里的外链图片。你直接把图床链接写进正文,读者打开是裂图。

所以正文里的每张图,都得先走 media/uploadimg 上传,换成微信自己的 mmbiz 链接。

好消息是,上面那个脚本已经帮你做了——它会扫描 Markdown 里的 ![图](本地路径),自动上传并替换成 mmbiz 链接,你只需要把图片放在本地、在 Markdown 里正常引用就行。

注意单张正文图上限 1MB,超了微信会拒收,记得先压缩。
五、上线前避坑清单
调用接口的服务器IP 必须加进公众平台「IP 白名单」,否则报 40164
接口需要已认证服务号,个人订阅号大部分用不了。封面上限 10MB,正文图单张 ≤1MB
access_token
每次现取够用,但别高频乱刷,有调用配额

六、想要更全自动?

如果你后面真的每天发、需要"一行命令直接发布 + 等结果回调 + 多实例不互踢",那才需要上完整版:token 双层缓存、并发锁、AES 回调验签……这些我都打包好了放在同一个仓库里,需要时再上,不急。

但现在,这 60 行已经够你把重复劳动省下来了。

写在最后

把重复劳动交给脚本,把精力留给真正重要的事——写内容。

上面这套极简脚本和配套说明都在仓库里,照着三步就能跑起来。如果你是那种"能少写一行是一行"的人,这版应该正合适。

觉得有用就点个「在看」,或者转发给那个还在手动搬文章的朋友。

最新文章

随机文章