图片自动转存
正文中的外链图、Base64 图自动上传到微信域名,解决草稿里图片不显示的问题。
CLOUDFLARE WORKERS · 微信公众号草稿 API
传入 Markdown 或 HTML,服务自动完成外链图片转存、封面素材上传与草稿创建。 排版与发布仍由你在公众号后台人工确认,安全可控。
https://wx.seurl.eu.org/api/draft
curl -X POST https://wx.seurl.eu.org/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":"..."}}POST /api/draft新建草稿GET /api/drafts草稿箱列表DELETE /api/drafts/:mediaId删除草稿GET /api/health配置自检三步:领取令牌 → 调用接口 → 到公众号后台确认草稿。整个过程不需要服务器与备案。
正文中的外链图、Base64 图自动上传到微信域名,解决草稿里图片不显示的问题。
contentType 设为 markdown 即可,标题、列表、代码块、引用自动转成微信可用 HTML。
多令牌签发、随时禁用;推送记录、成功率、耗时统计一屏掌握。
跑在 Cloudflare 边缘网络,冷启动毫秒级,全球可用,无需自备服务器。
后台粘贴标题与正文即可一键推送,不用写代码就能验证排版效果。
记录存放于你自己的 D1 数据库,不经过任何第三方中转,密钥仅存于 Worker 加密变量。
在请求头携带 X-API-Key,也可使用 Authorization: Bearer 或 ?key= 查询参数。
curl -X POST https://wx.seurl.eu.org/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"
}'
import requests
r = requests.post(
"https://wx.seurl.eu.org/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": "...", ...}}
const res = await fetch("https://wx.seurl.eu.org/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())
Worker 每次调用的出口 IP 都可能不同,没有加白名单时微信会直接拒绝,报错
40164 invalid ip … not in whitelist。
请到「公众号后台 → 设置与开发 → 基本配置(或安全中心)→ IP 白名单」,把下面 全部 15 个 IPv4 段一次性粘进去(每行一段),保存后约 1~5 分钟生效:
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,即草稿编号。请到「公众号后台 → 草稿箱」查看,
确认排版无误后再群发 —— 本服务只创建草稿,绝不自动发布。