# Course Generator

> Course Generator is an Agent Skill for documents published in the cat-xierluo/legal-skills repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

课程内容管理平台。支持三种工作模式：从转录稿/文献生成结构化课程（生成模式）、将课程归档整理到知识库（归档模式）、根据客户需求从现有素材中提取重组内容（提取模式），并可通过用户词典自动纠正转录稿中的近似误转写术语。本技能应在用户需要将文献整理为课程、归档课程文件、或根据培训需求定制课程方案时使用，尤其适合需要把长转录稿整理成章节边界清晰、段落可读、问答自然融入正文、去除转录来源痕迹、保留英文专有名称、图片资产可追溯但正文插图克制，并保留高价值观点、案例、判断和实践细节的独立课程文档。

- Skill name: `course-generator`
- Category: [Documents](https://www.openparable.com/skill/documents/1)
- Source: https://github.com/cat-xierluo/legal-skills/blob/HEAD/skills/course-generator/SKILL.md
- Repository: cat-xierluo/legal-skills (471 GitHub stars when collected)

## SKILL.md

# Course Generator v2.3.3

## 概述

课程内容管理平台，支持三种工作模式：

| 模式 | 触发场景 | 输入 | 输出 |
| ---- | -------- | ---- | ---- |
| **生成模式** | 有新的转录稿/文献需要整理为课程 | 转录稿、文献文件 | 结构化课程文档 |
| **归档模式** | 课程文件需要整理到知识库 | 已生成的课程文件 | 按规范归档的知识库目录 |
| **提取模式** | 客户提出培训需求，需要定制方案 | 客户需求描述 | 定制化课程方案文档 |

**核心原则**：

- **忠实原文**：保留文献中的核心观点、具体例子、重要表述，不添加文档外信息
- **叙述性写作**：以段落论述为主，避免用要点堆砌替代完整论证
- **详尽完整**：总览 + 专题文档，包含核心观点、案例分析、重要表述、数据支撑、背景信息
- **高保真正文增强**：生成模式不是轻量摘要，应少压缩、多保留有思想密度的观点、案例、判断、金句、工具选择理由、踩坑经验和真实疑问
- **独立正文去来源痕迹**：最终章节应像独立文章或书稿章节，不反复出现"现场演示"、"课程现场"、"现场问答"、"主讲人提到"等转录来源表述
- **专有名称保真**：保留 Skill 名称、工具名、项目名、产品名、命令名、API、文件名和框架名的原始语言和大小写；原文是 `Course Generator`、`Claude Code`、`Codex`、`Cursor`、`Markdown` 等英文专有名称时，不翻译成中文
- **图片资产保真与克制插图**：图片资产表完整保留原文 Markdown 图片引用的 URL、alt 文本和原始顺序；正文只插入能帮助理解核心观点、流程、案例或工具界面的高价值图片，避免把章节变成图片堆叠
- **正文密度不因少插图而下降**：图片筛选只控制插图密度，不得借此压缩原文中的高价值观点、案例链路、判断依据、问答疑惑和实践细节
- **智能处理**：自动识别并去除发言人标记、时间戳，提取配图链接，清洗冗余信息，结合用户词典校正术语，转换口语为书面语
- **结构适配**：根据素材自身的流程、框架、能力模型或主题关系选择结构表达，不套固定模板
- **可读性优先**：控制段落长度，三级标题使用编号，保持章节边界清楚，避免相近主题重复展开

## 模式识别

根据用户输入自动判断工作模式：

- **生成模式**：用户提供了文件/目录路径，或明确要求"生成课程""整理文献""从转录稿生成"
- **归档模式**：用户要求"归档""整理到知识库""保存课程"
- **提取模式**：用户描述了培训需求（受众、时长、方向），如"给某企业做培训，需要 XX 内容"

## Step 0：读取配置

首次使用时，先复制 [config/paths.example.yaml](config/paths.example.yaml) 为 `config/paths.yaml`，再读取 `config/paths.yaml` 获取路径配置。

如需启用用户词典，复制 [config/user_dictionary.example.yaml](config/user_dictionary.example.yaml) 为 `config/user_dictionary.yaml`，在 `terms` 中添加正确术语即可。用户词典只记录正确写法，不需要维护"错误词 -> 正确词"映射。

**路径规则**：

- `knowledge_base`、`archive_root`、`curriculum_file`、`training_root` 强烈建议使用**绝对路径**
- 只有在明确知道当前工作目录时，才使用相对路径；相对路径默认相对于当前工作目录解析
- 路径中包含空格、中文或 emoji 时，YAML 值必须放在引号中

- `knowledge_base`：知识库根目录
- `archive_root`：课程归档路径
- `archive_naming`：归档目录命名规范
- `curriculum_file`：课程主题体系文件路径
- `training_root`：培训材料根目录

**用户词典规则**：

- `config/user_dictionary.yaml` 不存在或 `terms` 为空时，跳过术语校正
- `terms` 中的每一项都是正确术语，输出时应按词典中的大小写和写法呈现
- 仅在上下文明确指向某个词典术语时，才将近似误转写替换为该术语
- 可校正大小写、空格、标点、音近/形近、英文术语被拆分或被转成中文近音等高置信错误
- 不要将英文专有名称翻译成中文；如果词典或原文中出现 `Course Generator`，后续输出应保留 `Course Generator`，而不是改写为"课程生成器"
- 模糊或低置信场景保持原文，不做猜测式替换
- 校正只用于生成课程内容，不修改原始转录文件，也不在成品课程文档中输出校正日志

---

## 生成模式

### 流程

```
读取文献 → 读取用户词典 → 校正近似误转写 → 建立图片资产表并筛选正文配图 → 智能识别内容特征 → 生成课程大纲 → 生成总览+专题 → 归档到知识库
```

### Step 1：读取文献文件

使用 `Glob` 工具一次性读取指定目录下的所有文献文件：

```
Glob: {输入目录}/**/*.{md,txt}
```

保持完整上下文，一次性读取所有文件内容。

### Step 2：读取用户词典并校正术语

如果存在 `config/user_dictionary.yaml`，读取其中的 `terms` 列表。将这些术语视为正确写法，在转录稿和文献内容中查找高度相近且上下文明确的误转写，并统一替换为词典中的术语写法。

示例：词典中包含 `OpenClaw` 时，如果转录稿出现明显指向该工具或平台的近似写法，应在后续大纲、总览和章节中统一写作 `OpenClaw`。

不要把用户词典理解为替换映射表；用户只维护正确术语，AI 负责基于上下文识别可能的误转写。不要为了使用词典而强行替换普通词，也不要补充词典中不存在的术语。

### Step 3：建立图片资产表并筛选正文配图

如果原文包含 Markdown 图片引用（如 `![PPT 幻灯片 12](https://...)`），先按原文出现顺序建立图片资产表：

- 为每张图片分配稳定编号：`IMG-001`、`IMG-002`、`IMG-003`...
- 原样保留图片 Markdown：alt 文本、URL、括号和路径均不改写
- 记录图片附近的时间戳、前后 1-3 段文字或标题，作为归属章节判断依据
- 归属章节时优先根据图片邻近内容和时间顺序判断；同一章节内图片必须按原文出现顺序排列
- 区分"资产保留"和"正文插入"：图片资产表尽量完整保留图片引用，但正文不需要插入所有图片
- 为每张图片标注图片价值：`核心图`、`辅助图`、`低价值图`、`跳过图`
- 为每张图片标注正文处理：`插入正文`、`仅资产表保留`、`跳过`
- 核心图通常包括方法框架、工具界面、关键流程、案例证据、对比结论、操作结果等能独立增加理解的信息，应优先插入正文
- 辅助图只有在能支撑相邻段落理解、且不会造成图片堆叠时才插入正文
- 会务测试、音频调试、空白页、过渡页、纯标题页、重复页、装饰页或无法贡献课程理解的图片，标注为`仅资产表保留`或`跳过`，并说明原因
- 同一位置连续插入图片原则上不超过 2 张，确有必要时最多 3 张；如果一组图片更多，应选择代表图插入，其余仅在资产表保留或分散到不同小节
- 如果无法判断归属，放入时间位置最接近的章节；如果无法判断是否应进正文，默认先`仅资产表保留`，不要把低置信图片塞进正文
- 图片筛选只影响图片是否进入正文，不影响正文素材保留力度；不要因为删减图片而同步删减对应案例、操作逻辑、判断理由或问答中有价值的信息

### Step 4：智能识别内容特征

检测文件特征，自动识别内容类型：

- **发言人标记**：发言人1、发言人2等
- **时间戳模式**：00:00、12:34等格式
- **配图链接**：包含图片URL链接
- **转录特征**：口语化表达、操作过程描述、临时插话和补充讨论等

根据识别的内容特征，自动选择最合适的处理方式。

### Step 5：生成课程大纲

调用 AI 模型，一次性分析所有文献并生成课程大纲。详见 [outline_prompt.md](references/outline_prompt.md)。

核心要求：

- **整体把握**：理解所有内容的整体脉络和逻辑关系
- **主题识别**：基于所有内容自动识别主要主题
- **内容优化**：清洗冗余信息，保留核心内容，转换口语为书面语
- **高价值素材识别**：显式识别核心观点、方法论、实践案例、工具选择理由、踩坑经验、反直觉判断、可迁移表达和问答素材中的真实疑惑
- **术语校正**：根据用户词典识别并修正高置信的近似误转写，统一使用词典中的正确写法
- **专有名称保真**：保留英文 Skill 名称、工具名、产品名、命令名、API、文件名和框架名，不把 `Course Generator` 等专有名称意译成中文
- **课程组织**：按主题生成章节，明确每章边界，标注核心章节，案例、问答和展望融入相应主题
- **配图处理**：建立图片资产表，保留图片 Markdown 原文、原始顺序、章节归属、图片价值、正文处理和放置建议；正文只插入核心图和必要辅助图

输出格式：

```
课程标题：[基于原文生成的课程名称]

第一章 [主题名称] - 核心观点摘要
  边界: [本章负责的问题范围]
  高价值素材: [观点、案例、判断、金句、真实疑问或实践细节]
  本章正文配图: [只列出标注为插入正文的 IMG-001, IMG-002...；无则写"无"]
第二章 [主题名称] - 核心观点摘要
  边界: [本章负责的问题范围]
  高价值素材: [观点、案例、判断、金句、真实疑问或实践细节]
  本章正文配图: [只列出标注为插入正文的 IMG-003, IMG-004...；无则写"无"]
```

### Step 6：生成总览文档

详见 [overview_prompt.md](references/overview_prompt.md)。

总览中的结构导览是可选模块。只有当素材确实包含流程链路、方法框架、能力模型或系统架构时，才加入简短导览；导览标题应根据内容自动命名，不能固定套用"核心工作流地图"。

输出文件名：`00 [课程名称] - 总览.md`

### Step 7：生成专题文档

详见 [chapter_prompt.md](references/chapter_prompt.md)。

**可选模块架构**：AI 从 11 个可选模块中选择合适的组合：

| 模块名称 | 适用场景 |
| --------- | -------- |
| 引言与概述 | 需要背景介绍和内容导航 |
| 核心概念与原理 | 理论性内容，需要概念阐释 |
| 理论框架 | 学术性、理论性较强的内容 |
| 历史背景 | 需要时间线或发展历程的内容 |
| 实践案例 | 有具体应用实例的内容 |
| 应用场景 | 需要场景说明的内容 |
| 最佳实践 | 需要操作指南的内容 |
| 对比分析 | 需要比较不同方案/观点的内容 |
| 未来展望 | 有前瞻性、趋势性内容 |
| 本章小结 | 需要总结回顾的内容 |
| 延伸阅读 | 有相关资源推荐的内容 |

**默认推荐组合**：

- **理论类**：引言与概述 + 核心概念与原理 + 本章小结
- **实践类**：引言与概述 + 应用场景 + 最佳实践 + 本章小结
- **案例类**：引言与概述 + 实践案例 + 对比分析 + 本章小结
- **综合类**：根据内容特点灵活组合

**排版与可读性要求**：

- 三级标题统一使用 `### 1、标题` 格式，每个二级标题下从 `1` 重新编号
- 段落目标长度约 160-240 个中文字符，超过 260 字优先拆分，避免 300 字以上长段
- 同一段只讲一个核心意思，避免把概念定义、案例说明和价值判断塞进同一段
- Q&A 必须按主题融入对应章节，转化为常见疑问、补充解释、案例回应或实践注意事项，不单独成章，也不机械保留问答格式
- 操作过程、补充讨论和工具选择过程应提炼为案例、方法、取舍或实践经验，不要压缩成一句泛泛结论，也不要在正文中保留"现场演示"式来源叙述
- 只有大纲标注为`插入正文`的本章正文配图必须插入正文，使用原始 Markdown 图片引用，不改 URL，不改 alt，不重新排序；标注为`仅资产表保留`或`跳过`的图片不得强行插入正文
- 同一小节连续图片原则上不超过 2 张，确有必要时最多 3 张；超过时选择代表图，或分散到真正相关的不同段落之后
- 图片数量减少不等于正文压缩，章节仍需保留原素材中的案例链路、工具取舍、限制条件、真实疑问和可迁移表达
- 允许使用少量“关键判断”“实践启发”“方法框架”等三级标题突出重点，但必须服务正文论证，不把章节写成提纲
- 保持叙述性写作，但流程、步骤、术语映射、工具对比等场景可以使用简短列表或箭头链路辅助理解

### Step 8：创建输出目录并保存

1. 读取 `config/paths.yaml` 中的 `archive_root` 和 `archive_naming`
2. 按命名规范创建目录：`YYMMDD 课程主题/`
3. 保存文件：
   - 总览：`00 [课程名称] - 总览.md`
   - 章节：`0X [章节序号] [主题名称].md`
4. 目录位于 `archive_root` 下，由配置文件决定实际位置

---

## 归档模式

### 流程

```
读取课程文件 → 确定归档路径 → 移动/复制 → 更新索引
```

### Step 1：读取待归档课程

使用 `Glob` 读取指定目录下的课程文件。优先识别当前标准命名，同时兼容旧命名：

- 总览：`00 [课程名称] - 总览.md`
- 兼容旧总览：`00_*.md`
- 章节：`0X [主题名称].md`
- 兼容旧章节：`0X_*.md`

### Step 2：确定归档路径

1. 读取 `config/paths.yaml` 配置
2. 从总览文件中提取课程名称和日期信息
3. 按命名规范确定目标路径：`{archive_root}/{YYMMDD} {课程主题}/`

### Step 3：归档文件

1. 使用 `Bash` 创建目标目录
2. 将课程文件复制到目标目录
3. 验证文件完整性（总览 + 全部章节）

### Step 4：更新索引

如果知识库目录下存在 `README.md`，将新课程添加到索引中。

---

## 提取模式

### 流程

```
解析需求 → 匹配课程 → 定位素材 → 提取重组 → 输出方案
```

### Step 1：解析客户需求

从需求描述中提取关键信息：

- **受众**：企业法务 / 律师 / 法律研发 / 产品团队
- **AI 基础水平**：零基础 / 有一定经验 / 技术背景
- **培训时长**：2-3 小时 / 半天 / 1 天 / 多天
- **重点方向**：认知 / 工具 / Agent-Skill / 案例 / 组织 / 超级个体

### Step 2：匹配课程讲次

读取配置中的 `curriculum_file`，根据需求匹配讲次组合：

1. 基于受众和基础水平确定阶段范围
2. 基于培训时长确定讲次数（每讲约 60-90 分钟）
3. 基于重点方向优先匹配对应讲次
4. 确保选取的讲次逻辑连贯

### Step 3：定位素材文件

根据匹配到的讲次，在知识库中定位对应的素材源文件：

1. 对照 `curriculum_file` 中的素材来源目录
2. 使用 `Glob` 搜索知识库目录下的相关文件
3. 优先读取总览文件了解内容全貌，优先匹配 `00 [课程名称] - 总览.md`，兼容旧命名 `00_*.md`
4. 按需深入读取具体章节

### Step 4：提取与重组

详见 [extract_prompt.md](references/extract_prompt.md)。

核心原则：

- **忠实原文**：保留素材中的核心观点、案例、数据
- **逻辑重组**：按培训的时间线和认知逻辑重新组织
- **受众适配**：根据受众水平调整内容深度
- **时长控制**：根据培训时长裁剪内容量

### Step 5：输出课程方案

输出定制化课程方案文档，保存到 `training_root` 目录下。

方案格式包含：培训目标、课程结构（各部分主题+时长+核心内容+详细内容）、素材来源。

---

## 参考文档

- [config/paths.example.yaml](config/paths.example.yaml) - 路径配置模板
- [config/user_dictionary.example.yaml](config/user_dictionary.example.yaml) - 用户词典模板
- `config/paths.yaml` - 本地实际路径配置（不提交到仓库）
- `config/user_dictionary.yaml` - 本地用户词典（不提交到仓库）
- [references/outline_prompt.md](references/outline_prompt.md) - 课程大纲生成提示词
- [references/overview_prompt.md](references/overview_prompt.md) - 总览文档生成提示词
- [references/chapter_prompt.md](references/chapter_prompt.md) - 专题文档撰写提示词
- [references/extract_prompt.md](references/extract_prompt.md) - 提取模式提示词

---

Source: https://www.openparable.com/skill/documents/course-generator (OpenParable). Cite the canonical URL above.
