seedance
双重职责:
- 写好 Seedance 2.5 中文提示词 —— Part 2(创意层)
- 用
seedance-cli把提示词跑成 MP4/MOV 落到本地 —— Part 1(工程层)
完整闭环:用户讲创意 → Part 2 写提示词 → Part 1 跑 CLI → 落盘视频 → 可选接龙/延长下一段。
核心原则:
- 写提示词时把"形容词堆砌"重写成工程指令:八大要素 + 任务分类句式 + 镜头分镜 + 多模态绑定,全中文输出(见 Part 2)。
- 跑生成时一律走
seedance-cli,不手拼 curl,不绕开默认轮询+下载。默认模型是 Seedance 2.5(-m 2.0可切回)。 - Claude 看不见视频文件——要么验文件 + 元数据,要么 ffmpeg 抽帧后 Read 静图。
- 2.5 的任务分"有锁定 / 无锁定"两类(见 2.4):编辑锁比例+时长、首尾帧/延长锁比例——锁定任务不要传
--ratio,CLI 会前置拦截,漏网的会变成异步报错(任务建成功、轮询到 failed 才见错误)。 - Seedance 2.x 不接受写实真人脸部素材——报
InputImageSensitiveContentDetected.PrivacyInformation。豁免:本账号 30 天内 2.x 原始产物、平台预置虚拟人像(asset://)、已授权素材。
Part 1 — 怎么调用 CLI(工程层)
1.1 前置
- 确认
seedance-cli可执行(which seedance-cli或seedance-cli --version)。不可执行则提示用户uv tool install zjandrew-seedance-cli或pipx install zjandrew-seedance-cli(PyPI 包名;命令名seedance-cli不变)。 - 配置 API key:优先 env
ARK_API_KEY;缺失时引导seedance-cli config init。 - 默认 endpoint 是
https://ark.cn-beijing.volces.com/api/v3,自建/代理 endpoint 走seedance-cli config set endpoint https://<...>/api/v3或--endpoint单次覆盖。
1.2 多 profile 配置
seedance-cli config list # 列所有 profile,active 标 *
seedance-cli config use <name> # 切 active
seedance-cli config add <name> # 向导式新增
seedance-cli --profile <name> generate ... # 单次覆盖,不改 active
seedance-cli config show [<name>] # 查看(api_key 已脱敏)
优先级:--profile flag > SEEDANCE_PROFILE env > 文件 active。--api-key / --endpoint 是字段级覆盖,不会让 --profile 失效。
1.3 核心命令速查
# 文生视频(默认 2.5,时长 4-30s 或 -1 让模型自选)
seedance-cli generate -p "<prompt>" --ratio 16:9 --duration 5 --out v.mp4
# 图生视频 - 首帧(2.5 上比例锁定跟随首帧,不要传 --ratio)
seedance-cli generate -p "<prompt>" --image start.png --duration 5 --out v.mp4
# 图生视频 - 首尾帧(同上,比例锁定)
seedance-cli generate -p "<prompt>" \
--image first.png:first_frame --image last.png:last_frame \
--duration 5 --out v.mp4
# 多模态参考(2.5 最多 30 图;2.0 系最多 9 图)
seedance-cli generate -p "<prompt>" --image a.png --image b.png --image c.png \
--duration 5 --out v.mp4
# 视频编辑(2.5:显式 --task-type edit 把异步报错变同步;时长锁定跟随输入,勿传 --duration/--ratio)
# ⚠️ 视频输入只收 web URL(http(s)/asset://),本地文件会被前置拒绝(API 不收 base64 视频)
seedance-cli generate -p "把房子刷成蓝色" --video "https://.../orig.mp4" \
--task-type edit --output-format mov --out edited.mov
# 视频延长(2.5:时长可自定义,比例锁定;mov 声画衔接最佳)
seedance-cli generate -p "向后延长@视频1,..." --video "https://.../orig.mp4" \
--task-type extend --output-format mov --duration 10 --out extended.mov
# 纯音频驱动(仅 2.5;2.0 系音频必须搭图/视频)
seedance-cli generate -p "<prompt>" --audio voice.mp3 --out v.mp4
# 多模态组合:图 + 视频 + 音频(视频仍须 URL)
seedance-cli generate -p "<prompt>" --image a.png --video "https://.../b.mp4" --audio bgm.mp3 --out v.mp4
# 任务管理
seedance-cli task list --status running
seedance-cli task get <task_id> --wait --out path.mp4
seedance-cli task delete <task_id>
1.4 模型选型(-m flag)
| 想要 | -m 值 |
关键差异 |
|---|---|---|
| 默认 / 最强 | 2.5(默认) |
30s 直出、50 参考素材(30图/10视/10音)、响应时间戳、纯音频输入、mov 输出、白模/宫格/关键帧;仅 480p/720p |
| 1080p / 4k 输出 | 2.0 |
2.0 独有 1080p 与 4k(10bit);素材上限 9/3/3,单段 ≤15s |
| 又快又省 | 2.0-fast / 2.0-mini |
仅 480p/720p;mini 更便宜 |
| 离线推理省钱 | 1.5-pro --service-tier flex |
价格 50%,响应小时级 |
| 指定帧数 | 1.0-pro --frames 29 |
唯一支持 --frames(满足 25+4n,29-289) |
Seedance 2.x(2.5 + 2.0 全系)不支持的(CLI 会前置拦截):
--seed/--frames/--camera-fixed/--service-tier flex(全是 1.x 专属)- 写实真人脸部参考图/视频(豁免见「核心原则」)
仅 2.5 支持:--task-type、--output-format、纯音频输入、4-30s 时长。2.5 不支持 1080p/4k——要高分辨率就 -m 2.0。
1.5 参数选型(CLI flag)
| 意图 | 推荐参数 |
|---|---|
| 试拍 / 预览 | --ratio 16:9 --resolution 720p --duration 5 |
| 让模型自选时长 | --duration -1(2.5/2.0 系/1.5-pro;编辑任务默认就是 -1) |
| 高分辨率定稿 | -m 2.0 --resolution 1080p(或 4k;仅 2.0) |
| 竖版短视频 | --ratio 9:16 |
| 首帧/首尾帧/编辑/延长 | 省略 --ratio(2.5 上这些任务比例锁定跟随输入,传了会被拦截) |
| 编辑/延长要同步报错 | --task-type edit / --task-type extend(仅 2.5) |
| 编辑/延长链条 | --output-format mov(仅 2.5;H.264+yuv444p+PCM,声画一致性最佳) |
| 离线推理 | -m 1.5-pro --service-tier flex --execution-expires-after 172800 |
| 有声/无声 | --generate-audio / --no-generate-audio(2.5/2.0 系/1.5-pro;默认有声) |
| 拿到尾帧做接龙 | --return-last-frame --out-last-frame last.png |
1.6 本地输入 vs URL
- 图片/音频本地路径自动 base64 编码,注意限额:单图 ≤ 30 MB、单音频 ≤ 15 MB,请求体总 ≤ 64 MB。
- 视频只收 web URL(http(s) /
asset://):API 不接受 base64 视频,CLI 对本地视频路径前置报INVALID_INPUT。拿 URL 的两条路:复用上一个任务响应里的video_url(24h 有效),或上传到 TOS/OSS。 - 数量上限按模型:2.5 30 图 / 10 视频 / 10 音频(视频、音频各总时长 ≤30s);2.0 系 9 / 3 / 3(总时长 ≤15s)。超限报
INVALID_INPUT。 - 超大文件先上传到 TOS / OSS 拿公开 URL,再传
--image https://...。URL 输入零成本(服务端拉),优先用 URL。 - 已验证:
data:<mime>;base64,...data URI 形态服务端接受;asset://<ID>引用平台预置素材/虚拟人像。
1.7 异步与任务管理
什么时候用 --async:
- 一次性派多个任务,让队列跑
- 任务很长(1080p + 12s + 2.0),开
--async然后睡一觉 - CI 编排,不想 Python 进程挂半小时
恢复模式:
seedance-cli task list --status running # 看哪些没收
seedance-cli task get <id> --wait --out path.mp4 # 接回阻塞下载
seedance-cli task delete <id> # 取消排队 / 删历史
POLL_CANCELLED(Ctrl-C)或 POLL_TIMEOUT(--timeout 命中)时,envelope 里仍含 task_id,用 task get --wait 续杯,不要从头重发(会浪费 token)。
1.8 产物验证
Claude 看不见 MP4。能做的:
- 确认
video_path存在、os.path.getsize非零 - 报 envelope 里的
duration/resolution/ratio/framespersecond给用户 - 想"看"内容时,ffmpeg 抽帧 + Read:
ffmpeg -ss 00:00:00 -i clip.mp4 -frames:v 1 preview-first.jpg
ffmpeg -sseof -1 -i clip.mp4 -frames:v 1 preview-last.jpg
然后 Read preview-first.jpg / preview-last.jpg 让自己看到首尾帧,给用户描述。没 ffmpeg 就明说"装一下或者你自己看",别假装看到了。
1.9 常见错误处置
按退出码处理:
CONFIG_MISSING/INVALID_INPUT(exit 2)→ 引导config init或修参数;报错信息里带修正指引(如"drop --ratio")。IO_ERROR(exit 3)→ 检查--out路径是否存在 / 可写;父目录不存在时改用结尾带/的目录形式触发 mkdir。ARK_API_ERROR(exit 4)→ 读details.status和details.message:- 429 退避后重试
- 400 改 prompt / 参数
InputImageSensitiveContentDetected.PrivacyInformation→ 输入含真人脸,2.x 不接受;换非真人脸素材或用豁免渠道
NETWORK_ERROR(exit 5)→ 重试;多次失败核对config show的 endpoint。TASK_FAILED(exit 6)→ 读details.error.code/message(CLI 已透出):InvalidParameter.TaskTypeConstraint→ 2.5 异步报错:参数与模型判定的任务类型不符(最常见:锁定任务传了 ratio / 编辑任务传了非 -1 时长)。修参数重发,并加--task-type edit/extend让下次错误变成同步 400- 其他多半是内容策略或参考素材问题
TASK_EXPIRED(exit 7)→ 任务超时被标 expired,重新建。POLL_TIMEOUT/POLL_CANCELLED(exit 8/9)→ envelope 里有task_id,用task get --wait续。INTERNAL(exit 10)→ bug,带--verbose跑一次拿 stacktrace,报 issue。
产物时效:视频 URL 24h 有效;2.5 的 URL 还有 100 次下载上限;任务记录仅存 7 天——生成完立即下载落盘(CLI 默认就是),别把 URL 当持久存储。
1.10 Red Flags — 出现这些信号立即停下
- 我正要把 gpt-image"重生成本图"心智搬过来 → 停,seedance 多轮 = 故事接龙,不是 A/B
- 我正要
Read clip.mp4→ 停,Read 读不出视频,要么抽帧要么报元数据 - 我正要在没
--return-last-frame的情况下接龙 → 停,链断了模型从零构图 - 我正要给 2.5 的首帧/首尾帧/编辑/延长任务传
--ratio→ 停,比例锁定跟随输入,传了被拦截或异步报错 - 我正要把本地视频文件传给
--video→ 停,视频只收 URL;用上一个任务的video_url或先传 TOS/OSS - 我正要开 1080p → 停,2.5 只有 480p/720p;确实要 1080p/4k 就
-m 2.0,且试拍先 720p - 我正要按 2.0 心智告诫"别写绝对秒数" → 停,2.5 响应整数秒时间戳,时间戳是 2.5 的一等公民(2.0 才只认镜头序号)
- 我正要自己写 Python 轮询循环 → 停,CLI 已经轮询了,用
--wait别绕开 - 我正要把多段任务并发派出去 → 停,接龙必须串行(每段依赖上段尾帧),且并发受模型限制(个人 3 / 企业 10)
- 我正要凭记忆汇报"已生成"→ 停,先确认
video_path存在 + 报元数据 - 我正要上传写实真人脸素材 → 停,2.x 拒收(豁免见「核心原则」)
1.11 不要做
- 不要分析或识别已有视频(本 CLI 不覆盖 vision 任务)
- 不要自己拼 curl 调 Ark - 走 CLI,envelope / 错误路径才统一
- 不要在 prompt 里硬写比例数字而
--ratio是另一个,会拼接撕裂 - 不要把
ARK_API_KEY写进 shell history,用config init或 env
1.12 安全与预期
- 单段视频生成耗时 30s - 几分钟;长 duration、含视频输入、2.0 的 1080p/4k 会明显更慢更贵。
- 2.5 计费(元/百万 token,只算输出):无视频输入 70、含视频输入 42,另含视频输入时有最低 token 用量。参考:16:9 5s 输出 720p 约 7.56 元。
--service-tier flex价格是 default 的 50%,但只支持 1.5-pro / 1.0-pro 系列,且响应时间是小时级。- mov 产物(2.5)在 VLC/mpv/IINA(mac) 正常播放,Windows 部分播放器不支持;交付前确认用户环境。
- 视频文件可能很大,务必传
--out显式路径,不要在任意目录默认落盘。 - 脚本场景首选
--format json+--jq '.data.video_path',稳定可解析。
Part 2 — 怎么写提示词(创意层)
你是 Seedance 2.5 的提示词工程师 & 多模态 AI 导演。提示词默认用中文写(2.5 原生支持 11 种语言:中英西印尼葡日马来泰阿越韩,台词可按需选语种),具体到画面、动作、镜头、声音。
2.1 平台规格(Seedance 2.5,括注 2.0 差异)
| 维度 | 2.5 规格 | 2.0 系差异 |
|---|---|---|
| 图片输入 | jpeg/png/webp/bmp/tiff/gif/heic/heif,≤30 张,单张 < 30 MB | ≤9 张 |
| 视频输入 | mp4/mov,仅 URL(http(s)/asset://,不收 base64),≤10 个,单个 2-30 秒且总时长 ≤30s,单个 < 50 MB | ≤3 个,总 ≤15s |
| 音频输入 | mp3/wav,≤10 个,总时长 ≤30 秒,单个 < 15 MB;可仅传音频 | ≤3 个;必须搭图/视频 |
| 生成时长 | 4-30 秒,或 -1 让模型自选(编辑任务锁定跟随输入) | 4-15 秒 |
| 声音输出 | 默认有声(--no-generate-audio 关) |
同 |
| 分辨率 | 仅 480p / 720p | 2.0 另有 1080p / 4k |
| 宽高比 | 6 档 + adaptive;经输入素材可实现 [0.4,2.5] 任意比 | 仅固定 6 档 |
| 输出格式 | mp4 / mov(--output-format) |
仅 mp4 |
| 提示词语言 | 11 种,响应整数秒时间戳 | 6 种,只认镜头序号 |
⚠️ 平台限制(写提示词前必须知道):
- 不支持上传写实真人脸部素材(图片和视频均不可),返回
InputImageSensitiveContentDetected.PrivacyInformation;豁免渠道见 Part 1「核心原则」。- 有参考视频时生成更慢、更贵(含视频输入还有最低 token 用量)。
- 视频延长时,
--duration选的是"新增部分"的时长(延长 5 秒就--duration 5);编辑任务时长锁定,--duration省略或 -1。
有锁定 vs 无锁定(2.5 任务两分法,必读)
2.5 按"输入素材是否会锁定输出属性"把任务分两类——这决定了哪些 CLI 参数能传:
| 类别 | 任务 | 锁定 | 触发关键词(提示词里) |
|---|---|---|---|
| 有锁定 | 视频编辑 | 比例=adaptive 且 时长=-1(跟随待编辑视频,输入须 4-30s) | 编辑视频、增加/加上、删除/去掉、修改/替换/改成 |
| 有锁定 | 首帧/首尾帧 | 比例=adaptive(跟随首帧图);时长可自定义 | role=first_frame/last_frame(参数触发,非关键词) |
| 有锁定 | 视频延长 | 比例=adaptive(跟随待延长视频);时长可自定义 | 向前/向后延长、延续、续写 |
| 无锁定 | 参考生视频 / 宫格分镜 / 关键帧 | 无——比例、时长随便选 | 参考、按分镜、以图片 X 为关键帧 等 |
实操含义:锁定任务不要传 --ratio(CLI 前置拦截);编辑任务不要传非 -1 的 --duration。auto 模式下模型按关键词自判任务类型,判成锁定任务而参数不符 → 异步报错;显式 --task-type edit/extend 可把校验前置成同步 400。首尾帧想不锁比例 → 改用 reference_image role + 提示词写「图片 X 为首帧」(弱首尾帧,构图相近但不严格)。
2.2 核心心法:工程型指令 ≠ 文案型形容
Seedance 在内部把素材拆成**空间层(画面里有什么)与时间层(事情如何随时间变化)**两个维度来理解和生成。因此 好的提示词不是堆形容词,而是工程指令:谁、在什么场景、做什么动作、镜头如何运动、按怎样的镜头顺序/时间轴发生。官方对 2.5 的定位:把它当视觉内容生产者,用导演思维写结构化 Prompt——素材指代 → 一句话概述 → 具体情节(时间戳或镜头序号切分)→ 结尾贯穿性细节。
你的首要任务是把用户"纯堆砌形容词"的低质提示词,重写为符合 Seedance 2.5 语法约定(八大要素 + 镜头分镜 + 多模态绑定)的工程化提示词。落地路径:
| 心法 | 落到哪一节 |
|---|---|
| 先判任务类型,再选句式 | 2.4 任务分类 |
| 逐项核对八大要素,缺啥补啥 | 2.5 八大核心要素 |
| 把烂 prompt 走流程重写 | 2.6 提示词优化工作流 |
| 具体句式工具集 | 2.7 十大能力模式库 |
多模态能力总览:
- 多模态参考:图、视频、音频、文本四种模态输入,用
@引用系统在提示词中点名。 - 首尾帧控制:
--image x.png:first_frame --image y.png:last_frame。 - 自动分镜与运镜:模型可根据故事描述自动规划。
- 视频延长 / 视频编辑 / 一镜到底:详见 2.4 任务分类与 Part 3 workflow。
2.3 引用语法(统一标准)
素材引用
- 图片:
@图片1…@图片30;视频:@视频1…@视频10;音频:@音频1…@音频10(按上传顺序编号,从 1 开始;2.0 系上限 9/3/3)。 - CLI 对应:
--image出现顺序决定@图片1/2/…,--video决定@视频1/…,--audio决定@音频1/…。
seedance-cli generate \
-p "以@图片1为首帧,参考@视频1的运镜,@图片2作为最终落点" \
--image start.png \
--image end.png \
--video reference.mp4 \
--out v.mp4
- 素材多时,映射清单化(2.5 官方建议):人数多用清单逐一列清,如「img1-2 是人物 1,对应音频 1;img3-4 是人物 2,对应音频 2」。不要只在图片里写映射信息(图上写名字、prompt 里直呼其名容易多人混淆)。
- 素材足够精准时只做指代,减少复述:「严格参考@视频1的动作与运镜,顺序与视频保持一致」即可,不必在 prompt 里逐句重写视频内容。
- 部分参考要写明参考哪部分:「参考@视频1中施法的动作、@视频2的环绕式运镜」「参考@图片1的光影和滤镜」。
主体引用(推荐两种之一)
- 未提前定义:
<主体N>@图片N,强调主体与素材的绑定关系。例:张红@图片1、<主体1>@图片1。 - 多主体场景或需复用:先定义
将 @图片N 中的[2-3 个稳定静态特征] 定义为 <主体N>,之后全程用同一标签<主体N>指代。 - 同主体多素材:
将 @图片1 中的[…]、@图片2 中的[…] 定义为 <主体N>。 - 人脸参考策略(如适用):
<主体1> 的面部特征参考 @图片1(大头照),妆造参考 @图片2(全身照)。
三条硬规则
- Asset ID 屏蔽:底层模型不能直接关联无语义 Asset ID,严禁 在动作描述里裸写
[asset-xxx],必须通过@图片N/<主体N>桥接。 - 断句防歧义:裸用
@图片N紧接动词或方位词(如@图片1跑向…、@图片2位于…)易触发数字粘连歧义。应改为<主体N>@图片N,或在@图片N后补名词隔断。- 正确:
<主体1>(李武)站起身走向 <主体2>(苏有)、@图片2 中的女生位于画面左侧。 - 错误:
@图片2位于…、@图片1跑向…。
- 正确:
- 用途标注:多素材时每个
@对象都要标清用途——是首帧、运镜参考、还是主体形象,别把图、视频、角色搞混。
@图片1为首帧
参考@视频1的运镜效果
背景音乐参考@音频1
@图片1的人物形象
2.4 任务分类(先判定,再选句式)
| 类型 | 适用场景 | 推荐句式 | CLI 配套(2.5) |
|---|---|---|---|
| 多模态参考 | 动作迁移、主体复用、氛围借鉴、白模渲染、宫格/关键帧 | 参考 @图片N 中的 <主体N>,生成… / 参考 @视频N 中的 <动作/运镜/风格/音效>,生成… / 参考 @音频N 中的音色,生成… |
无锁定,--ratio/--duration 随意 |
| 编辑视频 | 局部替换、主体抹除、属性/音频修改 | 增:清晰描述 <元素特征>+<出现时机>+<出现位置>;改:严格编辑 @视频N,将其中的<原特征>修改为<新特征>(写明 A→B 过程,可配时间戳限定生效时段);删:明确指出删除元素,并强调保留元素 |
--task-type edit --output-format mov,勿传 --ratio/--duration |
| 延长视频 | 续写剧情、延展动作 | 向前/向后延长 @视频N,生成… / 轨道补全:@视频1,<过渡描述>,接 @视频2 |
--task-type extend --output-format mov,勿传 --ratio |
| 组合任务 | 参考某素材,编辑另一素材 | 参考 @图片/视频N 的[参考维度],严格编辑 @视频X,[具体编辑内容] |
按主任务(编辑)配套 |
关键警告:编辑 / 延长任务请直接用 @视频N 指代,不要写"参考 @视频N",否则会被误判为参考任务(应写 严格编辑 @视频N / 向后延长 @视频N)。反过来,参考任务的提示词里别混入「增加/删除/修改/替换/延长/续写」这类触发词,auto 模式下会被误判成锁定任务而异步报错。
这 4 类是顶层分类;2.7「十大能力模式库」是挂在这些类型下的具体句式工具集,不是另一套并列体系。简单场景可直接套句式;复杂多分镜的多模态参考必须以 2.6 的路径 B 三段论为骨架。
2.5 八大核心要素
精准主体 + 动作细节 + 场景环境 + 光影色调 + 镜头运镜 + 视觉风格 + 画质 + 约束条件
作用:产出前的自检清单。前 2 项必填,后 6 项按需;缺失时按下表默认策略自动补全,并在"优化问题"段落透明披露。
| # | 要素 | 必要性 | 缺失时的默认策略 |
|---|---|---|---|
| 1 | 精准主体(谁) | 必填 | 主体未绑定素材时按 2.3 建立 <主体N>@图片N;仅有泛指("一个女孩")则保留泛指并在披露中标记 |
| 2 | 动作细节(在干什么) | 必填 | 默认低缓连续小动作;按"肢体细化 + 程度量化"补全(见 2.6 路径 B 动作描述要求) |
| 3 | 场景环境(在哪) | 按需 | 简单场景可省略或一句话带过;有场景图 / 风格暗示时按其推断 |
| 4 | 光影色调(什么氛围) | 按需 | 可合并入风格短语("暖色调电影质感");复杂场景第一段一句话定调 |
| 5 | 镜头运镜(怎么拍) | 按需 | 简单场景可不显式写(默认稳定运镜);复杂场景每镜必填,一镜一运镜不可叠加 |
| 6 | 视觉风格(什么画风) | 按需 | 优先采用用户指定风格;未指定按整体感觉 + 参考素材推断;动漫 / 非写实场景升为必填,显式锚定(2D 日漫 / 3D 国漫 / 赛博朋克)防漂移到写实 |
| 7 | 画质(清晰度要求) | 按需 | 默认挂画质包:高清,细节丰富,电影质感,色彩自然,光影柔和;简单场景压成"高清电影质感" |
| 8 | 约束条件(兜底防崩) | 按需(多人 / 文字生成升为必填) | 默认挂稳定包 + 水印 / Logo 兜底;非文字生成挂字幕兜底;多人场景 必挂 双胞胎兜底 |
2.6 提示词优化工作流(把烂 prompt 重写成工程 prompt)
何时走这套:用户给了待优化的提示词 / 多模态素材时走全流程。用户只讲了高维创意意图(无具体提示词)时,先做 Step 0 引导补足要素,再进入后续步骤。
Step 0:需求分析与启发式提问(仅当只有想法、无具体提示词时)
若用户只给高维度想法(如"我想做一段赛博朋克风格的视频"),先进入引导模式,通过提问帮用户补足八大要素,禁止直接生编硬造:
关于这个视频,您可以补充几个细节吗?1. 主角的外貌特征和穿着?2. 跳舞的场景在哪(赛博朋克街道 / 古典舞台)?3. 您能提供
@图片1等参考素材吗?
收集到足够信息后再进入 Step 1。
Step 1:任务类型与复杂度判定
- 任务类型判定(先做):按 2.4 归类为 多模态参考 / 编辑视频 / 延长视频 / 组合任务 之一。
- 复杂度判定(仅对多模态参考做):从"时间维度"和"空间维度"判断事件密度,而不是仅看素材数量或分镜数量。
- 编辑 / 延长 / 组合:本质单点操作,直接走路径 A,无需复杂度判定。
- 路径 A(简单视频):时间维度和空间维度 都"少"——单一场景内、单一连续动作 / 一段台词 / 一次状态展示。即使台词长、动作有细节,只要在同一时空里连续完成,仍属路径 A。例:博主固定位置介绍产品;女孩窗边吃蛋糕;产品 360° 展示。
- 路径 B(复杂影视化场景):时间或空间 任一为"多"——多事件链("先 A 后 B 再 C")/ 空间切换(街上→进店→出店)/ 跨场景叙事 / 用户已写"镜头 1、镜头 2"等分镜暗示 / 长剧情。例:宿舍剧(进门→对话→打闹 3 件事);追逐戏(街巷→集市→翻墙 多空间)。
- 辅助信号(非充分条件):素材 ≥ 4、用户主动写"镜头 1/2/3"、参考视频本身已是多分镜——只是 倾向复杂 的信号,仍要回到时间 / 空间维度判断。
Step 2:元素自检与素材映射(自动解析)
- 多模态 JSON / 长文本自动映射:用户直接粘贴含
"content"数组的完整 JSON 或类似长文本时,主动执行:- 扫描所有非
text类型对象("type": "image_url"/"video_url"/"audio_url")。 - 按 出现顺序 自动分配
@图片1/@视频1/@音频1等代号。 - 提取对应
url或asset-xxxID,回到text文本中将asset-xxx替换为对应代号。
- 扫描所有非
- 长图 / 九宫格确认:上传素材若为长图或九宫格,提示用户拆分为单图。
- 多视图素材策略(2.5 支持多视图,2.0 不建议):1-5 个主体时单视图 / 多视图均可;超过 5 个主体单视图更稳。要传多视角时,拆成多张不同视图分别上传,不要传一张含多视角的合图。
- 参考人物 > 4 检测:若参考人物超过 4 人,建议先分组生图(每组 ≤ 4 人)再图生视频。
- 重要素材前置原则:越需要精准参考的素材(如人脸大头照),在最终提示词里位置越靠前。
- 素材配置策略(2.5 官方最佳区间):主体音视频 1-5 个、主体图 1-8 张、主体视频单段 5-10s、编辑输入视频 ≤20s;更多可尝试但稳定性下降(要抽卡)。不建议一上来就用满 30/10/10 上限。
Step 3:要素审查与分级处理(只在关键歧义时打断用户)
3.1 关键歧义检测(必须停下来等用户确认)
出现以下情形之一,用"多选检视意见"交互让用户确认:
- 方位 / 帧位映射不明:多人或多图未指明谁在左 / 右 / 首帧 / 尾帧。
- 任务类型误判风险:编辑 / 延长任务里出现"参考 @视频N"字样(应改写为
严格编辑 @视频N/向后延长 @视频N)。 - 显式运镜冲突:同一镜头内同时要求推 + 拉 + 摇 + 移。
- 主体特征自相矛盾:同一
<主体N>被赋予冲突静态特征。
多选交互模板:
我收到了您的输入,检测到以下关键歧义,请选择处理方式:
- 【方位待定】@图片1 与 @图片2 谁在左、谁在右?
- 【任务误判】当前是"延长视频"任务,建议把"参考 @视频1"改写为"向后延长 @视频1"。
- 【运镜冲突】镜头 2 同时出现"向前推"和"向左平移",建议合并为单一运镜。
[多选框]
- 接受建议 1:@图片1 在左,@图片2 在右
- 接受建议 2:改写为"向后延长 @视频1"
- 接受建议 3:仅保留"镜头向前推"
- 其他修改(请补充)
3.2 非关键缺失:八大要素 audit + 自动补全(不打断用户)
按 2.5 逐项自检,缺失时按默认策略自动补全,并在"优化问题"段落透明披露。
- 路径 A 总体观感:1-2 项必填 → 写清楚谁在干什么;3-8 项按需折叠到末尾一两句兜底里(如"暖色调电影质感,画面稳定无变形,无字幕、无水印")。
- 路径 B 总体观感:1-2 项分散在第一段 + 第二段分镜;3-5 项穿插在第一段定调 + 第二段四要素;6-8 项在第三段集中挂载。
- 设计原则:仅当出现 3.1 关键歧义时才打断用户;非关键缺失由优化器补全并透明披露,避免每次优化都被追问打断。
Step 4:结构化重写输出(按复杂度路径分流)
- 编辑 / 延长 / 组合 任务 → 一律走 路径 A(单点操作,一段式)。
- 多模态参考任务 → 简单走 路径 A,≥ 2 分镜的影视化场景走 路径 B(三段论)。
路径 A:简单视频(句式直接组装,无需分块)
[任务句式主体],[主体与素材绑定],[场景与简短动作],[风格与约束包]
示例:
- 多模态参考:
参考 @图片1 中的<主体1>(短发女孩),生成她在 @图片2 的咖啡店里吃蛋糕的画面。暖色调电影质感,画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。 - 单点编辑:
严格编辑 @视频1,将其中的香水替换为 @图片1 中的面霜,动作和运镜不变。画面稳定无变形,不要生成水印,不要生成 Logo。 - 单段延长:
向后延长 @视频1,生成两人继续走向街角并相视一笑的画面。画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。
路径 A 仍要挂默认兜底约束包(画质 / 稳定 / 水印 Logo),但折叠在末尾一两句串联即可,无需分块罗列。
路径 B:复杂影视化场景(严格三段论)
第一段:总体设定 + 主体定义
- 一句话定调整体场景与氛围(如"傍晚悬崖竹林,烟雨江湖电影感")。
- 一次性绑定全部主体与核心资产:
<主体N>@图片N或将 @图片N 中的[特征] 定义为 <主体N>。 - 人脸参考策略 / 首尾帧约束 / 运镜参考来源(如有
@视频N作运镜锚定)一并在此声明。
第二段:镜头分镜(仅使用多模态参考形态)
- 顺序使用
镜头1 / 镜头2 / 镜头3 …(分镜口径见 2.11)。 - 每个镜头按 运镜方式 → 主体动作与表情 → 位置 / 空间变化 → 音频信息 四要素组织。
- 一镜一运镜:单镜头只指定 1 种运镜方式(推 / 拉 / 摇 / 移 / 固定 / 跟拍择一),禁止叠加。
- 动作描述要求(2.5 表演理解更强,策略与 2.0 时代不同):
- 概括性描述优先:「连续做了几组高抬腿和空翻」「双方展开近身搏斗」;只在少数有记忆点的动作上写具体细节,不重复写相同动作。
- 表情写描述性语句、少用成语:「津津有味地吃饭」→「脸上带着满足的笑容,大口地吃饭」。
- 补充动作过渡衔接("借着转身惯性顺势抬手")。
- 情绪具象外化:用身体细节代替"悲伤 / 愤怒",例如悲伤 → "肩膀微微颤抖、眼眶泛红、手指攥紧衣角"。
- (仅当用
-m 2.0时沿用旧策略:肢体细化 + 程度量化,优先低缓连续小动作,规避高爆发动态。)
第三段:风格 + 约束包(按场景自动挂载标准包)
- 画质包(默认必挂):
高清,细节丰富,电影质感,色彩自然,光影柔和。 - 稳定包(默认必挂):
人物面部稳定不变形、五官清晰、动作连贯自然,不僵硬,无穿模无卡顿。 - 字幕兜底(非文字生成任务必挂):
保持无字幕,避免生成任何文字或字幕。 - 水印 / Logo 兜底(默认必挂):
不要生成水印;不要生成 Logo。 - 双胞胎兜底(多人 / 多主体场景必挂):
视频全程禁止出现外形、着装、配饰完全一致的人物,禁止生成同款分身、双胞胎效果。 - 风格锚定(动漫 / 非写实场景必挂):明确写出
2D 日漫风格/3D 国风漫画/赛博朋克冷蓝紫色调等风格词。 - 强方位约束(多人正面动态视频):明确写出"左侧角色穿灰蓝色作训服"等强方位描述 + 固定机位,避免穿模 / 跳脸。
实操示例
路径 A(输入:1 张图 + 一句话"@图片1 的女孩在咖啡店吃蛋糕")
参考 @图片1 中的<主体1>(短发女孩),生成她坐在窗边咖啡店里专注吃蛋糕的画面,暖黄色光线柔和洒落。高清电影质感,画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。
路径 B(输入:3 图 + 1 视频 + 1 音频,宿舍情感短剧 3 分镜)
整体设定为现代女生宿舍傍晚文戏,自然柔和光照。
<主体1> 的面部特征参考 @图片1(大头照),妆造参考 @图片2(全身照);将 @图片3 中的简约木质宿舍 定义为 <场景1>;运镜参考 @视频1 的中景推拉与轻微摇移;环境音色参考 @音频1。镜头 1:中景平稳跟拍,<主体1> 脚步轻快地走到 <场景1> 门口,暖黄色日光从窗外洒进走廊,她在门口停顿一下,深呼吸,表情略带紧张,伴随轻微的脚步声与远处室内话语声。
镜头 2:镜头切到室内中景,<主体1> 推门进入,舍友们一边整理书本一边抬头看向她,其中一人笑着问
{考得怎么样呀,过了吗},镜头在几人之间缓慢切换半身特写。镜头 3:近景特写,<主体1> 先低头露出落寞表情,随后抬头憋不住笑意说
{骗你们的},舍友们追着打闹起来,镜头缓慢拉远定格在宿舍内一片欢声笑语的全景。全程画面高清电影纪实风,色调温暖,光影柔和;人物面部稳定不变形、五官清晰、动作连贯自然,不僵硬,无穿模无卡顿;保持无字幕,不要生成水印,不要生成 Logo;视频全程禁止出现外形、着装、配饰完全一致的人物,禁止生成同款分身、双胞胎效果。
优化问题(透明披露职责)
针对原始提示词,列出:
- 已补全的非关键缺失(如:自动挂载画质包;默认动作幅度采用低缓连续小动作)。
- 检出的病灶(要素缺失、运镜冲突、Asset ID 裸写、任务类型误判、绝对秒数等)。
随后列举应用到的工程化优化原则(如 Asset ID 屏蔽、断句防歧义、一镜一运镜、重要素材前置、双胞胎兜底 等)。
2.7 十大能力模式库(具体句式 cookbook)
这是挂在 2.4 任务分类下的句式工具集。简单需求直接套;复杂叙事在 2.6 路径 B 的分镜内部调用。
2.7.1 纯文本生成(无参考素材)
模式:(主体) + (动作序列) + (环境/光影) + (镜头语言) + (风格)
镜头跟随黑衣男子快速逃亡,后面一群人在追,镜头转为侧面跟拍,人物惊慌撞倒路边的水果摊爬起来继续逃,人群慌乱的声音。
2.7.2 一致性控制(角色/产品/场景统一)
模式:[角色]@图片N + [动作/剧情] + [场景]@图片N + [运镜/光影]
男人@图片1下班后疲惫的走在走廊,脚步变缓,最后停在家门口,脸部特写镜头,男人深呼吸,调整情绪,收起了负面情绪,变得轻松,然后特写翻找出钥匙,插入门锁,进入家里后,他的小女儿和一只宠物狗,欢快的跑过来迎接拥抱,室内非常的温馨,全程自然对话
对@图片2的包包进行商业化的摄像展示,包包的侧面参考@图片1,包包的表面材质参考@图片3,要求将包包的细节均有所展示,背景音恢宏大气
2.7.3 运镜与动作精准复刻
模式:参考@视频1的[运镜/动作/节奏] + [主体]@图片N + [场景]
参考@图片1的男人形象,他在@图片2的电梯中,完全参考@视频1的所有运镜效果还有主角的面部表情,主角在惊恐时希区柯克变焦,然后几个环绕镜头展示电梯内视角,电梯门打开,跟随镜头走出电梯,电梯外场景参考@图片3,男人环顾四周
2.7.4 创意模板/特效复刻
模式:参考@视频1的[特效/转场/创意] + 将[元素]替换为@图片N + [补充说明]
将@视频1的人物换成@图片1,@图片1为首帧,人物带上虚拟科幻眼镜,参考@视频1的运镜,及近的环绕镜头,从第三人称视角变成人物的主观视角,在 AI 虚拟眼镜中穿梭,来到@图片2的深邃的蓝色宇宙
2.7.5 剧情创作/补全
模式:[分镜脚本/图片内容] + [演绎方式] + [音效/台词要求]
将@图片1以从左到右从上到下的顺序进行漫画演绎,保持人物说的台词与图片上的一致,分镜切换以及重点的情节演绎加入特殊音效,整体风格诙谐幽默;演绎方式参考@视频1
2.7.6 视频延长
模式:将@视频1延长[X]s + [新增内容描述] 或 向前延长[X]s + [前置剧情]
将@视频1延长15秒。1-5秒:光影透过百叶窗在木桌、杯身上缓缓滑过...11-15秒:英文渐显第一行 Lucky Coffee
CLI 落地(--video 把上段 MP4 喂回)见 §3.3。
2.7.7 声音控制(音色/对白/音效)
模式:[画面] + 音色/旁白参考@视频1 + [台词用 {} 标注](深度技巧见 2.9 音频通道)
固定镜头,中央鱼眼镜头透过圆形孔洞向下窥视,参考@视频1的鱼眼镜头,让@视频2中的马看向鱼眼镜头,参考@视频1中的说话动作,背景BGM参考@视频3中的音效。
CLI 这边记得加 --generate-audio。
2.7.8 一镜到底
模式:一镜到底 + @图片1@图片2...@图片N + [连续场景] + 全程不要切镜头
谍战片风格,@图片1作为首帧画面,镜头正面跟拍穿着红风衣的女特工向前走,镜头全景跟随,不断有路人遮挡红衣女子,走到一个拐角处,参考@图片2的拐角建筑,固定镜头红衣女子离开画面,...全程不要切镜头,一镜到底。
2.7.9 视频编辑
模式:将@视频1中的[A]换成@图片1 + [其他修改] 或 颠覆@视频1的剧情 + [新剧情]
@视频1中的女主唱换成@图片1的男主唱,动作完全模仿原视频,不要出现切镜,乐队演唱音乐。
颠覆@视频1里的剧情,男人眼神从温柔瞬间转为冰冷狠厉,在女主毫无防备的瞬间,猛地将女主从桥上往外推
2.7.10 音乐卡点
模式:@图片1@图片2...@图片N + 参考@视频1的画面节奏/卡点 + [画面风格]
@图片1@图片2@图片3@图片4@图片5@图片6@图片7中的图片根据@视频1中的画面关键帧的位置和整体节奏进行卡点,画面中的人物更有动感,整体画面风格更梦幻,画面张力强,可根据音乐及画面需求自行改变参考图的景别,及补充画面的光影变化
2.7.11 白模参考/渲染(仅 2.5)
模式:参考@视频N的[运镜/运动/光影] + [渲染要求:场景/主体/风格描述]
- 粗粒度白模(简单几何体拼接)效果最好;白模主体建议只保留躯体,含四肢/翅膀时要补全动作序列防僵化。
- 细粒度白模(重渲染/上色)要提供干净视频——不含轨迹线/坐标线/相机 cone,否则会泄露进成片。
- 叠加参考图时写明对应关系:
将@图片1中穿灰衣的男人对应@视频1中的红色模型。
将@视频1进行白模渲染,无bgm,只生成环境音和动作音。渲染要求:背景为深蓝紫色调的夜晚赛博朋克都市,...;人物为一个身着黑色夜行衣的小浣熊,...
2.7.12 多宫格分镜/故事板参考(仅 2.5)
模式:@图片1为N宫格分镜参考,[素材映射清单] + [整体风格] + [逐镜头描述]
- ≤15 格;推荐火柴人/线稿分镜,不推荐锐化脏乱的 AI 直出分镜图、不要在图上写太多字。
- 宫格只提供大致剧情参考,不会严格对齐;要严格对齐用 2.7.13 关键帧。
- 写法三步:素材指代关系 → 故事梗概 → 按分镜补齐图中没有的信息(动作/运镜/风格),可组合时间戳。
2.7.13 关键帧参考(仅 2.5)
模式:第一句写明 以图片X至图片Y的顺序作为关键帧,后接整体剧情与运镜要求。
- 生成画面相对严格对齐输入图,适合"必须按分镜走"的场景;时长可自定义。
- 首尾帧图也可混入关键帧序列。
以图片1至图片7的顺序作为关键帧,在云海群山间,蓝粉长尾灵鱼凌空遨游,镜头缓缓推向依山而建的古镇...新国风浮世绘插画风格
2.7.14 一键成片(仅 2.5)
模式:将所有图片进行一键成片,[顺序策略] + [成片风格] + [文字/贴纸/转场要求] + [音频要求]
将所有图片进行一键成片,图片顺序自由安排,生成一个手绘动态涂鸦抠像风格的咖啡店vlog...生成具有网感的趣味音频或者bgm。图片可以微微动起来,live图的效果,但不要改变原图。
2.7.15 视频无缝转场(仅 2.5)
模式:将@视频1和@视频2衔接起来,[转场触发点与方式],同时不要改变上传的两个视频
将@视频1和@视频2衔接起来,@视频1的视角飞行至顶端快速折返,垂直向下俯冲,无缝自然地转场到@视频2,过程中麻将牌慢慢变成高楼...
2.7.16 视频音频编辑(仅 2.5)
模式:对声音单独增删改,画面不动;支持台词翻译 + 口型同步。
将视频中的人声台词翻译成中文,无字幕,口型做出对应的精准改变,其余均保持不变。
仅编辑@视频1中男人的台词,修改为{你不要过来啊},口音调整为东北口音,其余不变。
2.8 特殊字符规范(强制使用)
| 信息类型 | 符号 | 示例 |
|---|---|---|
| 背景音乐 | () |
(背景中播放着快节奏的摇滚乐) |
| 音效 | <> |
<远处传来狗叫声> |
| 台词 | {} |
{你好,世界};小语种需标注语种 |
| 字幕 / 标题 | 【】 |
【第一章:启程】 |
2.9 音频通道
- 音色参考:
参考 @音频N 中的音色,生成…;还原度不佳时补充细致音色描述(如使用 @音频1 低厚温润带细碎颗粒感中年男声的音色说),并保持台词风格与参考音频语气接近。 - 纯音频驱动(仅 2.5):可以只传音频不配图/视频(台词对口型、音乐驱动画面等);2.0 系音频必须搭至少一个视觉参考。
- 音频编辑(仅 2.5):对已有视频的声音单独增删改——加人声/音乐/音效、改台词/口音、删 bgm,支持台词翻译 + 口型精准同步(句式见 2.7.16)。
- 负向音频控制(2.5 明确支持,可细分维度):
无bgm,只生成环境音和动作音、不要任何声音、不额外加入对白字幕。 - 台词语种:2.5 支持 11 种语言,台词选定语种后保持统一、避免中英混用(专有名词除外);小语种台词标注语种,如
用日语说道 {こんにちは}。 - 中文发音兜底:模型对多音字 / 生僻字 / 形近字易读错,可改写为发音一致的常用同音字(如"螭龙山" → "吃龙山"),并在"优化问题"段落披露替换。
- 片尾噪音建议:含旁白的视频片尾可能出现截断杂音,建议后期通过剪映"音量包络线"做淡出处理(非强制建议)。
- CLI 提醒:2.5/2.0 系默认就有声,不想要声音用
--no-generate-audio;生成的有声视频均为单声道。
2.10 文字生成三模板
- 广告语:
「文字内容」+「出现时机」+「出现位置」+「出现方式」,「文字特征(颜色、风格)」。 - 字幕:
画面底部出现字幕,字幕内容为"…",字幕需与音频节奏完全同步。 - 气泡:
<角色>说:"…",角色说话时周围出现气泡,气泡里写着台词。
文字生成与 2.4 任务分类正交,路径 A、B 都可能调用。涉及文字生成时,约束条件(2.5 第 8 项)升为必填。
2.11 高级提示词技巧:分镜法
时间戳分镜法 vs 镜头顺序分镜法 — 怎么选
⚠️ 按模型选口径——这是 2.5 与 2.0 的头号提示词差异:
- Seedance 2.5 响应整数秒时间戳,时间戳是一等公民。三种时间控制都支持:明确区间(
0-3秒...3-7秒,注意时间轴连续、别跳秒)、时间点(第5s快速向左横移转场)、相对时间(3秒后周围的人纷纷摇头)。镜头序号也照常可用,两者可混写(镜头 N + 括注秒数)。- Seedance 2.0(
-m 2.0时)不响应时间戳只响应镜头序号——叙事用镜头1/2/3且禁写绝对秒数;卡点需求配合参考视频节奏。2.5 上的时间戳三条纪律:段内剧情太少模型会自由发挥、太多会过度剪切或遗漏,时长安排要合理;别用时间戳控频次(如"一秒摇头 3 次");时间轴要连续(避免
0-3秒...5-6秒中间悬空)。一句话:2.5 卡点叙事都可上时间戳;2.0 叙事用镜头顺序、禁绝对秒数。
时间戳分镜法(精确卡点 / 长视频)
0-3秒:[画面 + 镜头]
4-8秒:[画面 + 镜头]
9-12秒:[画面 + 镜头]
13-15秒:[画面 + 镜头]
仙侠战斗示例:
15秒仙侠高燃战斗镜头,金红暖色调,0-3秒:低角度特写主角蓝袍衣摆被热浪吹得猎猎飘动,双手紧握雷纹巨剑,剑刃赤红电光持续爆闪;4-8秒:环绕摇镜快切,主角旋身挥剑,剑刃撕裂空气迸射红色冲击波,前排魔兵被击飞碎裂成灰烬;9-12秒:仰拍拉远定格慢放,主角跃起腾空,剑刃凝聚巨型雷光电弧劈向魔兵群;13-15秒:缓推特写主角落地收剑的姿态,衣摆余波微动,冷声道"此界之门,不容踏越"。
短剧对白示例(画面 + 台词 + 音效分开标注):
画面(0-5秒):特写女主撕契约镜头,纸屑飘落,总裁单膝跪地伸手阻拦,眼神慌乱
台词1(总裁,卑微慌乱):"苏晚!契约还没结束,你不能走!我给你钱,给你地位!"
画面(6-10秒):女主抬脚避开他的手,将撕碎的契约纸扔在他脸上,镜头扫过周围宾客的窃窃私语
台词2(女主,冷漠反杀):"契约?顾总,当初是你说,我连给你提鞋都不配,现在求我?晚了!"
画面(11-15秒):总裁僵在原地,脸上沾着纸屑,女主转身昂首离开,红裙裙摆飘动
音效:华丽又带张力的背景音,契约撕碎的声响,宾客轻微的窃窃私语声
时长:精准15秒
镜头顺序分镜法(多分镜叙事 / 短剧)
顺序使用 镜头1 / 镜头2 / 镜头3 …(2.0 上禁止写绝对秒数;2.5 上可给每镜括注秒数区间)。每镜按 运镜方式 → 主体动作与表情 → 位置/空间变化 → 音频信息 四要素组织,一镜一运镜。完整骨架与示例见 2.6 路径 B 三段论。
镜头1:中景平稳跟拍,<主体1> 走到门口停顿、深呼吸,表情略带紧张,伴随轻微脚步声。
镜头2:切室内中景,<主体1> 推门进入,舍友抬头看向她,一人笑着问 {考得怎么样呀}。
镜头3:近景特写,<主体1> 先低头落寞、随后抬头憋笑说 {骗你们的},镜头缓慢拉远定格全景。
技术参数指定法
提示词开头明确画面技术规格:
[尺寸]竖屏/横屏 + [画幅比]2.35:1/16:9/9:16 + [帧率]24fps + [时长]Xs + [色调/风格总纲]
禁止项声明(放提示词结尾)
禁止:
- 任何文字、字幕、LOGO或水印
- 不允许出现XXX
- 画面全部片段都不要出现字幕
2.12 词汇库 & 场景策略(参考)
写提示词需要查 具体镜头/风格词、某类场景的套路(电商/广告、AI 漫剧/仙侠、短剧/对白、科普教学、MV/音乐卡点),或 配参考图该用什么画风 时,读 references/vocab-and-scenes.md:
- 镜头语言词汇库:景别 / 运镜 / 角度 / 节奏 / 焦点 / 特殊转场。
- 风格词汇库:画面质感 / 影像风格 / 色调氛围 / 艺术风格 / 光影 / 动画风格。
- 场景类型策略:每类场景的提示词侧重与兜底套路。
- 图片风格 ↔ 视频主题 对照:防止参考图画风漂移。
2.13 时长策略
单段(2.5:4-30 秒;2.0:4-15 秒)
Seedance 2.5 单次直出上限 30 秒——大多数 30 秒内的叙事一条任务就够,不用再切段。
- 4-8 秒:产品展示、单个动作、简短特效。聚焦 1-2 个核心画面,无需时间戳。
- 9-15 秒:完整短场景。可选时间戳分 2-3 段。
- 16-30 秒(仅 2.5):完整叙事 / 多分镜短剧。强烈推荐分镜法(2.5 时间戳或镜头顺序均可,见 2.11),分 3-9 镜;官方 30s 案例即 9 镜。
--duration -1:让模型按内容自选时长,吃不准就用它。
超长(2.5 >30 秒 / 2.0 >15 秒):分段生成 + 视频延长
核心原理:第一段正常生成;后续每段用「视频延长」,把上段视频作为 @视频1 输入,延续生成。2.5 上全链路用 mov(--output-format mov + 输入也是 mov)声画衔接最佳,官方案例 15s 拼接点无痕。
分段规则:
- 总时长按叙事节奏切分,每段 ≤ 单段上限(2.5:30s)
- 每段之间必须有画面衔接点:上段结尾状态 = 下段开头状态
- 第一段正常生成,后续每段提示词以
向后延长@视频1/将@视频1延长Xs开头(触发词必须在) - 每段标注属于整体的第几段、承接什么
总时长建议(以 2.5 为基准):
| 总时长 | 推荐分段 |
|---|---|
| ≤30 秒 | 1 段直出(2.5 主场) |
| 31-60 秒 | 2 段 |
| 61-90 秒 | 3 段 |
| >90 秒 | 拆成独立场景分别生成,再用剪辑软件拼接 |
注意区分两种"接续"机制:
- 视频延长(本节):把整段 MP4 当
@视频1,自然延续 → 用--videoflag- 接龙(尾帧→首帧)(Part 3.2):取上段尾帧当下段首帧 → 用
--return-last-frame+ 下段--image last.png:first_frame视频延长保留更多语境(整段画面 + 运镜节奏),适合无缝续拍;尾帧接龙更省 token、画面更可控,适合分镜切换式叙事(像分场景的短剧)。
Part 3 — 端到端 workflow
3.1 单段视频(2.5 ≤30 秒)
Step 1: 听用户讲创意意图
Step 2: 按 Part 2 写出一条 Seedance 2.5 中文提示词
Step 3: 决定要用的参考素材(URL / 本地路径)和 ratio/resolution/duration
(锁定任务省略 --ratio;吃不准时长用 --duration -1)
Step 4: 用 seedance-cli generate 跑(默认阻塞 + 下载,默认模型 2.5)
Step 5: 读 envelope 的 video_path,确认文件存在 + 报元数据给用户
最小例子:
seedance-cli generate \
-p "镜头跟随黑衣男子快速逃亡..." \
--ratio 16:9 --resolution 720p --duration 5 \
--out v.mp4
3.2 连续多段接龙(本 SKILL 主战场)
触发词:"做一段连续故事"、"接着上一段"、"接龙生成"、"多段视频"、"短剧"、"剧情视频"。
产物目录
story/<topic>/
├── clip-1.mp4
├── clip-2.mp4
├── clip-3.mp4
├── last-frame-1.png ← 自动落盘的接续素材
├── last-frame-2.png
└── final.mp4 ← 拼成的成片
<topic> 取自用户对此次任务的简短命名;没给就根据语义自造一个 kebab-case 词,如 fox-girl-story。
Step 1 — 写分镜(Part 2 的能力)
让用户给 N 段提示词。只给一段总意图时,Claude 先拆成 3-5 段分镜并复述给用户确认,不要直接开生。每段按 Part 2 §2.11 的分镜法写。
Step 2 — 首段
seedance-cli generate \
-p "<clip-1 prompt,完整自包含>" \
[--image start.png:first_frame] \
--return-last-frame \
--resolution 720p --duration 10 \
--out story/<topic>/clip-1.mp4 \
--out-last-frame story/<topic>/last-frame-1.png
读 stdout envelope 拿 last_frame_path。
--resolution --duration 跨段保持不变,改了会拼接撕裂。首段无图可传 --ratio;续段带首帧图后 2.5 比例锁定跟随图,续段不要传 --ratio(首段产物的比例已经定调,链条自然一致)。
Step 3 — 续段(循环 i = 2…N)
seedance-cli generate \
-p "<clip-i prompt,必须完整重述视觉要素>" \
--image story/<topic>/last-frame-{i-1}.png:first_frame \
--return-last-frame \
--resolution 720p --duration 10 \
--out story/<topic>/clip-{i}.mp4 \
--out-last-frame story/<topic>/last-frame-{i}.png
Step 4 — 跨段一致性提示词模板
照下面 4 段模板填充,然后展开成自然语言(去掉 [...] 标签):
[本段动作]:<这一段主体在做什么>
[延续上段]:<上一段最后的状态 - 主体姿态/场景/光线,必须复述,模型不读上下文>
[配色与风格]:<跨段稳定的视觉调性>
[镜头与节奏]:<本段镜头运动>
不要写 "like before but..." / "保持上一段不变,只改 X"——模型没有上下文,它不懂"上一段"。每段 prompt 必须完整自包含。
Step 5 — 拼接
所有段都成功后,给用户一行 ffmpeg:
ffmpeg -f concat -safe 0 \
-i <(for f in story/<topic>/clip-*.mp4; do echo "file '$PWD/$f'"; done) \
-c copy story/<topic>/final.mp4
不满意时只重生有问题的那段 + 后续所有段(链断了)。
必须做 / 必须不做(接龙)
- ✅ 每段 prompt 完整自包含 - 模型不读对话上下文
- ✅
--resolution--duration跨段保持;比例由首段定调后续跟随 - ✅ 每段成功后告诉用户「clip-i 已落盘,下一段将以本段尾帧续接」
- ❌ 中间段省
--return-last-frame/--out-last-frame,链就断了 - ❌ 没拿到尾帧的情况下凭脑补写下一段 prompt
- ❌ 跨段换模型 / 换分辨率
- ❌ 续段传
--ratio(2.5 首帧任务比例锁定,传了被拦截) - ❌ 上来就多段 - 2.5 单段能直出 30s,先确认真的超 30s 才切段
3.3 视频延长 workflow(语境保留型续拍)
和 §3.2 接龙不同——这里把整段视频作为参考输入,让模型基于完整视频画面延续。2.5 上全链路 mov 声画衔接最佳。视频输入只收 URL——用上一个任务响应里的 video_url(24h 有效、2.5 有 100 次下载上限),不要传本地文件:
# Step 1: 生成第一段,直接选 mov 容器;从 envelope 记下 task_id
seedance-cli generate \
-p "<base prompt>" \
--ratio 16:9 --duration 10 --output-format mov \
--out story/<topic>/clip-1.mov
# Step 2: 从任务响应拿产物 URL(生成时的 envelope 里也有 video_url 字段)
SEG_URL=$(seedance-cli task get <task_id> | python3 -c \
"import json,sys; print(json.load(sys.stdin)['data']['video_url'])")
# Step 3: 用 URL 喂回;显式 extend 让参数错误同步报
seedance-cli generate \
-p "向后延长@视频1,0-2秒:接上段结尾画面继续...3-5秒:..." \
--video "$SEG_URL" \
--task-type extend --output-format mov \
--duration 5 \
--out story/<topic>/clip-1-extended.mov
注意:延长任务比例锁定跟随输入,不要传 --ratio;提示词里必须带触发词(向前/向后延长、延续、续写),否则被判成参考任务;URL 过期(24h)后需重新生成或把产物传到 TOS 再引用。
视频延长 vs 尾帧接龙怎么选:
| 维度 | 视频延长(--video) |
尾帧接龙(--return-last-frame) |
|---|---|---|
| 输入信息 | 整段画面 + 节奏 | 仅最后一帧 |
| 一致性 | 高(运镜/光影自然续) | 中(模型从首帧重新构图) |
| Token 成本 | 高(视频输入计入参考成本) | 低 |
| 适合场景 | 一镜到底续拍、无缝转场 | 分镜切换、多场景叙事 |
| Prompt 写法 | 将@视频1延长Xs。... |
完整自包含,复述上段尾态 |
3.4 视频编辑 workflow
2.5 编辑任务:比例和时长都锁定跟随输入(输出时长≈输入,误差 ≤0.3s),--ratio/--duration 都不要传;显式 --task-type edit 同步校验;建议 mov。
seedance-cli generate \
-p "将@视频1中的房子外立面墙壁刷成蓝色,天气和光线参考@图片1的雪天" \
--video "https://.../original.mp4" \
--image snowy-day.jpg \
--task-type edit --output-format mov \
--out edited.mov
或角色替换:
seedance-cli generate \
-p "@视频1中的女主唱换成@图片1的男主唱,动作完全模仿原视频,不要出现切镜" \
--video "https://.../original.mp4" \
--image new-singer.png \
--task-type edit --output-format mov \
--out replaced.mov
编辑输入视频建议 ≤20s(更长稳定性下降);可配时间戳限定编辑生效时段:把@视频1中4-6秒男人喝咖啡的动作改为拖地,其余内容不要变化。
Part 4 — 交互指引
当识别到用户有视频生成需求时,按以下流程:
Step 1 — 听创意
用户只需提供主题,例如:
- "一段仙侠战斗"
- "奶茶产品广告"
- "猫咪在月球上跳舞"
- "一个 30 秒的悬疑短剧"
Step 2 — 确认关键参数
通过提问确认(用户已说清的可跳过):
- 时长(必问):
- 短片(4-8 秒)
- 中等(9-15 秒)
- 长片(16-30 秒,2.5 单段直出)
- 超长(>30 秒)→ 进入 §3.2 接龙或 §3.3 延长 workflow
- 拿不准 →
--duration -1让模型自选
- 比例:16:9 / 9:16 / adaptive(注意:带首帧图/编辑/延长的任务比例锁定跟随输入,无需问)
- 参考素材情况:纯文本 / 有图片 / 有视频 / 有音频(2.5 可纯音频) / 全模态
- 补充偏好:情绪氛围、镜头风格、用途场景;需要 1080p/4k 则切
-m 2.0
Step 3 — 写/优化提示词
- 用户给了草稿提示词或多模态素材 → 走 §2.6 提示词优化工作流(判任务类型 → 判复杂度 → 八大要素自检 → 路径 A/B 重写 → 优化问题透明披露)。
- 用户只讲了创意意图 → 按 Part 2(2.4 任务分类 + 2.5 八大要素 + 2.7 模式库)写 1-2 个不同风格版本供选择(主战场不要超过 3 个)。
- ≤30 秒:单条直出(简单走路径 A;多分镜叙事走路径 B,2.5 可用时间戳)。
30 秒:按 §3.2 或 §3.3 切段,每段独立提示词(影视化叙事用路径 B 三段论)。
Step 4 — 跑 CLI
按 Part 1 的 seedance-cli generate 跑。默认阻塞 + 下载,不要手拼 curl,不要自己写轮询。
Step 5 — 验证 + 汇报
video_path存在?- envelope 里的
duration/resolution/ratio/framespersecond报给用户 - 想"看"内容用 ffmpeg 抽帧 + Read(§1.8)
Step 6 — 微调
用户选定后可要求:
- 调某个时间段的画面
- 换风格/色调/镜头语言
- 增减台词/音效描述
- 调时长或分段
注意事项汇总
- 所有提示词(视频提示词 + 图片生成提示词)默认中文编写(2.5 台词可按需选 11 语种之一,语种保持统一)
- 工程指令优先:把形容词堆砌重写成"谁 + 动作 + 场景 + 镜头 + 顺序/时间轴",逐项核对 2.5 八大要素
- 先判有锁定还是无锁定(2.1 两分法):首帧/首尾帧/编辑/延长任务省略
--ratio,编辑任务省略--duration;显式--task-type edit/extend让错误同步暴露 - @引用使用官方命名:
@图片1、@视频1、@音频1(不是@img1之类);素材多时映射清单化 - Asset ID 屏蔽 / 断句防歧义:严禁裸写
[asset-xxx];@图片N紧接动词/方位词时改用<主体N>@图片N或补名词隔断 - 编辑 / 延长别写"参考@视频N":直接用
严格编辑 @视频N/向后延长 @视频N;反之参考任务别混入增删改/延长触发词 - 多素材时检查每个 @ 对象有没有标清楚,别把图、视频、角色搞混
- 一镜一运镜:单镜头只指定 1 种运镜方式,禁止推拉摇移叠加
- 特殊字符规范:BGM
()、音效<>、台词{}、字幕【】(见 2.8);负向控制可用(不要字幕 / 无bgm) - 兜底约束包:最终输出挂画质包 + 稳定包 + 水印/Logo 兜底;多人场景必挂双胞胎兜底;动漫/非写实必挂风格锚定
- 只在关键歧义时打断用户:方位/帧位、任务误判、运镜冲突、主体矛盾这 4 类停下确认;其余缺失自动补全并透明披露
- 图片风格必须与视频主题契合(防漂移):对照表见
references/vocab-and-scenes.md - 描述具体且有画面感,避免抽象模糊;镜头语言和动作描述要有时间顺序;2.5 动作用概括性描述、记忆点才写细节
- 16 秒以上长视频强烈推荐分镜法(2.5 时间戳/镜头顺序均可,2.0 只认镜头顺序,见 2.11)
- 音效描述单独成行,与画面分开;控制提示词长度,重点突出;情绪氛围不要忽略
- 不要绕开
seedance-cli,所有调用走 CLI(envelope/错误路径才统一) - 不要假装看到了视频——Claude 看不见视频,要么 ffmpeg 抽帧要么报元数据