开场钩子(前 3 秒)
短平台上,完播率的分水岭在前 3 秒:第 1 秒听不懂、不相关、没冲突,观众就走了。 但"开头要抓人"这类形容词无法评审、无法回归、无法沉淀。本套件把钩子做成可校验的产物:
钩子卡 = { type, promise, payoffShotId, firstShotTemplate{visual,line,lineSec}, sfx{kind,atSec,gainDb}, rationale }
写进 shotlist.json 顶层 hook,由管线做确定性判据(packages/video-studio/src/opening-hook.ts):
类型在库内、承诺有兑现镜、首镜够长、承诺在首镜说出口、钩子音落在 0–0.6s。
适用场景
- 短视频/信息流开场 3 秒的设计与评审(8 类钩子选型 + 首镜三线同拍)
- 已有成片但完播掉头严重,需要判定"是不是钩子的问题"
- 同一支片子派生多平台版本时的开场窗口适配
触发条件
- 管线进入片头设计(
opening.design),或监制/连贯审查官对开场提出打回意见 - 开场被判定为口号型、慢热型、标题党或音效抢戏(见失败模式表)
- 平台窗口或首镜时长与钩子冲突时,必须先改钩子再进渲染,不得带病出片
决策原则(含阈值与失败关闭)
- 一镜一类型:
type取 8 类之一且唯一;叠两个类型等于没有钩子(观众只记得住一个)——命中即回退重选。 - 首句 ≤18 字、≤3.5 字/秒:超过阈值即念不完;首句说完之前不许换镜(画面与配音同拍)。
- 首镜 ≥2.5s(短平台):低于阈值钩子会被切在两镜之间 → 硬失败,先改镜头时长再谈钩子。
- 钩子音落在 0–0.6s:越窗直接抛错(
sfx-synth.ts#planHookSfx);与剪辑点音效冲突时钩子音优先,被挤掉的音效记进证据(不静默丢)。 - 承诺必须可兑现:
promise与payoffShotId缺一不可;兑现镜不存在属硬失败,"与承诺字面不重叠"只作软提示(疑问型靠回应兑现)。 - 反标题党一票否决:数字必须可验证、承诺必须讲完;"效率提升 100 倍"这类不可验证数字直接打回,不协商。
- 失败关闭:类型不在库内 / 无兑现镜 / 首镜过短 / 音效越窗,任一命中即视为未完成——不产出钩子卡,也不许用近似类型或后期字幕补救。
打法库(场景 → 动作序列 → 判据)
- 主线(有可视素材):选出可指认的画面事实 → 定钩子类型 → 写首镜三线(画面/台词/声音)→ 绑兑现镜 → 出钩子卡。判据:类型在库内、首句合规、兑现镜存在。
- 分支 1(只有口播、无强视觉):以
question/benefit/number为主,首镜用人物半身 + 一个具体数字或问题;禁用scene-shock(没有强现场硬凑会假)。判据:不听画面也能听懂首句。 - 分支 2(有结果素材:数据/成品/现场):优先
result-first,先给结果再回述过程。判据:结果画面与正片主线相关(不相关的"漂亮空镜"判失败)。 - 分支 3(产品/带货):以
benefit或counterintuitive开场,卖点只留 1 个进首镜,其余留给正片。判据:承诺可被正片兑现、无绝对化用语(合规预检通过)。
SOP(每步带触发/回执/失败路径)
- 触发:片头设计任务到达 → 动作:盘点可用素材(人物/场所/结果/数据)→ 回执:素材清单 + 候选钩子类型 → 失败:无可用素材 → 退回补拍或改走分支 1,不得硬编钩子。
- 触发:类型确定 → 动作:写首镜三线并按阈值自检(≤18 字、≥2.5s、0–0.6s)→ 回执:首镜模板 + 自检结果 → 失败:任一阈值不过 → 改稿重写,不带病进下一镜。
- 触发:首镜定稿 → 动作:指定兑现镜并与承诺逐字/语义对照 → 回执:承诺—兑现映射(
promise↔payoffShotId)→ 失败:找不到兑现镜 → 换钩子(禁止改成正片做不到的承诺)。 - 触发:兑现闭环 → 动作:出钩子卡 +
rationale(为什么这个类型匹配这批素材)→ 回执:shotlist.json.hook+ 评审结论 → 失败:rationale 写不清 → 视为选型未完成,回到第 1 步。 - 触发:钩子卡入片 → 动作:钩子音落地并检查是否盖住首句 → 回执:音效落点/增益 + 是否挤占剪辑点音效的证据 → 失败:盖住首句 → 降增益或移后,重出该镜。
关键指标(含基准与护栏)
| 指标 | 基准/参考值 | 阈值/护栏 | 来源 |
|---|---|---|---|
| 首句字数 | ≤18 字 | 超过即重写 | 本套件决策原则 2;opening-hook.ts |
| 首句语速 | ≤3.5 字/秒 | 超过即念不完(配音实测) | 本套件决策原则 2;配音时长实测 |
| 首镜时长 | ≥2.5s(短平台) | 低于即硬失败 | 本套件决策原则 3;真机打回记录 |
| 钩子音窗口 | 0–0.6s(默认 0.08s / −11dB) | 越窗抛错 | sfx-synth.ts#planHookSfx |
| 兑现镜 | 1 个且与承诺语义一致 | 缺失=硬失败 | 本套件决策原则 5;钩子审计 |
| 类型唯一性 | 1 个类型 | 叠加视为无钩子 | 本套件决策原则 1 |
| 钩子相关打回 | ≤1 次/片 | 超限复盘选型 | 监制/连贯审查官回执 |
失败模式(症状 → 检测器 → 处置)
| 症状 | 检测器 | 处置 |
|---|---|---|
| 口号型开场("家人们,今天这个太炸了") | 钩子卡无 promise / 类型不在库内 | 换类型(多为 question/benefit)并重写首句 |
| 慢热型(前 3 秒空镜,人物第 5 秒才出场) | 首镜时长与人物入画时间检查 | 把人物与场所提到首帧,重出首镜 |
| 标题党(承诺三个方法只讲一个) | 承诺—兑现映射核对 | 换钩子或补兑现;禁止改成正片做不到的承诺 |
| 数字编造("效率提升 100 倍") | 数字可验证性检查 | 换成有出处的真实数字,否则删掉 |
| 音效抢戏(开场音盖住首句) | 增益与首句窗口比对 | 降增益或移后,重出该镜 |
| 首镜被切在两镜之间 | 首镜时长 <2.5s 检查 | 延到 ≥2.5s 或把钩子并入下一镜重写 |
8 类钩子类型库(选一个,不叠类型;判据见 opening-hook.ts)
| 类型 | 结构 | 适配素材 | 判据(不合格长什么样) |
|---|---|---|---|
question 疑问 | 把观众心里的话先说出口 | 有痛点、有共识话题 | "今天给大家分享…"这种没有问题的疑问 |
conflict 冲突 | 当场呈现一个对立/矛盾 | 有对比素材(前后、正反) | 只描述现状、没有对立面 |
counterintuitive 反常识 | 先否定一个共识,再给依据 | 有反直觉结论与证据 | 否定了却不给依据(等于标题党) |
benefit 利益点 | 先说观众能拿走什么 | 工具/方法类内容 | 承诺"改变命运"这类兑现不了的 |
result-first 结果前置 | 先给结果画面,再回述过程 | 有可视结果(数据/成品/现场) | 结果画面与正片无关 |
suspense 悬念 | 给出未完成的信息缺口 | 有过程性悬念 | 悬念到片尾也没解答 |
number 数字 | 一个可验证的数字立信 | 有真实数据 | 编数字、用"100 倍"这类无法验证的 |
scene-shock 画面冲击 | 先给最有辨识度的画面事实 | 有强视觉现场 | 只有空镜好看、与人无关 |
纪律:一镜一类型。叠两个钩子等于没有钩子(观众只记得住一个)。
前 3 秒首镜模板(三线同拍)
0–3 秒必须同时完成三件事,任何一条缺席都会掉完播:
| 线 | 内容 | 口径 |
|---|---|---|
| 画面线 | 一个人 + 一个可指认的真实场所 + 一个动作 | 不用空镜开场;人物第 1 秒入画;环境按场景圣经给实指(见 docs/environment-realism.md) |
| 台词线 | 首句 = 钩子的原话(≤18 字,≤3.5 字/秒) | 疑问型就以问句开场;利益型先给"你能拿走什么" |
| 声音线 | 钩子音效 impact(-11dB 量级)落在 0.08s 附近 | 与画面同拍;不盖首句;不是"音效秀" |
首镜时长:短平台 ≥2.5s(否则钩子会被切在两镜之间);首句说完之前不许换镜。
承诺兑现(反标题党)
钩子卡里的 promise 必须在正片被回应:
question/suspense:正片有一镜用台词正面回应("别再买工具,你缺的是一支班组");- 其余类型:兑现镜要真的出现承诺里的事物(数字、结果画面、对比)。
兑现不了就换钩子,不许改成正片做不到的承诺。真机口径:钩子审计里"兑现镜不存在"是硬失败, "兑现镜与承诺字面不重叠"只作软提示(疑问型钩子靠回应兑现,不靠字面重复)。
钩子音效(0–0.6s 窗口)
| 平台 | 默认音色 | 起点 | 增益 | 说明 |
|---|---|---|---|---|
| 抖音 / 快手 / 视频号 / 小红书 | impact | 0.08s | −11 dB | 一记低频冲击,把注意力"钉"在第一帧 |
| B 站 / YouTube / 线下投屏 | whoosh | 0.12s | −13 dB | 长视频不需要抢拍,气流声更自然 |
规则(sfx-synth.ts#planHookSfx):越出 0–0.6s 窗口直接抛错;与剪辑点音效冲突时钩子音优先,
被挤掉的剪辑点音效记进证据(不静默丢)。音效全部由 ffmpeg 合成,无第三方采样。
交付前自检清单
- 类型是什么?为什么这个类型匹配这批素材?(写进
rationale) promise一句话说得清吗?正片哪一镜兑现、怎么兑现?- 首句多少字、多少秒念完?与首镜画面同拍吗?
- 钩子音落点(秒)与增益?会不会盖住首句?
- 首镜时长够吗?钩子会不会被切在两镜之间?
- 把钩子拿掉,前 3 秒还剩什么?(如果什么都不剩,说明钩子就是唯一的价值点,别删)
常见反例(真机/评审打回)
- 口号型:"家人们,今天这个太炸了"——无信息量,不算钩子;
- 慢热型:前 3 秒空镜 + 环境交待,人物第 5 秒才出场;
- 标题党:承诺"三个方法",正片只讲一个;
- 数字编造:用"效率提升 100 倍"这类无法验证的数字;
- 音效抢戏:开场音盖住首句台词(监制会以"听不清台词"打回)。
输出契约
- 输出:
shotlist.json顶层hook钩子卡(type/promise/payoffShotId/firstShotTemplate/sfx/rationale)。 - 随交付附:兑现镜 ID、首镜三线与阈值自检结果、钩子音落点与增益。
- 判据由
opening-hook.ts确定性执行;工具未跑或判据数据缺失时按失败关闭处理,不得宣称钩子合格(无回执=未核实)。
边界
- 不改叙事与脚本内容(属剧本师/创意策划);本技能只负责"前 3 秒怎么开口"。
- 不替监制做人审结论:钩子卡是评审材料,不是放行结果。
- 不做字幕与封面(属字幕工位/封面设计);平台窗口差异只影响开场呈现,不改画面事实。