草稿推送网关 WECHAT DRAFT API

CLOUDFLARE WORKERS · 微信公众号草稿 API

一行 API,把文章送进公众号草稿箱。

传入 Markdown 或 HTML,服务自动完成外链图片转存、封面素材上传与草稿创建。 排版与发布仍由你在公众号后台人工确认,安全可控。

DRAFT ENDPOINT https://wx-draft-worker.pages.dev/api/draft
POST /api/draft MARKDOWN / HTML
curl -X POST https://wx-draft-worker.pages.dev/api/draft \
  -H "X-API-Key: wxk_你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "我的第一篇文章",
    "author": "小编",
    "contentType": "markdown",
    "content": "# 标题\n\n正文支持 **Markdown**,图片会自动转存",
    "cover": "https://example.com/cover.png"
  }'
返回{"ok":true,"data":{"media_id":"..."}}
ALL ENDPOINTS
POST /api/draft新建草稿
GET /api/drafts草稿箱列表
DELETE /api/drafts/:mediaId删除草稿
GET /api/health配置自检
4业务接口
自动图片转存
D1记录存储
0服务器依赖

快速开始

三步:领取令牌 → 调用接口 → 到公众号后台确认草稿。整个过程不需要服务器与备案。

图片自动转存

正文中的外链图、Base64 图自动上传到微信域名,解决草稿里图片不显示的问题。

Markdown 直传

contentType 设为 markdown 即可,标题、列表、代码块、引用自动转成微信可用 HTML。

令牌与后台

多令牌签发、随时禁用;推送记录、成功率、耗时统计一屏掌握。

零运维

跑在 Cloudflare 边缘网络,冷启动毫秒级,全球可用,无需自备服务器。

在线试用

后台粘贴标题与正文即可一键推送,不用写代码就能验证排版效果。

数据自持

记录存放于你自己的 D1 数据库,不经过任何第三方中转,密钥仅存于 Worker 加密变量。

调用示例

在请求头携带 X-API-Key,也可使用 Authorization: Bearer?key= 查询参数。

cURL
curl -X POST https://wx-draft-worker.pages.dev/api/draft \
  -H "X-API-Key: wxk_你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "我的第一篇文章",
    "author": "小编",
    "contentType": "markdown",
    "content": "# 标题\n\n正文支持 **Markdown**,图片会自动转存",
    "cover": "https://example.com/cover.png"
  }'
Python
import requests

r = requests.post(
    "https://wx-draft-worker.pages.dev/api/draft",
    headers={"X-API-Key": "wxk_你的令牌"},
    json={
        "title": "我的第一篇文章",
        "author": "小编",
        "contentType": "markdown",
        "content": "# 标题\n\n正文里的外链图片会被自动转存到微信域名",
        "cover": "https://example.com/cover.png",
    },
    timeout=120,
)
print(r.json())   # {"ok": true, "data": {"media_id": "...", ...}}
JavaScript
const res = await fetch("https://wx-draft-worker.pages.dev/api/draft", {
  method: "POST",
  headers: {
    "X-API-Key": "wxk_你的令牌",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "我的第一篇文章",
    contentType: "markdown",
    content: "## Hello\n\n这是正文",
    cover: "https://example.com/cover.png",
  }),
})
console.log(await res.json())
使用前必做:把 Cloudflare 出口 IP 段加入公众号白名单

Worker 每次调用的出口 IP 都可能不同,没有加白名单时微信会直接拒绝,报错 40164 invalid ip … not in whitelist

请到「公众号后台 → 设置与开发 → 基本配置(或安全中心)→ IP 白名单」,把下面 全部 15 个 IPv4 段一次性粘进去(每行一段),保存后约 1~5 分钟生效:

展开 / 收起 Cloudflare 全部 IPv4 段(15 段)
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22

另注:调用方须携带浏览器 UA,否则会被 Cloudflare 边缘拦截(403 error 1010); 若绑定了自定义域名,还要在域名安全性里关闭 Bot Fight Mode 与浏览器完整性检查。

接口文档

业务接口均需携带令牌;返回统一为 { ok: true, data: {...} }{ ok: false, error: "..." }

方法路径说明
POST/api/draft 新建草稿。字段:title / author(≤8 字)/ digest / content(必填)/ cover / contentType(html|markdown)/ contentSourceUrl / needOpenComment / onlyFansCanComment
GET/api/drafts 微信草稿箱列表,参数 offset / count(≤20)
DELETE/api/drafts/:mediaId 删除指定草稿
GET/api/health 配置自检:公众号凭据、鉴权状态、数据库连通性
推送成功返回 media_id,即草稿编号。请到「公众号后台 → 草稿箱」查看, 确认排版无误后再群发 —— 本服务只创建草稿,绝不自动发布。