接口文档

微信公众号素材管理和草稿发布 API 文档

目录
接口概述
基础信息和通用说明
Base URL: http://localhost:3001/api
通用响应格式
{
  "success": true,    // 请求是否成功
  "data": { },          // 响应数据(成功时)
  "error": "错误信息"  // 错误信息(失败时)
}
账号优先级

所有接口支持通过参数指定账号,优先级如下:

  1. 请求参数中的 appid + secret
  2. 配置中的默认账号
配置管理
管理公众号账号配置
GET /config/accounts
获取所有账号配置列表
响应示例
{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "name": "公众号名称",
      "appid": "wx...",
      "secret": "***",
      "realSecret": "真实secret",
      "isDefault": true,
      "remark": "备注"
    }
  ]
}
POST /config/accounts
创建新的公众号账号配置
请求参数
参数 类型 必填 说明
name string 公众号名称
appid string 公众号 AppID
secret string 公众号 AppSecret
remark string 备注信息
PUT /config/accounts/:id
更新指定账号配置
DELETE /config/accounts/:id
删除指定账号配置
POST /config/accounts/:id/default
设置指定账号为默认账号
图片上传
上传图片到微信服务器
POST /upload/image
上传图片获取微信素材URL
请求参数
参数 类型 必填 说明
file file 图片文件 (JPG/PNG/GIF/WebP, 最大10MB)
appid string 公众号 AppID(覆盖默认账号)
secret string 公众号 AppSecret(覆盖默认账号)
响应示例
{
  "success": true,
  "url": "https://mmbiz.qpic.cn/...",
  "mediaId": "media_id"
}
POST /upload/thumb
上传封面图(永久素材),返回 MediaID 用于草稿发布
注意:封面图需要先上传获取 MediaID,才能在发布草稿时使用
草稿管理
创建和管理公众号草稿
POST /draft/create
创建新的图文草稿
请求参数
参数 类型 必填 说明
title string 文章标题
content string 正文内容(HTML格式)
thumbMediaId string 封面图 MediaID
author string 作者名称
digest string 文章摘要
needOpenComment boolean 是否开启评论(默认true)
appid string 公众号 AppID
secret string 公众号 AppSecret
响应示例
{
  "success": true,
  "mediaId": "draft_media_id",
  "previewUrl": "https://mp.weixin.qq.com/..."
}
GET /draft/list
获取草稿列表
查询参数
offset number 偏移量(默认0)
count number 数量(默认20,最大20)
appid string 公众号 AppID
secret string 公众号 AppSecret
POST /draft/delete
删除指定草稿
请求参数
mediaId string 草稿 MediaID
微信API
微信基础接口封装
GET /wechat/token
获取 AccessToken
GET /wechat/materials
获取永久素材列表
查询参数
type string 素材类型:image/voice/video/thumb(默认image)
offset number 偏移量(默认0)
count number 数量(默认20)
GET /wechat/account-info
获取公众号账号信息
调用示例
Python 和 JavaScript 调用示例
Python 示例 - 上传图片
import requests

# 上传图片
url = "http://localhost:3001/api/upload/image"
files = {'file': open('image.jpg', 'rb')}
data = {
    'appid': 'your_appid',      # 可选,覆盖默认账号
    'secret': 'your_secret'     # 可选
}

response = requests.post(url, files=files, data=data)
result = response.json()
print(result['url'])  # 微信图片URL
Python 示例 - 发布草稿
import requests

# 1. 先上传封面图获取 media_id
thumb_resp = requests.post(
    "http://localhost:3001/api/upload/thumb",
    files={'file': open('cover.jpg', 'rb')},
    data={'appid': 'your_appid', 'secret': 'your_secret'}
).json()
thumb_media_id = thumb_resp['mediaId']

# 2. 发布草稿
draft_data = {
    "title": "文章标题",
    "content": "<p>文章内容</p>",
    "thumbMediaId": thumb_media_id,
    "author": "作者名",
    "appid": "your_appid",
    "secret": "your_secret"
}

response = requests.post(
    "http://localhost:3001/api/draft/create",
    json=draft_data
)
result = response.json()
print(result['previewUrl'])  # 草稿预览链接
JavaScript 示例 - 发布草稿
// 发布草稿
async function publishDraft() {
  const response = await fetch('http://localhost:3001/api/draft/create', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      title: '文章标题',
      content: '<p>文章内容</p>',
      thumbMediaId: '封面图media_id',
      author: '作者',
      // 可选:指定账号
      appid: 'your_appid',
      secret: 'your_secret'
    })
  });

  const result = await response.json();
  if (result.success) {
    console.log('预览链接:', result.previewUrl);
  }
}
cURL 示例
# 上传图片
curl -X POST http://localhost:3001/api/upload/image \
  -F "file=@image.jpg" \
  -F "appid=your_appid" \
  -F "secret=your_secret"

# 发布草稿
curl -X POST http://localhost:3001/api/draft/create \
  -H "Content-Type: application/json" \
  -d '{
    "title": "文章标题",
    "content": "

文章内容

", "thumbMediaId": "media_id", "appid": "your_appid", "secret": "your_secret" }'