---
name: worldwonderer/short-drama-video-prompts
source: https://app.decimal.ai/s/worldwonderer-short-drama-video-prompts@3/SKILL.md
source_sha256: 0538f26f9e64
---

# 短剧视频与时间线音乐提示词

把分镜已经决定的一个镜头，写成按时间执行的动作、表演、摄影和声音。运动说明只实现起止边界，不能改写边界。
当音乐承担跨镜、跨场或主题曲职责时，本技能拥有独立的 provider-neutral 时间线音乐规格；
它不替创作者写词，也不把配乐为了某个供应商方便而烘焙进每镜。

预览、末端报告与补拍说明是创作者读的：项目内跟随 `short-drama.json#/language`，独立运行时
跟随用户使用的语言。送给视频生成器的**提示词正文**在项目内跟随
`#/format/prompt_language`，独立运行时由用户指定、未指定则为 `en`。改了描述语言
不等于改了画面里说什么或写什么——那来自已接受的资产记录与文字政策。

## 开始前

本技能可独立安装和执行。先读取用户明确提供的镜头、关键帧与本任务直接输入；若当前目录是
`short-drama` 项目且项目工具可用，可以读取 `status` 并使用其发布生命周期，但缺少 core
或任何其他技能都不是视频提示词工作的阻断条件。[阶段契约](references/stage-contract.md)
给出本阶段边界、制作形态输入与规则表，无需读取其他技能的文件。

## Quick Start

校验一个独立的时间线音乐规格，不调用供应商或生成媒体：

```bash
python3 {技能目录}/scripts/music_spec_check.py examples/minimal-music-specs.jsonl
python3 {技能目录}/scripts/selftest.py
```

## 进入条件与权属

- 可从已接受的镜头、关键帧或创作者直接提供的等价输入进入，无需重新开发故事或安装主技能。
- 所有权或直接输入影响不清楚时，读
  [阶段契约](references/stage-contract.md) 的所有权边界；需要定位规则 ID
  或解释审查问题时，读同一文件的本阶段规则表。
- 输入至少包含当前已确认的镜头、起始关键帧/边界、时长、连续性终点与对白/声音引用；需要更新时退回 `$short-drama-storyboard`。
- 若创作者明确要求全链预览，可对状态为 `provisional`、但没有 `unresolved` 问题的镜头/关键帧
  写候选运动说明；明确标为待确认，禁止声称已接受或已通过。
- 镜头的起点、终点、时长、对白、资产绑定和下一镜状态全部只读。运动规格只负责有序动作、表演过程、摄影与声音实现，以及派生的结束报告。
- 视觉、声音和口型等审美选择读取 `short-drama.json#/creator_authority/{visual_direction,production_profile}`；
  直接从本环节开始的项目若为 `unset`，就保留选择，不把默认配置写成已接受事实。
- 先写不绑定供应商的通用文本。不得生成视频或音频、上传参考帧、创建远程执行任务、调用模型接口、轮询状态或宣称成片质量。

## 按任务加载资料

| 任务 | 必读资料 |
|---|---|
| 任意镜头运动说明/提示词 | [起点—变化—终点配方](references/motion-recipe.md) |
| 单人/多人表演、注意交接、节奏或超载 | [表演弧与动作预算](references/performance-action-timing.md) |
| 运镜、环境、对白、声音、边界冲突 | [摄影声音与连续性](references/camera-audio-continuity.md) |
| 自检、独立复核、正反案例 | [审查量表与合成案例](references/review-and-fixtures.md) |
| 生产端提示词写法、台词绑定、负面清单 | [生产提示词语法惯例](references/production-prompt-grammar.md) |
| 分段交付、槽位职责、时长分配、交付路由与执行触发词 | [交付档案与槽位语义](references/delivery-profile.md) |
| 多张参考图的用途、补拍或替代版范围 | [阶段契约](references/stage-contract.md) 的参考媒体与补拍 |
| 时间线主题曲或配乐意图 | [音乐规格模板](assets/music-spec.jsonl.md) |

规格使用 [运动规格模板](assets/motion-spec.jsonl.md)；末镜或下一集记录尚未建立时参考
[末镜定位示例](assets/motion-terminal.example.jsonl)；可复制交付使用
[Markdown 模板](assets/video-prompts.md)。只加载本次问题需要的资料。

