3.1 KiB
3.1 KiB
在 Python 中推送文章到微信公众号草稿箱,主要通过微信提供的 草稿箱 API 实现。
这个过程通常分为三步:获取 Access Token、上传封面图(素材)、以及 新增草稿。
1. 前期准备
你需要先在 微信公众平台 获取以下信息:
- AppID
- AppSecret
- 白名单配置:确保你运行代码的服务器 IP 已加入公众号后台的 IP 白名单。
2. 核心流程与代码实现
我们可以使用 Python 的 requests 库来完成。
第一步:获取 Access Token
这是调用所有 API 的“通行证”。
import requests
import json
def get_access_token(appid, secret):
url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"
res = requests.get(url).json()
return res.get('access_token')
第二步:上传封面图片
草稿箱要求文章必须有封面图,且封面图需要先上传到微信服务器获取 thumb_media_id。
def upload_thumb(access_token, image_path):
url = f"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type=image"
files = {'media': open(image_path, 'rb')}
res = requests.post(url, files=files).json()
return res.get('media_id') # 这就是 thumb_media_id
第三步:推送至草稿箱
最后,将文章标题、正文(HTML 格式)和封面 ID 提交。
def add_draft(access_token, title, content, thumb_id):
url = f"https://api.weixin.qq.com/cgi-bin/draft/add?access_token={access_token}"
# 文章数据结构
articles = {
"articles": [
{
"title": title,
"author": "YourName",
"digest": "摘要内容",
"content": content, # 支持 HTML 格式
"content_source_url": "", # 阅读原文链接
"thumb_media_id": thumb_id,
"need_open_comment": 0 # 是否打开评论
}
]
}
# 微信 API 要求发送 JSON 字符串,且处理中文需确保编码正确
data = json.dumps(articles, ensure_ascii=False).encode('utf-8')
res = requests.post(url, data=data).json()
return res
3. 常见问题提示
- 图片问题:如果你在
content(正文)里引用了外部图片链接,微信可能会屏蔽它们。建议先通过cgi-bin/media/uploadimg接口将图片上传到微信图床,获取微信内部链接后再放入 HTML 中。 - API 限制:草稿箱 API 每天的调用次数有限(通常为 10,000 次),对于个人/小团队来说完全够用。
- HTML 标签:微信正文支持的 HTML 比较基础,复杂的 CSS 样式可能会被过滤,建议使用标准的
p,span,strong,img等标签。
快速总结工具
| 步骤 | API 接口 | 目的 |
|---|---|---|
| 1 | /cgi-bin/token |
获取授权凭证 |
| 2 | /cgi-bin/material/add_material |
获取封面图 ID |
| 3 | /cgi-bin/draft/add |
写入草稿箱 |