# Srt To Markdown

> 将 SRT 字幕文件整理为结构完整、行文通顺的 Markdown 文档。适用于讲座、直播、访谈等口语转录的结构化整理。

- Skill: `wzh4464/srt-to-markdown` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wzh4464/srt-to-markdown`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wzh4464/srt-to-markdown/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: wzh4464 (https://skillmd.com/u/wzh4464)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/wzh4464/srt-to-markdown

---


# SRT 字幕 → 结构化 Markdown

将一个或多个 SRT（SubRip）字幕文件转化为结构完整、逻辑通顺、适合阅读或出版的 Markdown 文档。

## 适用场景

- 讲座/课程录屏的字幕整理
- 直播回放的精华提取
- 访谈/对话节目的文字稿整理
- 会议记录的结构化

## 输入

用户提供：
1. 一个或多个 `.srt` 文件的路径
2. （可选）主题分类或章节提示
3. （可选）输出格式偏好（单篇 / 分章节 / LaTeX）

## 工作流程

### 第一步：读取与清洗

1. **读取 SRT 文件**，跳过：
   - 序号行（纯数字行）
   - 时间戳行（`HH:MM:SS,mmm --> HH:MM:SS,mmm`）
   - 空行
   - 只保留文本行

2. **清洗零宽字符**：移除 ASR 平台嵌入的隐形水印
   - U+200B（零宽空格）
   - U+200C（零宽非连接符）
   - U+200D（零宽连接符）
   - U+FEFF（BOM / 零宽不换行空格）
   - U+2060（词连接符）
   - 正则：`[\u200b\u200c\u200d\ufeff\u2060]`

3. **合并连续文本行**为段落：
   - 同一句话可能被拆成多行（SRT 每行约 30-40 字）
   - 以句号、问号、感叹号为断句依据合并为完整段落
   - 去除重复行（ASR 偶尔重复输出）

### 第二步：口语转书面语

这是最关键的一步。ASR 转录的原始文本通常：
- **完全没有标点符号**（最常见）
- 口语化严重（"然后"、"就是说"、"对吧"、"嗯"）
- 存在大量 ASR 识别错误

#### 2.1 补充标点

逐段阅读，根据语义和语气补充完整标点：
- 陈述句加句号
- 疑问句加问号
- 列举用顿号或逗号
- 引用加引号
- 注意书名号（中文特有）

#### 2.2 修正 ASR 错误

ASR 对专业术语的识别错误率极高。常见模式：

| 错误类型 | 示例 |
|---------|------|
| 同音替换 | "康复周期" → "康波周期"、"美丽时钟" → "美林时钟" |
| 人名误识 | "包贝尔" → "鲍威尔"、"吴京" → "吴清" |
| 机构名 | "道具部门" → "政府效率部(DOGE)" |
| 术语误读 | "心智生产力" → "新质生产力" |
| 音译名 | "布伦森森林" → "布雷顿森林" |

**修正策略**：
- 根据上下文语境判断正确术语
- 同一术语在全文中统一修正
- 不确定的标注 `[?]` 供人工复查
- 外国人名首次出现时附注原文：如"鲍威尔（Jerome Powell）"

#### 2.3 口语→书面语转换

| 口语特征 | 处理方式 |
|---------|---------|
| 语气词（"嗯"、"啊"、"对吧"） | 删除 |
| 重复表述 | 保留表意最清晰的一次 |
| 口头禅（"就是说"、"然后呢"） | 删除或替换为书面连接词 |
| 散乱长句 | 拆分为短句，调整语序 |
| 口语化词汇 | 替换（"搞" → "推行"、"弄" → "实施"） |

**注意**：保留讲者的分析风格和个人特色，不要过度书面化。比喻、类比、生动表达应当保留。

### 第三步：结构化组织

#### 3.1 识别主题段落

阅读清洗后的全文，识别：
- 话题转换点（讲者说"接下来我们聊..."、"第二个问题是..."）
- 自然的逻辑分界
- 独立完整的论述单元

#### 3.2 构建层级结构

```markdown
# 章标题（对应整个视频/讲座的主题）

> 章首引言（提炼全章最核心的一句话）

## 节标题（对应一个完整话题）

### 小节标题（对应话题下的子论点）

正文段落...

---
*来源：视频标题或原始文件名*
```

**命名规范**：
- 章标题：概括性强，如"多重周期叠加：为什么经济比较困难"
- 节标题：对应一个完整话题，如"朱格拉周期：投资驱动的 9-10 年波动"
- 小节标题：对应具体论点，如"资本边际效率递减的直觉"

#### 3.3 添加章首引言

每章开头添加一段 blockquote 引言：
- 从正文中提炼最精彩、最有概括力的一句话
- 或由讲者的核心观点凝练而成
- 控制在 1-2 句话

### 第四步：质量检查

- [ ] 所有段落有完整标点
- [ ] 专业术语前后一致（全文统一）
- [ ] 人名、机构名首次出现附原文
- [ ] 无遗留的 ASR 明显错误
- [ ] 章节层级清晰、标题概括准确
- [ ] 保留了讲者的分析风格
- [ ] 来源标注完整

### 第五步：输出

根据用户需求选择输出格式：

**Markdown（默认）**：直接输出结构化 `.md` 文件

**LaTeX**：转换为 LaTeX 格式
- `#` → `\chapter{}`
- `##` → `\section{}`
- `###` → `\subsection{}`
- blockquote → `\begin{quote}...\end{quote}`
- 来源 → `\source{}`（自定义命令）
- 百分号等特殊字符需转义

**多文件合并**：当多个 SRT 文件属于同一主题时
- 按逻辑顺序排列
- 合并为统一章节结构
- 去除重复内容（同一讲者在不同场次可能重复相同论点）

## 处理特殊内容类型

### 对话/访谈节目
- 保留说话人标识：`**主持人**：`、`**嘉宾A**：`
- 对话格式不拆分为段落，保留问答节奏

### 直播问答
- 问题用粗体或引用格式标出
- 回答按主题归类，而非按时间顺序

### 系列讲座
- 多期内容按主题而非时间线组织
- 交叉引用相关章节

## 性能建议

- 单个 SRT 文件通常 2000-5000 行，可直接读取处理
- 超过 10 个文件时，使用 Agent 工具并行处理
- 大型项目（50+ 文件）建议先用脚本批量清洗，再逐章精修

## 示例

**输入**（SRT 原文，无标点）：
```
1
00:00:01,000 --> 00:00:03,500
今天我们来聊一聊经济周期

2
00:00:03,500 --> 00:00:07,000
很多朋友问经济到底什么时候能变好

3
00:00:07,000 --> 00:00:11,500
要回答这个问题绕不开经济周期理论
```

**输出**（结构化 Markdown）：
```markdown
## 经济周期理论：分析的钥匙

很多朋友问：经济到底什么时候能变好？要回答这个问题，绕不开经济周期理论。
```