## 每轮的工作单元

一轮处理一个场次或一段连续镜头范围。整集请求按这些边界拆成若干轮，每轮：

1. 只读这个范围的直接输入，写它的逐镜运动规格，跑本地结构检查；
2. 落盘这个范围，其余范围保持原样；
3. 报告已覆盖范围、剩余范围、未决 motion 字段和下一个值得做的范围；
4. 交还控制权，等创作者的下一次请求。

生产、重新打包和审查各自是独立的工作单元，由创作者明确请求时开始。

## 工作流

### 1. 先写“不能动的边框”

建立只读的起止边界清单：

- 镜头/关键帧引用：文件头 `sources` 声明的快照 key（`src`）加准确的 `record_id`/`field`；
- 时长，以及起点姿态、重心、目光、双手、持物和空间关系；
- 分镜负责的结束姿态/状态与连续性终点；
- 准确的对白、画外音、音效和声音引用；
- 镜头目的、信息/情绪变化和下一镜交接（只用于核对）。

任何来源冲突先停止。如果创作者要求延长时长、换结尾站位、删对白或改变下一镜开场，
就向负责该内容的技能提出修改请求；不要在运动规格中覆盖。

### 2. 决定这个镜头真正发生什么变化

用一句话写镜头内的运动目的：“观众在这几秒内看到或感到什么变化？”然后选择少量有因果顺序的事件：主体行动 → 可见反应或注意转移 → 到达终点。只加活动会冲淡表演。

写逐镜文本前，跨镜头重读完整来源顺序，把每个有语义的动作、接收、声音变化和道具状态只放到
它应发生的位置；上游串行事件不得因压缩而并发，也不得把后发生的事件挪到较早镜头。

- `reviewed_invariant`：动作量必须让演员有时间完成镜头的故事变化；是否能完成由审查者结合当前资料判断，不用动词数或固定秒/动作公式硬挡。
- `craft_default`：短镜头优先一个主要动作，加一个必要反应；复杂过程请求分镜拆镜或延长。
- `taste_option`：克制、爆发、停顿、喜剧节奏等取决于角色和导演意图。

### 3. 按七部分编写运动说明

1. **起点 `start_anchor`**：只重述开动所需的姿态、重心、目光、手、持物和空间关系。
2. **有序动作 `ordered_subject_motion`**：谁先做什么、方向/路径、物理接触与先后；不要用一串“同时”。
3. **表演过程 `performance_arcs[]`（按需）**：只有承担可见变化的人进入；根据本镜实际需要写
   trigger、receive、mask/visible leak、choice 或 landing，不把六项变成必填拍表。空镜、道具细节、
   纯空间转场或只有物理动作时省略这两个字段；需要时从
   [表演/注意交接片段](assets/performance.fragment.json) 插入统一结构，多人物注意真正交接时才写
   `attention_handoffs[]`。
4. **摄影机 `camera`**：一次有动机的移动，写起点、速度/节奏和终点；或明确固定机位。
5. **环境与声音 `environment_motion/audio`**：只写有剧情和连续性依据的环境运动、对白、画外音、
   环境声、音效和音乐意图；本镜 `shot_ref` 指向的 accepted scene plan 有 `sound_strategy` 时，
   才逐镜投影其进入、撤出、距离、留白和 bridge，不在 motion 再保存第二条 plan ref。
6. **时间 `timing_plan`**：用阶段/顺序为主；需要精确时间时，明确段落总和必须正好等于镜头时长——超出会被截断，不足的余量会被执行端用未经批准的动作填满。
7. **结束报告 `end_report`**：说明当前描述怎样到达分镜负责的连续性终点；终点要求可见完成时，
   写清动作接触、物件归属、位置或可观察结果，抽象的“处理、履行、完成”不能替代这些事实；
   终点若只要求过程开始，也不得擅自推进到完成。结束报告只用于比较，不是新的权威来源。

### 4. 不重复参考帧已经说明的内容

如果绑定的参考帧已经说明人物外貌、服装、场景构图和光线，正文就聚焦“从此刻开始怎么变”。只重复动作执行中容易出错的局部事实，如“右手仍握住铜夹”。不要复制完整人物/场景设定，也不要用“与参考一致”替代必要的起点信息。

