SHILIU · 创作资源
数字人口播视频制作 · 创作技能
用固定数字人形象做口播视频的完整流水线:按内容推荐剪辑风格、写稿切段、报价后分段生成、下载校验、回听纠错、对齐剪辑、加包装组件、出封面首帧。含Remotion模板与脚本,需自备Renoise等外部服务。
这个技能解决什么问题
用固定数字人形象做口播视频的完整流水线:按内容推荐剪辑风格、写稿切段、报价后分段生成、下载校验、回听纠错、对齐剪辑、加包装组件、出封面首帧。含Remotion模板与脚本,需自备Renoise等外部服务。
适用任务
把一段口播内容做成带包装的数字人视频:选风格、写稿、分段生成、校验拼接、剪辑加花字/景深字/音效、出封面并接成首帧。
需要的输入
口播主题与目标受众;可用的事实素材与展示素材(用户自己的作品截图等);选定风格、比例、时长、花字强度、主播类型;Renoise账号与余额;本机Node/Python/ffmpeg/whisper环境;用户对生成费用的明确同意。
交付内容
brief.json、script.json、tasks.json与报价单;分段视频与校验记录;成片_完整版.mp4与交付.mp4(带封面首帧);cover_16x9/9x16/3x4.jpg与缩略图;抽帧检查记录与音画偏移测量结果。
任务示例
用白背心数字人做一条90秒竖屏口播,讲我上周用某笔记工具整理会议纪要的三个步骤,花字标准档,先给我报价再生成。
输出示例
示意结构:①风格诊断与2个推荐(附预览图)②brief.json字段③script.json分段(含shot标记)④报价:段数·秒数·预估credits·余额,等待确认⑤后续步骤清单。以上为结构示意,不含真实生成结果或费用数字。
来源与使用
作者 andyhuo520;许可 MIT。已核对来源与包结构,未据此宣称完成运行实测。
机器可读详情 · 读取 SKILL.md · 下载完整技能包
技能说明全文
---
name: digital-human-koubo
description: 用固定的数字人形象(白背心数字人 / 用户本人数字人 / 猫狗角色)做口播视频,先按内容推荐剪辑风格让用户选(小林式解说 / 网红花字口播 / 发布解读 / 保姆级教程 / 多主播多语言),自动套上从 MrBeast、MKBHD、影视飓风、Johnny Harris、Vox、半佛、差评等头部博主拆出来的 48 个包装组件(开场钩子、数字钉子、文字在人身后的景深字、证据截图、地图路线、弹幕、投票、复盘板…),再写稿 → 按 15 秒切段 → Renoise Grok Video 1.5 分段生成(先报价、用户确认才生成)→ 分片下载校验 → 逐段回听 → 对齐 → Remotion 剪辑出片 → 默认做封面(16:9 / 9:16 / 3:4)并接成成片首帧。触发:用我的数字人讲这段、数字人口播、让白背心数字人说、用数字人 Skill、数字人带货 / 解读 / 教程 / 种草视频、做成小林说那样、加花字、加包装 / 加地图 / 加弹幕 / 开场加预告 / 文字放在人身后、做成 MrBeast 那种节奏、有哪些包装手法。不用于:换一个全新形象(先按 references/new-avatar.md 做形象)、冒充真人。
---
# 数字人口播
形象、声音、提示词、切段规则固定在 `persona.json`;剪辑风格在 `references/style-menu.md`。每次照这里做,出来的就是同一个人、同一种风格。
## 红线
- 生成花用户的 Renoise credits:create_tasks 之前先报「段数 · 秒数 · 预估 credits · 余额」,等用户在对话里明确同意。先拍第 1 段给用户确认音色,再批量。重拍也要先报价。
- 成片标「内容由 AI 数字人演绎」;场景、动物片段、B-roll 角上标「AI 生成」。用户明确要去掉画面标注时照做,但要提醒:公开发布时在平台发布页勾选「AI 生成」声明。
- 用户本人的形象(persona.json → other_hosts.me)只用在用户自己的片子里。
- 「小林式」只学结构和剪辑手法:不用真实创作者的脸、声音、布景和原句。
- 点名评价第三方产品的说法,要有出处或标「网友分析 / 个人体验」。展示素材只用用户自己的作品;带歌词字幕的片子不用。
## 流程
### 准备:先检查,有就跳过,缺才引导安装(每次新对话第一次用时做)
**原则:已经装好的一句话带过,不让用户重装;缺什么才给装法,装法给多种,先放用户当前用的那种。** 详细装法在 references/install.md。
1. **Renoise MCP**:直接调 `get_account`。
- 成功 → 只说一句「Renoise 已连接,余额 X 积分」,接着干活。
- 工具不存在 / 未连接 → 停下引导安装。用户还没有 Renoise 账号时,注册链接一律给 https://renoise.ai/mcp?utm_medium=xcom&utm_source=official(原样给出,保留 utm 追踪参数,不要改写成 renoise.ai 首页)。然后把用户当前客户端的装法放第一个并标「推荐」,下面列出其他方式(Claude 桌面端/网页连接器、Claude Code 插件、Codex `codex mcp add`、OpenClaw、Cursor 等通用远程 MCP 配置、renoise.ai/plugin 官网),让用户自己挑。装完让用户重开对话或重连,再调一次确认。
- 报工具被关闭 → 不是没装,让用户去连接器设置里打开;报授权过期 → 重新登录授权,不用重装。
2. **本机环境**(要剪辑时才需要):`bash scripts/doctor.sh`。有的打 ✓ 不提;缺的它会按 macOS / Windows / Linux 列出多种装法。系统软件让用户自己装,Python 包可以在用户同意后帮装。
3. **数字人形象**:persona.json 的 reference_material 能用就直接用;当前账号用不了(换了账号、素材过期、别人的包)→ 按 references/new-avatar.md 用用户自己的照片重做。
### 0. 看内容 → 推荐风格 → 让用户选
按 `references/style-menu.md`:
1. 一行诊断(内容类型、有没有可展示的素材、适合的平台和时长)。
2. 推荐 2 个风格并说理由,把 `assets/styles/` 里对应的预览图发给用户。
3. 一次问完:风格 · 比例和时长 · 花字强度(克制 / 标准 / 热闹)· 主播(白背心 / 用户本人 / 两人接力 / 动物)。每题第一个选项是推荐项。Claude Code 用 AskUserQuestion,其他工具列编号。
4. 用户回「你定」就按推荐,并说一句按了什么。结果写进 `brief.json`,后面每一步按它来。
| 风格 | 比例 | 时长 | 剪辑实现 |
|---|---|---|---|
| A 小林式解说 | 16:9 | 3–20 分钟 | `templates/lin-169`(plan.json → scenes.json 驱动:景深字 / 题板+主播小窗 / B-roll / 公式逐项长出 / 算例 / 图表,见 references/lin-style.md) |
| B 网红花字口播 | 9:16 | 30–120 秒 | `templates/huazi-916`(edit.json 驱动,三档花字) |
| C 发布解读 | 16:9 | 30–90 秒 | 参考实现 `templates/reference/launch-169` |
| D 保姆级教程 | 16:9 | 3–8 分钟 | 参考实现 `templates/reference/tutorial-169` |
| E 多主播多语言 | 16:9 | 3–7 分钟 | 参考实现 `templates/reference/multihost-169` |
### 1. 写稿 → script.json
按选定风格的稿子写法(style-menu.md 里每种都有)。每段一句或两句,10 秒左右(约 40–55 字,Grok 中文约 5.4 字/秒),标 `shot`:`full`(全屏出镜)/ `pip`(画中画讲解)/ `vlog`(随意自拍口吻)/ `depth`(要做「文字在人身后」的段:中景、头顶两侧留背景)。英文缩写、网址写成好念的样子;字幕要显示原写法时在那段加 `"sub": {"SKILL 点 M D": "SKILL.md"}`(align.py 按念法对齐、字幕换回写法)。外语段直接写目标语言的台词。
### 2. 切段 + 报价
`python3 scripts/build_tasks.py script.json tasks.json --purpose "teaching a beginner tutorial step by step"`
→ 打印段数、秒数、预估 credits。full 段 720p(17/秒),pip 段 480p(10/秒)。**主播要裁成半身 / 放大显示、或者 pip 段的主播卡并不小时,所有出镜段一律 720p(`--all-720p`)**:480p 原片只有 400×736,裁半身再铺满大卡会放大 2 倍以上,明显发糊(vibe-knowledge 介绍片因此重拍 4 段,多花 680 积分)。拿 `estimate_cost` 核一次,报给用户等确认。用户本人或动物主播用 persona.json → other_hosts 里的提示词模板。
### 3. 生成
tasks.json 每 10 个一批 create_tasks → wait_tasks。要进场景(直播间、门店、街景)时先用 GPT Image 2.5 合成开场画面(人物参考图 + 场景描述,2k 约 23 积分),再把这张图当 Grok 的参考图。
### 4. 下载(Renoise 美国 CDN 很慢,必须这样下)
download_results 拿链接 → 整理成 `urls.txt`(每行 `<taskId>.<ext> <url>`)→ `python3 scripts/rangedl.py`:每个文件 6 段 Range 并发、断点续传、下完 ffmpeg 解码校验。
### 5. 回听 + 抽帧 + 拼接
`python3 scripts/assemble.py script.json ids.json --out 成片_完整版.mp4`(ids.json = {段 id: taskId}):whisper 逐段转写比对文稿、只保留到说完后 0.25 秒、拼接、loudnorm -16。剪辑用 `cut/joined.mov`:拼接前已把每段音频补齐到和画面等长,避免几十段拼下来声音累积落后口型;拼完会打印画面和声音的时长,两者必须一致。改过某段后用 `--rejoin` 只重新拼。
- whisper `--prompt 原文` 会让个别段漏掉前半句,用中性提示「以下是普通话的句子。」。外语段按语言转写;日韩阿拉伯语不要加 `-ml 1`(会把多字节字符截断成乱码)。
- **每段抽 4 帧看一眼**:Grok 横屏口播偶尔自己烧字幕(提示词写了也挡不住),有就重拍那段。
- Grok 有时漏念开头的语气词:没影响意思就按实际口播改字幕,别为这个重拍。
- **念错字(不是漏语气词)要当场修,不能交给用户去听**:
- **查**:`python3 scripts/misread_check.py script.json`,按停顿切句、不带原文逐句转写,列出可疑字。**不能拿带原文提示的转写判断读音**:它会把念错的字纠正回去(「通胀」念成 tōng zhèng,带原文照样判全对)。同音字会误报,可疑处听一下确认。
- **修(0 积分、保口型)**:`python3 scripts/patch_words.py script.json patch.json --ref <2–3 段干净原声> --synth-only` → 填克隆句时间 → 再跑 → `assemble.py --rejoin`。只把错的那一句换成 MiMo 克隆音,长度拉到和原句一样,切在停顿上。换整句比只换两个字自然。
- **别整片换音色**:口型跟的是原声,整片换掉会到处对不上;也别先提 OmniHuman 重做口型(全片约 5,000 积分)。
- 口型实在差太多,再报价重拍那一段。
- 开头第一个字最容易被吞或念歪(例:「一个知识点」→「几个知识地点」),写稿时第一段开头别放关键名词,或者先垫一个短词。
### 6. 对齐 + 剪辑
`python3 scripts/align.py script.json --out <工程>/src/tl.json` 出逐字时间轴,然后按 brief.json 的风格剪:
- **B 花字口播**:`bash scripts/new_edit.sh huazi-916 <工程>` → 写 `src/edit.json`(关键词、表情、卡片、作品展示、号召,字段见 references/huazi.md)→ `python3 scripts/check_edit.py <工程>/src` → 抽帧 → 渲染。
- **A 小林式**:`bash scripts/new_edit.sh lin-169 <工程>`,按 `references/lin-style.md` 做:
1. `lin_subs.py` 出字幕(数字用 disp.txt 显示成阿拉伯数字)。
2. 写 `plan.json`,示例见 `templates/lin-169/plan.example.json`,时间写「@s07:两千」。
3. 跑 `lin_scenes.py --face` 生成 scenes.json,并自动量主播脸的位置给小窗用。
4. B-roll 用 Wan 3.0 生成(先报价,每段约 60 积分),景深字段跑 `cutout_video.py` 抠像。
5. 渲染。每个场景抽开头和中点两帧检查,重点看小窗有没有挡住内容、有没有空板。
- 只做纯图表、不出镜的财经长片,仍可用 finance-explainer 的引擎。
- **C / D / E**:`bash scripts/new_edit.sh reference/<目录> <工程>`,换 tl.json,按段重写 Scene(templates/reference/README.md)。
- **包装(每种风格都做)**:按 `references/packaging-presets.json` 里这个风格的默认包装排——开场 30 秒按 open 顺序、正文保证 stimulus_every_s 秒内有一个新视觉事件、讲到 per_beat 里那类内容就用对应组件、recurring 全片挂着。组件写进 `pack` 数组(字段见 references/packaging.md),手法依据见 references/packaging-playbook.md。用户点名要的手法(「加地图」「开场加预告」「加弹幕」「换成 MrBeast 那种」)在默认基础上加减。用户问「有哪些包装」先发 `assets/packaging/图鉴.jpg`。景深字(文字在人身后)要先跑 `scripts/cutout_video.py` 抠像,见 references/packaging.md。
- 声音:数字人视频轨一定 `muted`,人声单独铺一条;多段 Grok 原声用 `python3 scripts/voicefx/unify.py <输出目录> <片段…>` 统一频谱 + 同一个小房间混响(复用旧段时加 `--ref 旧片段目录`,场景/动物片段加 `--scene`)。BGM 压在人声下约 20 dB。
- **音效**:`python3 scripts/lin_sfx.py <工程>/src/scenes.json --out audio` 按场景自动排音效(earshot 音效库:切画面 whoosh、景深字和结果「碰」、卡片 pop、结论 bell)。音效要高出人声和音乐 8–10 dB,用 `earshot timeline --cues` 复查。
- **BGM**:用 `earshot rank` 从曲库挑。
- **混音和导出**:`python3 scripts/lin_mix.py` 做人声链 + BGM 循环避让人声 + 音效,出 −16 LUFS 的 mix.wav;加 `--speed 1.1` 出 1.1 倍成片(BGM 保持原速)。
- **音画同步**:交付前在开头、中段、结尾各测一处声音偏移,要小于 10 ms。
- 抽帧检查一定看过渡的中间帧和零间隔衔接处(上一条的尾巴会盖住下一条)。
### 7. 封面 + 首帧(默认做,不用问)
平台默认拿视频第一帧当封面,所以每条片子都做封面,并把它接在成片最前面。交付的主文件就是带封面首帧的版本。
1. 写 `cover.json`(字段见 references/cover.md):
- 小字栏目名
- 钩子标题 ≤8 字
- 红色强调句 ≤6 字
- 一句副标题
- ≤3 个标签
- 链接或号召
- 主播帧
- ≤2 张证据卡(官方截图、作品)
2. `python3 scripts/make_cover.py cover.json --candidates` 抽 12 帧拼成候选图。挑一帧笑着、眼睛睁开、没在说话或嘴型好看的,时间写进 `host.t`。
3. `python3 scripts/make_cover.py cover.json` 生成 `cover/cover_16x9.jpg`(横屏),按 ratios 还会出 `cover_9x16.jpg`(竖屏)和 `cover_3x4.jpg`(小红书)。看一眼 `thumb_*.jpg`,540px 宽时标题要读得清,文字不能压到卡片。
4. `python3 scripts/cover_first.py 成片.mp4 cover/cover_<比例>.jpg 交付.mp4`:封面停 0.5 秒后硬切进正片,声音整体后推 0.5 秒。抽 0 秒、0.45 秒、0.55 秒三帧确认。不带封面的版本另存为 `_无封面.mp4`。
## 参考
- references/install.md:Renoise MCP 和本机环境的多种装法(只在缺的时候用)
- references/style-menu.md:五种风格、内容诊断、怎么问用户、brief.json
- references/packaging.md:47 个包装组件的用法和参数(pack 写法、9:16 自动适配)
- references/packaging-playbook.md:头部博主实测结论(节奏、开场公式、字幕、声音、号召、红线),完整报告在 references/research/
- references/packaging-presets.json:五种风格各自的默认包装
- references/huazi.md:花字模板 edit.json 字段、九种卡片、三档强度、写法习惯
- references/lin-style.md:A 小林式的画面语法、13 种场景、流水线、B-roll 提示词、音效档位、踩过的坑
- scripts:
- lin_scenes.py:plan.json 转 scenes.json,自动量脸
- lin_subs.py:字幕
- lin_sfx.py:earshot 音效
- lin_mix.py:混音、变速导出
- misread_check.py:查念错
- patch_words.py:只换念错的句子,保住口型
- persona.json:白背心数字人 + 其他主播(用户本人、橘猫店长、柴犬主播)、提示词模板、动作库、多语言实测
- references/voice.md:换声音(MiMo 克隆 / 音色设计)
- references/new-avatar.md:从一张照片做新形象
- references/edit-styles.md:各剪辑工程的入口文件和声音统一做法
- references/cover.md:封面 cover.json 字段、三种比例的版式、首帧接法
- assets/styles/:五种风格的预览图(给用户选的时候发)
- assets/packaging/:包装组件图鉴(47 格总览 + 每个组件一张)
技能是任务材料,不会自动授予账户权限、付费授权或其他系统权限。请让 Agent 按说明核对依赖,再在授权范围内使用。