跳至主要内容
ALQQ 开发者中心

自媒体发布 API 开放文档

用个人密钥连接 AI 文章生成、内容导入、多平台发布与任务记录查询,将内容工作流接入 n8n、Coze 或你自己的业务系统。
返回首页
内容平台
22
CMS 连接器
2
接口规范
OpenAPI
查看本文目录 15 个章节

交互式 API 参考

完整接口、参数与响应 schema + 在线调试(try-it-out),随后端自动同步。

获取 API 密钥

登录后进入「系统设置 → API 密钥」生成,密钥仅显示一次。

鉴权

所有请求在 Header 携带你的密钥:
请求示例
curl https://www.alqq.cn/api/openapi/v1/accounts \
  -H "Authorization: Bearer mk_live_你的密钥"

发布前先预检

先查配额、账号可发布状态和执行端在线状态,再提交发布,可避免大多数 403 / 409 / 422。
请求示例
# 1) 查权限和 web / desktop / edge / cms 独立配额
curl https://www.alqq.cn/api/openapi/v1/me \
  -H "Authorization: Bearer mk_live_..."

# 2) 只选 publishable=true 的账号
#    账号返回的 executor 是当前配置解析结果;固定路由不可绕过
#    未固定路由的账号可申请 desktop,是否可用以只读预检为准
#    desktop / edge 还需 executor_online=true
curl https://www.alqq.cn/api/openapi/v1/accounts \
  -H "Authorization: Bearer mk_live_..."

# 3) 需要桌面端或云执行节点时,可进一步查询状态
curl https://www.alqq.cn/api/openapi/v1/execution-nodes \
  -H "Authorization: Bearer mk_live_..."

支持的平台与 CMS

当前共 24 个接入项:22 个内容平台 + 2 个 CMS,其中 19 个内容平台支持视频发布。下表仅列出已开放的文章与视频 API 能力;支持某种内容不代表任意执行端均可使用。
平台 / CMSplatform 代码类型文章 API视频 API执行限制动态 API
百家号baijiahao内容平台支持支持视频:desktop;edge 需满足下方条件支持
今日头条toutiao内容平台支持支持视频:desktop;edge 需满足下方条件支持
微信公众号wechat内容平台支持不支持以账号返回的 executor 为准支持
企鹅号qiehao内容平台支持支持视频:desktop;edge 需满足下方条件不支持
抖音douyin内容平台支持支持视频:desktop;edge 需满足下方条件支持
哔哩哔哩bilibili内容平台支持支持视频:desktop;edge 需满足下方条件不支持
快手kuaishou内容平台支持支持视频:desktop;edge 需满足下方条件不支持
视频号shipinhao内容平台支持支持视频:desktop;edge 需满足下方条件不支持
淘宝光合guanghe内容平台支持支持视频:desktop;edge 需满足下方条件不支持
搜狐号sohu内容平台支持支持视频:desktop;edge 需满足下方条件支持
知乎zhihu内容平台支持支持视频:desktop;edge 需满足下方条件不支持
小红书xiaohongshu内容平台支持支持视频:desktop;edge 需满足下方条件不支持
大鱼号dayu内容平台支持支持视频:desktop;edge 需满足下方条件不支持
快传号kuaichuan内容平台支持支持视频:desktop;edge 需满足下方条件不支持
微博weibo内容平台支持支持视频:desktop;edge 需满足下方条件支持
YouTubeyoutube内容平台不支持支持仅 desktop不支持
TikToktiktok内容平台不支持支持视频:desktop;edge 需满足下方条件不支持
Instagraminstagram内容平台支持支持视频:desktop;edge 需满足下方条件不支持
Facebookfacebook内容平台支持支持视频:desktop;edge 需满足下方条件不支持
豆瓣douban内容平台支持不支持以账号返回的 executor 为准不支持
CSDNcsdn内容平台支持支持视频:desktop;edge 需满足下方条件不支持
PbootCMS 站点pbootcmsCMS 站点支持不支持文章:web(站点插件)不支持
InnoShop 站点innoshopCMS 站点支持不支持文章:web(站点插件)不支持
简书jianshu内容平台支持不支持以账号返回的 executor 为准不支持
platform 代码用于账号筛选和请求中的 platforms。实际发布建议从 GET /accounts?contentType=article|dynamic|video 获取账号及该类型执行端。动态使用 POST /publish/dynamic,仅支持百家号、头条号、微信公众号、抖音、搜狐号和微博;其他平台不会自动改用文章接口。
程序可通过 GET /meta 的 publish.platforms 获取完整目录,包括 id、name、category、content_types、article_executors、video_executors 和 video_sources;视频来源仅为 local_file。GET /accounts 只返回当前用户已添加的账号,不是完整平台目录。