每条参考绑定还要声明稳定 `slot_id`、显式 `order` 与 `role / may_control / must_not_control`。
数组重排或插入参考不得改变已有槽位用途。身份参考不自动决定
构图，构图或尺度参考不自动带入图中人物、服装、文字、道具和故事状态；先做像素/文字
检查，再使用允许参考的内容。只有创作者/参考图权利人的可核对说明，或运行环境获授权
后形成的输入参考图检查记录，才能给出结论；说明记录写 `creator_described`，视觉检查写
`visually_inspected`，两者都没有时保持 `unverified`。这不是媒体生成
或成片验收。

### 5. 检查冲突与单镜头边界

- `structural_invariant`：明确时间段相加正好用完镜头时长（既不超出也不留余量）；同一时间区间不能既固定机位又摇、移、手持，除非写清切换；引用必须可解析；`end_report` 必须匹配来源终点。
- `reviewed_invariant`：动作物理可行、存在表演变化时弧线可见、摄影有动机、没有语义发明。
- `craft_default`：环境和摄影只支持注意、压力、揭示、结盟或转场，不用来装饰每一镜。
- `taste_option`：固定或移动机位、焦段语汇、口型精度和音乐密度由项目配置决定。

最后串读整场：上一镜结束边界与下一镜冻结首帧逐项相等；所有切换继续沿用已接受工作侧、
屏幕方向与可命名空间锚点。同一句对白在相邻镜头中的开始、延续、停顿与结束也必须接得上，
不能在前镜结束后又无依据续说。同一句跨过多镜时，每镜显式说明画内/画外延续、停顿或结束，
中间镜不能省略声音状态。任一处不一致先退回修正，不靠流畅措辞掩盖。

一个已经设计好的镜头只保持一个剪辑边界。不要在镜头内部偷藏未声明的切镜；打包也不改变源镜头可以单独审查的要求。

预览时从现有 shot/keyframe/boundary/dialogue/reference/config refs **派生**文本准备度，
逐镜按实际声明的 scope 分别显示 `ready | blocked` 与真实 `blocking_gaps`；不把它写回 motion spec
形成第二套状态。
准备度只说明文本是否足以交给外部执行，绝不保证生成后的身份、表演、口型、混音、剪辑或市场效果。
逐字台词缺失时，只阻断逐字台词时序、台词表演/口型可行性及“具体总时长可演”的判断；
仍可预览不依赖逐字语速的候选构图、动作先后和相对节奏，不得自编台词。其他缺口同样只阻断
其实际支持的交付判断。只有全部适用 scope 都为 `ready`，才可声称整体 `delivery-ready`。

本环节新增的动作/表演、摄影、声音与相对节奏选择也按类别总括，不逐镜复述；只单列会改变
信息时机、因果顺序、观众立场或表演所有权、可读文字、场尾落点、制作成本或回退路径的高影响例外。
未被总括的新增选择要么删除，要么补入接受摘要。

若创作者声明了多镜交付容器，一个容器可以按来源顺序承载若干连续镜头：此时切换只允许出现在成员镜头边界上，容器时长必须等于成员镜头已接受时长之和，镜头目的与逐镜可审查性不变。容器分层、成员资格与两级算术见 [delivery-profile.md](references/delivery-profile.md)。

写完容器记录后用 [container_check.py](scripts/container_check.py) 做一次**全集对账**：

```bash
python3 <skill-dir>/scripts/container_check.py \
  剧集/EP001/storyboard/delivery-containers.jsonl \
  --shots 剧集/EP001/storyboard/shots.jsonl
```

逐个容器都正确不代表全集的账是对的：一个镜头同时进两个容器会让全集时长凭空多一段，
一个镜头谁都没装会让它无声消失——**两种错误在单容器视角下都看不见**。脚本做的是集合
与算术比对：成员是否重复认领、成员是否属于本集、容器时长是否等于成员之和、容器加散镜
是否正好等于全集总时长。

未装容器的散镜是合法的，脚本只报告不判错；时长尚未确定的镜头列在 `unmeasured_shots`
并排除在总和之外，这样"还没做完"不会被当成"做错了"。

