火山引擎 Seedance 视频生成技能
通过 AI聚合平台 调用火山引擎 Seedance 服务,支持文生视频和图生视频。
配置信息
- Base URL:
https://api.opsmoneye.com - API Key: 从你的账户页面获取 (格式:
sk-xxxxxxxxx) - 认证方式: Bearer Token
- 图片上传:
/api/upload/image(需要认证)
⚠️ 重要: 使用前必须替换 API Key
所有示例中的 YOUR_TOKEN 必须替换为你的真实 API Key!
获取 API Key 步骤:
1. 登录 https://api.opsmoneye.com
2. 进入「用户中心」→「Token 管理」
3. 创建或复制你的 API Key
4. 替换示例中的 YOUR_TOKEN
环境变量配置(龙虾AI使用)
在 OpenClaw 中设置以下环境变量:
export ONEAPI_BASE_URL="https://api.opsmoneye.com"
export ONEAPI_TOKEN="sk-你的API令牌"
或在 OpenClaw 配置文件中添加:
env:
ONEAPI_BASE_URL: "https://api.opsmoneye.com"
ONEAPI_TOKEN: "sk-你的API令牌"
一、支持的模型
| 模型名称 | 说明 |
|---|---|
doubao-seedance-2-0-260128 |
Seedance 2.0 最新版 |
doubao-seedance-2-0-fast-260128 |
Seedance 2.0 快速版 |
doubao-seedance-2-0 |
Seedance 2.0 稳定版 |
doubao-seedance-2-0-fast |
Seedance 2.0 快速稳定版 |
计费说明:
- 按秒计费
- 视频时长支持范围:4-15秒(任意整数)
- 时长校准规则:
- 不传或传入0/负数 → 默认 5秒
- 传入1-3秒 → 校准为 4秒(最小值)
- 传入4-15秒 → 使用传入值(不修改)
- 传入16秒以上 → 校准为 15秒(最大值)
- 示例:4秒=¥4.40,5秒=¥5.50,10秒=¥11.00,15秒=¥16.50
二、功能概览
| 功能 | API端点 | 方法 | 说明 |
|---|---|---|---|
| 上传图片 | /api/upload/image |
POST | 上传本地图片获得公开URL |
| 文生视频 | /v1/images/generations |
POST | 通过文字描述生成视频 |
| 图生视频 | /v1/chat/completions |
POST | 基于参考图片生成视频 |
| 任务查询 | /v1/aigc/task/{task_id} |
GET | 查询视频生成进度和结果 |
功能详细说明
- 上传图片 - 将本地图片上传到AI聚合平台服务器,获得公开URL
- 文生视频 - 通过文字描述生成视频(不需要图片)
- 图生视频 - 基于参考图片生成视频(让图片动起来)
- 查询任务状态 - 根据 TaskId 查询视频生成进度和结果
- 下载结果 - 将生成的视频下载到本地
三、快速选择指南
根据用户需求选择正确的功能:
用户需求判断:
├─ 只有文字描述,没有图片?
│ └─ 使用「文生视频」→ 3.2节
│
└─ 有图片(本地文件或网络URL)?
├─ 本地图片文件?
│ ├─ 先上传图片 → 3.1节
│ └─ 再使用「图生视频」→ 3.3节
│
└─ 已有网络图片URL?
└─ 直接使用「图生视频」→ 3.3节
关键区别:
- 文生视频:只需要文字描述,调用 /v1/images/generations
- 图生视频:需要图片+文字,调用 /v1/chat/completions(多模态格式)
四、使用方法
4.1 上传图片
当用户提供本地图片要求生成视频时,先上传图片:
python3 {baseDir}/scripts/upload_image.py /path/to/image.jpg
返回示例:
{
"url": "https://api.opsmoneye.com/uploads/2026/04/21/xxx-xxx.jpg"
}
注意事项:
- 支持的格式:JPG, PNG, GIF, WebP, BMP
- 文件大小限制:10MB
- 需要配置环境变量 ONEAPI_BASE_URL 和 ONEAPI_TOKEN
龙虾AI操作流程:
1. 用户在聊天中发送图片
2. 龙虾AI接收图片,保存到临时文件(如 /tmp/user_image.jpg)
3. 调用 upload_image.py 上传图片
4. 解析返回的JSON,提取 url 字段
5. 使用该URL创建图生视频任务
4.2 文生视频
端点: POST /v1/images/generations
可用参数:
- size: 分辨率 - 1920x1080(默认), 1280x720, 2560x1440, 3840x2160
- duration: 时长(秒) - 根据模型不同支持 5, 10 等
方法1: curl (Linux/Mac/WSL)
curl --location --request POST 'https://api.opsmoneye.com/v1/images/generations' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"prompt": "Beautiful sunset, ocean waves gently crashing on sandy beach, cinematic lighting",
"size": "1920x1080",
"duration": 10
}'
中文提示词示例:
curl --location --request POST 'https://api.opsmoneye.com/v1/images/generations' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"prompt": "美丽的日落,海浪轻拍沙滩,电影级光照",
"size": "1920x1080",
"duration": 10
}'
方法2: Python (推荐,跨平台)
import requests
import json
response = requests.post(
'https://api.opsmoneye.com/v1/images/generations',
headers={
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json; charset=utf-8' # 必须指定UTF-8编码,防止中文乱码
},
data=json.dumps({ # 使用data而不是json,确保Content-Type不被覆盖
'model': 'doubao-seedance-2-0-260128',
'prompt': '美丽的日落,海浪轻拍沙滩',
'size': '1920x1080',
'duration': 10
}, ensure_ascii=False) # ensure_ascii=False 保证中文不被转义
)
print(response.json())
方法3: PowerShell (Windows)
$body = @{
model = "doubao-seedance-2-0-260128"
prompt = "美丽的日落,海浪轻拍沙滩"
size = "1920x1080"
duration = 10
} | ConvertTo-Json -Compress
Invoke-RestMethod -Uri "https://api.opsmoneye.com/v1/images/generations" `
-Method POST `
-Headers @{
"Authorization" = "Bearer YOUR_TOKEN"
"Content-Type" = "application/json; charset=utf-8"
} `
-Body $body
响应示例:
{
"created": 1713686400,
"data": [{}],
"task_id": "cgt-20260421140001-mz4n5",
"status": "PROCESSING",
"message": "Task created, use /v1/aigc/task/cgt-20260421140001-mz4n5 to query status"
}
4.3 图生视频
图生视频需要使用多模态格式,通过 /v1/chat/completions 接口:
步骤1:上传图片
python3 scripts/upload_image.py /path/to/photo.jpg
获得URL:https://api.opsmoneye.com/uploads/2026/04/21/xxx.jpg
步骤2:创建图生视频任务
方法1: curl (Linux/Mac/WSL)
curl --location --request POST 'https://api.opsmoneye.com/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Make the flowers sway gently in the breeze"},
{"type": "image_url", "image_url": {"url": "https://api.opsmoneye.com/uploads/2026/04/21/xxx.jpg"}}
]
}],
"size": "1920x1080",
"duration": 10
}'
中文提示词示例:
curl --location --request POST 'https://api.opsmoneye.com/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "让画面中的花朵随风摇曳"},
{"type": "image_url", "image_url": {"url": "https://api.opsmoneye.com/uploads/2026/04/21/xxx.jpg"}}
]
}],
"size": "1920x1080",
"duration": 10
}'
方法2: Python (推荐)
import requests
import json
response = requests.post(
'https://api.opsmoneye.com/v1/chat/completions',
headers={
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json; charset=utf-8' # 必须指定UTF-8编码,防止中文乱码
},
data=json.dumps({ # 使用data而不是json,确保Content-Type不被覆盖
'model': 'doubao-seedance-2-0-260128',
'messages': [{
'role': 'user',
'content': [
{'type': 'text', 'text': '让画面中的花朵随风摇曳'},
{'type': 'image_url', 'image_url': {'url': 'http://www.junyunaidev.com/uploads/2026/04/21/xxx.jpg'}}
]
}],
'size': '1920x1080',
'duration': 10
}, ensure_ascii=False) # ensure_ascii=False 保证中文不被转义
)
print(response.json())
关键点:
- 必须使用 content 数组格式
- text 描述你希望画面如何动起来
- image_url 提供上传图片的URL
4.4 查询任务状态
端点: GET /v1/aigc/task/{task_id}
curl https://api.opsmoneye.com/v1/aigc/task/cgt-20260421140001-mz4n5 \
-H "Authorization: Bearer YOUR_TOKEN"
响应示例(处理中):
{
"task_id": "cgt-20260421140001-mz4n5",
"status": "PROCESSING",
"progress": 50,
"result_url": "",
"created_at": 1713686400,
"updated_at": 1713686410
}
响应示例(完成):
{
"task_id": "cgt-20260421140001-mz4n5",
"status": "SUCCESS",
"progress": 100,
"result_url": "https://xxx.volces.com/xxx.mp4",
"created_at": 1713686400,
"updated_at": 1713686460,
"video_params": {
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"seed": 12345
}
}
状态说明:
| 状态 | 说明 |
|------|------|
| PROCESSING | 任务处理中 |
| SUCCESS | 任务完成 |
| FAILED | 任务失败(会自动退款) |
五、典型工作流
场景1:文生视频
用户:“帮我生成一个日落视频”
↓
1. 调用 /v1/images/generations 创建任务
{
"model": "doubao-seedance-2-0-260128",
"prompt": "美丽的日落",
"size": "1280x720"
}
↓
2. 获得 task_id
↓
3. 每8秒轮询 /v1/aigc/task/{task_id}
↓
4. 状态为 SUCCESS → 获取 result_url
↓
5. 下载视频到本地 → 展示给用户
场景2:图生视频(用户提供图片)
龙虾AI完整工作流:
1. 用户在聊天中发送图片 + 文字描述
例如:[图片] "让画面中的花朵随风摇曳"
↓
2. 龙虾AI保存图片到临时文件
- 从消息附件中下载图片
- 保存为 /tmp/volcengine_image_xxx.jpg
↓
3. 调用上传脚本
python3 {baseDir}/scripts/upload_image.py /tmp/volcengine_image_xxx.jpg
↓
4. 解析返回结果,获得公开URL
{"url": "http://www.junyunaidev.com/uploads/2026/04/21/xxx.jpg"}
↓
5. 调用 /v1/chat/completions 创建图生视频任务
{
"model": "doubao-seedance-2-0-260128",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "用户的原始描述(不要修改)"},
{"type": "image_url", "image_url": {"url": "步骤4获得的URL"}}
]
}]
}
↓
6. 获得 task_id
↓
7. 每8秒轮询 /v1/aigc/task/{task_id}
↓
8. 状态为 SUCCESS → 获取 result_url
↓
9. 下载视频到本地
↓
10. 向用户展示:
- 视频播放链接
- 本地文件路径
关键提示:
- 直接使用用户的原始描述作为prompt,不要扩写或润色
- 图片必须先上传,不能直接使用本地路径
- 轮询间隔8秒,超时10分钟则告知用户稍后通过任务ID查询
- 绝对不要因为等待时间长就重复创建新任务!
场景3:使用现有网络图片
用户:“用这张图生成视频 https://example.com/photo.jpg,让人物微笑”
↓
1. 直接使用URL,不需要上传
↓
2. 调用 /v1/chat/completions:
{
"model": "doubao-seedance-2-0-260128",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "让人物微笑"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}
↓
3. 后续流程同场景2
六、轮询策略
- 间隔: 每 8 秒查询一次
- 完成判断: status 变为 "SUCCESS" 表示任务完成
- 超时: 连续轮询 10 分钟仍无结果,告知用户"生成时间较长,可稍后通过任务ID查询"
- 错误重试: 单次查询失败可重试 1 次,连续 3 次失败则停止
- 失败处理: 任务失败会自动退款,无需手动操作
- 重要: 绝对不要因为等待时间长就重复创建新任务!每个任务ID唯一对应一个视频生成请求
七、输出格式
上传脚本返回:
{
"url": "http://www.junyunaidev.com/uploads/2026/04/21/xxx.jpg"
}
创建任务返回:
{
"created": 1713686400,
"data": [{}],
"task_id": "cgt-20260421140001-mz4n5",
"status": "PROCESSING",
"message": "Task created, use /v1/aigc/task/cgt-20260421140001-mz4n5 to query status"
}
查询状态返回(完成):
{
"task_id": "cgt-20260421140001-mz4n5",
"status": "SUCCESS",
"progress": 100,
"result_url": "https://xxx.volces.com/xxx.mp4",
"video_params": {
"resolution": "720p",
"ratio": "16:9",
"duration": 5
}
}
八、核心原则
你(用户侧 Agent)的职责是搬运工,不是创作者。你要做的只有:
- 上传: 用户给了本地图片 →
upload_image.py拿到URL - 传话: 把用户的原始描述原封不动发给API
- 取件: 轮询结果 → 下载视频 → 展示给用户
绝对不要做的事:
- 不要替用户扩写、润色 prompt
- 不要自行添加风格描述(如"电影级光影、8K分辨率")
- 不要修改用户的原始意图
> ⚠️ 严格警告:绝对禁止修改用户 prompt。哪怕用户只说了"生成熊猫视频"四个字,也必须原封不动传给 API。任何对 prompt 的修改都会导致生成结果偏离用户预期。
正确示例:
用户:"让花朵随风摇曳"
→ 直接使用这个prompt
错误示例:
❌ 自己写成:"让花朵在微风中轻轻摇曳,阳光洒落,电影级画质"
九、注意事项
⚠️ API Key 错误排查
如果提示 "Invalid API Key" 或 "Unauthorized" 错误:
1. 检查是否替换了示例中的 YOUR_TOKEN
2. 确认 API Key 格式: sk-xxxxxxxxx
3. 登录后台确认 API Key 状态为启用
其他注意事项
- 图片大小限制:10MB
- 支持的图片格式:JPG, PNG, WebP, GIF, BMP
- 视频时长:
- 支持范围:4-15秒(任意整数)
- 不传或传入0/负数 → 默认 5秒
- 传入1-3秒 → 校准为 4秒
- 传入4-15秒 → 使用传入值
-
传入16秒以上 → 校准为 15秒
-
Prompt描述:告诉AI让画面如何动起来(图生视频场景)
- 图片URL必须是HTTP/HTTPS公开可访问
- 生成过程中只告知用户"正在生成中"
- 任务完成后再给出结果链接和本地文件路径
- 任务失败会自动退款
十、示例对话
用户: 帮我生成一个日落的视频
助手: 好的,我来为您生成一个日落视频。
[调用 API 创建视频任务]
视频任务已创建!任务ID: cgt-20260421140001-mz4n5
视频生成通常需要 3-8 分钟,请稍候...
[轮询查询状态...]
视频生成完成!您可以通过以下链接查看:
https://xxx.volces.com/xxx.mp4
用户: [发送图片] 让画面中的海浪动起来
助手: 好的,我先上传您的图片,然后生成视频。
[步骤1: 保存图片]
- 从用户消息中下载图片附件
- 保存到 /tmp/volcengine_image_12345.jpg
[步骤2: 上传图片]
python3 {baseDir}/scripts/upload_image.py /tmp/volcengine_image_12345.jpg
返回:
{
"url": "http://www.junyunaidev.com/uploads/2026/04/21/abc-def.jpg"
}
[步骤3: 创建视频任务]
curl -X POST https://api.opsmoneye.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
--data-binary '{
"model": "doubao-seedance-2-0-260128",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "让画面中的海浪动起来"},
{"type": "image_url", "image_url": {"url": "http://www.junyunaidev.com/uploads/2026/04/21/abc-def.jpg"}}
]
}]
}'
[步骤4: 轮询查询]
每8秒调用一次:
curl https://api.opsmoneye.com/v1/aigc/task/cgt-20260421141500-abc123 \
-H "Authorization: Bearer YOUR_TOKEN"
[步骤5: 下载并展示]
视频生成完成!
- 播放链接:https://xxx.volces.com/xxx.mp4
- 本地文件:/tmp/volcengine_video_xxx.mp4