优化脚本

This commit is contained in:
Azmat@qq.com
2026-08-21 10:28:35 +08:00
parent 6c588a7fee
commit c2d3a786a3
23 changed files with 1461 additions and 287 deletions
@@ -24,30 +24,18 @@
## 二、时长 → 镜数 → 黄金结构映射(关键)
### 2.1 时长规则(不再是固定四档,也不再每镜等长
### 2.1 时长规则(每镜固定 15 秒
- **总时长**由输入给定:**560 秒之间、5 秒一档**5/10/15/…/60。未指定时默认 30。
- **镜时长 415 秒**,这是下游出片模型的硬上限,**任何一镜都不许超过 15 秒、不许低于 4 秒**
- **每镜时长可以不一样。** 该长的镜(讲卖点、举证)就给足,该短的镜(空镜、转场、一句钩子)就压短
别再机械均分
- **总时长**由输入给定:**15 / 30 / 45 / 60**。未指定时默认 30。
- **镜时长固定 15 秒**,这既是主流程产品规则,也是下游出片模型的硬上限。
- 镜数直接由总时长决定:15 秒 → 1 镜,30 秒 → 2 镜,45 秒 → 3 镜,60 秒 → 4 镜
- **不要**写成 8/10/12 这种不等长,也**不要**自行加减镜。15 秒要靠画面变化和一句完整意思撑满,不是靠切碎镜头
- 所有 `segments[].duration` 相加**必须精确等于** `total_duration`
### 2.2 镜数怎么定
镜数不是算出来的,是**按表现形式的节奏定**的。先取该形式的推荐单镜时长,再用总时长去除:
| 表现形式 | 推荐单镜时长 | 理由 |
| ---- | ---- | ---- |
| **口播** | 10–15 秒 | 说完一个完整意思需要时间,切太碎话会断 |
| **短剧** | 6–10 秒 | 靠切换制造节奏,镜头长了拖沓 |
| **Vlog** | 5–8 秒 | 碎片拼贴感,镜头短、数量多 |
`segment_count ≈ total_duration / 推荐单镜时长`,向最接近的整数取整,
然后**必须**落在 `ceil(total_duration/15)``floor(total_duration/4)` 这个区间内。
例:口播 30 秒 → 30/12 ≈ 2.5 → 3 镜(如 12+10+8)。
  短剧 45 秒 → 45/8 ≈ 5.6 → 6 镜(如 8+7+9+7+8+6)。
  Vlog 30 秒 → 30/6.5 ≈ 4.6 → 5 镜(如 6+6+7+6+5)。
镜数**不是按表现形式估算的**,就是 `total_duration / 15`
表现形式只影响这一镜里怎么拍(口播把 15 秒说完一件事;短剧在 15 秒里完成一次冲突/对白交换;Vlog 用镜内空镜+细节撑满),**不改变镜数**。
### 2.3 role 按镜数分配
@@ -102,22 +90,23 @@
## 五、旁白红线(硬规则,违反即不合格)
- **口语化**:像真人对着镜头唠嗑,不准书面腔 / 不准 AI 腔("综上所述""不仅…而且""值得一提的是"全禁)。
- **`narration` 字数按这一镜的秒数算**:出片模型在镜内直接发声,可懂语速上限约 **3.5 字 / 秒**
**每镜 `narration` ≤ `duration × 3.5` 字,且任何情况下不超过 55 字。**
对照表(写作目标再留 10% 缓冲,宁可短不要卡满):
- **必须用商品原词**:输入给了商品名、品牌、卖点,就用这些词,不许改成「补水/好用/值得买」这种空卖点。品类示例句只是语气参考
- **`narration` 字数按这一镜的秒数算**:出片模型在镜内直接发声。
可懂语速上限约 **3.5 字 / 秒**,口播下限约 **2.4 字 / 秒**(再短镜头空一半)。
**每镜上限 `duration × 3.5` 字,且不超过 55 字。口播 15 秒镜还有下限 36 字。**
| 单镜时长 | 字数上限 | 写作目标 |
| ---- | ---- | ---- |
| 4 秒 | 14 字 | ≤ 12 字 |
| 5 秒 | 17 字 | ≤ 15 字 |
| 6 秒 | 21 字 | ≤ 19 字 |
| 8 秒 | 28 字 | ≤ 25 字 |
| 10 秒 | 35 字 | ≤ 31 字 |
| 12 秒 | 42 字 | ≤ 38 字 |
| 15 秒 | 52 字 | ≤ 47 字 |
| 单镜时长 | 下限 | 字数上限 | 写作目标 |
| ---- | ---- | ---- | ---- |
| 4 秒 | — | 14 字 | ≤ 12 字 |
| 5 秒 | — | 17 字 | ≤ 15 字 |
| 6 秒 | — | 21 字 | ≤ 19 字 |
| 8 秒 | — | 28 字 | ≤ 25 字 |
| 10 秒 | — | 35 字 | ≤ 31 字 |
| 12 秒 | — | 42 字 | ≤ 38 字 |
| 15 秒 | **36 字** | 52 字 | **3847 字,24 句** |
**短镜不要硬塞长句** —— 装不下就把这句拆到下一镜,或者干脆让这镜没有旁白(纯画面)
总时长很短、一镜要装多功能时尤其要狠删,先保 CTA 不被砍
主流程每镜都是 15 秒:**要说满,不要宁可短。** 一句 20 字撑不满镜头
留白靠句间停顿和画面,不靠少写字。只有 Vlog 才允许个别镜纯画面无声
- **不浮夸、不空喊**:卖点要给具体理由,不堆形容词。
- **违规词禁令**(电商广告法红线,一律不写):
- **医疗功效类**:治疗 / 根治 / 疗效 / 抗癌 / 消炎 / 杀菌(无证) / 排毒 / 速效 / 抑制 ××病 …
@@ -126,3 +115,22 @@
- 替换策略:用"帮助""更""不少人反馈""上脸清爽"等柔性、主观化表达替代。
> 自检阶段必须逐镜扫一遍违规词,命中即改写。详见 `checklist.md`。
---
## 六、15 秒场内的秒级分镜(硬规则)
主流程一场就是 15 秒。15 秒里**必须再切 3–5 刀**,写进 `visual`,下游故事板和视频只认这段。
```
0-3s:近景,人看镜头或看向场景,先立住环境和情绪
3-8s:手部入画,开始使用商品(写清容器、材质、液体/膏体状态)
8-12s:商品特写,用法过程可见
12-15s:拉回人物,使用后的反应
```
- 第一条从 **0 秒**起,最后一条接到 **15s**
- 每一条写:景别 + 谁 + 手从哪来 + 商品/容器什么样 + 这一拍在变什么。
- 15 秒内至少切 **两次景别**(近景 / 特写 / 手持跟拍…)。
- 商品用法必须真实:茶要热水和蒸汽,不要把茶包丢进冷白开;手不要悬浮。
- 允许另给 `beats:[{start,end,shot_size,action}]`,但 `visual` 仍要能折成上面这种多行文本。