若 `timing_plan` 写的是显式秒段，再用
[motion_timing_check.py](scripts/motion_timing_check.py) 核 `VID-04` 的算术：

```bash
python3 <skill-dir>/scripts/motion_timing_check.py \
  剧集/EP001/storyboard/motion-specs.jsonl \
  --shots 剧集/EP001/storyboard/shots.jsonl
```

超出与不足都算违约，且不足的后果更重：未分配的余量不会渲染成静止画面，执行端会用
没有上游来源的动作、表情或运镜把它填满。脚本还会报未声明的区间重叠、`declared_total`
与实际覆盖不一致，以及 `boundary_refs.duration` 相对镜头已接受时长过期。
`relative` 计时不做算术断言，列在 `relative_plans` 里报告而不是判过。

若当前版本是局部补拍或替代实现，才增加 `coverage_scope` 并标明 `pickup | alternate`，
按 [补拍/替代范围片段](assets/coverage-scope.fragment.json) 用同一文件内稳定的运动记录 ID
说明母版和补充关系；每项原文要求都要对应到
当前运动字段或说明去向。补拍默认只补充、不替代母版；运动规格只能提出替代请求，
reviewer 在下游审查结论中决定，不能回写运动规格形成循环引用。

若收到绑定准确 prompt/spec/reference/config 的项目生产观察，只修改诊断涉及的运动字段，并在
修订提案中列出 `change_set`、`preserve_set` 和仍未知结果；不能把重复提交相同文本当修复，
也不能把一次配置下的观察提升为通用动作、表演或运镜规则。

### 6. 预览、接受与发布

先向创作者展示起止边界摘要、动作/表演顺序、摄影/声音选择、时长警告和可复制提示词。接受后写：

- `剧集/<EP>/storyboard/motion-specs.jsonl`：首行 `sources` 声明本文件引用的上游快照，
  其后每行一条运动规格，字段与只读来源引用见
  [motion-spec.jsonl.md](assets/motion-spec.jsonl.md)；
- `剧集/<EP>/storyboard/delivery-containers.jsonl`：**仅当项目声明了多镜交付容器时**，
  记录容器成员顺序、各成员已接受时长的只读引用与容器时长，模板见
  [delivery-container.jsonl.md](assets/delivery-container.jsonl.md)；
- `剧集/<EP>/storyboard/video-prompts.md`：由已接受规格、容器记录和配方 `hash` 生成的文本版本。

自然语言改提示词时，先展示规格字段怎样变化和重新生成的文本预览；若改动触碰分镜或
剧本负责的内容，保持当前文件不变，并把修改请求交给对应技能。项目工具可用时用 `publish`
发布跨文件产物并声明直接输入；独立运行时直接写出本阶段文件。

## 完成标准

- 提示词从准确的 `start_anchor` 出发，以明确顺序实现已确认终点，不改变时长、对白或下一镜；
- 若本镜确有表演变化，表演有触发、处理与可见结果；动作量可行，摄影与环境/声音服务镜头目的；
- 参考帧已知外观不被重复描述淹没，通用提示词可独立复制；
- 交付文本只含要拍出来的画面内容：没有参考图文件名、版本号、内部标记、草图指代或任务备注；同一角色的参考绑定在每次提及处一致，不出现只绑一半的写法；
- 已完成当前批次的本地结构检查；需要内容 verdict 时另行请求 `$short-drama-review`；
- 没有媒体文件、供应商接口或远程任务字段、远端 ID 或“视频已生成”声明。

## 投产交接

用户要求把已接受运动规格真正生成视频时，交给 `$short-drama-produce`。传递准确的 motion
spec、起止帧/参考文件、时长、画幅、声音要求和目标路径；生产技能必须展示完整预览并取得
本次任务的明确确认后才可调用外部 adapter。本技能本身仍只负责规格和提示词。

若音乐承担跨镜、跨场或主题曲职责，先写独立的 provider-neutral
`music-specs.jsonl`，并用 `scripts/music_spec_check.py` 校验。音乐是时间线层，不能为了某个
供应商方便而复制进每镜视频提示词。生成时把已接受的 prompt、歌词（如有）、引用和目标路径
作为独立 `music` job 交给 `$short-drama-produce`。