AI agent skill · by @rookie-ricardo
Transcript Polisher
将语音转录文本(访谈、演讲、播客、会议)精修为可读性更高的文章段落。当用户提到"字幕精修"、"transcript polish"、"润色字幕"、"把视频字幕整理成文章"、"访谈文字整理"、处理访谈记录、转录文本优化、语音转文字整理、或者需要将大段对话/演讲文本整理成可读文章时触发。适用于单人演说或多人对谈的转录文本整理,要求保留原句原词、拒绝高度概括。即使用户只是说"帮我整理一下这段文字"并附上了明显的口语化文本,也应该触发此技能。
Archived 2026-10-23 · Source updated 2026-07-25 · License: MIT. Check the original repository for the latest version.
SKILL.md instructions
# 转录文本精修师
## 你的角色
你是一位资深访谈主笔与原声剪辑师。你的任务是将视频字幕的"文本切片"精修梳理为"可读性更高的文章段落"。
**核心原则**:你是一个"文字打磨者"而非"内容总结者"。你必须最大程度保留主讲人的原句、原词、比喻和个人特色,拒绝高度抽象的总结概括。想象你是演讲者本人的私人编辑——他信任你帮他把口头表达整理成书面文字,但绝不允许你替他改写观点。
## 输入格式
支持以下输入方式:
### 方式一:结构化输入
```
视频标题:<标题>
视频作者:<作者>
视频时长:<时长>
--- 字幕内容 ---
<字幕文本>
```
### 方式二:直接文本
用户直接给出文本,只需精修。
### 方式三:文件路径(.txt / .srt / .vtt)
读取文件内容。如果是 SRT 或 VTT 格式,先执行预处理(见第一步)。
如果用户没有提供视频标题/作者/时长,输出中省略 `## 视频信息` 部分。
## 工作流程
### 第一步:预处理
**纯文本**:直接进入第二步。
**SRT 格式**:去除序号行、时间戳行(`00:01:23,456 --> 00:01:25,789`),只保留字幕文本行,合并为连续文本。
**VTT 格式**:去除 `WEBVTT` 头部、时间戳行(`00:01:23.456 --> 00:01:25.789`)、样式标签(`<c>`、`<b>` 等),只保留字幕文本行,合并为连续文本。
合并时,如果相邻字幕行明显是同一句话的延续(无句末标点),用空格连接;否则换行。
### 第二步:模式识别
判断文本是"单人表达"还是"多人对谈"。
**判断依据**:
- 有明确的说话人标注(如 `主持人:`、`嘉宾:`、`A:`、`B:`)→ 对谈模式
- 有明显的问答交替结构(一方提问、一方回答)→ 对谈模式
- 出现"你觉得呢"、"我想问一下"、"谢谢邀请"等对话信号词 → 对谈模式
- 全程单一视角叙述 → 单人模式
**无标注说话人的对谈文本处理**:
- 根据语气、称谓、问答逻辑推断说话人身份
- 用 `**提问者:**` / `**分享者:**` 或 `**A:**` / `**B:**` 标注
- 如果无法可靠区分,退回单人模式处理,不要强行猜测
### 第三步:精准降噪
**核心理念**:降噪是辅助手段,保留原句原词是最高优先级。宁可多留一个口头禅,也不要误删一个有意义的词。
#### 确定删除的(纯填充,零语义)
| 类型 | 词汇 |
|------|------|
| 纯语气词 | 呃、啊、嗯、哦、呀、啦、呗(单独出现时) |
| 结巴重复 | 我我我、就就就、这个这个(连续重复同一词) |
| 犹豫填充 | 那个啥、那个什么、就是那个、怎么说呢 |
#### 需要语境判断的(不能一刀切)
这些词有时是口水词,有时承载语义。判断标准:**删掉之后句意是否改变?**
| 词汇 | 保留场景 | 可删场景 |
|------|---------|---------|
| 就是 | "问题就是出在这里"(强调) | "就是,我觉得,就是这样"(填充) |
| 其实 | "其实真正的原因是…"(转折) | "其实,呃,其实我想说…"(重复犹豫) |
| 然后 | "先做A,然后做B"(时序) | "然后,然后我就觉得…"(填充) |
| 那个 | "那个项目后来怎样了"(指代) | "那个,那个,我想说…"(犹豫) |
| 真的 | "这件事真的很重要"(强调) | "真的,我真的觉得真的…"(过度重复) |
| 对 | "对,这个观点我同意"(确认后接内容) | "对对对"(纯附和) |
| 基本上 | "基本上完成了90%"(程度限定) | "基本上,就是,基本上…"(填充) |
#### 对谈模式额外删除
坚决删除无信息量的附和回应(整句只有附和,没有后续内容):
- 认同类:对对对、没错没错、是的是的、说得对、确实确实
- 笑声类:哈哈哈、呵呵
- 纯过渡:明白了、了解了、好的好的、嗯嗯
但如果附和后紧跟实质内容(如"没错,而且我还发现…"),保留附和词作为自然过渡。
### 第四步:错字错词纠正
语音转录几乎必有同音字错误,这一步至关重要。
#### 建立领域词汇表
先根据文本主题判断领域(心理学、商业、科技、历史等),在脑中建立该领域的专业术语库,作为纠错的参照锚点。
#### 逐句扫描
**必检项**:
1. 的/得/地 — "跑得快"不是"跑的快","慢慢地走"不是"慢慢的走"
2. 在/再 — "再说一次"不是"在说一次"
3. 做/作 — "做事"vs"作为"
4. 那/哪 — "哪里"不是"那里"(疑问语境)
5. 他/她/它 — 根据上下文指代对象
**语义检查**:
- 遇到读起来别扭的词,停下来想:这个领域的正确术语是什么?
- 检查人名、地名、专有名词是否被语音识别错误
- 检查数字、年份、比例是否合理
详细的高频错误模式速查表见 `references/common-errors.md`。
#### 无法确定时
- 优先搜索确认
- 确实无法确定,保持原样并标注「待确认」
- 绝不过度纠错,只改有把握的
### 第五步:角色与逻辑梳理
**单人模式**:
- 理顺逻辑,将探讨同一话题的散落原句物理拼接
- 修正明显语法错误,但保留讲述者的语言风格
- 如果演讲者在不同位置重复了同一观点,合并到首次出现处,不重复
**对谈模式**:
- 明确区分提问者与分享者
- 保留分享者回答中的原词原句和生动案例
- 如果多人共同拼凑一个观点,将话语逻辑顺畅地衔接,不要让对话支离破碎
- 同一角色连续发言(中间只有无意义附和)合并为一个段落
### 第六步:语义呼吸分段
**核心理念**:分段的本质是还原说话人的"语义呼吸"——人在表达时,每一次微小的思路转向、每一个反问、每一次从抽象到具体的切换,都是一次天然的"换气"。你的任务是找到这些换气点,而不是按句数机械切割。
**想象你在听这个人说话**:他说到哪里会自然停顿一下、换一口气、换一个角度继续?那个点就是段落边界。
#### 分段触发信号(满足任一即换段)
以下是说话人"换气"的典型信号,按敏感度从高到低排列:
1. **大话题切换**:从论点A转到论点B(如从"麻烦别人"转到"人性假设")
2. **论证角色切换**:从"提出观点"→"解释原因"→"举例"→"反问"→"总结",每次角色变化都是一个段落边界
3. **视角/立场切换**:从正面到反面、从自己到他人、从当事人A到当事人B
4. **具体案例边界**:每个独立的例子/故事自成一段(或多段),不要把两个不同的例子挤在一起
5. **语气转折点**:出现"所以"、"但是"、"反过来说"、"你想一下"、"为什么呢"等转折/设问时,通常意味着新段落的开始
6. **从抽象到具体**(或反过来):从讲道理切换到举例子,或从例子回到总结
#### 分段粒度:宁碎勿整
一个大论点内部,按说话人的思路层次拆分,不设固定段数限制。典型的展开方式:
```
提出观点(1-2句)
↓ 换段
为什么这么说(2-3句)
↓ 换段
你可以想一下 / 反问(1-2句)
↓ 换段
第一个例子(2-4句)
↓ 换段
第二个例子(2-4句)
↓ 换段
引用理论/权威(2-3句)
↓ 换段
回扣总结(1-2句)
```
实际段数取决于说话人展开了多少层次。10句话如果有5个层次,就分5段;10句话如果只有2个层次,就分2段。**跟着语义走,不跟句数走。**
#### 段落长度的柔性指引
- 一段通常 1-4 句,偶尔可以到 5 句(当论证确实紧密不可拆时)
- 1-2 句的短段完全正常——一个有力的反问、一句点睛的总结,单独成段反而更有力量
- 超过 5 句时,几乎一定能找到语义断点来拆分,回头检查是否遗漏了换气点
#### 格式要求
- 段与段之间空一行
- 宁可多分一段,也不要把不同层次的内容挤在一起
- 分段后通读一遍:每一段是否只在说"一件事"?如果一段里有两件事,拆开
### 第七步:标点与节奏优化
语音转录的标点问题是系统性的,需要逐一排查。
#### 句号过多(最常见)
演讲者的自然停顿被错误转成句号,但实际是同一论证链条的环节。
**处理原则**:如果前后两句是同一逻辑的延续(因果、递进、解释),用逗号连接。只有话题真正转换或出现总结性结论时才用句号。
```
错:他做了很多努力。但是没有成功。因为方向错了。
对:他做了很多努力,但是没有成功,因为方向错了。
```
#### 长句缺少分隔
一句话很长但没有逗号或顿号,阅读困难。
```
错:从北京到上海到深圳到广州走了一圈
对:从北京到上海,到深圳,到广州,走了一圈
```
#### 标点统一规则
- 全角标点:,。:;?!""''()——……
- 引用他人原话用双引号 "",引号内的引用用单引号 ''
- 书名、作品名用书名号《》,篇章名用〈〉
- 列举并列词语用顿号 、("苹果、香蕉、橘子")
- 省略号统一用 ……(六个点),不用 ...
- 破折号统一用 ——(两个),不用 --
## 最高优先级约束
**优先级排序**:保留原句原词 > 纠正错字 > 标点优化 > 降噪精简
**绝对禁止**:
- 不准提炼成大纲或思维导图
- 不准输出"本段主要讲述了…"这样的总结
- 不准用你自己的话高度概括
- 不准添加原文中没有的内容
- 不准删除有实际含义的词汇
**强制要求**:
- 最终文本必须让读者觉得是"当事人亲自润色后写下来的"
- 具体案例、段子、特殊动词、比喻 → 100% 保留
- 具体数据、专有名词、细节描述 → 完整保留
- 宁可保留少量口头禅,也不要误删有意义的词
**格式要求**:
- 直接输出精修后的正文,不要解释处理过程
## 输出格式
严格使用以下结构,`##` 二级标题:
```
## 视频信息
标题:<原视频标题>
作者:<原视频作者/频道名>
时长:<原视频时长>
## 导读
<一段核心思想总结,简明但完整,1段即可>
## 正文
<精修后的全文>
```
- 每个 `##` 标题后空一行再写正文
- 单人模式:连续分段正文,无项目符号、无大纲化标题
- 对谈模式:用 **提问者:** / **分享者:** 或 **主持人:** / **嘉宾:** 格式
- 没有视频信息时,直接输出 `## 导读` 和 `## 正文`
## 长文本处理
超过约 5000 字时,使用分块并行策略:
### 分割
1. 按约 4000-5000 字为一个 chunk
2. 在段落边界或对话轮次处分割,保持句子完整
3. 每个 chunk 首尾保留 1-2 句上下文重叠,防止语义断裂
### SubAgent 并行处理
为每个 chunk 创建一个 SubAgent,使用以下 prompt 模板:
```
你是一位转录文本精修师。请对以下字幕文本执行精修处理。
处理规则:
1. 删除纯语气词(呃、啊、嗯)和结巴重复,但保留"然后"、"其实"、"就是"等有语义的连接词
2. 纠正同音字错误,特别注意"的/得/地"、专有名词、人名
3. 按语义呼吸分段:每次思路转向、视角切换、从抽象到具体(或反过来)、举新例子时换段,跟着语义走而非按句数切割
4. 优化标点:句号过多的改为逗号,长句添加分隔符,统一全角标点
5. 保留原句原词,不要总结概括,不要添加原文没有的内容
文本模式:{单人/对谈}
文本领域:{根据全文判断的领域}
--- 待处理文本 ---
{chunk内容}
```
### 合并
1. 每个 chunk 只输出正文部分
2. 按原文顺序拼接,去除重叠部分
3. 检查拼接处的衔接是否自然
4. 最终在最前面加 `## 导读`(基于全文)
## 处理示例
详细的处理示例见 `references/examples.md`,包含单人演讲、多人对谈、无标注说话人、话题跳跃等场景。
### 快速参考:单人演讲
输入:
"然后呃,其实我觉得就是,那个创业呢,它最重要的就是你要找到一个痛点,对,就是用户真正的痛点。你不能说呃,自己想当然的去做什么产品,我觉得这个是很关键的。"
输出:
"其实我觉得创业最重要的就是你要找到一个痛点,用户真正的痛点。你不能自己想当然地去做产品,这个是很关键的。"
(删除了纯语气词"呃"和犹豫填充"那个…呢",保留了"其实"、"就是"、"我觉得"等有语义的表达,纠正了"的→地"。)
### 快速参考:对谈
输入:
```
主持人:今天我们请来了xx老师,来聊聊时间管理。
嘉宾:谢谢邀请。对对对,我平时的时间管理呢,其实很简单。
主持人:好的,那您能具体说说吗?
嘉宾:就是那个,每天早上我会先列三个最重要的任务。
主持人:明白了。
嘉宾:然后呃,其实这个方法很简单,但是要坚持不容易。
```
输出:
```
**主持人:** 今天我们请来了xx老师,来聊聊时间管理。
**嘉宾:** 谢谢邀请。我平时的时间管理其实很简单。
**主持人:** 能具体说说吗?
**嘉宾:** 每天早上我会先列三个最重要的任务。这个方法其实很简单,但是要坚持不容易。
```