# Seedance

> Volcengine Doubao Seedance 2.5/2.0 视频生成端到端工作流：写提示词 + 用 seedance-cli 落地。当用户提到生成视频、文生视频、图生视频、首帧/首尾帧、多模态参考、编辑/延长视频、白模渲染、宫格分镜、关键帧、一键成片、连续多段接龙、提示词优化、即梦、Seedance、视频提示词、AI 视频、短剧/广告/MV 视频等场景时使用。

- Skill: `zjandrew/seedance` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add zjandrew/seedance`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zjandrew/seedance/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zjandrew (https://skillmd.com/u/zjandrew)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zjandrew/seedance

---


# seedance

**双重职责**:
1. **写好 Seedance 2.5 中文提示词** —— Part 2(创意层)
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 前置

1. 确认 `seedance-cli` 可执行(`which seedance-cli` 或 `seedance-cli --version`)。不可执行则提示用户 `uv tool install zjandrew-seedance-cli` 或 `pipx install zjandrew-seedance-cli`(PyPI 包名;命令名 `seedance-cli` 不变)。
2. 配置 API key:优先 env `ARK_API_KEY`;缺失时引导 `seedance-cli config init`。
3. 默认 endpoint 是 `https://ark.cn-beijing.volces.com/api/v3`,自建/代理 endpoint 走 `seedance-cli config set endpoint https://<...>/api/v3` 或 `--endpoint` 单次覆盖。

## 1.2 多 profile 配置

```bash
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 核心命令速查

```bash
# 文生视频(默认 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 进程挂半小时

恢复模式:

```bash
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**。能做的:

1. 确认 `video_path` 存在、`os.path.getsize` 非零
2. 报 envelope 里的 `duration` / `resolution` / `ratio` / `framespersecond` 给用户
3. 想"看"内容时,ffmpeg 抽帧 + Read:

```bash
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/…`。

```bash
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:任务类型与复杂度判定

1. **任务类型判定(先做)**:按 2.4 归类为 多模态参考 / 编辑视频 / 延长视频 / 组合任务 之一。
2. **复杂度判定(仅对多模态参考做)**:从"时间维度"和"空间维度"判断事件密度,**而不是仅看素材数量或分镜数量**。
   - **编辑 / 延长 / 组合**:本质单点操作,**直接走路径 A**,无需复杂度判定。
   - **路径 A(简单视频)**:时间维度和空间维度 **都"少"**——单一场景内、单一连续动作 / 一段台词 / 一次状态展示。即使台词长、动作有细节,只要在同一时空里连续完成,仍属路径 A。例:博主固定位置介绍产品;女孩窗边吃蛋糕;产品 360° 展示。
   - **路径 B(复杂影视化场景)**:时间或空间 **任一为"多"**——多事件链("先 A 后 B 再 C")/ 空间切换(街上→进店→出店)/ 跨场景叙事 / 用户已写"镜头 1、镜头 2"等分镜暗示 / 长剧情。例:宿舍剧(进门→对话→打闹 3 件事);追逐戏(街巷→集市→翻墙 多空间)。
   - **辅助信号(非充分条件)**:素材 ≥ 4、用户主动写"镜头 1/2/3"、参考视频本身已是多分镜——只是 **倾向复杂** 的信号,仍要回到时间 / 空间维度判断。

### Step 2:元素自检与素材映射(自动解析)

1. **多模态 JSON / 长文本自动映射**:用户直接粘贴含 `"content"` 数组的完整 JSON 或类似长文本时,**主动执行**:
   - 扫描所有非 `text` 类型对象(`"type": "image_url"` / `"video_url"` / `"audio_url"`)。
   - 按 **出现顺序** 自动分配 `@图片1` / `@视频1` / `@音频1` 等代号。
   - 提取对应 `url` 或 `asset-xxx` ID,回到 `text` 文本中将 `asset-xxx` 替换为对应代号。