视频发布:区分普通页面与 OpenAPI

普通用户页面的视频发布仅支持桌面端,不只是 YouTube
Web 页面不提供视频上传或共享云端视频发布。OpenAPI 也只接收执行器本地文件,不代下载远程视频或视频封面;请自行准备素材。已授权、已绑定的在线 edge 节点需额外满足本地文件能力与安全目录要求,不等于 Web 共享发布能力。
桌面端:POST /publish/video 使用 executor="desktop",桌面端需在线,账号也须配置为桌面执行。必填 localVideoPath 是实际执行发布的 Windows 电脑上的视频绝对路径;文件必须已存在,不是 API 调用方另一台机器的路径。可选封面 coverImagePath 也须使用该执行电脑上的绝对路径。
已授权的云执行节点:OpenAPI 允许 executor="edge",前提是已获得节点使用权限、账号绑定到该节点、节点在线且支持目标平台的视频发布,并上报 capabilities.localVideoFile === 1。需更新到具备本地视频文件能力的节点版本,并显式配置 ALQQ_EDGE_VIDEO_DIR(例如 /data/videos);请将视频及可选封面预先放到 ALQQ_EDGE_VIDEO_DIR/<userId>/ 下,再传该 Linux 节点上的绝对路径,例如用户 123 的 /data/videos/123/video.mp4。执行器会校验安全目录;未配置目录或旧版不具备本地文件能力的节点不可使用。
远程素材:videoUrl 和视频封面的 coverImageUrl 已弃用,任何非空值均被拒绝,即使同时传入本地路径也不接受。请自行下载或生成素材后再提交;视频和封面仍会上传至目标发布平台,只是不经 ALQQ 主站中转。文章图片处理不受此变更影响。
YouTube:仍仅支持 desktop 视频发布,不支持文章 API,也不支持 edge 执行,尚未开放 Linux 节点发布。TikTok 同样不支持文章 API;其他平台能力见上表。
Web 执行端:视频请求不支持 executor="web"。调用 GET /video/meta 查询当前视频平台与专属参数;提交前仍需校验账号和执行端。

发布设置与只读预检

图文/文章、动态、视频各自使用独立设置。先调用 GET /publish/settings?contentType=video 读取当前完整字段、选项、必选声明、条件项、限制及封面支持信息;可加 accountIds=123,456 读取本人预设(另需 accounts:read)。不返回 Cookie、代理或站点连接参数。
settingsMode=account(默认)按「账号本类型预设 → platformSettings → accountSettings」合并;custom 忽略账号预设。账号覆盖优先,仅作用于本次任务,不保存长期预设。任务创建时冻结设置,排队期间修改预设不会改变原任务。桌面和云节点需上报 capabilities.publishSettingsSnapshot=1;旧引擎需先更新。
执行端兼容性以 GET /execution-nodes 返回的实际能力为准,而不是只比较安装版本号。缺少冻结设置能力时,预检与正式发布均返回 422 settings_executor_upgrade_required,即使不传自定义设置也一样。请更新执行端并重启后重新预检;不要改用无额度的 web 通道,也不要删除账号来绕过检查。各执行端配额相互独立。
请求示例
{
  "contentType": "video",
  "executor": "desktop",
  "accountIds": [
    123
  ],
  "localVideoPath": "D:/videos/original.mp4",
  "title": "原创视频",
  "coverImagePath": "D:/videos/cover.jpg",
  "settingsMode": "account",
  "platformSettings": {
    "sohu": {
      "sohuCategoryPrimary": "美食",
      "sohuCategorySecondary": "烹饪",
      "sohuDeclaration": "含有AI生成内容"
    }
  }
}
将上述请求先发到 POST /publish/preflight。示例分类和声明需按真实账号、素材及平台目录选择;预检不保证分类控件存在。返回 targets[].effective_settings、设置来源、preflight_hash 和尚待核验项。正式发布时删除 contentType,可携带 preflightHash 与 settingsContractVersion;内容、设置或路由变更返回 409,重新预检。
预检不占发布配额、不入队、不读本地文件、不打开平台。valid=true 只是当前参数及执行端检查通过,不是上传或发布成功。图片真实格式、尺寸、账号权限、控件选择和封面采纳仍在执行时核验;不支持自定义封面或无法确认采纳时停止,不会换成自动封面。B 站使用 bilibiliPartition 名称和当前声明,不再传旧数字 tid;搜狐视频使用当前创作声明,不转换旧 AI 开关。
每次逻辑发布建议携带随机 UUID 作为 Idempotency-Key:同键同参数复用原批次,同键改参数返回 409;并发处理返回 409 与 Retry-After。记录保存 24 小时,不能替代平台回查,也不保证平台恰好发布一次。收到结果未确定的错误时先按请求追踪 ID 核验,不换键盲目重发。文章/视频维持 200 接收响应;动态返回 202;按 Location 回查批次,逐账号查看脱敏 feedback、平台状态与核验时间。

