口播博主动作拆解
把一位真人口播博主的开头动作,拆成数字人能执行的文字规则。产出物是一个新的 skills/talking-head-<slug>/ 目录。
原则
只提炼动作、节奏和结构。不收录对方的长相、服装、场景细节和逐字台词;台词只记录句子功能(打招呼、痛点提问、承诺……),口头禅最多引用几个字说明句式
仓库只收开头片段。每条样本截开头 25 秒放进 samples/talking-head-<slug>/,文件名「序号_作品ID」;完整原片、音频、抽帧图、完整转写留在仓库外的工作目录(.gitignore 只放行 samples/ 下的 mp4)
不要把原视频当参考视频喂给生成模型,否则对方的脸、衣服、背景可能串进成片
只写可复现的具体动作:哪只手、什么形状、在什么高度、持续多久、卡在哪个词上。不写「自然」「丰富」「有感染力」这类模型无法执行的词
区分「观察」和「建议」:观察写进 references/samples.md,建议写进 SKILL.md 的「数字人生成建议」
流程
- 选片
选 4 条点赞最高的本人棚拍口播视频;跳过播客、外景探访、混剪、合拍
记录每条的链接、发布日期、采集时的点赞数、主题
- 准备素材(本地)
用平台允许的方式把视频保存到本地目录(例如 yt-dlp),然后:
scripts/prepare_clips.sh <原片目录> <工作目录> 25
得到开头 25 秒的片段、16k 音频和每秒 2 帧的总览拼图。
- 转写
用任意 ASR 转写 audio/*.wav,保留分句时间戳。例如本地 Whisper:
mlx_whisper audio/xxx.wav --model mlx-community/whisper-large-v3-turbo --language zh --output-format json
- 看整体结构
读每条的总览拼图,按秒标出画面状态:真人全屏 / 画中画(人在哪个位置、什么形状)/ 无人素材 / 花字。算出开头 20 秒里真人全屏的占比,写下开头结构(第一句是什么功能、什么时候切走、什么时候回来)。
- 看手势
只对真人全屏段做每秒 4 帧的细看图:
scripts/contact_sheet.sh clips/xxx.mp4 sheets/xxx_10.5s.jpg 10.5 6 4 6x4 400
对照转写稿,逐句记录:手势形状、单手还是双手、高度范围、持续时长、卡在哪个词上、表情和头部动作。
- 归纳
手势词汇表:反复出现的只有几个?给每个编号(作者首字母 + 序号)
范围:手的活动框(例如胸口到眉毛)、是否超出肩宽、肘部是否贴身
节拍:手势在什么时候切换,多久一次,是否对称
表情:第一帧表情、重音处的固定表情(眯眼、挑眉)
风险分档:低(手不入画、单手低位)/ 中(双手对称、手指不需精确)/ 高(双食指、捏合、五指张开、弯指)
开头结构类型:「先人后证据」还是「先证据后人」
- 写成 Skill
复制 templates/creator-skill-template.md 到 skills/talking-head-<slug>/SKILL.md 填写;样本表和观察写进 references/samples.md。然后:
把 clips/ 里的开头片段按「序号_作品ID.mp4」复制到 samples/talking-head-<slug>/
在 data/samples.csv 追加样本行(含 clip 列)
在仓库 README.md 的博主表里加一行
自查清单
手势词汇表里每一项都有:形状、触发台词类型、位置、时长
有「禁止动作」
开头结构模板里的台词只写功能,没有抄原句
没有描述对方的长相、服装和具体场景
仓库里只有 samples/ 下的开头片段,没有完整原片、音频、截图和完整转写
「生成描述示例」是原创的,能直接改成自己的