一句话概述:调研确认微信公众号支持官方内容发布服务端 API,可封装成 CLI 一键发布;今日头条(头条号)无官方发布 API。本文给出公众号接入的完整路径、接口清单与落地建议。
一、背景与目标
- 目标:为 KnowFlow 的
publish能力评估"一键发布到内容平台"的可行性。 - 调研对象:腾讯微信公众号、字节跳动今日头条(头条号)。
- 结论先行:微信公众号可正式接入(官方 API),今日头条不支持(无官方发布 API)。
二、调研结论总览
| 维度 | 微信公众号 | 今日头条(头条号) |
|---|---|---|
| 官方发布 API | ✅ 有(草稿 + 发布) | ❌ 无 |
| CLI 可封装性 | ✅ 高(标准 REST) | ❌ 需逆向 / 第三方 |
| 门槛 | 认证主体 + IP 白名单 | 无官方入口 |
| 内容格式 | HTML 图文 | — |
| 建议 | 可正式接入 | 不建议,或仅手动分发 |
三、微信公众号发布 API 清单
微信公众平台(服务号/订阅号)提供了完整的内容发布服务端接口,纯 CLI/脚本即可发布文章:
| 能力 | 接口 | 说明 |
|---|---|---|
| 上传图文内图片 | /cgi-bin/media/uploadimg |
上传正文插图 |
| 新增草稿 | /cgi-bin/draft/add |
图文/图片消息写入草稿箱 |
| 更新草稿 | /cgi-bin/draft/update |
修改草稿 |
| 发布草稿 | /cgi-bin/freepublish/submit |
将草稿提交发布(真正发出去) |
| 发布状态查询 | /cgi-bin/freepublish/get |
查询发布任务状态 |
| 获取已发布列表 | /cgi-bin/freepublish/batchget |
拉取历史文章 |
关键限制(务必注意)
- 需要
access_token(通过 AppID + AppSecret 获取),并在公众平台后台配置 IP 白名单。 - 2025 年 7 月起,个人主体账号、未认证企业账号、不支持认证的账号已被回收发布接口权限——必须认证的服务号/订阅号才能调用。
- 微信认证费用:每年 300 元。
- 图文正文
content字段为 HTML,需自行做 Markdown → HTML 转换。
四、踩坑与修复(核心)
1. 以为"今日头条也有开放 API",实际没有
- 现象:
developer.toutiao.com重定向到小程序开放平台,找不到头条号图文发布接口。 - 根因:字节跳动的开放平台主要面向小程序/小游戏/抖音开放能力,头条号后台(
mp.toutiao.com)不提供第三方图文发布 API。 - 修复:改为微信公众号方案;头条号仅做手动分发或后续评估第三方工具。
- 可复用经验:做平台接入前先确认"官方开放 API 是否存在",避免在逆向接口上浪费时间与承担封号风险。
2. 公众号发布接口有主体资质门槛
- 现象:未认证账号调用发布接口会失败。
- 根因:2025 年 7 月起微信回收了个人/未认证主体的发布权限。
- 修复:使用已认证的服务号/订阅号,并配置 IP 白名单。
- 可复用经验:接入前先确认主体认证状态,否则开发完成后才发现权限被回收。
3. 图文正文是 HTML 而非 Markdown
- 现象:
draft/add的content字段需要 HTML。 - 根因:微信图文编辑器内部使用 HTML 存储。
- 修复:复用已有 Markdown 处理链路,增加 Markdown → HTML 转换步骤。
- 可复用经验:内容平台接入时,格式转换是常见且必须提前规划的一环。
五、落地建议(KnowFlow 场景)
封装
wechat-mpadapter,走draft/add→freepublish/submit流程,CLI 形如:knowflow publish article.md --platform wechat --appid xxx --secret xxx复用现有 Markdown 处理链路做 Markdown → HTML 转换。
今日头条暂不支持官方 API,文档中明确标注"仅支持手动分发"。
六、结论
- 微信公众号支持官方内容发布 API,可封装成 CLI 一键发布,是三者中最成熟的方案。
- 今日头条(头条号)无官方发布 API,不建议逆向接入。
- 接入公众号需:认证主体 + IP 白名单 + HTML 格式转换。
- 社区有成熟库(如
wechat-mp、wechatpy),可加速 adapter 开发。