Communitygithub.com

应用教学视频制作技能

通过驱动真实浏览器应用并录制,生成带有旁白、字幕的培训或演示视频——包含故事板、离线AI语音、与旁白同步的画面捕获、章节/标题卡片、内嵌字幕、.srt字幕文件、章节列表和海报,最终输出为可直接发布的1080p MP4。

应用教学视频制作技能 是什么?

该技能(omer ozgul11/app-training-video-skill)能够自动化生成专业级软件应用培训视频。它通过Playwright驱动真实浏览器应用,记录每一步操作,配合离线AI语音(Kokoro)生成与画面同步的旁白,并自动添加章节卡片、内嵌字幕和.srt字幕文件。支持Claude Code、Coder、Cursor、Codex、Copilot等AI Agent平台;用户需提供故事板(JSON)和捕获脚本(Python)。其核心工作流包括:1)编写故事板定义旁白和章节;2)自动生成离线AI语音;3)Playwright脚本驱动真实应用并录制屏幕帧,同时根据旁白长度控制画面停留;4)渲染生成带标题卡、字幕带的1080p MP4;5)生成接触页用于审查。该技能解决了传统屏幕录制痛点——旁白与画面不同步、操作等待、版本更新后需手动重新录制等问题。它保持可重现性:UI变更时只需重新运行捕获和渲染即可生成最新视频。关键文件包括asset/storyboard.example.json(故事板模板)、scripts/capture_template.py(捕获脚本模板)、以及setup.sh(一键环境配置,自动安装Python环境、Kokoro模型和Chromium)。输出包含MP4、SRT字幕、章节列表文本、海报图像和时间线JSON,适合用于产品演示、入门教程、SaaS功能演示等场景。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/omerozgul11/app-training-video-skill/tree/HEAD/app-training-video

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

应用教学视频

制作真实应用的专业培训视频。视频采用约 1920 × 1080 H.264 编码,配有 AAC 旁白。每个口语句子都配有字幕,每个章节以卡片开始,长时间等待会被剪除。视频可重现:当 UI 变化时,重新运行捕获和渲染即可生成最新版本。

工作原理:

  1. 故事板 包含旁白文本、章节和品牌信息。
  2. narrate.py 使用离线 Kokoro 语音朗读每个片段:无需云服务、无需账户、零成本。
  3. 捕获脚本 使用 Playwright 驱动真实应用(真实鼠标移动、可见光标和点击涟漪)。它会录制 Chrome 的屏幕帧,并让每个片段保持显示直到旁白结束。
  4. render.py 组装视频片段、卡片、字幕带以及响度归一化后的旁白音轨。
  5. review.py 检查结果并生成接触页,供发布前预览。

脚本位于此文件旁的 scripts/ 目录中。在撰写旁白前请阅读 references/storyboard.md,在编写捕获脚本前请阅读 references/capture-guide.md。两者包含的经验教训可避免常见的重录问题。

0. 一次性设置

bash <skill>/scripts/setup.sh

此命令会在 ~/.cache/app-training-video/ 目录下创建(可通过 TRAINING_VIDEO_HOME 环境变量覆盖):

  • 一个私有的 Python 3.10–3.13 环境,包含固定版本的包;
  • Kokoro 语音模型(约 350 MB)及 Inter 字体文件,经过 SHA-256 校验;
  • Chromium 浏览器。

所有脚本都应使用该环境中的 Python 运行(PY=~/.cache/app-training-video/venv/bin/python),并传递故事板路径。如果模型文件已存在于其他位置,可先设置 MODEL_SOURCE=<dir> 以复用它们。ffmpeg 已通过 imageio-ffmpeg 集成;不会在系统中全局安装任何东西。

1. 了解应用和受众

在编写任何内容之前,请亲自试用应用(或阅读其用户指南),明确以下几点:

  • 谁观看: 新客户、现场员工、内部用户。
  • 他们必须掌握的一个工作流程: 从输入到结果。
  • 可以展示哪些演示数据: 确保安全。
  • 如何以干净状态启动应用: URL 或启动命令,以及全新的数据文件夹或演示账户。
  • 品牌信息: 公司名称、产品名称、版本号、Logo PNG 图片、强调色、结尾画面上方的联系信息。

