Skip to content

内置 HTTP API

应用图形界面启动后,会自动在本机 30088 端口(BuiltInServerPort,见 env/.env)监听内置 Express 服务。其它程序可通过 HTTP 调用,与 GUI / CLI 共用同一套登录态与 pushData 发布记录。

与 CLI 的区别:HTTP API 依赖 GUI 主进程已运行(托盘/窗口在即可);CLI 可独立启动。单平台请求会等待上传完成或超时;多平台请求与 GUI 批量发布一致,提交到发布队列后立即返回,实际结果写入 pushData 发布记录。

基础地址http://127.0.0.1:30088

路由一览

方法路径说明
GET/返回 MatrixMedia API 欢迎页
GET/platforms返回 HTTP 支持的全部视频平台列表(JSON)
GET/creative-statements返回各平台支持的创作声明选项(对齐 GUI 批量设置)
POST/changeData读写本地 JSON 数据(账号树、发布历史等)
POST/publish发布视频到单平台或多平台

静态资源:/public/* 映射到 server/public

GET /platforms

查询 POST /publish 支持的全部视频平台(与 CLI cli publish 一致)。

响应示例

json
{
  "success": true,
  "platforms": [
    {
      "code": "dy",
      "name": "抖音",
      "aliases": ["douyin", "抖音"],
      "automated": true,
      "note": null,
      "hasConfig": true
    },
    {
      "code": "xhs",
      "name": "小红书",
      "aliases": ["xiaohongshu", "小红书"],
      "automated": true,
      "note": null,
      "hasConfig": true
    },
    {
      "code": "fqsp",
      "name": "番茄视频",
      "aliases": ["fanqie", "fq", "番茄视频"],
      "automated": false,
      "note": "已支持自动发布与审核状态回查",
      "hasConfig": true
    }
  ]
}

支持的视频平台

platform / platforms 可使用 code中文名,以下平台均可通过 HTTP 发布:

code平台别名自动化
dy抖音douyin / 抖音
sph视频号视频号
blbl哔哩哔哩bilibili / 哔哩哔哩
bjh百家号百家号
tt头条toutiao / 头条
ks快手kuaishou / 快手
xhs小红书xiaohongshu / 小红书
fqsp番茄视频fanqie / fq / 番茄视频可用

掘金文章请使用 CLI publish-article,当前无 HTTP 接口。

GET /creative-statements

查询各平台支持的创作声明选项,与 GUI「本地视频发布」批量设置创作声明一致。

响应字段

字段说明
default默认值,一般为 none
batchOptions全局批量下拉全部选项(value + label)
platforms按平台 code 列出 supports 与该平台可用 options
inputHTTP POST /publish 入参说明

声明 value 一览(也可用中文 label 或各平台页面原文案):

value说明备注
none无标注默认
ai_generatedAI 生成
fiction虚构演绎
marketing营销推广快手/头条不支持
personal_opinion个人观点小红书/头条不支持
repost转载
self_made_no_repost自制禁转载仅哔哩哔哩

POST /changeData

读写本地 JSON 数据,GUI 内部也使用此接口。

请求体(JSON)

字段说明
fileName数据文件名,如 accountpushData
type操作类型:add / update / delete / get / config
item具体数据项,结构随 fileNametype 变化

POST /publish

发布视频到单平台或多平台(本地路径或 http(s) 远程 URL)。参数解析与 cli publish 共用 parseMultiPublishRequest

请求体(JSON)

字段必填说明
platform单平台上表任一平台 code 或中文名,如 xhs / 小红书(与 platforms 二选一)
platforms多平台平台数组,可一次包含全部 8 个平台;如 ["dy","xhs","ks"] 或对象数组 [{ "platform": "dy", "phone": "138..." }, ...]
file本地视频绝对路径,或 http:// / https:// 远程视频 URL(会先下载到临时目录,全部平台发布结束后自动删除;定时发布则在到点执行时再下载)
title视频标题
phone二选一账号手机号(与 GUI 账号树一致);多平台时可作为默认值,单个平台对象内可覆盖
partition二选一完整 session,如 persist:13800138000抖音
bt2视频号短标(含视频号时强烈建议填写)
tags标签,支持空格 / 逗号分隔;HTTP 会按 GUI 批量发布习惯拆分后再按平台补 # 或去 #
publishAt一次性定时发布,格式 YYYY-MM-DD HH:mm:ss(多平台时需全部一致)
drafttrue 时保存到平台草稿箱,不直接发布
sphProductId视频号商品上架快捷字段(商品编号);仅视频号生效,等价于 platformOptions.sph.link.type=product
sphLink视频号链接对象,如 { "type": "product", "value": "商品编号" };与 sphProductId 同时传时优先 sphProductId
platformOptions平台专属参数容器;视频号商品也可用 platformOptions.sph.link,不会应用到其他平台
creativeStatement全局创作声明,等同 GUI「批量设置创作声明」;支持 value、中文 label 或平台页面原文案(如 内容由AI生成
creativeStatements按平台覆盖声明,key 用 code 或中文名,如 { "dy": "ai_generated", "blbl": "fiction" };某平台不支持所选值时回退 none

创作声明优先级(与 GUI 一致):platforms[].creativeStatement > creativeStatements[平台] > creativeStatement

视频号已支持「视频标注」创作声明。某平台不支持所选值时回退为 none。可用 GET /creative-statements 查询各平台可用选项。

响应体(JSON)

字段说明
success请求是否被接受;多平台表示已成功提交到发布队列
status单平台为最终状态;多平台提交成功为 submitted
exitCode单平台同 CLI;多平台提交成功为 0
message结果说明
total / succeeded / failed多平台提交汇总;最终成功失败以 pushData 记录为准
results多平台时各平台提交明细数组(含 creativeStatement
id单平台时写入 pushData 的记录 id
scheduled / publishAt定时发布时返回

HTTP 状态码

  • 参数错误:HTTP 400
  • 单平台发布失败(如未登录):HTTP 200,但 success: falseexitCode: 3
  • 视频号链接添加失败但草稿保存成功:HTTP 200success: falsestatus: needs_attentionexitCode: 4
  • 多平台:HTTP 只表示任务是否提交成功,最终结果请查询发布记录
  • 服务已配置 CORS,浏览器或本机脚本均可调用

示例

单平台发布:

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "dy",
    "phone": "13800138000",
    "file": "/Users/me/video.mp4",
    "title": "我的视频标题",
    "tags": "减脂 健身"
  }'

视频号商品上架并保存草稿(推荐快捷字段):

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "sph",
    "phone": "13800138000",
    "file": "/Users/me/video.mp4",
    "title": "视频标题",
    "bt2": "视频号短标题",
    "draft": true,
    "sphProductId": "10000591263144",
    "creativeStatement": "含AI生成内容"
  }'

也可用完整对象:

json
{
  "platformOptions": {
    "sph": { "link": { "type": "product", "value": "10000591263144" } }
  }
}

sphProductId / sphLink / platformOptions.sph 只会被视频号任务读取。多平台发布时其他平台会忽略它们;不同视频号账号可在各个 platforms[] 对象内分别覆盖商品编号。

远程视频 URL:

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "dy",
    "phone": "13800138000",
    "file": "https://example.com/video.mp4",
    "title": "我的视频标题"
  }'

多平台一次发布(含按平台创作声明,对齐 GUI 批量设置):

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "13800138000",
    "file": "/Users/me/video.mp4",
    "title": "我的视频标题",
    "creativeStatement": "ai_generated",
    "creativeStatements": {
      "blbl": "fiction",
      "xhs": "marketing"
    },
    "platforms": ["dy", "blbl", "xhs", "ks"]
  }'

多平台一次发布(platforms 字符串数组):

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "13800138000",
    "file": "https://example.com/video.mp4",
    "title": "我的视频标题",
    "bt2": "5公里新手挑战",
    "tags": "跑步 新手",
    "platforms": ["dy", "sph", "blbl", "bjh", "tt", "ks", "xhs"]
  }'

多平台一次发布(platforms 对象数组,各平台可覆盖 phone):

bash
curl -X POST http://127.0.0.1:30088/publish \
  -H "Content-Type: application/json" \
  -d '{
    "file": "/Users/me/video.mp4",
    "title": "我的视频标题",
    "tags": "日常 vlog",
    "platforms": [
      { "platform": "dy", "phone": "13800138000" },
      { "platform": "sph", "phone": "13800138000" },
      { "platform": "ks", "phone": "13900139000" }
    ]
  }'

多平台响应示例:

json
{
  "success": true,
  "exitCode": 0,
  "status": "submitted",
  "message": "已提交 3 个平台发布",
  "total": 3,
  "succeeded": 0,
  "failed": 0,
  "results": [
    {
      "platform": "抖音",
      "success": true,
      "exitCode": 0,
      "status": "submitted",
      "message": "已提交发布任务"
    },
    {
      "platform": "视频号",
      "success": true,
      "exitCode": 0,
      "status": "submitted",
      "message": "已提交发布任务"
    },
    {
      "platform": "快手",
      "success": true,
      "exitCode": 0,
      "status": "submitted",
      "message": "已提交发布任务"
    }
  ]
}

开源自媒体矩阵批量发布工具 · GPL-2.0