短剧工作流 API:从剧本到成片

用一个请求把剧本变成角色定妆图、分镜、首帧和视频片段。POST /v1/workflows/short-drama 自动完成剧本分析、分镜、出图和出片,每一步按所用模型计价。

本页目录
  1. 先预估费用
  2. 创建工作流
  3. 请求字段
  4. 查询进度和结果
  5. 取消
  6. 用时与费用参考
  7. 拼成完整一集
  8. 常见问题排查
  9. 相关文档

POST /v1/workflows/short-drama 接收一段剧本,按顺序自动完成:

  1. 提取角色:识别剧本里的人物和动物,生成外观描述;
  2. 拆分镜:按场景拆成镜头,给出景别、运镜、画面、台词和音效,并按视频模型的时长上限把镜头打包成片段;
  3. 角色定妆图:每个角色一张全身设定图,用来保持角色在各个镜头里长得一样;
  4. 首帧:每个片段生成一张首帧,带上出场角色的定妆图作参考;
  5. 视频片段:用首帧和片段提示词生成视频,对白和音效写在提示词里,支持原生音频的模型会直接出声音。

整个流程是一个异步任务。你提交剧本拿到工作流 ID,之后轮询结果。每一步都是一个普通的生成任务,按所用模型的单价计费,费用会出现在控制台「日志」里;失败的步骤不收费。

不想写代码?可以看看 AI 短剧方案 里的无代码工具。

#先预估费用

bash
curl https://bigmodel.io/v1/workflows/short-drama \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"script": "第一场 雨夜 便利店门口……", "max_segments": 6, "dry_run": true}'
json
{"object": "quote", "workflow": "short_drama", "max_segments": 6, "estimated_cost_usd": 4.24}

预估按 max_segments 个片段和典型片段时长计算,实际费用按实际生成的片段数和秒数结算,通常更低。

#创建工作流

cURL
curl https://bigmodel.io/v1/workflows/short-drama \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: episode-01" \
  -d '{
    "script": "第一场 雨夜 街角便利店 外\n林小满(二十岁,短发,黄色雨衣)抱着一只湿透的小狗跑进屋檐下。\n林小满:别怕,我们到家了。",
    "style": "温暖电影感,写实",
    "aspect_ratio": "9:16",
    "image_model": "qwen-image-2.1",
    "video_model": "seedance-2.0-fast",
    "max_segments": 6
  }'
Python
import os, time, requests

BASE = "https://bigmodel.io/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BIGMODEL_API_KEY']}"}

wf = requests.post(f"{BASE}/workflows/short-drama", headers={**HEADERS, "Idempotency-Key": "episode-01"}, json={
    "script": open("episode-01.txt", encoding="utf-8").read(),
    "style": "温暖电影感,写实",
    "aspect_ratio": "9:16",
    "video_model": "seedance-2.0-fast",
    "max_segments": 6,
}).json()

while wf["status"] in ("queued", "running"):
    time.sleep(15)
    wf = requests.get(f"{BASE}/workflows/{wf['id']}", headers=HEADERS).json()
    print(wf["stage"], wf["progress"])

for seg in wf["segments"]:
    print(seg["title"], (seg["video"] or {}).get("url"))
print("total", wf["cost_usd"])

#请求字段

字段 默认值 说明
script 必填 剧本正文,最多 20000 字。场景头、人物、动作和台词写得越清楚,分镜越准确。
style 空 画面风格,例如「温暖电影感,写实」「日系动画」。会加到定妆图、首帧的提示词里。
aspect_ratio 9:16 9:16(竖屏短剧)、16:9 或 1:1。
image_model qwen-image-2.1 生成定妆图和首帧的文生图模型。qwen-image-2.1 能把定妆图作为参考,角色一致性最好。
video_model seedance-2.0-fast 生成片段的视频模型,必须支持图生视频。支持参考图的模型(如 seedance-2.0 系列、minimax-h3)会同时参考首帧和角色定妆图。
resolution 模型默认(通常 720p) 必须是该视频模型支持的分辨率。
audio 模型默认 是否生成原生音频,仅支持音频的视频模型可用。
max_segments 6 最多生成多少个片段(1–20)。剧本更长时只做前面的片段。
stop_after videos 提前结束:storyboard(只要角色和分镜)、frames(再加定妆图和首帧)、videos(完整流程)。
dry_run false 只返回预估费用。