对于无法找到的信息,请向用户询问。完整工作流程的视频时长建议为 6 到 7 分钟,单一功能则为 60 到 90 秒。

2. 编写故事板

将 assets/storyboard.example.json 复制到项目旁,命名为 storyboard.json,并按照 references/storyboard.md 编写。简要说明:

  • 每个片段时长 10–35 秒;
  • 章节使用 "n · Title" 格式,每个章节的第一个片段设置 card: "chapter";
  • 包含 intro 和 outro 卡片;
  • 缩写需要在 speech 中拼读出来,并通过 caption_replacements 恢复为书写形式。

在录制前将旁白展示给用户:现在修改成本很低,后期更改则代价高昂。

3. 生成旁白

$PY <skill>/scripts/narrate.py storyboard.json

此命令会打印每个片段的时长。它只重新朗读文本发生变化的片段。如果发音很重要,可以试听 video-build/audio/ 中的一两个 WAV 文件,调整拼写后重新运行。

4. 编写并运行捕获脚本

将 scripts/capture_template.py 复制到故事板旁,命名为 capture.py,设置技能 scripts/ 目录的路径,然后按照故事板顺序为每个录制的片段编写一个 with rec.segment('<id>'): 代码块。在该代码块内部,精确执行旁白描述的操作:

  • rec.click、rec.hover、rec.type、rec.drag、rec.scroll、rec.park;
  • 在耗时的操作周围使用 rec.cut(),并等待可见结果。

录制器拒绝非空的 frames/ 文件夹,因此旧帧永远不会混入。

$PY capture.py storyboard.json

每个片段都会打印其录制时长与旁白时长。如果遇到第一个出错的步骤、任何页面错误或未被录制的片段,则运行失败(状态为 incomplete)。修复出错的步骤,清空 video-build/frames/,然后重新运行。

5. 渲染与审查

$PY <skill>/scripts/render.py storyboard.json
$PY <skill>/scripts/review.py storyboard.json

输出文件位于构建文件夹中:

  • <output_name>.mp4
  • .srt 字幕文件
  • -chapters.txt(可粘贴到 YouTube 描述中)
  • -poster.jpg
  • -timeline.json
  • -review.jpg:每个片段一张静态截图。

打开接触页并仔细查看,同时抽样检查 MP4 文件本身。检查以下内容:

  • 每个片段中显示的是正确的界面;
  • 没有错误横幅、空白图表或无关对话框;
  • 光标从未遮挡正在解释的内容;
  • 字幕阅读正确。

选择器可能匹配但屏幕内容错误,因此在宣布视频完成前必须进行此检查。

6. 交付

向用户提供 MP4 文件、SRT 字幕文件(多数播放器在文件名匹配时会自动加载)以及章节列表。注明视频时长和文件大小。发布时,将 MP4 和 SRT 一同上传。请保留 storyboard.json 和 capture.py 与项目在一起:下次 UI 变更后,重新运行步骤 4–5(如果措辞也更改了则运行步骤 3)。

故障排除

症状解决方法
Need Python 3.10–3.13安装 python3.12,或在运行 setup.sh 前设置 PYTHON=
launch() 超时但应用已启动应用缓冲了输出:使用 python -u 运行 Python 服务器,或检查 ready 正则表达式
Chromium 在 Linux 上启动失败$PY -m playwright install --with-deps chromium
定位器超时或匹配到两个元素将范围限定到一个区域,或使用 get_by_role 配合 exact=True(参见捕获指南)
片段时长远大于旁白时长某些慢操作未包含在 rec.cut() 中
发音错误在 speech 中重新拼写,添加 caption_replacements 规则,重新运行 narrate.py
字幕不同步字幕时间跟随旁白长度:缩短长句,或拆分片段

相关技能