CMS 站点接入与文章发布

PbootCMS 站点、InnoShop 站点 均只支持文章。先在自己的站点安装对应插件,再到 ALQQ「账号管理」配对站点并配置栏目与发布预设。OpenAPI 不提供站点配对或插件配置接口。
请求示例
# CMS 站点也由 GET /accounts 返回;选择已配对、publishable=true 的站点 ID
# ARTICLE_ID 来自文章生成或导入;将示例 123 替换为 GET /accounts 返回的真实站点账号 id
curl -X POST https://www.alqq.cn/api/openapi/v1/publish \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: cms-20260912-001" \
  -d '{"articleId":"ARTICLE_ID","executor":"web","accountIds":[123]}'
# → { "batch_id": 88, "jobs": [...] }
# 用 GET /publish/BATCH_ID 查询各站点结果
CMS 复用 POST /publish,并非另一套 CMS 发布接口;请求执行端为 web,由服务端调用站点插件,不占用桌面浏览器。仍需 API 密钥的 publish 权限、套餐 CMS 权限和独立的 cms 发布额度;不要把 CMS 额度当作普通 Web 发布额度。

端点一览

下面是常用端点速览;完整参数、响应 schema 与在线调试请看 交互式 API 参考 →。
方法路径
GET/api/openapi/v1/me
GET/api/openapi/v1/accounts
GET/api/openapi/v1/execution-nodes
GET/api/openapi/v1/meta
POST/api/openapi/v1/articles/generate
GET/api/openapi/v1/articles/generate/:taskId
POST/api/openapi/v1/articles
GET/api/openapi/v1/articles
GET/api/openapi/v1/articles/:id
POST/api/openapi/v1/publish
POST/api/openapi/v1/publish/video
GET/api/openapi/v1/publish/settings
POST/api/openapi/v1/publish/preflight
POST/api/openapi/v1/publish/dynamic
GET/api/openapi/v1/publish/:batchId
GET/api/openapi/v1/generate-tasks
GET/api/openapi/v1/publish-logs
GET/api/openapi/v1/products
GET/api/openapi/v1/video/meta
只调用规范列出的路径
OpenAPI 规范是唯一接口清单,请勿根据命名猜测 /accounts/:id/refresh、DELETE /articles/:id、/images/upload 等未开放能力。

ID 对照:四种 ID 不能混用

名称从哪里获得用在哪里常见错误
task_idPOST /articles/generateGET /articles/generate/:taskId不能作为 articleId 或 batchId
article_id生成完成或 POST /articlesGET /articles/:id、POST /publish不能用 task_id 代替
batch_idPOST /publish、/publish/video 或 /publish/dynamicGET /publish/:batchId不能传 article_id 或 log_id
log_id发布结果/Webhook/发布记录GET /publish-logs?ids=...不是发布批次 id

示例:生成并轮询

请求示例
# 1) 发起生成
curl -X POST https://www.alqq.cn/api/openapi/v1/articles/generate \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"customTopic":"夏季香料怎么选","style":"soft-article","wordCount":1000}'
# → { "task_id": "..." }

# 2) 每 2–5 秒轮询;收到 429 按 Retry-After 等待
curl https://www.alqq.cn/api/openapi/v1/articles/generate/TASK_ID \
  -H "Authorization: Bearer mk_live_..."
# → { "status":"done", "article_id":"...", "title":"..." }

AI 内容来源与标识

展示、复制和再次发布时保留 aigc 元数据
文章生成、导入、列表和详情响应都会返回 content_provenance 与 aigc。当 aigc.label_required=true 时,请显著展示 aigc.display_label。正文与图片分别标识,不要把图库图、产品图或用户上传图误标成 AI 图片。
请求示例
# 导入外部 AI 辅助完成的文章时如实声明来源
curl -X POST https://www.alqq.cn/api/openapi/v1/articles \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title":"文章标题",
    "content":"正文 Markdown",
    "contentProvenance":"ai_assisted",
    "aiProvider":"example-provider",
    "aiModel":"example-model",
    "aiImageCount":0
  }'