2. **长图 / 九宫格确认**:上传素材若为长图或九宫格,提示用户拆分为单图。
3. **多视图素材策略**(2.5 支持多视图,2.0 不建议):1-5 个主体时单视图 / 多视图均可;超过 5 个主体单视图更稳。要传多视角时,**拆成多张不同视图分别上传**,不要传一张含多视角的合图。
4. **参考人物 > 4 检测**:若参考人物超过 4 人,建议先分组生图(每组 ≤ 4 人)再图生视频。
5. **重要素材前置原则**:越需要精准参考的素材(如人脸大头照),在最终提示词里位置越靠前。
6. **素材配置策略**(2.5 官方最佳区间):主体音视频 1-5 个、主体图 1-8 张、主体视频单段 5-10s、编辑输入视频 ≤20s;更多可尝试但稳定性下降(要抽卡)。不建议一上来就用满 30/10/10 上限。

### Step 3:要素审查与分级处理(**只在关键歧义时打断用户**)

#### 3.1 关键歧义检测(**必须停下来等用户确认**)

出现以下情形之一,用"多选检视意见"交互让用户确认:

- **方位 / 帧位映射不明**:多人或多图未指明谁在左 / 右 / 首帧 / 尾帧。
- **任务类型误判风险**:编辑 / 延长任务里出现"参考 @视频N"字样(应改写为 `严格编辑 @视频N` / `向后延长 @视频N`)。
- **显式运镜冲突**:同一镜头内同时要求推 + 拉 + 摇 + 移。
- **主体特征自相矛盾**:同一 `<主体N>` 被赋予冲突静态特征。

*多选交互模板:*
> 我收到了您的输入,检测到以下关键歧义,请选择处理方式:
> 1. 【方位待定】@图片1 与 @图片2 谁在左、谁在右?
> 2. 【任务误判】当前是"延长视频"任务,建议把"参考 @视频1"改写为"向后延长 @视频1"。
> 3. 【运镜冲突】镜头 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;视频全程禁止出现外形、着装、配饰完全一致的人物,禁止生成同款分身、双胞胎效果。

#### 优化问题(**透明披露职责**)

针对原始提示词,列出:
1. **已补全的非关键缺失**(如:自动挂载画质包;默认动作幅度采用低缓连续小动作)。
2. **检出的病灶**(要素缺失、运镜冲突、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 拼接点无痕。

**分段规则**:
1. 总时长按叙事节奏切分,每段 ≤ 单段上限(2.5:30s)
2. 每段之间必须有**画面衔接点**:上段结尾状态 = 下段开头状态
3. 第一段正常生成,后续每段提示词以 `向后延长@视频1` / `将@视频1延长Xs` 开头(触发词必须在)
4. 每段标注属于整体的第几段、承接什么

**总时长建议(以 2.5 为基准)**:

| 总时长 | 推荐分段 |
|---|---|
| ≤30 秒 | **1 段直出**(2.5 主场) |
| 31-60 秒 | 2 段 |
| 61-90 秒 | 3 段 |
| >90 秒 | 拆成独立场景分别生成,再用剪辑软件拼接 |

> 注意区分两种"接续"机制:
> - **视频延长**(本节):把整段 MP4 当 `@视频1`,自然延续 → 用 `--video` flag
> - **接龙(尾帧→首帧)**(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,确认文件存在 + 报元数据给用户
```

最小例子:

```bash
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 — 首段

```bash
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)

```bash
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:

```bash
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 次下载上限),不要传本地文件:

```bash
# 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。

```bash
seedance-cli generate \
  -p "将@视频1中的房子外立面墙壁刷成蓝色,天气和光线参考@图片1的雪天" \
  --video "https://.../original.mp4" \
  --image snowy-day.jpg \
  --task-type edit --output-format mov \
  --out edited.mov
```

或角色替换:

```bash
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 — 确认关键参数

通过提问确认(用户已说清的可跳过):

1. **时长**(必问):
   - 短片(4-8 秒)
   - 中等(9-15 秒)
   - 长片(16-30 秒,2.5 单段直出)
   - **超长**(>30 秒)→ 进入 §3.2 接龙或 §3.3 延长 workflow
   - 拿不准 → `--duration -1` 让模型自选
2. **比例**:16:9 / 9:16 / adaptive(注意:带首帧图/编辑/延长的任务比例锁定跟随输入,无需问)
3. **参考素材情况**:纯文本 / 有图片 / 有视频 / 有音频(2.5 可纯音频) / 全模态
4. **补充偏好**:情绪氛围、镜头风格、用途场景;需要 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 抽帧要么报元数据

