# Rhythm Density

> 当用户有多个本地生成的短镜头,要决定"每镜多长、怎么排布"才有节奏感时调用;尤其想做"长镜头"呼吸感却受限于单镜时长上限时。核心:高能段压到疏密比的短端快切,首尾放慢做呼吸;单镜时长上限由 profile 的 max_shot_sec 决定,不是固定数值;上限之下用同机位连续两镜+极缓运镜拼接制造"伪长镜"。 不适用于:音效/调色/BGM决策(见 editing-triad)、生成阶段镜头筛选(见 shot-breakdown)、单镜头光位机位描述(见 emotion-to-camera-language)。 也不适用于旁白驱动的科普/教程片剪辑刀数决策(见 shot-rhythm-model)——那个模型服务有解说词的信息片,节奏系数由概念/演示/验收等内容段类型决定;本 skill 服务无对白情绪片,没有旁白锚点,节奏服务情绪起伏且受单镜时长上限收敛,两套参数不能互相套用。 Trigger: 节奏/剪辑节奏/镜头时长/太快太碎/太拖/长镜头/慢镜头/呼吸感/pacing/shot duration/long take

- Skill: `l-trunks/rhythm-density` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add l-trunks/rhythm-density`
- Raw SKILL.md: https://api.skillmd.com/api/skills/l-trunks/rhythm-density/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: L-Trunks (https://skillmd.com/u/l-trunks)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/l-trunks/rhythm-density

---


# 节奏疏密对比 — 高能快切 / 首尾呼吸 / 单镜时长上限

> ⚠️ **本文出现的所有绝对秒数都是来源语料里那套工具（SCAIL2 动作迁移，上限 10 秒）的数，不是普适值。**
>
> 你的上限写在 profile 的 `max_shot_sec` 里。参考：本仓库实测的 `ltx-2.3-q4-12g` 是 **2.04 秒** —— 只有来源的五分之一。
> 拿 10 秒去规划 LTX 的片子，每一镜都做不出来。
>
> **读本文时把「10 秒」一律换成你自己的 `max_shot_sec`，把「2-3 秒 / 4-5 秒」理解成疏密比例而非绝对值。**
> 标定方法见 `local-ai-film/profiles/calibration.md`。

## R — 核心命题 (Reading)

**节奏靠疏密对比制造，不靠整体调快调慢。**

高能段（冲突、动作、情绪爆发）把单镜压到短端快切，配合蒙太奇式的重复画面，让信息密度和视觉冲击叠加。首尾段和过渡段反过来放长，给观众呼吸位 —— 这不是偷懒留白，是主动设计的松弛段，用来衬托高能段的压迫感。

来源语料给的具体档位是「高能 2-3 秒 / 呼吸 4-5 秒」，比例约 **1 : 1.7**。**比例是可迁移的，秒数不是。**

第二条来自工具侧：单镜有一个不可突破的时长上限，任何节奏设计都必须先在这条线以内规划。来源那套工具的上限是 10 秒，本仓库实测的 LTX 是 2.04 秒 —— 数值差 5 倍，但「先看上限再排节奏」这个动作不变。

> 方法论来源见仓库根目录 [ATTRIBUTION.md](../../ATTRIBUTION.md)。

---

## I — 方法论骨架 (Interpretation)

节奏不是"整体感觉快一点"这种模糊指令，而是**疏密对比**——不同段落用不同的镜头时长，靠对比本身制造张力。

高能段（冲突/动作/情绪爆发）把单镜压到疏密比的短端，配合快切和蒙太奇式的重复画面，让信息密度和视觉冲击叠加起来。首尾段和过渡段反过来放到长端，给观众"呼吸位"——不是偷懒留白，而是主动设计的松弛段落，用来衬托高能段的压迫感。

**疏密比约 1 : 1.7，绝对秒数按 `max_shot_sec` 缩放**（来源语料 10s 档是 2-3s / 4-5s；本机 LTX 2.04s 档是 0.5-0.7s / 1.2-2.04s）。

这个疏密对比在 AIGC 生产链路里格外重要，因为单镜本身天生短、彼此独立，靠时长排布本身撑节奏，而不是靠单镜内部的复杂调度。

本地条件下还叠加了一个上限：**单镜最长只能做到 `max_shot_sec`，这不是设计选择而是工具能力上限**，任何节奏设计都必须先在这条线以内规划。

这个数因模型而异，差距极大：

| profile | `max_shot_sec` | 疏密档位（按 1:1.7 折算） |
|---|---|---|
| 来源语料（SCAIL2 动作迁移） | 10 s | 高能 2-3 s / 呼吸 4-5 s |
| `ltx-2.3-q4-12g`（本仓库实测） | **2.04 s** | 高能 0.5-0.7 s / 呼吸 1.2-2.04 s |

**上限越小，能做的疏密对比范围越窄。** 2.04 秒的 profile 下，「呼吸段」只能顶到上限本身，对比度天然弱于 10 秒的工具 —— 这时候要靠转场时长和运镜速度补，而不是硬拉单镜时长。

上限带来一个共同问题：云端片子里常见的"长镜头沉浸感"（一镜到底的跟拍、缓慢平移）在本地做不出来。解法不是放弃长镜头感，而是**用同一机位连续拍两镜、运镜幅度都压到极缓，再首尾相接剪辑** —— 观众感知不到剪辑点，因为机位、光线、运镜速度都没有跳变，视觉上等效于一个更长的镜头。

⚠️ 这是本 skill 基于时长上限推导的解法，来源里没有讨论过。**上限越小越难成立** —— 2.04 秒拼两镜也只有 4 秒，伪长镜效果有限。

---

## A1 — 来源中的应用 (Past Application)

### 案例 1: S1 用蒙太奇与重复画面控制节奏（定性）

- **问题**: AIGC 生成的镜头天生短、彼此独立，如何靠剪辑本身做出节奏感，而不依赖单镜内部的调度
- **方法论的使用**: 反复强调要"利用蒙太奇这个玩法"，用画面重复和并置本身去讲故事、控制节奏，而不是指望单镜长度或复杂运镜
- **结论**: 节奏感来自镜头组接方式，不是单镜时长
- **结果**: 《后山野花》以此完成剪辑并入围 LipTV 首届赛事

### 案例 2: S2 节奏段的量化设计（仅设计未生产）

- **问题**: 《深夜抓捕醉酒小猫实录》14 个镜头如何分配时长，才能既有张力又不显得均匀单调
- **方法论的使用**: 把 03-11 号（猫的抓捕追逐主体动作）划为高能段落，单镜压到 2-3 秒快切；把 01-02 号（开场）和 12-14 号（收尾）放慢到 4-5 秒做呼吸感
- **结论**: 高能段与首尾呼吸段的时长比例大约是 1:2，疏密对比明显
- **结果**: **仅设计未生产**，量化方案本身未经实际生成验证

---

## A2 — 触发场景 (Future Trigger) ★

### 用户会在什么情境下需要这个 skill?

1. 手上有一批本地生成的短镜头（每镜 ≤ profile 的 `max_shot_sec`），要决定每一镜给多长、怎么排序
2. 剪出来的片子被评价"太碎/太赶"或者"太拖/没有张力"，但说不清是哪个段落的问题
3. 想做"长镜头"或"沉浸式跟拍"的效果，但发现单镜一到 `max_shot_sec` 就硬切了
4. 在设计分镜表时，需要给每个镜号预先标注一个大致时长

### 语言信号

- "这几个镜头该给多长"
- "节奏感不对，是太快还是太慢"
- "怎么做出长镜头的感觉"
- "pacing / shot duration / long take"

### 与相邻 skill 的区分（定稿）

- 与 `editing-triad` 的区别：本 skill 只管"节奏"这一个维度的具体秒数分布和硬顶约束；`editing-triad` 管节奏/音效/调色三个维度整体的决策顺序，且**组合使用**——`editing-triad` 第一步"搭节奏骨架"里的具体秒数分配，调用的就是本 skill
- 与 `shot-breakdown` 的区别：本 skill **依赖** `shot-breakdown` 先确定可用素材——本 skill 在素材已经确定之后决定怎么排布时长；`shot-breakdown` 管生成阶段怎么从抽卡结果里筛出可用画面，发生在本 skill 之前
- 与 `material-driven-storyboard` 的区别：本 skill **依赖**那个 skill 提供的硬约束前提——本 skill 的单镜时长上限来自 profile（来源语料收录的是那套工具的 10s，本机实测 LTX 为 2.04s）；若某镜的时长设计还没经过素材可行性检查，应先回 `material-driven-storyboard`
- 与 `emotion-to-camera-language` 的区别：本 skill 管镜与镜之间的时长关系，那个 skill 管单个镜头内部的机位光位怎么写

### ⚠️ 与科普片剪辑刀数模型 `shot-rhythm-model` 的区分（必读，两者最容易打架）

`shot-rhythm-model` 是从**另一批完全不同的语料**（技术爬爬虾 19 支科普/教程口播视频、1491 个剪辑点）蒸馏出来的剪辑参数模型，和本 skill 表面上都在讲"节奏"，但服务的对象、锚点、约束完全不同，**不能互相代入数值**：

| 维度 | `rhythm-density`（本 skill） | `shot-rhythm-model` |
|---|---|---|
| 服务对象 | 无对白情绪/氛围短片 | 有解说词的科普/教程/口播片 |
| 节奏锚点 | 情绪起伏（高能段 vs 呼吸位） | 内容段类型（概念图解/流程叙述/结果验收/开场/结尾）+ 片长基线 |
| 是否有旁白 | **没有旁白**，无语速/气口这类时间基准 | 有旁白，且旁白语速是恒定底盘（`speech-cadence-baseline` 的 375 字/分），画面节奏是自由变量 |
| 硬约束来源 | profile 的 `max_shot_sec`，是**工具能力上限**（来源语料 10s / 本机 LTX 2.04s） | 无绝对上限，只有相对系数（如概念段 ×0.4、开场 ×1.7），是**内容密度规律** |
| 典型数值 | 疏密比 ≈ 1:1.7，绝对值随 `max_shot_sec` 缩放 | 概念图解 8–12s / 流程叙述 3–5s / 开场 1.5–3s（我们的竖版片档位） |
| 判据 | 情绪曲线上的高能/松弛段落 | 内容段落类型 + 片长回归公式 |

**误用场景举例**：把 `shot-rhythm-model` 的"概念图解段给 8–12s 长镜头"套到无对白情绪片的呼吸位上——错，情绪片没有"概念"这个内容维度，呼吸位的 4–5s 是由情绪张力决定，不是由要不要讲清一个名词决定。反过来，把本 skill 的"高能段 2–3s"套到科普片的实操演示段——也错，科普片的镜头时长要看画面主体是否连续、是否有语速做锚点，不是看情绪强弱。

两者的分野本质是**有没有旁白**：有旁白时，语速先锁定底盘，剪辑节奏是围绕内容密度做的自由变量（`shot-rhythm-model` + `speech-cadence-baseline` 二维模型）；没有旁白时，画面本身就是唯一的叙事载体，节奏直接服务情绪，且被本地工具的物理硬顶收敛（本 skill）。

---

## E — 可执行步骤 (Execution)

1. **标出情绪/动作曲线上的高能段与松弛段**
   - 对照脚本/驱动视频，标出哪几个镜号是冲突/动作/情绪爆发段落，哪几个是开场/过渡/收尾段落
   - 完成标准：每个镜号都归入"高能"或"呼吸"两类之一

2. **给高能段定时长**
   - 单镜压到 `max_shot_sec × 0.25 ~ 0.3`，配合快切与蒙太奇式重复画面
   - 完成标准：高能段每一镜都落在该区间，且相邻镜头之间有画面重复/呼应关系（而非纯随机拼接）
   - 换算例：10s 档 → 2-3s；**2.04s 档 → 0.5-0.7s**

3. **给首尾/过渡段定时长**
   - 放到 `max_shot_sec × 0.4 ~ 0.5`（上限小的 profile 直接取 `max_shot_sec`），作为呼吸位插入在高能段前后
   - 完成标准：开场和收尾至少各有一镜落在该区间
   - 换算例：10s 档 → 4-5s；**2.04s 档 → 1.2-2.04s**

4. **核对 profile 的单镜时长上限**
   - 先读你的 profile 拿到 `max_shot_sec`（没有 profile 就先走 `local-ai-film/profiles/calibration.md` 标定 1）
   - 检查是否有任何单镜设计超过 `max_shot_sec`
   - 完成标准：全部镜号时长都 ≤ `max_shot_sec`
   - 判停条件：若某镜确实需要超过上限的"长镜头感"，跳到步骤 5 做伪长镜拼接，而不是尝试突破上限
   - ⚠️ **本文前面写的 4-5 秒呼吸段在 `max_shot_sec < 5` 的 profile 上直接违规**。本机 LTX 是 2.04 秒，呼吸段只能取 1.2-2.04 秒，按 1:1.7 的比例重算，不要照抄绝对值

5. **（可选）伪长镜拼接**
   - 同一机位设计连续两镜，运镜幅度都压到极缓（接近固定机位），首尾剪辑点选在动作最平缓的瞬间
   - 完成标准：两镜拼接后观众感知不到剪辑点，视觉上等效于一个更长的连续镜头

---

## B — 边界 (Boundary) ★

### 不要在以下情况使用此 skill

- 还没有确定素材内容、连驱动视频/参考图都没选好——先做 `material-driven-storyboard` 或 `shot-breakdown`
- 需要决定音效/BGM/调色优先级——那是 `editing-triad` 管的范围，与本 skill 的"时长排布"是不同维度
- **片子有旁白/解说词**——不要用本 skill 的高能/呼吸疏密对比，改用 `shot-rhythm-model`（按内容段类型 + 片长回归公式定参数）；如果连片子该多快都说不清、只笼统觉得"有点拖"，先用 `speech-cadence-baseline` 排除语速句法问题

### 来源中警告的失败模式

- **全片用均匀时长剪辑，不做疏密对比**——会失去节奏感的控制（S1 原文用词）
- **忽视 profile 的单镜时长上限、按云端习惯设计超长单镜**——本地工作流直接卡死在 `max_shot_sec`，超过上限的设计从起点就做不出来。**更常见的错误是照抄本文的绝对秒数**：来源那套工具是 10 秒，本机 LTX 只有 2.04 秒，照抄 4-5 秒呼吸段等于每一镜都做不出来

### 作者的盲点 / 局限

- S2 的具体秒数（2-3s/4-5s）只有一份分镜案例支撑，且这份分镜从未实际投产，量化数值本身未经生成结果验证
- "伪长镜拼接"（同机位连续两镜+极缓运镜）是本 skill 基于单镜时长上限推导出的解法，来源完全没有讨论，效果依赖 z-image/SCAIL2 对"运镜幅度极缓"的响应稳定性，存在推导风险

### 容易混淆的邻近方法论

- 与传统影视剪辑理论里的"库里肖夫效应/蒙太奇学派"不是一回事——那是镜头并置产生新含义的理论，本 skill 讲的是纯时长/疏密分布的节奏控制，虽然都用"蒙太奇"一词但关注点不同
- 与"帧率/慢动作"技术手段不是一回事——那是拍摄/后期变速技术，本 skill 管的是镜头时长本身的设计，不涉及变速
- **与 `shot-rhythm-model`（科普片剪辑刀数模型）不是一回事，也不是同一个模型的两个参数档**——那是从旁白驱动的科普/教程片语料蒸馏出的模型，用内容段类型（概念/演示/验收）和片长回归公式定参数，背后有恒定的语速底盘（`speech-cadence-baseline` 375 字/分）做支撑；本 skill 服务无对白情绪片，没有旁白这个时间基准，节奏纯粹服务情绪起伏，且被 profile 的 `max_shot_sec` 这个硬件能力上限收敛。两者都谈"节奏"和"疏密"，但一个的判据是"这句话有没有讲清"，另一个的判据是"这一刻情绪有多强"——判据不同，数值不可互换，见上方 A2 对照表

---

## 相关 skills

- depends-on: `shot-breakdown`（素材筛选完毕才能排布时长）、`material-driven-storyboard`（单镜时长上限与素材可行性前提来自那里的硬约束表）
- contrasts-with: `shot-rhythm-model`（科普/教程片剪辑刀数模型——旁白驱动信息片 vs 本 skill 服务的无对白情绪片，判据、锚点、约束完全不同，详见上方对照表，禁止互套数值）
- composes-with: `editing-triad`（本 skill 提供节奏维度的具体秒数，供 `editing-triad` 第一步"搭节奏骨架"调用）

---

## 审计信息

- **验证通过**: V1 ✓（三个来源：S1 蒙太奇定性/S2 秒数量化/S3 ≤10s 硬顶） / V2 ✓（可推导"10 秒硬顶下如何做长镜头感"→用同机位连续两镜+极缓运镜拼接，制造伪长镜，来源未讲本地限制下的变通） / V3 ✓（不是"要有节奏"这种废话，而是给了具体的疏密数值和分布位置：高能段 vs 首尾）
- **测试通过率**: 待阶段 4
- **蒸馏时间**: 2026-08-01