# 响应中的 aigc.applies_to 会分别说明 text / images
# aiImageCount 只计算真正由 AI 生成的图片

示例:发布并轮询

请求示例
# ARTICLE_ID 必须来自生成结果或 POST /articles
# ACCOUNT_ID 必须来自 GET /accounts
curl -X POST https://www.alqq.cn/api/openapi/v1/publish \
  -H "Authorization: Bearer mk_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-20260904-001" \
  -d '{"articleId":"ARTICLE_ID","executor":"edge","accountIds":[ACCOUNT_ID]}'
# → { "batch_id": 88, "jobs": [...] }

# BATCH_ID 只能使用上一步返回的 batch_id
# 每 2–5 秒查询一次,到达终态后停止
curl https://www.alqq.cn/api/openapi/v1/publish/BATCH_ID \
  -H "Authorization: Bearer mk_live_..."

图片和文章修改

图片:暂无独立图片上传接口。导入文章时在 Markdown 中使用 ![](https://...),封面使用 coverImage。
更新/删除:开放 API 目前支持文章生成、导入和查询,不支持更新或删除。修改内容时请重新导入,并使用新的 article_id。

可靠调用与故障排查

请保存每次响应的 X-Request-Id
遇到失败或结果异常时,把该请求标识提供给管理员,即可关联到生成任务、文章和发布批次。
请求追踪:所有业务响应都返回 X-Request-Id,包括鉴权失败和限流请求。
避免重复发布:调用发布接口时携带唯一的 Idempotency-Key,网络超时重试不会重复创建发布批次。
限流处理:每分钟与每日额度按 ALQQ 用户账号共享,增加密钥不会增加总额度。读取 RateLimit-* 和 X-Daily*;收到 429 后按 Retry-After 等待。
异步结果:生成和发布可轮询状态接口,也可以在系统设置中配置 Webhook 接收完成或失败通知。
错误结构:统一为 { "error": { "code", "message" } },程序应优先判断稳定的 code。

常见错误与处理方式

HTTPerror.code常见原因处理方式
400invalid_request缺少必填参数或 ID 传错位置核对当前操作的 request schema 和 ID 对照表
401unauthorized / key_expired密钥缺失、无效、禁用或过期更换密钥,不要在 URL 中传递密钥
403insufficient_scope / quota_exceeded密钥权限或对应执行端发布配额不足查看 GET /me 的 scopes 和 quota
404not_found资源不存在、不属于当前用户或猜测了未开放路径使用创建接口真实返回的 ID,只调用规范列出的路径
409desktop_offline / edge_offline所选执行端离线或已停用查看 GET /execution-nodes,客户端/节点恢复在线后再提交
409PUBLISH_DUPLICATE同内容当天已确认提交或发布不要立即重发;先查询原 batch_id 或发布记录
409preflight_changed预检后内容、设置或执行路由发生变化使用最终发布参数重新预检;不要复用另一执行端的 preflight_hash
422settings_executor_upgrade_required桌面或云节点尚未上报冻结发布设置能力;不是发布额度不足更新执行端并重启,确认 capabilities.publishSettingsSnapshot=1,再重新预检;安装版本号或“已是最新版”不能代替能力检查
422account_not_publishable账号未激活、登录失效、审核中或健康异常查看 GET /accounts 的 publishable,在账号管理中处理
422account_* / edge_capability_missing账号固定路由、平台或节点能力与请求不匹配先查看 GET /accounts 和 GET /execution-nodes;固定路由不可由 API 绕过,以只读预检结果为准
429rate_limited / daily_quota_exceeded账号级每分钟或每日 API 额度已用尽按 Retry-After 等待;额度由套餐配置,同用户多把密钥共享

示例:读取追踪与限流响应头

请求示例
curl -i https://www.alqq.cn/api/openapi/v1/me \
  -H "Authorization: Bearer mk_live_..."

# X-Request-Id: 550e8400-e29b-41d4-a716-446655440000
# RateLimit-Limit: 60
# RateLimit-Remaining: 59
# RateLimit-Reset: 42
# X-DailyLimit: 5000
# X-DailyRemaining: 4874
额度与网页/桌面端/云执行节点共用同一套套餐计量,但 web、desktop、edge 与 cms 使用独立的发布额度桶。完整规范可通过 OpenAPI JSON 导入 Apifox 或 Postman。