---
name: lzheng-video-lessons
description: 将抖音或本地健身教学视频核对为有起止点的分段课程，用直接教读者怎么做的详细解释生成播放器，接入现有知识库并按用户授权完成发布和线上验证；支持复用更新，不把视频建议自动写成个人训练处方。
---

# Lzheng 分段视频教学

用户给链接或本地视频并要求“分段讲解、知识库教学、接入健身系统”时使用。沿用当前用户的素材、目标与发布授权，不要求重新确认已有决定。创建 Skill 本身不代表发布新课程。

## 1. 获取并核对来源

优先复用已核对的媒体、转写和时间戳；有 `lzheng-video-learning` 时用它的获取/转写工具，个人环境也可用已安装的 `douyin-question-distiller`。没有这些工具时接收用户本地视频和转写，保留同样数据契约。不要绕过登录、验证码、付费或访问限制；同一临时媒体地址失败最多重新获取一次，失败条目记录原因，继续可独立完成部分。

在用户 workspace 中保存来源 URL、作品 ID、讲者/上传者、时长、媒体哈希、转写和关键帧。运行材料不得进入 Skill 或公开仓库。逐段核对时间、数字、单位、动作版本与否定词；只做过机器转写/抽帧就如实写明，不声称逐字听校。

## 2. 编写章节

读取 [讲解与数据契约](references/lesson-contract.md)。章节必须有精确 start/end、稳定 ID、目标、详细步骤与步骤时间点。分段按教学意义，不固定章节数、不等分时间。允许未收录片段，但要在 coverage_note 说明；章节不能重叠、越界。

正文直接讲“你怎么准备、怎么做、为什么、怎样判断、哪里容易错”，不用“作者演示了/他说了”代替解释。署名和证据放来源区。不要补造片中没有的组数、重量或通用结论；来源建议与额外解释分开标注，存疑处保留待核对。

## 3. 生成可试用课程

`python scripts/lesson.py validate --input <lesson.json>`

核对通过后：`python scripts/lesson.py build --input <lesson.json> --out <新课程目录> [--media <mp4> --poster <jpg>]`

工具只接受新输出目录，避免覆盖已有课程和学习笔记。更新使用同一 lesson.id/chapter.id 并生成新版本目录，验收后替换注册入口，保留旧版便于回退。默认只链接原视频；复制媒体需要 lesson.json 记录 media_rights_basis。开源包不附带原视频、截图、完整转写或私人资料。

播放器保持黑白、单列浮动目录、编号步骤、原片起止时间、到终点暂停、重播/循环、步骤跳转、按课程保存本机笔记。缺少媒体明确显示“仅原视频链接”，不留假播放器。真实媒体必须验证可解码、非黑屏、拖动与片段终点；浏览器后台限流时不承诺逐帧剪辑精度。需要独立片段文件时可由 ffmpeg 导出，但默认复用单原片的时间窗口，避免重复占用空间。

## 4. 接入与复用

`python scripts/lesson.py integrate --html <工作台.html> --lesson <课程目录> --backup-dir <备份目录> [--apply]`

先预检，已获接入授权再 apply。课程必须位于工作台目录树内。只按稳定 ID 更新 `knowledge-lessons-data`；支持现有个人工作台 UI，其他模板安装通用知识库对话框。保留 `workbench-data`、账号配置和已有知识；不自动匹配相似动作，精确动作联动交给现有适配器，需逐个核对变式。

## 5. 验收与发布

读取 [接入与发布](references/integration-release.md)。先完成本地检查与可审阅页面。已授权发布就继续现有发布器；未授权仅给预览，不把“入库”推断成上传许可。媒体再分发范围与代码许可分别判断。

发布需包含课程 HTML、chapters.js 和授权媒体/海报；以依赖清单为准。不得让公开匿名工作台夹带私人课程。上线后逐文件 HTTP/哈希核验，并实际打开知识库、选段、播放/终点、返回。分别记录 source_verified、lesson_built、integrated、release_prepared、deployed、online_verified；脚本完成不等于用户已学会或练过。
