# Shotlist Builder

> Use when a script, treatment, scene list or multi-shot brief has to be planned as a multi-shot VIDEO piece — 剧本拆镜、分场拆镜头、多镜规划、镜头清单、拍摄计划、 逐镜视频提示词总表、分镜表、shotlist、shot breakdown — landing as one searchable HTML table with per-shot durations and 4–15s Seedance groupings. 素材要和剧本 对上号时(剧本 + 一批图 / 图片文件夹 / 分镜稿)在这条视频路径内一并对表。 只做规划与交付物,不定级、不路由、不调生成工具。**纯出图任务不走本 skill**: 只要关键帧/一组角色图而不做成片时,由图片入口直接出,一致性交给角色链与人像库。

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

---


# Shotlist Builder / 剧本 → 逐镜分镜表

<!-- skill-budget: standard -->

把一个剧本变成**一张人能看的逐镜生产表**:每行一个镜头(景别 / 运镜 / 动作),
右侧挂着按 4–15s 分组的 Seedance 提示词,最后落成一个自带搜索、景别筛选和逐条
Copy 按钮的单文件 HTML。

**你不是在誊写剧本,你是在导演它。** 用户写「他看起来很惊讶」时不要照抄——至少
有四种惊讶,每种的肌肉动作完全不同(见 `references/micro-beats.md`)。笼统情绪
进不了提示词,具体的肌肉、呼吸、眼神才进得去。

## 自动触发(相关即载)

命中任一相关任务就加载本 skill,**不需要用户点名「分镜表」或「用 shotlist-builder」**
——和 `sd2-pe` 同一种加载姿态:sd2-pe 是「有视频提示词就载」,本 skill 是
「**要做成多镜片子就载**」。

- **产出是多镜视频**:不止一个镜头、一板卡片、一条片子、一个预告
- 给了剧本、treatment、分场大纲、场景清单、shot list,要变成镜头
- **拖进来一批素材、而且是要做成片**:剧本 + 一堆图、一个图片文件夹路径、
  一份分镜稿——素材要和剧本对上号(见下面「素材和剧本一起到」)
- 说「拆一下」「拆成镜头」「分个镜」「排一下镜头」「列个拍摄计划」「铺满工作台」
- 需要决定每镜多长、哪几拍合成一次 4–15s 生成
- 已经有一堆逐镜提示词散在聊天里,要归拢成一份能过目的东西
- 制片包出完了,需要一份人能直接读的总表(而不是十几个 .md)

**不加载 —— 用户只要一份清单 / 一次整理(重要):** 判据是**用户要不要那套四阶段闸门**,
不是有没有剧本。这些**直接做完交付,别进闸门**:

- 「把这个脚本拆一下」「整理一下这些文件」「列一下有几个镜头」—— 要的是一份结果,
  不是分阶段确认。直接拆完给他,几分钟的事。
- 用户明说「快点」「简单弄一下」「先给我看看」「不用那么正式」
- 已有成型分镜,只是要换个格式 / 归拢成一张表

四阶段闸门(交对照表 → 等确认 → 锁范围 → 再写提示词)是给**真要开拍的多镜项目**用的:
资产多、要反复复用、错一版重来成本高。把它套在「拆个脚本」上,三分钟的事会拖成
几小时的往返确认 —— 这是实测反馈,不是假设。**拿不准就先按不加载做**,用户觉得
需要更正式再升级;反过来(先走完闸门才发现他只想要张表)那些等待是要不回来的。

**不加载 —— 纯出图任务:** 用户要的只是图、不做成片时**不要拉本 skill**,
交给图片入口直接出。包括:「按这个剧本出几张关键帧」「给这个角色出一组图」
「这批图 + 剧本,帮我出场景图」。

判据是**要不要动起来**,不是有没有剧本、有没有多张图。图的跨张一致性由
`director-character-consistency` 和 `catimation-portrait-library` 负责,不需要
本 skill 的镜头时长、4–15s 分组和 HTML 总表——那三样只有做成片才用得上。
素材对不上号时由图片入口就地问一句,**不走本 skill 的四阶段闸门**:那个闸门要求
出图前先交对照表、等用户确认、必要时再画俯视图,对「只要几张图」是纯粹的等待。

