
微信公众号草稿箱新增草稿接口怎么接?draft_add 注意事项、字段限制和常见报错
结合微信公众号 draft_add 官方说明,梳理新增草稿接口的服务器端调用要求、字段限制、图片与商品卡片注意事项,以及常见接入问题。
如果你已经在做公众号自动化,迟早会遇到一个非常具体的问题:
微信公众号草稿箱新增草稿接口 draft_add 到底怎么接,最容易踩哪些坑?
这个问题比“草稿 API 是什么”更接近真实接入,因为一旦你真正开始调接口,就会马上遇到这些细节:
- 这个接口能不能前端直接调
- 图文消息和图片消息结构是不是一样
content里能不能直接放外链图片- 封面图和正文图各自需要什么素材 id
- 商品卡片为什么会报错
微信官方原始文档:
这篇专门围绕 微信公众号官方 draft_add 说明,整理新增草稿时最容易被忽略的接入注意事项。
1. draft_add 是什么
官方接口英文名是:
draft_add调用方式是:
POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN它的作用很明确:
把图文消息或图片消息新增到公众号草稿箱。
这意味着它解决的不是“排版转换”,而是“把内容真正推进到草稿箱”。
如果你还在区分:
- Markdown 转微信 HTML
- 图文消息草稿
可以先看:
2. 最先要记住的限制:只能在服务端调用
这条是最重要的。
根据官方说明,这个接口:
应在服务器端调用,不可在前端(小程序、网页、APP 等)直接调用。
所以如果你准备这样做:
- 浏览器直接请求微信接口
- 小程序里直接请求
draft_add - 客户端 App 里直接带 token 调用
那方向就是错的。
更稳的结构应该是:
- 前端把内容提交到你自己的服务端
- 服务端获取或刷新
access_token - 服务端再去调用
draft_add
这也是为什么像 md2wechat Agent API 这类服务,会强调接口必须放在服务端接入,而不是暴露给前端。
3. 新增到草稿箱,不等于永久保存
官方还有两个很容易被忽略的行为说明:
- 上传到草稿箱中的素材,一旦被群发或发布,就会从草稿箱移除
- 新增草稿后,可以在公众号平台官网的草稿箱里查看和管理
这两个点决定了你的系统设计不能假设:
- 草稿箱是永久仓库
- 同一个
media_id会一直留在那里
更现实的理解应该是:
- 草稿箱是“发布前状态”
- 不是长期存储层
如果你要做自动化工作流,草稿创建成功后最好自己保存业务侧记录,而不是完全把“是否存在”托管给微信草稿箱。
4. 请求体里最关键的结构是什么
官方请求体的核心字段是:
{
"articles": [
{
"article_type": "news",
"title": "标题",
"content": "正文 HTML 或正文内容"
}
]
}但这里真正容易出问题的是:
articles 里不同类型的结构并不一样。
官方支持两类:
news:图文消息newspic:图片消息
如果你把两者当成同一种结构处理,接入时很容易出错。
5. news 图文消息最容易踩的几个坑
5.1 title、author 不要传 Unicode 转义字符串
官方特别强调:
- 不要传
"\u4f5c\u8005\u540d"这种形式 - 直接传正常字符串即可
也就是说,服务端在处理标题和作者时,应该传真实字符,而不是手动再做 Unicode 转义。
5.2 content 不是“任意 HTML 都能过”
官方说明里,content 的约束非常关键:
- 支持 HTML 标签
- 必须少于 2 万字符
- 小于 1 MB
- 会去除 JS
- 涉及图片 URL 时,必须来自“上传图文消息内的图片获取 URL”接口
- 外部图片 URL 会被过滤
这意味着一个常见误区是:
我已经有 HTML 了,直接把外链图片塞进去就行。
实际上不行。
如果正文里还是外部图片地址,微信会过滤掉。
所以图文消息真正稳定的路径通常是:
- 先准备微信可接受的图片 URL 或素材
- 再生成最终内容
- 最后调用草稿接口
如果你已经在用自己的发布服务,这也是为什么“图片处理”和“草稿创建”通常要拆成两步,而不是一个接口里糊过去。
5.3 thumb_media_id 不是可选心态字段
官方说明里,article_type = news 时:
thumb_media_id必填- 而且必须是永久
MediaID
这意味着封面图不是简单传一个公网 URL 就结束。
它需要先变成微信认可的永久素材 id。
6. newspic 图片消息和图文消息不是一回事
如果你接的是 newspic,重点会转到这些字段:
image_info.image_listcover_info.crop_percent_listproduct_info.footer_product_info.product_key
这里有两个实际约束特别值得注意:
6.1 图片消息最多 20 张图
官方说明里明确写了:
- 图片消息里的图片数量最多为 20 张
- 首张图片即为封面图
如果你做的是内容工厂或批量生成,服务端在提交前最好先做数量校验,不要把超量图片直接交给微信接口报错。
6.2 商品卡片不是所有账号都能直接用
如果你在图片消息里插商品相关信息,官方给了三类典型报错:
53404:账号已被限制带货能力53405:插入商品信息有误53406:请先开通带货能力
这几个错误码的含义很直接:
商品卡片能力不是“字段传对了就行”,还依赖账号侧的带货能力和商品状态。
所以如果你计划把商品卡片放进草稿生成链路,服务端最好提前区分:
- 普通图文草稿
- 带商品卡片的图片消息草稿
这两类不要当成同一条默认流程。
7. 裁剪字段为什么容易出问题
官方提供了两类裁剪方式:
- 图文消息封面裁剪:
pic_crop_235_1、pic_crop_1_1 - 图片消息封面裁剪:
cover_info.crop_percent_list
这些字段都不是像素坐标,而是:
- 以左上角
(0,0)、右下角(1,1)为坐标系 - 传归一化比例坐标
这意味着如果你把前端像素裁剪框的值直接原样传过去,通常不对。
更稳的做法是:
- 前端拿到像素裁剪框
- 服务端或前端先换算成比例坐标
- 再按微信要求拼成对应字段
如果没有裁剪需求,就不要为了“看起来更完整”硬塞裁剪参数。
8. 接入时最容易忽略的排错顺序
实际接 draft_add 时,建议按这个顺序排:
- 先确认接口一定在服务端调用
- 再确认
access_token有效 - 再区分是
news还是newspic - 再检查封面素材和正文图片来源是否符合微信要求
- 最后再检查商品卡片和裁剪字段
这样做的原因是,真正最常见的问题通常不是“JSON 写错了”,而是:
- 调用位置错了
- 图片来源不符合微信要求
- 封面素材不是永久
MediaID - 账号没有商品能力
9. 一个更实用的理解方式
可以把 draft_add 理解成:
- 它不是“富文本保存接口”
- 它是“把合规内容推入公众号草稿箱”的接口
所以它依赖的不只是正文本身,还依赖:
- 服务端调用位置
- token
- 素材体系
- 图片来源
- 账号能力
很多团队最后会把这层封装成自己的服务端能力,而不是让每个业务方直接碰原始微信接口。
总结
如果你在接微信公众号草稿箱新增草稿接口 draft_add,最该优先记住的是这几件事:
- 必须在服务端调用,不能前端直调
- 草稿发布后会从草稿箱移除
news和newspic的结构不同- 图文消息里的图片 URL 不能直接用外链
thumb_media_id必须是永久MediaID- 商品卡片能力依赖账号状态,常见报错是
53404、53405、53406
如果你要把这层能力接入更完整的 Agent 工作流,建议继续结合下面这些内容一起看:
更多文章

Agent First 的微信公众号工作流应该长什么样
从内容入口、排版、草稿、素材和发布链路角度,解释为什么微信公众号自动化应该围绕 Agent 工作流来设计。

AI Agent 如何自动创建公众号草稿?从内容生成到草稿入库的最短路径
围绕 AI Agent 自动创建公众号草稿的真实路径写的一篇文章,解释为什么草稿接口是比“只转 HTML”更接近业务价值的能力。

obsidian-md2wechat:把 Obsidian 笔记一键转成微信公众号排版
介绍 obsidian-md2wechat 插件的定位、安装方式、主题能力和适用场景,帮助 Obsidian 用户更快接入微信公众号排版流程。
邮件列表
加入我们的社区
订阅邮件列表,及时获取最新消息和更新