# 微信公众号自动发布 API 接口规范 ## 1. 官方 API 发布流程 1. **获取 Access Token**:全局凭据,有效期 2 小时,需定时刷新。 2. **上传正文图片**:调用 `uploadImage` 接口上传文章正文内图片,获取微信域名的图片 URL。 3. **上传封面图片**:调用素材管理接口上传封面图,获取永久素材的 `thumb_media_id`。 4. **新建草稿**:调用 `draft/add` 接口组装图文消息(HTML 内容)。 5. **发布文章**:调用 `freepublish/submit` 将草稿发布出去(仅生成文章链接,不推群发通知)。 > **注意**:"群发"(给所有粉丝推送通知)和"发布"(仅生成文章链接)是两个不同的接口。 ## 2. 关键接口 ### 获取 Access Token ``` GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET ``` - 返回:`access_token`(7200 秒有效) - 限制:调用服务器 IP 必须在公众号后台的 **IP 白名单** 中。 ### 上传图文消息内的图片 ``` POST https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN ``` - 格式:`multipart/form-data` - 参数字段:`media`(图片文件) - 格式限制:JPG、PNG,大小不超过 1MB - 返回:`url`(可直接用于正文 HTML `` 标签) - 特点:不计入素材库 10 万张限制 ### 新建草稿(draft/add) ``` POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN ``` #### 请求参数 | 参数 | 必填 | 说明 | |------|------|------| | `title` | 是 | 标题 | | `author` | 否 | 作者 | | `digest` | 否 | 单图文摘要,不填默认抓取正文前 54 字 | | `content` | 是 | 图文消息正文,支持 HTML,< 2 万字符,< 1MB | | `content_source_url` | 否 | "阅读原文"跳转链接 | | `thumb_media_id` | 是 | 封面图片素材 ID(必须是永久素材的 MediaID) | | `need_open_comment` | 否 | 是否打开评论(0 关闭,1 打开) | | `only_fans_can_comment` | 否 | 是否仅粉丝可评论(0 所有人,1 粉丝) | ### 发布图文(freepublish/submit) ``` POST https://api.weixin.qq.com/cgi-bin/freepublish/submit?access_token=ACCESS_TOKEN ``` ## 3. 内容格式与限制规范 | 项目 | 规范要求 | |------|----------| | 正文格式 | 必须为 HTML,不能包含 JS | | 字符限制 | 正文内容 < 20,000 字符,整体 < 1MB | | 图片限制 | JPG/PNG,< 1MB,必须使用 `uploadimg` 接口获取的 URL | | 封面图 | 必须是永久素材,获取 `thumb_media_id` | | 群发限制 | 客服接口推送图文条数限制在 1 条以内,否则返回 45008 | ## 4. 发布 vs 群发 - **发布**(`freepublish`):生成公开链接,粉丝不会收到通知,无次数限制。 - **群发**(`mass send`):粉丝会收到推送通知,订阅号每天限 1 次,服务号每月限 4 次。 ## Source - https://developers.weixin.qq.com/doc/service/en/api/notify/message/api_uploadimage.html - https://wind13.github.io/post/2024/how-to-publish-doc-by-wx-api/ - https://www.sohu.com/a/959262239_122563555 - GitHub: iamzifei/wechat-article-publisher-skill