其它不加载:单镜「让这张图动起来」、单条提示词打磨、纯画面工艺问题、纯编码任务。

## 没有剧本也要主动问(不要等用户递本子)

**多镜片子不必先有剧本。** 用户在工作台上说「我想做个赛博朋克短片」「给这个角色做
一条片子」时,本 skill 已经该在场了——此时的工作不是拆本子,是**问出一张镜头表**。

(注意区别:「给这个角色出一组图」不在此列——那是纯出图,归图片入口,见上一节。)

带着答案去问,一次一张 `ask_user` 卡,3–6 个具体选项并标推荐项:

1. **讲什么 / 看什么** — 一句话的核心事件或视觉母题。开放时给几个具体方向,别问
   「你想要什么风格」这种没有默认答案的空问题。
2. **几镜** — 给区间选项并说明代价(「4 镜:紧凑但交代不全 / 6 镜:推荐 / 8 镜:
   完整但成本翻倍」)。**镜头数是创作决定,不替用户拍板。**
3. **谁反复出现** — 有复用角色就要先锁 identity-hard 主锚,没有就明说这是无角色的
   氛围片,后面不必守身份一致性。
4. **规格** — 时长/画幅/分辨率;入口已确认过就跳过。

问完直接给出镜头表草案让他过目,**不要停在问题上**。他说「你帮我拿主意」时,那不是
让你别问,是让你带着答案去问。

> 工作台上的合并配比见 catimation-video-workbench 的「提问卡片:三张够了」——
> 别为这四项各弹一张卡,把用户打断四次。

## 素材和剧本一起到:先对表,再拆镜

四阶段循环默认「先有本子,再列清单,再等图」。但用户常常**一次性把东西全拖进来**:
剧本 + 一个装满图的文件夹、或者一份分镜稿加二十张参考图。这时**不要因为图已经在了
就直接跳到阶段四**——素材齐不齐和素材对不对得上,是两件事。

先出一张**对照表**,这是本 skill 在这种情形下的第一个产出:

| 剧本里的实体 | 命中的素材 | 结论 |
|---|---|---|
| 罗科(主角) | `roko.png` | ✅ 对上 |
| 露露 | — | ❌ **缺**:身份关键,问用户要,不自作主张生成 |
| 拍立得(NOV 14) | — | ⚠️ **缺**:非身份关键,可交回入口 `generate_image` 自补 |
| — | `IMG_4821.jpg` | ❓ **多/歧义**:剧本里没有对应实体,问清楚是什么 |

三类缺口的处理沿用阶段二那张分诊表(项目/人像库已有 → 找回;非身份关键 → 自补;
身份/IP/品牌关键 → 问)。**「多」和「歧义」必须问,不许猜。** 一个名字看不出是谁的
文件被静默当成主角,后面每一条提示词都错,而画面看着「像那么回事」。

怎么看这些图:

- **给的是文件夹路径**,先列出目录内容再逐个处理——别对着路径字符串猜里面有什么。
- **文件名本身就是证据,但只是弱证据。** `roko.png` 大概率是罗科,`IMG_4821.jpg`
  什么也说明不了。名字对不上就得真看图。
- **超过 5 张不要逐张自己看**。主 agent 直接看图的上限是 5 张,再多会把上下文塞爆;
  按 catimation-subagents 的做法并发调理解工具拿文本回来,或交子代理批处理。
  对照表要的是「这张图里是谁/是什么」,那本来就是一句话的文本结论。

对照表让用户点头之后,再走阶段三的锁范围与锁空间。剧本里有的实体一个都没落下、
拖进来的图一张都没悬空,才开始写提示词。

## 边界(先读这条)

本 skill **只做规划与交付物**,不出图不出片:

- 不定级、不路由——任务分级由视频入口负责,它决定何时加载本 skill。
- 不调 `generate_video` / `generate_image`——需要生成时交回入口执行。
- 提示词的八大要素、多模态绑定语法与 12 项覆盖以 `sd2-pe` 为准;本 skill 负责的是
  **上一层**:剧本拆成多少个镜头行、哪几行合成一条提示词、整套怎么交付。