请求头 Idempotency-Key 可选:同一个值重复提交,返回同一个工作流。

#查询进度和结果

GET /v1/workflows/{id} 返回:

json
{
  "id": "e5d2c392-…",
  "object": "workflow.short_drama",
  "status": "running",
  "stage": "videos",
  "progress": {"clips_done": 1, "clips_total": 2},
  "estimated_cost_usd": 0.60,
  "cost_usd": 0.21,
  "characters": [
    {"name": "林小满", "look": "二十岁,短发,黄色雨衣……", "image": {"task_id": "…", "status": "succeeded", "url": "https://bigmodel.io/v1/media/…"}}
  ],
  "segments": [
    {
      "index": 1, "title": "镜01 · 全景", "scene": "雨夜 街角便利店", "seconds": 4, "cast": ["林小满", "小狗"],
      "picture": "店内暖光从右侧门玻璃透出……",
      "video_prompt": "【镜头1|00:00-00:04】……",
      "frame": {"task_id": "…", "status": "succeeded", "url": "https://bigmodel.io/v1/media/…"},
      "video": {"task_id": "…", "status": "running"}
    }
  ],
  "storyboard": {"visualTone": "…", "scenes": [ … ]}
}
字段 说明
status queued、running、succeeded、failed、canceled。
stage 当前步骤:characters、storyboard、character_images、frames、videos、done。
characters[].image 角色定妆图任务。
segments[].frame、segments[].video 每个片段的首帧和视频任务。url 是 24 小时有效的签名链接,过期后重新查询即可。
storyboard 完整分镜:场景、镜头(景别、运镜、画面、台词音效、出场角色)。可以拿去自己重新组合。
cost_usd 已结算的费用,随步骤完成增加。

单个片段失败不会让整个工作流失败:首帧失败的片段不出视频,其他片段照常完成。只有全部首帧或全部视频都失败时,工作流才是 failed。

#取消

bash
curl -X POST https://bigmodel.io/v1/workflows/{id}/cancel -H "Authorization: Bearer $BIGMODEL_API_KEY"

已经完成的步骤照常计费,正在进行的生成会被取消,不收费。

#用时与费用参考

步骤 用时(参考) 计价
提取角色、拆分镜 1–3 分钟 每轮少量费用(通常不到 $0.05)
定妆图、首帧 每张 20–60 秒,并行 图片模型单价 × 张数
视频片段 每段 1–5 分钟,并行 视频模型每秒单价 × 秒数

例如 6 个 5 秒片段、seedance-2.0-fast:视频约 30 秒,加上几张图和两轮分析,总价可以先用 dry_run 估算。

#拼成完整一集

工作流输出的是按顺序排好的片段。把它们拼起来,可以用剪辑软件,也可以用 ffmpeg:

bash
# 把 segments 的视频按顺序下载为 01.mp4、02.mp4 …
printf "file '%s'\n" *.mp4 > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy episode.mp4

#常见问题排查

现象 处理
400 script is required script 为空。
400 video_model must be a video model that animates an image 换一个支持图生视频的模型,见模型目录 → 视频。
402 余额不足以覆盖预估费用。充值或减少 max_segments。
failed,Script analysis failed 剧本无法解析。补充场景头、人物和动作描写后重试。
角色前后不一致 用 qwen-image-2.1 作 image_model,并选择支持参考图的视频模型;在 style 里写清画风。

#相关文档

更新于 · 以 Markdown 查看