---
name: video-script
description: >
  生成视频脚本，覆盖短视频（7-60秒）到中长视频（1-30分钟）全时长。
  短视频：Hook 变体评分、分秒计时、字幕文案、封面方案。
  中长视频：留存率优化、节奏中断点、前向钩子、章节结构。
  适用于抖音、视频号、小红书视频、B站、YouTube 等平台。
  当用户说"视频脚本"、"短视频脚本"、"抖音脚本"、"B站脚本"、
  "视频号脚本"、"竖版视频"、"Reel 脚本"、"写个视频文案"时使用。
  和 video-strategy 的区别：video-strategy 做视频内容规划和系列策划，
  video-script 写具体某一条视频的脚本。
layer: produce
---

# 视频脚本生成

> 根据目标时长自动适配短视频或中长视频模式，生成留存率优化的结构化脚本。

## 输入

| 字段 | 必填 | 说明 | 示例 |
|------|------|------|------|
| 主题 | 是 | 视频主题 | "为什么 Rust 正在替代 C++" |
| 目标时长 | 是 | 秒数或分钟数 | 30 秒 / 10 分钟 |
| 平台 | 否 | 抖音/视频号/小红书/B站（默认按时长推断）| 抖音 |
| 内容类型 | 否 | 科普/教程/评测/种草/解说/杂谈 | 科普 |
| 核心要点 | 是 | 要覆盖的关键信息 | 内存安全、性能… |
| 调性 | 否 | 专业/轻松/犀利/对话感（默认：对话感）| 轻松 |

## 模式自动判定

| 时长 | 模式 | 典型平台 | 关键指标 |
|------|------|----------|----------|
| 7-15 秒 | 短视频·极速 | 抖音/视频号 | 3 秒完播率 |
| 15-60 秒 | 短视频·标准 | 抖音/视频号/小红书 | 完播率、DM 转发、收藏 |
| 1-5 分钟 | 中视频 | 视频号/抖音/B站 | 5 秒留存、互动率 |
| 5-30 分钟 | 长视频 | B站/YouTube | 30 秒留存、播放完成率 |

**语速基准**：中文约 250 字/分钟。

---

## 短视频模式（≤60 秒）

### Step 1 — Hook 设计（3 个变体）

从 5 种 Hook 类型中选 3 个，各生成一个变体：

| 类型 | 适用场景 | 示例 |
|------|---------|------|
| 好奇缺口 | 冷知识、反直觉 | "你每天做的这件事其实在伤害你" |
| 模式打断 | 反常规、挑战认知 | "忘掉你以前学的所有XX" |
| 身份触发 | 精准受众 | "如果你是XX，这条一定要看完" |
| 痛点共鸣 | 真实困扰 | "明明很努力了还是没效果？" |
| 权威背书 | 数据/研究支撑 | "最新研究发现：XX 竟然是错的" |

每个 Hook 按 4 维度评分（每项 1-5，满分 20）：好奇强度、打断效果、身份触发、3 秒清晰度。选最高分作为主 Hook。

### Step 2 — 分秒脚本

按时长压缩结构：

| 时长 | 结构 |
|------|------|
| 7-15 秒 | Hook(0-2s) + 核心价值(2-10s) + 收尾(10-15s) |
| 15-30 秒 | Hook(0-3s) + 痛点(3-8s) + 方案(8-20s) + 收尾CTA(20-30s) |
| 30-60 秒 | Hook(0-3s) + 痛点(3-8s) + 方案(8-40s) + 洞察+CTA(40-60s) |

脚本格式：
```
[0-3s] HOOK
口播: "..."
字幕: "..."
画面: [描述]

[3-8s] 痛点
口播: "..."
画面: [描述]
```

每句 ≤15 字，口语化，加括号注释（停顿/强调/表情）。

### Step 3 — caption + 封面

**caption**：100-300 字，Hook 变体开头（不重复视频 Hook），DM 转发 > 收藏 > 点赞。
**hashtags**：3-5 个垂直标签，不用泛标签。
**封面**：3-5 字大标题 + 画面描述 + 表情。

### Step 4 — 质量评分（满分 100）

| 维度 | 权重 | 检查点 |
|------|------|--------|
| Hook 强度 | 25 | 好奇缺口、打断效果、3 秒清晰度 |
| 内容质量 | 25 | 价值密度、结构、痛点-方案清晰度 |
| caption+CTA | 20 | 长度 100+字、转发型 CTA、Hook 变体 |
| 格式合规 | 15 | 9:16 安全区、时长匹配、封面 |
| 算法信号 | 15 | 收藏/转发优化、原创性 |

≥80 分交付，<60 分返工后重评。

---

## 中长视频模式（>60 秒）

> 留存率优化的详细方法（节奏中断点 / 前向钩子 / 章节结构 / 留存曲线）见 `references/retention-scripting-guide.md`。

### Step 1 — 结构计算

根据目标时长分配各段：
- **Hook**：0:00-0:30（短视频缩短到 0:00-0:10）
- **开场**：0:30-2:00
- **首次 CTA**：约 25% 处
- **留存再拉回**：约 60% 处
- **结尾**：最后 60 秒
- **目标字数** = 时长(分钟) × 250

### Step 2 — 写 Hook（三段式）

| 阶段 | 时间 | 目标 |
|------|------|------|
| 抓眼 | 0-5s | 全片最重要的一句话，不加片头 |
| 承诺 | 5-15s | 看完能获得什么，具体可感知 |
| 悬念 | 15-30s | 不看会损失什么 |

### Step 3 — 内容段落

每段结构：节奏中断 → 正文 → 微总结 → 前向钩子。
**节奏中断**每 60-90 秒一次（短视频每 15-30 秒），类型：【镜头切换】【画面】【音效】【数据冲击】。

### Step 4 — CTA 与结尾

- 首次 CTA（25% 处）：软性、对话式、10-15 秒
- 留存再拉回（60% 处）："接下来是最关键的部分"
- 结尾 CTA：硬性号召 + 下期预告，**不说"感谢观看"**

### Step 5 — 留存风险标注

扫描全稿，在危险区标 ⚠️ 警告（至少 3 处）+ 应对方案。

## 输出格式

产物写入 `outputs/`。包含：
- 脚本元数据（主题/时长/平台/字数）
- 完整分段脚本（含时间码、口播、字幕、画面提示）
- 节奏中断日志（时间戳/类型/说明）
- 留存风险地图（中长视频）/ 质量评分（短视频）
- 剪辑备注

## 质量检查

- [ ] 字数与时长匹配（250 字/分钟，±10%）：**用脚本判定，不靠估算**。把全部口播文案（去掉时间码、画面提示等非口播行）喂给
  `python3 skills/shared/scripts/wordcount.py check --target <时长分钟×250> --tolerance 0.1`（stdin 传入），退出码 0 = 达标；非 0 时脚本给出「还需增/删 X 字」，据结果增删口播后重跑，直到通过。
- [ ] Hook 完整（短视频 3 变体评分；中长视频三段式）
- [ ] 节奏中断频率达标
- [ ] CTA 位置正确
- [ ] 全稿口语化，短句，不像书面文
- [ ] 结尾有能量，不含收尾废话

## Profile 感知

- **有 Profile**：读取 platform 锁定平台、audience 调整用语、tone 匹配风格、cta_style 使用惯用话术
- **无 Profile**：默认按时长推断平台，对话感调性