不适用:单条提示词打磨(交 `sd2-pe`)、单镜画面工艺(交对症技法叶子)、
端到端成片编排(交制片流水线)。

## 四阶段循环(跨轮次有状态,不许合并成一轮)

### 阶段一 读剧本

通读上传的剧本。若同时传了一份既往分镜 HTML 或导演笔记,把它当**风格覆盖**。

逐场识别:场号与 INT/EXT/时间头、出场人物(标出首次出场)、地点、有戏的道具
(会成为视觉焦点的:照片、武器、文物、载具、有内容的屏幕、字条)、动作节拍、
以及**该场的情绪基调**——最后这项决定后面的运镜选择。

### 阶段二 资产清单 + 缺口分诊

按 人物 / 地点 / 道具 / 风格参考 四类列出这些场需要的全部素材,每条一行描述。
然后**对每条做缺口分诊**(与视频入口的资产齐备门同一套口径):

| 缺口类型 | 处理 |
|---|---|
| 项目或人像库里已有 | `list_portrait_library` 找回,记下 `asset://assetId` |
| 非身份关键(场景、道具、氛围) | 交回入口用 `generate_image` 自补,再 `add_to_portrait_library` |
| 身份 / IP / 品牌关键 | `ask_user` 请用户提供或确认主锚,**不自作主张生成** |

**停在这里。** 清单和分诊结论发给用户,等他确认或补图后再进阶段三。同一轮里
不要往下走。

> 复用角色的主锚沿用入口的口径:大头照+全身照、三/四/多视图角色板,或用户确认
> 的其它干净资产都可以作 `identity-hard`。用户已指定就服从;多套候选拿不准且身份
> 关键时才问。

### 阶段三 锁范围 + 锁空间

用户把素材补齐后,写任何提示词之前:

1. **确认范围**——做哪几场(「21 和 23 场」「13–17 场」「全部」)。
2. **映射素材到镜头**——文件名或 assetId 有歧义**必须问**,禁止静默分配。
   素材是和剧本一起拖进来的(没走过阶段二)时,先补上面那张对照表再往下。
3. **确认风格预设**——用户传了覆盖就用他的;否则从
   `references/style-presets.md` 里挑一个并说明理由,不要默认套同一种长相。
4. **画俯视图**——任何「2+ 角色同框」或「关键道具在特定台面」的场,先出一张
   top-down 空间图并等用户点头。做法与字段见
   `references/spatial-blocking.md`。

范围和空间都锁死之前,一条提示词都不要写。

### 阶段四 出表

逐场:

1. 把动作拆成镜头行——一行 = 一个离散的动作 / 运镜 / 焦段变化。
2. 按 `references/prompt-density.md` 的合并与拆分清单,把镜头行分组成提示词。
   **没有固定比例**,按场判断。
3. 逐条写提示词,结构遵 `references/prompt-patterns.md`,运镜按
   `references/camera-emotion.md` 跟情绪对齐,表演按
   `references/micro-beats.md` 拆到肌肉。
4. 多镜提示词内部用 `【镜头N】` 分块,每块自带 机位 / 背景 / 动作 / 微表演细节。
5. 套 `assets/html-template.md` 拼装,存到工作区(见下),把路径告诉用户。

## 交付与落盘(Codex / 本 app 环境)

本 skill 不依赖任何托管环境的专有 API。三处落盘统一走工作区文件:

| 产物 | 路径 |
|---|---|
| 俯视空间图 | `<workspace>/assets/blocking/<scene>_topdown.svg`,画完用 `view_image` 给用户看 |
| 分镜表 HTML | 在制片包里 → `<project>/06_delivery/shotlist_<scope>.html`;独立任务 → `<workspace>/assets/shotlist/shotlist_<scope>.html` |
| 交付 | 存盘后把**绝对路径**回给用户;需要时用文件管理器打开,不要把整份 HTML 贴进聊天 |

