--- name: course-generator homepage: https://github.com/cat-xierluo/legal-skills author: 杨卫薪律师(微信ywxlaw) version: "2.3.3" license: Complete terms in LICENSE.txt description: 课程内容管理平台。支持三种工作模式:从转录稿/文献生成结构化课程(生成模式)、将课程归档整理到知识库(归档模式)、根据客户需求从现有素材中提取重组内容(提取模式),并可通过用户词典自动纠正转录稿中的近似误转写术语。本技能应在用户需要将文献整理为课程、归档课程文件、或根据培训需求定制课程方案时使用,尤其适合需要把长转录稿整理成章节边界清晰、段落可读、问答自然融入正文、去除转录来源痕迹、保留英文专有名称、图片资产可追溯但正文插图克制,并保留高价值观点、案例、判断和实践细节的独立课程文档。 --- # 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) - 提取模式提示词