Seedance 2.0 分镜视频创作工具
将创意想法转化为专业分镜提示词,通过即梦 API 先生成参考图,再基于图片+提示词生成视频、自动下载。
前置条件
使用本技能前,确保以下服务可用:
-
jimeng-free-api-all 服务运行中(默认端口 8000)
docker run -it -d --init --name jimeng-free-api-all \
-p 8000:8000 -e TZ=Asia/Shanghai \
wwwzhouhui569/jimeng-free-api-all:latest
-
获取 SessionID:
-
环境变量(可选,也可在交互中指定):
JIMENG_API_URL:API 基础地址(默认 http://127.0.0.1:8000),注意只填基础地址,不要包含路径部分。如使用 duckcloud 服务则为 https://jimeng.duckcloud.fun
JIMENG_SESSION_ID:即梦 SessionID
核心能力
Seedance 2.0 特性
重要约束:Seedance 2.0 必须至少提供一张参考图片,不支持纯文本生成视频。当用户没有提供图片时,需要先通过文生图 API 生成首帧参考图。
多模态输入(最多12个文件):
- 图片:≤9张(首帧/尾帧/角色/场景参考)
- 视频:≤3个,总时长≤15s(运镜/动作/特效参考)
- 音频:≤3个,总时长≤15s(配乐/音效/对白参考)
- 文本:自然语言描述
视频参数:
- 模型:
seedance-2.0-fast(推荐,快速版)/ jimeng-video-seedance-2.0-fast(等价别名)/ jimeng-video-seedance-2.0(Pro版)/ seedance-2.0 / seedance-2.0-pro(Pro等价别名)
- 比例:
1:1 / 4:3 / 3:4 / 16:9 / 9:16 / 3:2 / 2:3 / 21:9
- 分辨率:
480p / 720p(默认)/ 1080p
- 时长:
4 - 15 秒
交互方式:使用 @1、@2(或 @图1、@image1)指定素材用途
完整工作流(三阶段)
核心流程:分镜提示词 → 文生图生成首帧 → 图片+提示词生成视频
用户输入创意 → 第一阶段:生成分镜提示词
→ 第二阶段:调用文生图 API 生成首帧参考图 → 下载图片到本地
→ 第三阶段:用参考图 + 分镜提示词调用 Seedance 2.0 → 下载视频
第一阶段:分镜提示词生成
步骤一:理解用户想法
用友好的方式询问用户:
- 你想讲什么故事?(一句话概括核心内容)
- 视频时长?(4-15秒,默认4秒)
- 有参考素材吗?(图片/视频路径)
- 是否需要直接生成视频?(是→进入第二、三阶段 / 否→只输出提示词)
步骤二:深入挖掘细节
根据用户的初步回答,逐步引导完善以下维度:
1. 内容叙事
2. 视觉风格
- 整体风格:写实/动画/水墨/科幻/复古/电影感
- 色调氛围:明亮/昏暗/暖色/冷色/黑白
- 画面比例:竖屏(9:16)/横屏(16:9)/标准(4:3)
3. 镜头语言
- 景别变化:远景→全景→中景→近景→特写
- 运镜方式:推/拉/摇/移/跟/环绕/升降/希区柯克变焦
- 转场方式:硬切/渐变/匹配剪辑/特效转场
4. 动作与节奏
- 主体动作:行走/奔跑/打斗/舞蹈/表情变化
- 动作节奏:舒缓/急促/有张有弛
5. 声音设计
- 配乐风格:激昂/温馨/悬疑/欢快/史诗
- 音效需求:环境音/动作音效/特殊音效
步骤三:构建分镜结构
将故事拆解为时间轴上的镜头序列。
示例结构(4秒视频):
0-1秒:开场镜头,建立场景
1-3秒:发展,核心动作/情感
3-4秒:结尾,画面定格
步骤四:生成两种提示词
根据收集的信息,分别生成:
A. 首帧图片提示词(用于文生图)
描述视频第一帧的静态画面,作为 Seedance 2.0 的首帧参考图。
首帧提示词要求:
- 描述一个静止的画面瞬间(不含动作、运镜等动态描述)
- 包含:场景、人物/主体外观、光影、色调、构图
- 画面比例应与视频比例一致
- 简洁精炼,100-200 字
示例:
日落时分的海边沙滩,一位穿着白色飘逸长裙的年轻女孩站在海边,面朝大海,夕阳逆光照射,金色光晕笼罩全身,长发和裙摆被海风轻轻吹动,远处海平线上的落日将天空染成橘红色,脚边浅浅的海浪泡沫
B. 视频分镜提示词(用于 Seedance 视频生成)
完整的分镜提示词,用 @1 引用首帧参考图。
提示词结构模板:
【整体描述】风格 + 时长 + 画面比例 + 整体氛围
@1 作为画面首帧参考
【分镜描述】
0-X秒:[镜头运动],[画面内容],[主体动作],[光影/特效]
X-Y秒:[镜头运动],[画面内容],[主体动作],[光影/特效]
...
【声音说明】配乐风格/音效/对白
提示词书写原则:
- 时间轴清晰,标注每段的秒数范围
- 镜头语言明确(推/拉/摇/移/跟/环绕等)
- 动作描述具体,避免模糊词汇
- 必须使用
@1 引用首帧图片(首帧图片由第二阶段自动生成)
- 如果用户提供了多张图片,使用
@1、@2 分别引用
- 总长度控制在 500 字以内
步骤五:优化与确认
- 检查是否违反平台规则(写实人脸限制)
- 确认用户满意后进入第二阶段
第二阶段:文生图生成首帧参考图
目的:Seedance 2.0 必须有参考图片,当用户没有提供图片时,先通过文生图 API 生成首帧画面。
如果用户已提供图片:跳过此阶段,直接进入第三阶段。
步骤一:调用文生图 API
curl -s --max-time 120 -X POST "${API_URL}/v1/images/generations" \
-H "Authorization: Bearer ${SESSION_ID}" \
-H "Content-Type: application/json" \
-d "{
\"model\": \"jimeng-4.5\",
\"prompt\": \"${首帧图片提示词}\",
\"ratio\": \"${RATIO}\",
\"resolution\": \"2k\"
}"
参数说明:
| 参数 |
说明 |
推荐值 |
| model |
图像生成模型 |
jimeng-4.5(稳定高质量) |
| prompt |
首帧画面描述 |
第一阶段生成的首帧提示词 |
| ratio |
画面比例 |
与视频比例一致(如 9:16) |
| resolution |
图片分辨率 |
2k |
API 返回格式:
{
"created": 1700000000,
"data": [
{ "url": "https://p6-heycan-hgt.byteimg.com/..." }
]
}
步骤二:下载首帧图片到本地
IMAGE_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
IMAGE_FILE="/tmp/seedance_frame_$(date +%Y%m%d_%H%M%S).png"
curl -sL -o "${IMAGE_FILE}" "${IMAGE_URL}"
步骤三:向用户展示首帧图片
报告生成结果,让用户确认首帧画面满意后进入第三阶段。
第三阶段:Seedance 2.0 视频生成与下载
步骤一:确认生成参数
| 参数 |
说明 |
默认值 |
| API 地址 |
jimeng-free-api-all 服务地址 |
http://127.0.0.1:8000 |
| SessionID |
即梦平台的 sessionid |
环境变量或用户提供 |
| 模型 |
seedance-2.0-fast |
seedance-2.0-fast |
| 比例 |
视频画面比例 |
与首帧图片一致 |
| 分辨率 |
视频分辨率 |
720p |
| 时长 |
4-15 秒 |
4 |
| 参考图片 |
首帧图片路径(第二阶段生成或用户提供) |
必需 |
步骤二:调用 Seedance 视频生成 API
使用本地图片(multipart/form-data):
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
-H "Authorization: Bearer ${SESSION_ID}" \
-F "model=seedance-2.0-fast" \
-F "prompt=${VIDEO_PROMPT}" \
-F "ratio=${RATIO}" \
-F "resolution=${RESOLUTION}" \
-F "duration=${DURATION}" \
-F "files=@${IMAGE_FILE}"
多张图片时:
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations" \
-H "Authorization: Bearer ${SESSION_ID}" \
-F "model=seedance-2.0-fast" \
-F "prompt=${VIDEO_PROMPT}" \
-F "ratio=${RATIO}" \
-F "resolution=${RESOLUTION}" \
-F "duration=${DURATION}" \
-F "files=@/path/to/image1.jpg" \
-F "files=@/path/to/image2.jpg"
重要:
- Seedance 2.0 必须至少上传一张图片,否则返回错误
{"code":-2001,"message":"Seedance 2.0 需要至少一张图片"}
- API 是同步阻塞的,会自动轮询直到视频生成完成(通常 60-120 秒)
- curl 超时建议设置为 300 秒:
--max-time 300
- 提示词中的
@1、@2 对应 files 参数中图片的上传顺序
- Authorization 头需要
Bearer 前缀,格式为 Bearer your_sessionid
步骤三:解析结果
API 返回 OpenAI 兼容格式:
{
"created": 1700000000,
"data": [
{
"url": "https://v3-dreamnia.jimeng.com/...",
"revised_prompt": "原始提示词"
}
]
}
步骤四:下载视频
VIDEO_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
OUTPUT_FILE="seedance_$(date +%Y%m%d_%H%M%S).mp4"
curl -L -o "${OUTPUT_FILE}" "${VIDEO_URL}"
echo "视频已下载到: $(pwd)/${OUTPUT_FILE}"
步骤五:展示结果
向用户报告:
- 视频生成成功/失败
- 视频文件路径和大小
- 使用的首帧图片和分镜提示词(方便用户微调重试)
错误处理
API 错误码
| 错误 |
含义 |
处理方式 |
code: -2001 |
Seedance 需要至少一张图片 |
先调文生图 API 生成首帧,再重试 |
| HTTP 200 |
成功 |
提取 data[0].url |
| HTTP 401 |
SessionID 过期 |
提示用户重新获取 |
| HTTP 400 |
参数错误 |
检查 model/ratio/duration |
| HTTP 429 |
积分不足 |
提示用户等待或充值 |
| HTTP 500 |
服务器错误 |
重试或检查服务状态 |
常见问题
| 问题 |
解决方案 |
| Seedance 报错需要图片 |
必须先通过文生图生成首帧,再用图片调 Seedance |
| 连接拒绝 |
检查 jimeng-free-api-all 容器是否运行 |
| 生成超时 |
增加 curl --max-time,或降低时长 |
| 内容被过滤 |
修改提示词,避免敏感内容 |
| 视频 URL 失效 |
URL 有时效性,及时下载 |
| 积分不足 |
每日免费积分有限,次日刷新 |
完整示例对话
示例一:纯文本创作(无用户图片 → 自动生成首帧)
用户:帮我生成一个橘猫在海边捉螃蟹的视频,9:16竖屏,4秒
第一阶段 - 生成提示词:
首帧图片提示词:
阳光明媚的海边沙滩,一只圆滚滚的橘色猫咪蹲在潮湿的沙滩上,好奇地盯着面前一只小螃蟹,金色阳光照射,海浪轻轻拍打岸边,色彩鲜明活泼,3D动画风格
视频分镜提示词:
可爱3D动画风格,4秒,9:16竖屏,阳光明媚的海边
@1 作为画面首帧参考
0-1秒:中景,画面中的橘猫好奇地盯着沙滩上的小螃蟹,海浪轻拍岸边
1-3秒:近景跟随,橘猫伸出爪子试探性地去抓螃蟹,螃蟹举起钳子反击,橘猫被吓得往后一跳,表情夸张可爱
3-4秒:中景微拉远,橘猫和螃蟹对峙,背景碧蓝大海和白色浪花
背景音效:欢快俏皮卡通配乐 + 海浪声
第二阶段 - 生成首帧参考图:
curl -s --max-time 120 -X POST "${API_URL}/v1/images/generations" \
-H "Authorization: Bearer ${SESSION_ID}" \
-H "Content-Type: application/json" \
-d '{
"model": "jimeng-4.5",
"prompt": "阳光明媚的海边沙滩,一只圆滚滚的橘色猫咪蹲在潮湿的沙滩上,好奇地盯着面前一只小螃蟹,金色阳光照射,海浪轻轻拍打岸边,色彩鲜明活泼,3D动画风格",
"ratio": "9:16",
"resolution": "2k"
}'
IMAGE_URL=$(echo "${RESPONSE}" | jq -r '.data[0].url')
curl -sL -o /tmp/seedance_frame.png "${IMAGE_URL}"
第三阶段 - 生成视频:
curl -s --max-time 300 -X POST "${API_URL}/v1/videos/generations"