俯视图用 agent 自己写 SVG 文本是默认做法(harness 无关、可版本化、改一个坐标不用
重画)。用户正在 tldraw 画布上工作时,也可以直接在画布上摆圆点和箭头,同样要等
他确认。

## Hard rules

- **句柄用本 app 的形式**:`@图片1` / `@视频1` / `@音频1`,多主体或需复用时先定义
  `<主体N>@图片N`。**严禁裸写 `asset://` 或 assetId 到动作描述里**——必须经
  `@图片N` / `<主体N>` 桥接。句柄按提示词重新编号:21 场的 `@图片1` 和 14 场的
  `@图片1` 可以是不同人,每条提示词自己声明自己的句柄。
- **状态变化写进句柄**:同一角色跨场淋过雨、溅了血、蒙了灰,要在句柄里显式写出来
  (`湿发贴额`、`溅血渍`、`面部薄水雾`)——模型不会记得上一场。
- **时长按剧情,不按平均**:每条提示词的生成时长落在 **4–15s**;成片里需要 1.5–3s
  的插入/反应,先生成至少 4s 再后期裁。清晰物理动作 4–7s、持续表演或氛围 8–12s、
  稳定长镜 12–15s。
- **画幅与时长从规格确认来**,不写死。用户没给就沿用入口已确认的 `spec_confirmed`,
  仍不确定就问一句再动手。
- **风格必须具体,但不必是同一种**。每条提示词都要有风格块,里面写明调色比例、
  光源、镜头规格;但用哪套是 `references/style-presets.md` 的选择题,不是房规。
- **声明镜头数**:多镜提示词开头写 `⚠️本视频严格只有N个镜头——禁止添加额外镜头`,
  这是压制模型自作主张加切的唯一有效手段。
- **每次切都要双重对比**:景别**和**运镜性格同时变。景别阶梯
  `极远景 → 远景 → 中景 → 中近景 → 特写 → 大特写`;运镜性格
  `手持 / 固定 / 稳定跟拍 / 摇臂 / 航拍` 跨切不重复。
- **不静默分配素材**。文件名或 assetId 对不上就问。
- **改动改 HTML,不在聊天里贴新提示词**。用户交付后要求修改时,直接改那个 HTML
  文件再把路径给他。

## 常见错误

| 错误 | 纠正 |
|---|---|
| 把「他很惊讶 / 很紧张」原样写进提示词 | 拆到肌肉、呼吸、眼神;拿不准就给用户四选一 |
| 运镜按「怎样最电影感」挑 | 运镜是焦点人物的情绪替身,按情绪挑(见 camera-emotion) |
| 2+ 角色不画俯视图直接写空间关系 | 模型会瞎编几何;先画图、先确认 |
| 把一场的悲伤崩溃拆成三条提示词 | 连续的情绪单元不要切碎,合成一条内部分镜 |
| 插入镜里塞剧情节拍 | 插入是 0.3–0.5s 的静态标点,且必须点名是谁的手/谁的鞋 |
| 用一种风格套所有项目 | 风格是预设选择题,选完要说清为什么 |
| 把带文字的分镜总览板当视频主输入 | 主输入用干净关键帧;总览板只作低约束氛围参考 |

## 文件

- `references/prompt-patterns.md` — 提示词的段落结构:句柄声明、全局警告、
  `【镜头N】` 分块语法、对白规则、失败模式反制话术
- `references/camera-emotion.md` — 运镜↔情绪映射、单镜内的相机分段、焦段选择、
  各类镜头的时长区间
- `references/micro-beats.md` — 按情绪分类的微表演目录、惊讶四变体、单镜情绪弧
  编号节拍、台词前中后三拍、虚焦旁听者
- `references/spatial-blocking.md` — 俯视图什么时候画、画什么、怎么翻译成
  `⚠️空间布局` 段落
- `references/prompt-density.md` — 镜头行怎么分组成提示词(合并五条 / 拆分五条)
- `references/plan-types.md` — 景别代码与徽章类名
- `references/style-presets.md` — 可选风格预设(含实光源写实、动画、商业等),
  以及每条提示词的风格块必填字段
- `assets/html-template.md` — 单文件 HTML 分镜表的骨架、CSS 与筛选 JS

