Doubao Video API(豆包视频生成 — Thingo 中转站)
角色定位
你是视频生成调用助手。当用户要求用文本生成视频、基于图片生成视频、延长或编辑视频时,使用本 Skill 通过 Thingo 中转站(OpenAI 兼容格式) 调用 Doubao Seedance 视频生成 API,并返回本地保存的 MP4 文件路径。
本技能已写死适配 Thingo 中转站(uniapi.thingo.com.cn),使用 OpenAI 兼容的请求/响应格式。如需切换到其他中转站,只需修改 config.json 中的 base_url 和 api_key 即可(前提是目标中转站同样使用 OpenAI 兼容格式)。
触发条件
- 用户说"生成一个视频""帮我做一段视频""根据这段描述生成视频"
- 用户提供首帧图/参考图,要求生成视频
- 用户提供参考视频,要求延长/编辑
- 用户明确要求使用 Seedance 或视频生成能力
适用场景
- 文本生视频:用户给出文字描述,生成对应视频(最常用)
- 首帧图生视频:用户提供首帧图片 URL,生成延续视频
- 视频延长/编辑:用户提供参考视频 URL,要求延长或修改
前置条件
config.json中已配置base_url、api_key、model- Thingo 中转站可访问
- 账户余额充足(约 ¥11.50/次)
- 如使用参考图/视频,需提供公网可访问的 URL(
http(s)://)
快速开始
1. 配置(一次性)
手动创建 config.json(推荐)或运行 python scripts/init.py 交互式配置:
{
"base_url": "https://uniapi.thingo.com.cn/v1",
"api_key": "sk-你的密钥",
"model": "doubao-seedance-2-0-260128",
"api_path": "video/generations",
"save_dir": "./output",
"download": true
}
⚠️ base_url 不要出现双斜杠:/v1 而非 //v1,否则中转站返回 HTML 页面导致 JSON 解码失败。
2. 生成视频
命令行:
# 文本生视频
python scripts/gen.py "一只可爱的小猫正在吃鱼,画面温馨治愈" --ratio 16:9 --duration 5
# 首帧图生视频(需公网 URL)
python scripts/gen.py "镜头推近特写" --ratio 9:16 --duration 5 --image-url https://example.com/frame.png
# 指定保存目录
python scripts/gen.py "星空下的城市夜景" --ratio 16:9 --duration 5 --save-dir ./my_videos
Python 函数调用:
from scripts.gen import generate_video
result = generate_video(
prompt="一只可爱的小猫正在吃鱼",
ratio="16:9",
duration=5
)
# result = {"model": "...", "task_id": "...", "status": "succeeded",
# "video_url": "https://...mp4", "local_path": "C:/.../xxx.mp4"}
执行流程
- 读取技能根目录的
config.json,确认api_key已配置 - 根据用户输入构建
prompt、ratio、duration等参数 - 调用
python scripts/gen.py "<prompt>" --ratio 16:9 --duration 5 - 脚本自动轮询异步任务直到完成(默认最长等待 600 秒)
- 自动下载视频到本地,返回本地路径
参数说明
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
prompt |
string | 必填 | 视频描述文字,中文或英文 |
ratio |
string | adaptive |
画面比例:adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3, 21:9 |
duration |
int | 5 |
视频时长:5 或 10 秒 |
--image-url |
string | 无 | 参考图片 URL(首帧图),公网可访问 |
--video-url |
string | 无 | 参考视频 URL(用于延长/编辑) |
--save-dir |
string | CWD | 视频保存目录,默认当前工作目录 |
--no-download |
flag | false | 仅返回 URL,不下载到本地 |
--base-url |
string | 配置文件 | 覆盖中转站地址 |
--api-key |
string | 配置文件 | 覆盖 API 密钥 |
输出格式
{
"model": "doubao-seedance-2-0-260128",
"task_id": "task_xxx",
"status": "succeeded",
"video_url": "https://...mp4",
"local_path": "C:/Users/xxx/Desktop/20260723_134634_00_xxx.mp4",
"usage": {"completion_tokens": 108900, "total_tokens": 108900}
}
API 格式说明(重要)
本技能使用 Thingo 中转站的 OpenAI 兼容格式,与 Doubao 官方 Ark API 格式不同:
| 项目 | 官方 Ark 格式 | Thingo(本技能) |
|---|---|---|
| Base URL | https://ark.cn-beijing.volces.com/api/v3 |
https://uniapi.thingo.com.cn/v1 |
| API 路径 | /contents/generations/tasks |
/video/generations |
| 请求格式 | {"content": [{"type":"text","text":"..."}]} |
{"prompt": "..."} |
| 响应格式 | {"id":"cgt-...", "status":"queued"} |
{"code":"success", "data":{"task_id":"...","status":"NOT_START"}} |
| 状态值 | queued/running/succeeded/failed |
NOT_START/IN_PROGRESS/SUCCESS/FAILED |
| 视频 URL | content.video_url |
result_url 或 data.content.video_url |
切换到其他中转站
如果目标中转站也使用 OpenAI 兼容格式,只需修改 config.json:
{
"base_url": "https://你的中转站地址/v1",
"api_path": "video/generations",
"api_key": "sk-你的密钥"
}
如果目标中转站使用官方 Ark 格式,请将 api_path 改回 contents/generations/tasks 并调整 gen.py 中的请求格式。
可用模型(Thingo 中转站)
可通过 GET /v1/models 查看当前可用模型:
| 模型 ID | 说明 |
|---|---|
doubao-seedance-2-0-260128 |
标准版(推荐,约 ¥11.50/次) |
doubao-seedance-2-0-fast-260128 |
快速版 |
doubao-seedance-2-0-mini-260615 |
轻量版 |
注意事项
- 视频生成是异步任务,脚本自动轮询直到完成(默认最长 600 秒),请耐心等待
- 参考图/视频必须是公网可访问的 URL(
http(s)://),本地文件不会自动上传 - 生成的视频 URL 有效期约 24 小时,本技能默认开启
download=true自动保存到本地 - 不支持自定义分辨率参数(如
480p),传入size参数会触发计费错误 - 如果任务本质是生成图片而非视频,应优先使用
doubao-image-api技能 - 账户余额需 ≥ ¥11.50/次,余额不足会返回 403
常见坑
1. scripts/init.py 非交互式终端报 EOFError
Agent 自动执行环境不支持交互输入。手动创建 config.json 或设置环境变量 ARK_BASE_URL / ARK_API_KEY。
2. JSON 解码错误 Expecting value: line 1 column 1
原因:base_url 包含双斜杠(如 //v1),中转站返回 HTML 页面而非 JSON。
解决:确保 base_url 为 https://uniapi.thingo.com.cn/v1(单斜杠)。
3. Invalid URL 错误
原因:api_path 配置错误,使用了官方 Ark 路径。
解决:本技能已写死为 video/generations,不要改为 contents/generations/tasks。
4. insufficient_user_quota 余额不足
原因:Thingo 账户余额不足 ¥11.50。
解决:充值 Thingo 账户,或切换到更便宜的模型。
5. 参考图/视频不生效
原因:Thingo 中转站可能不完全支持图生视频/视频编辑。
解决:目前以文本生视频为主,其他模态的支持取决于中转站。
6. 打包分发时包含敏感数据
上传到 SkillHub 前排除 output/(含生成的视频)和 config.json(含 API Key),只保留 config.example.json 作为模板。
安装
python scripts/init.py
python scripts/gen.py "一只可爱的小猫正在吃鱼" --ratio 16:9 --duration 5