koubo · git:20261006.35f859b · 2026-10-06 · sha256 4a2b26199384402e
koubo git:20261006.35f859bC
Immutable. This exact content never changes and is served at /api/v1/blob/4a2b26199384402e.
# 口播短视频制作(koubo)
把一条口播素材做成一条包装好的剪映草稿。五步按顺序做,每一步有产出、有检查,上一步没过不做下一步。
```
1 对齐声画 → 2 转写 → 3 写脚本 → 4 找证据和素材 → 5 包装出草稿 → 看预览自查
```
命令是 `koubo`(Windows 上是本文件夹里的 `koubo.cmd`)。所有文件放在视频旁边的 `<视频名>.koubo` 文件夹(下面叫「工作文件夹」)。
出的是剪映草稿,不是成片:人在剪映里看过、导出。不要说「成片已完成」。
长什么样由**风格文件**定(字体、配色、字号、什么角色用什么包装、音效、美颜)。你只负责判断内容:留哪些句子、每句是什么角色、哪里分章节、哪些词是重点。不要自己发明包装。
---
## 第 1 步 对齐声画
口播常常另外用领夹麦或录音笔录人声。有单独的人声文件就必须用它。
```
koubo align "<视频>" --audio "<人声文件>"
```
- 输出 `AUDIO_MATCH_SCORE`(对得上的把握)和 `AUDIO_OFFSET`(差几秒)。
- 报 `audio-does-not-match-video`:这条录音不是这条视频的。停下来问用户,不要换一条硬对。
- 文件夹里有几条视频、几条录音,按文件名和时长配对;配不上就问。
- 没有单独的人声文件:跳过这步。但如果转写后发现现场有两个人的声音混在一起(见第 2 步),回来问用户要录音。
**过关**:有人声文件时,对齐成功。
## 第 2 步 转写
```
koubo transcribe "<视频>" [--audio "<人声文件>"]
```
转写用这台机器上的识别模型,四分钟的口播大约一分钟,长素材按比例等,不要中途重跑。
工作文件夹里得到 `transcript.txt`(给你读)和 `transcript.json`(给工具用)。每行一句:
```
[12] 00:19.75–00:20.61 近 -11dB 衰老评估
[14] 00:22.07–00:23.57 远 -24dB 持续寻访监呃
```
- `[12]` 句子编号,后面都用它。
- `近` 是出镜的人自己说的;`远` 是镜头外的人说的(提词的人先念一句、出镜的人再复述一句,是最常见的录法;也可能是提问或现场其他人)。工具先用声纹把声音分开,再看哪个声音响起时画面里的人在动。输出里 `VOICES=` 一行是结果;出现「分不出哪个是出镜的人」的 WARN 时,先问用户再往下做。
- `⏸2.1s` 这句前面停了多久。
**过关**:完整读完 `transcript.txt`,知道这条素材讲了什么、哪些是提词、哪些是重说。
## 第 3 步 写脚本
脚本就是 `plan.json`:把留下的句子排成有结构的一条片子。在工作文件夹里写。
### 3.1 选句
1. 只留 `近`。`远` 的句子播出来时画面里的人是闭着嘴的,**留了会直接报错 `offscreen-voice-kept`**。提词式的素材里,同一句话会先有一遍 `远`(提词)再有一遍或几遍 `近`(复述):要的是 `近` 里最后一遍说完整的那一句。
2. 同一句说了几遍,只留最后说顺的那一遍。同一个意思全片只出现一次。
3. 说顺的那遍里夹了「呃」或口吃多出来的字,用 `cut` 剪掉那几个字。说错、说半截的整句不要。
4. 「再来一遍」「继续」这类现场对话、开拍前的闲聊不要。
5. 不改写、不合并、不编造。只能从已有编号里选。
6. **默认出完整版**:把出镜的人讲的内容按原顺序完整留下,每句话只留说得最好的一遍,不压缩成短视频,也不为了凑时长删内容。用户明确要短版(比如「剪一条 60 秒的」)才精选。
### 3.2 排结构
把留下的句子分成几个章节(`sections`),每章 3–10 句。顺序就是成片顺序,可以和素材顺序不同。
- **第一章是钩子**,不写标题。第一句必须自己能听懂、能留住人:一个问题、一个反常识的结论、一个痛点。素材开头如果是接着上文说的,从后面挑一句挪上来。
- **中间每章讲一件事**,写 2–6 个字的 `title`。默认不显示在画面上(章节卡和角标都关着),只用来分段和拆分集,仍然要像栏目名:名词短语,不带标点,不要写成一句话。
- **最后一章是行动**:提问、引导评论,不写标题。
- 全片 3–5 章。把所有句子按顺序默读一遍,读不通就改。
### 3.3 标角色
给关键句标 `role`。版式是按角色自动出的,你不用管样式,但角色标得准不准直接决定片子好不好看。不标的句子是普通过渡。
| 角色 | 是什么 | 会变成什么 | 全片大约 |
|---|---|---|---|
| `钩子` | 开头第一句 | 人名条就落在它上面 | 1 句,必须有 |
| `观点` | 引出一个新话题或主张的短句 | 聚焦:周围柔和压暗,轻微推近 | 每 20 秒 1 句 |
| `列举` | 并列几项里的一项,一项一句,**连着标** | 默认当普通句子(分屏清单关着) | 有并列内容就用 |
| `金句` | 一句短的结论或反问,16 个字以内 | **引言版式**:整屏,像杂志上的引言,关键词变金色 | 每 30–40 秒 1 句 |
| `举例` `解释` | 例子、展开 | 主要用来决定哪里配空镜 | 按需 |
| `行动` | 让观众去做什么 | 普通画面(片尾卡关着) | 1 句 |
**分屏清单怎么才能出来**:至少连着两句都是 `列举`,每句是清单里的一项,每项不超过 10 个字(「衰老评估」「个性化干预」)。清单的小标题用这一章的 `title`。只有一项、或者某一项是一长句,就不会出清单。讲「三个原因」「四个环节」「几种方法」这类内容时,一定这样标。
**引言版式**:选全片最值得截图的那一句。超过 16 个字的会自动降级成聚焦。配一个 `big` 关键词(这句里的词),它会变成金色。
### 3.4 标重点词
这是包装里最要紧的一项,参考成片平均每 7 秒一个。
- `big`:**关键词**,`[{"id": 105, "text": "闭环"}]`。它会从字幕里拿出来,在说到的那一刻以强调色大字弹在字幕下方。
- 每 6–8 秒一个,一条 1 分钟的片子 8–10 个。
- 必须是这句话里**原样出现**的词,2–5 个字,最好是这句的**最后一个词**:结论、数字、名词(「不一样的」「6 项」「卵巢」「准确」「亲民」)。
- 一句只能有一个。
- `highlight`:字幕里原地变色的词,不放大。术语和次一级的重点,全片 8–15 个。同一个词不要既在 `big` 又在 `highlight`。
### 3.5 计划文件
```json
{
"name": "草稿名",
"transcript": "transcript.json",
"style": "默认",
"title": {"name": "姓名", "lines": ["头衔一", "头衔二"]},
"sections": [
{"keep": [{"id": 107, "role": "钩子"}, {"id": 101, "role": "观点"}, 103, {"id": 105, "role": "金句"}]},
{"title": "四大环节", "keep": [{"id": 9, "role": "观点"}, {"id": 12, "role": "列举"}, {"id": 13, "role": "列举"}, {"id": 25, "role": "解释"}]},
{"title": "搜索思路", "keep": [{"id": 32, "role": "观点"}, {"id": 35, "cut": ["关"]}, {"id": 45, "role": "举例"}]},
{"keep": [{"id": 110, "role": "行动"}, 111, 114]}
],
"highlight": ["长寿管理", "闭环"],
"big": [{"id": 105, "text": "闭环"}]
}
```
`keep` 里每一项是一个编号,或 `{"id": 编号, ...}`,可带:
| 字段 | 说明 |
|---|---|
| `role` | 角色,见上表 |
| `cut` | 从这句里剪掉的字:`["呃"]`、`["关"]`(把「关关键词」剪成「关键词」)。按第一次出现的位置剪 |
| `look` | 指定包装样式,盖过风格文件。一般不用写 |
| `zoom` | 指定画面放大倍数。一般不用写 |
`title`(人名条)只在用户给了姓名和头衔时写,不要编。
**转写里的错别字**(医学名词最常见)写在计划的 `fix` 里,工具会在字幕、关键词、清单、引言上显示改正后的字:
```
"fix": {"促卵细胞激素": "促卵泡激素", "花纯": "孕酮", "公能医学": "功能医学"}
```
左边照抄转写里的错字,右边是对的。**不要去改 `transcript.json` / `transcript.txt`,也不要写脚本改它们**:那里的字和时间是一一对应的,改了会让剪辑点错位。`big`、`highlight`、`cut` 里仍然照转写原样写(错字也照抄),显示时会自动换成对的。
**过关**:先不加素材跑一次 `koubo draft`(见第 5 步),`WARNINGS=0`。
## 第 4 步 找证据和素材
### 4.1 证据
口播里的事实说法要有出处,尤其是医疗、健康、数据、功效。逐句看留下的句子:
- 含数字、「研究表明」「临床」「最有效」这类断言的,用搜索工具查权威来源(指南、教科书、官方机构、论文)。
- 搜索工具有两档:普通查询走境内搜索引擎,一秒出结果,适合查常识和找网页;查询词以「深搜 」开头(如 `深搜 老年综合评估 中国专家共识 出处`)走 Grok 联网检索,要 40–70 秒,会读页面、给结论和来源。**查出处用深搜**,一条断言搜一次,不要一句话反复搜。
深搜要一两分钟,而一次搜索最多等 40 秒:没查完时会先给普通搜索的结果,并提示「深搜还在查」。这时**用一模一样的查询再搜一次**就能取到深搜的答案(最多再搜两次);一次只问一个说法,查得更快。
- 在计划里加 `evidence`:
```json
"evidence": [
{"id": 54, "claim": "老年综合评估是老年医学的标准评估方法", "source": "来源名称 + 网址", "note": "可选"}
]
```
- 查不到就写 `"source": "未查到"`,并在交付时告诉用户这句没有出处。不要编来源。
- 查到和口播说的**相反**或明显夸大:把这句从脚本里拿掉,或告诉用户由他决定。不要替说话人改口。
- 工具会生成 `证据清单.md`,并对没给出处的断言报 `WARN`。
### 4.2 空镜素材
空镜是盖在人物画面上的补充画面,让观众**看到正在说的那个东西**。参考成片每 15–20 秒一段,一条 1 分钟的片子 3–4 段。少而准,不凑数。
**放在哪**
- 只给**正在讲一个看得见的东西**的句子配:体检、抽血、化验、量血压、医生问诊、老人、吃饭、睡觉、走路。
- 空镜从这句话**开始时出现、说完时结束**,画面和话是一对。一句太短(不到 2 秒)就用 `"to"` 让它盖住连着的一组句子,这一组必须都在讲同一个东西。
- `钩子`、`金句`、`行动` 不配,工具会拦。讲道理、下结论、提问、让观众评论的句子不配。
- 两段空镜之间至少隔 5 秒;开头 5 秒不放。
**怎么找**,每一段都走完这四步:
```
koubo stock "elderly blood pressure" ① 列候选
koubo stock "elderly blood pressure" --pick 49815 ③ 下载挑中的
```
1. **列候选。** 英文,2–4 个词,写画面里有什么:「给父母做慢性病风险评估」搜 `elderly doctor checkup`,不搜 `risk assessment`。只会列出竖屏或 4K 的(别的裁成竖屏会糊)。输出 `NO_USABLE_CANDIDATE` 就换词。
2. **看候选图。** 打开 `CANDIDATE_SHEET` 那张拼图,对照标签。排除:动画、图标、示意图;人物明显对不上的;血腥、手术、针头特写、患者痛苦;艺术片、抽象画面;食物或器官的大特写;带水印的。
3. **下载。** `--pick <编号>`。
4. **看预览图。** 下载后输出的 `PREVIEW` 是这条素材裁成竖屏之后的样子(三个时刻)。主体被裁掉、看不出是什么、画面脏乱的,**不用**,回到第 1 步换一条。
一句话最多试两个搜索词,都没有合适的,这句就不配。**对不上的空镜比没有空镜糟得多。**
在计划里加:
```json
"broll": [
{"id": 45, "file": "<FETCHED 那一行里的路径>"},
{"id": 82, "to": 86, "file": "…"}
]
```
`to` 是这段空镜盖到哪一句为止(含)。时长由句子决定,不用写秒数。
报 `STOCK_KEY_MISSING`:没设图库密钥,这次不配,交付时告诉用户。
**过关**:断言都有出处或标了未查到;空镜文件都真实存在。
## 第 5 步 包装出草稿
```
koubo draft "<plan.json>"
```
工具按风格文件自动做:
这套包装叫「墨金」:暖象牙白的字、哑金的点缀、墨绿黑的底板;宋体管观点(人名、章节、关键词、金句),黑体管信息(字幕、头衔);用细线不用色块;出现是淡入并上移一点,消失是淡出。全部由工具渲染,剪映只负责摆放,所以画出来什么样成片就是什么样。
| 内容 | 规则 |
|---|---|
| 人名条 | 开头 5 秒:金色竖线、宋体名字、黑体头衔 |
| 章节 | 默认不出章节卡、不放角标(风格文件里可以开) |
| 进度线 | 顶部一条极细的金线随播放前进,每章一个刻度 |
| 关键词 | `big` 的词从字幕里拿出来,说到时以宋体大字出现在字幕下方,下面一道短金线 |
| 分屏清单 | 默认关 |
| 引言版式 | `金句`:画面虚化压暗,整屏引言 |
| 聚焦 | `观点`:周围柔和压暗,轻微推近 |
| 卡片 | 画面缩成圆角卡片,浮在虚化的同一画面上。和聚焦一起用于节奏:画面素超过 6 秒就给一个短句换一下 |
| 片尾 | 默认关:最后一句就是正常画面,所以最后一句必须是一句说完了的结论或号召 |
| 字幕 | 工具直接画成图片叠在画面上:得意黑(有棱角的斜体黑),象牙白字、细墨边、软阴影,按词断行,每行不超过 10 字,`highlight` 的词变浅金色。人名条始终排在字幕上方,不会压在一起 |
| 镜头稳定 | 每个片段剪进草稿前先去抖:对着背景把画面锁住,放大 5% 裁掉边。第一次生成每分钟成片要多等三四分钟,输出里 `STABILISED=` 是做成的片段数 |
| 镜头 | 素镜头极慢地往里推一点;全片四周有一层很淡的暗角增加层次 |
| 音效 | 关键词、章节卡、金句各一个,音量很低 |
| 配乐 | 风格文件里固定了就自动铺,音量压在人声下面,结尾淡出 |
| 美颜美型 | 按风格文件的滑杆数值,每个片段都开 |
| 空镜 | 静音、铺满画面,从句子开始到句子结束;整屏版式期间不放 |
### 出草稿后自己先看一遍
```
koubo preview "<plan.json>"
```
输出几张 `PREVIEW_SHEET` 拼图(每秒 4 帧,按剪映的图层规则合成)。**用看图工具把每一张都打开看**,逐项检查:
- 开头 5 秒人名条有没有、有没有挡住脸;
- 有没有哪一段画面里的人闭着嘴、却有字幕在走(说明留了镜头外的声音);
- 最后一句是不是一句说完了的话;
- 引言版式那一句选得值不值、断行顺不顺;
- 关键词有没有压到别的字;空镜和画面里说的话对不对得上;
- 有没有连续十几秒都是同一个素画面。
有问题就改 `plan.json` 重跑 `draft` 再看。预览里剪映自己渲染的字(字幕)只是近似,位置和内容是准的。
同名草稿会被覆盖,改完计划重跑即可。
**输出里的 `WARN` 必须处理**:语气词、口吃、重复句、留了远处的声音、断言没出处、时长超出、第一句不是钩子。每条都给了改法。改到 `WARNINGS=0`。确实是误报的,交付时逐条说明。
### 配乐和音效从哪来
用的是剪映自己的音乐库和音效库。工具能读到剪映在本机留下的曲库目录(真实名称、作者、风格、是否可商用),并能用登录会员自己的下载链接把曲子和音效取到本机。
```
koubo music 本机能直接用的配乐和音效
koubo music 钢琴 按名称、作者或风格搜(加 --all 连没下载的一起列)
koubo fetch 把曲库目录里还没有的取到本机(默认最多 30 首可商用配乐、60 个音效)
koubo fetch 钢琴 --songs 10 只取名称、作者、风格里带「钢琴」的
```
每次做片子按这个顺序:
1. 先 `koubo music`。本机配乐不到 10 首或音效不到 10 个,就先跑一次 `koubo fetch` 补库,不用问用户。
2. 风格文件的「音乐」里固定了曲目:直接用,不用选。
3. 没固定:跑 `koubo music --suggest`。它按风格文件的偏好(每分钟 100–130 拍、鼓点明显、名称带动感/时尚/商务/律动这类)把本机配乐排好,抒情温柔的已经筛掉。从上往下挑第一首**名称调性合适**的:营销口播要自信、利落、有往前推的节奏;搞笑、紧张、悬疑、舞曲健身这类跳过。只用可商用的。在计划里写 `"music": {"file": "<名称>"}`。
4. 本机没有合适的:`koubo fetch <关键词>`(动感、节奏、商务、时尚、律动、励志……)再挑。这是营销口播,配乐要有明确的鼓点和往前走的劲,**不要抒情、温柔、治愈、钢琴独奏这一类**;选了这类,生成时会给 WARN。
5. 音效不用你挑,风格文件按名称指定了,工具用本机有的第一个。
6. `fetch` 输出 `CATALOGUE_STALE`:曲库目录旧了或是空的。这次用本机已有的;交付时请用户在剪映「音频」里把音乐库和音效库的分类各往下滑几屏,下次就能取到。
7. 交付时说明用了哪首配乐、为什么选它,请用户试听。你听不到声音,选得不合适很正常,用户说换就换。
---
## 交付时告诉用户
1. 草稿名。在剪映「草稿」里找,看不到就重启剪映。
2. 从多长剪到多长,分了哪几章,每章一句话说讲了什么。
3. 你拿不准的地方:哪句两遍都不顺、哪里顺序是你调的。
4. 证据:几条有出处,哪几条没查到。
5. 空镜配了几段,配乐用了没有。
6. 还要他在剪映里做的:看美颜美型和包装效果、核对字幕错字、试听配乐、导出。
## 风格文件
在本文件夹的 `style/` 里,一个风格一个 json。计划里用 `"style": "<名称>"` 选,不写就是 `默认`。
用户说「字幕大一点」「强调色换成红色」「金句不要圆形窗口」这类要求,改的是风格文件,不是某一条片子的计划。改之前告诉用户这会影响以后所有片子;只想改这一条,就另存一个风格文件。
| 项 | 管什么 |
|---|---|
| `配色` | 正文、强调、描边、人名、头衔的颜色 |
| `字体` | 大字、标题卡、人名用哪个剪映字体。空着用默认字体 |
| `字幕` | `字体`:得意黑 / 思源黑体 / 思源宋体;`像素`:字的大小;`位置`;`每行最多`。`方式` 写 `文字` 则改回剪映自己的文字轨(能在剪映里改字,但字体不保证) |
| `防抖` | `开`、`裁切`(放大多少来藏边)、`平滑秒`(镜头本来在移动时保留多慢的移动) |
| `字幕` `大字` `标题卡` `人名条` | 字号、位置、时长、动画 |
| `景别` | 剪辑点交替的放大倍数 |
| `角色包装` | 每种角色用哪种样式:`plain` 不加、`spot` 压暗四角、`frame` 缩框、`circle` 圆形窗口、`cutout` 抠像标题画面 |
| `节奏` | 画面最多素几秒、自动轮换哪些样式、多长的句子才算短句 |
| `章节转场` `章节角标`(默认关) `分屏清单` `进度线` `片尾` `氛围暗角` | 这几样的开关和强度 |
| `章节开头` `章节标题卡` | 有标题的章节第一句用哪种样式、出不出标题卡 |
| `上限` | 各样式最多出现几次或占多少 |
| `空镜` | 每段多长、最短间隔、开头几秒不放 |
| `音乐` | 固定曲目和音量 |
| `音效` | 关键词、标题画面、章节、金句各用哪个音效(按剪映音效库里的名称写,可以写几个备选,用本机有的第一个),和音量 |
| `美颜` | 各滑杆数值(0–100,同剪映面板)。美颜:磨皮、美白、匀肤、祛法令纹、祛黑眼圈、亮眼、白牙、丰盈。美型:瘦脸、小脸、V脸、短脸、颧骨、下颌骨、开眼角、大眼、瘦鼻。写 0 就是不开 |
| `时长` | 成片最短最长 |
## 做不了的
- 调色:在剪映里做。
- 没有单独人声文件,而现场有人提词并且和出镜的人声音重叠:转写会乱。问用户要录音。
- 剪映云端的音乐、音效、贴纸、花字:只能用本机已下载的。
- 听不到声音、看不到画面:配乐合不合适、空镜好不好看,由用户判断。
## 运行命令时
- `transcribe`、`draft`、`fetch`、`stock --pick` 可能要几分钟。运行命令的超时写 600000(毫秒),不要写 0,也不要省略成很短。
- `draft` 第一次要给每个片段去抖,最慢。如果超时了,**原样再跑一遍**:做好的片段都留着,不会重做,第二遍很快。
- 路径带中文或空格时整个用英文双引号括起来。
- 证据要用搜索工具查。搜索工具报错用不了时:不要凭记忆写出处。能确定的写「凭记忆,未联网核对」,不能确定的写「未查到」,并在交付时告诉用户搜索这次没通。
## 出错时
| 输出 | 意思 |
|---|---|
| `KOUBO_FAIL audio-does-not-match-video` | 人声文件和视频不是同一条 |
| `KOUBO_FAIL keep-id-unknown N` | 计划里的编号在转写里不存在 |
| `KOUBO_FAIL cut-word-not-in-sentence N 字` | 要剪的字不在这句里,照转写原文写 |
| `KOUBO_FAIL role-unknown` / `look-unknown` | 角色或样式写错了,看上面的表 |
| `KOUBO_FAIL style-missing` | 没有这个风格文件 |
| `KOUBO_FAIL draft-in-use` | 同名草稿正在剪映里开着,改不了。请用户退回剪映首页再重跑,或在计划里给草稿换个名字 |
| `KOUBO_FAIL draft-root-missing` | 没找到剪映草稿文件夹。在计划里加 `"draft_root": "<剪映设置里的草稿位置>"` |
| `koubo check` | 检查环境是否齐全 |