Communitygithub.com

Walkthrough Video(导览视频生成)

为 Web 应用生成带旁白、字幕和开场幻灯片的演示视频。Playwright 驱动真实应用,Kokoro 本地语音朗读脚本,FFmpeg 合成 1080p MP4 和 .srt 字幕文件。当用户需要产品演示视频、带旁白的屏幕录制、解释说明或产品导览视频、功能演示或案例研究视频时使用——即使他们从未提及 Playwright、语音或字幕。也可用于使用本工具包重新录制或编辑已有的导览视频。

Walkthrough Video(导览视频生成) 是什么?

Walkthrough Video 是一个完全本地运行的 AI Agent 技能,用于将运行的 Web 应用自动转化为带旁白和字幕的演示视频。它通过 Playwright 对真实应用进行录制,使用 Kokoro 离线语音合成生成旁白 WAV 文件,并利用 FFmpeg 完成视频合成、字幕叠加和音频混合,最终输出 1080p 的 MP4 文件及对应的 .srt 字幕。该技能支持 Claude Code、Cursor、Codex 等 AI Agent 开发环境,工作流程分为三个门控阶段:故事板(设计 8-12 个场景)、配音(生成分句文本并语音合成)、录制与合成(生成片段、合成视频)。用户可以通过修改 `scenes.mjs` 和 `speak.py` 自定义场景和发音。该技能强调隐私保护,要求使用测试账号、不处理真实凭证,并提供了丰富的故障处理经验,如使用 `think()` 去除等待、保留幻灯片底部 200px 给字幕等。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Hamza-Akhtar008/claude-walkthrough-video/tree/main/skills/walkthrough-video

在你喜欢的 AI 中提问

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

文档

Walkthrough Video(导览视频生成) 是做什么的?

将正在运行的 Web 应用转化为带有旁白、字幕和开场幻灯片的高清演示视频(MP4 + .srt),且当应用更新后可重新生成。整个过程全部在本地运行:无需视频编辑器,无需付费服务。

narration text -> local voice -> one WAV per scene + caption timings
real app -> Playwright scenes -> clips + marker times   -> assemble.py -> walkthrough.mp4 + .srt

工作原理:录制的画面来自真实应用,因此始终真实可信;录制时会自动剪掉慢速步骤(如 AI 响应、页面加载);每个场景记录的“标记”让合成器能将关键画面与对应的语音文字精确对齐。

准备工作

  1. 仅询问缺失的信息:应用是什么、视频必须展示什么、谁观看、目标时长(2 至 4 分钟效果最佳)、基调。
  2. 检查工具(详情见 references/setup.md):Node 20+、带 Chromium 的 Playwright、FFmpeg(支持 xfade、zoompan、loudnorm、libx264)、Python 3.11 或 3.12(带 kokoro-onnx)。将语音模型(约 350 MB)安装到仓库外部,例如 ~/video-tools。
  3. 将工作文件复制到用户项目中,并确保生成的文件不被 Git 追踪:
    mkdir -p e2e/video-kit && cp -R <this skill>/scripts/. e2e/video-kit/ && cp <this skill>/templates/*.mjs e2e/video-kit/
    printf '\ne2e/video-kit/clips/\ne2e/video-kit/vo/\ne2e/video-kit/build/\ne2e/video-kit/*.mp4\ne2e/video-kit/*.srt\ne2e/video-kit/spec.json\ne2e/video-kit/.*.json\n' >> .gitignore
    
    脚本会将其输出写到自身所在目录,因此需要复制过去而不是从当前位置运行。
  4. 阅读 references/toolkit-api.md 一次。它记录了录制辅助函数和 PLAN 语法。不要修改 rec.mjs、speak.py、overlays.mjs 或 assemble.py;只编辑指南中指定的部分。

工作流程:三道门

在每个门控处停下来等待用户确认。在录制之前修改措辞和结构成本很低,录制之后则代价高昂。

门控 1:故事板。 查看项目(文档、路由、现有的 Playwright 测试),建议 8 到 12 个场景。每个场景说明:屏幕上显示什么、旁白文本(20 到 35 个词,平实语言)、以及如何录制。如果用户需要背景上下文,可以包含开场幻灯片:问题、已完成或审计的内容、解决方案和技术栈。不要描述应用实际未做的事情;不确定时要询问。

门控 2:措辞与语音。 编写 chunks.txt,格式为 scene|text 行,每行约 12 个单词以内(每行将成为一条字幕)。在 speak.py 的 PRONOUNCE 中添加产品名称和缩写。运行 python speak.py 并报告每个场景的时长。用户需要试听并在录制前批准。

门控 3:录制、合成并检查。

  1. 基于 scenes.template.mjs 编写 scenes.mjs,每个场景一个片段,命名为 scene-N 以匹配默认计划。在后台逐个录制场景:node scenes.mjs <name>。仅重新录制失败的场景。
  2. 如果使用了幻灯片,渲染幻灯片(使用 slides.template.mjs),然后在 assemble.py 中填写 PLAN 和 LABEL:哪个片段对应哪个场景,以及哪个标记落在哪一行旁白上。
  3. 运行 python assemble.py all。它将生成 walkthrough.mp4 和 walkthrough.srt。
  4. 通过一个联系表(每个场景一到两帧,以平铺方式展示)而不是多个独立图片来检查结果:名称、日期、字幕、无截断、无隐私信息。修正后重新合成并交付。

重要规则

  • 隐私。 使用演示或测试账号。模糊或遮挡任何显示真实人物、电子邮件、电话号码、账户名、密钥、ID、令牌或账单信息的内容(使用 opts.cover、opts.init)。绝不要处理密码:当某个场景需要登录时,让用户在可见浏览器中手动登录一次(使用 templates/auth.template.mjs),然后复用保存的会话。绝不要在摄像头前输入或显示密码或双因素认证码。保持 .env、保存的登录信息和浏览器配置文件不被 Git 追踪。
  • 不要操作真实账号。 永远不要点击任何会发送、发布、安排或删除真实账号中内容的操作。将鼠标悬停在按钮上,说明它的功能。
  • 不要虚构功能。 只描述代码和运行中的应用实际实现的功能。
  • 语音和麦克风音频不能通过浏览器捕获。 展示界面并说明发生了什么。
  • 在启动服务器前检查端口;停止你启动的所有服务。 对于超过一分钟的任务(录制、语音合成、合成),在后台运行并等待完成,而不是通过循环轮询。
  • 回复保持简短。 报告你做了什么、文件路径以及你无法验证的任何内容。

实际使用经验

在编写场景前阅读 references/lessons.md。简要总结:验证种子数据确实存在(随机测试数据可能与旧数据冲突);等待证明慢速页面已完成的定位器;清除搜索记忆的过滤器后再输入;关闭弹窗;直接链接到记录;将非必要的修饰逻辑包装起来,以免单个失败导致整个场景失败;保持幻灯片底部 200px 区域空白以显示字幕。

文件

  • scripts/rec.mjs 录制器:平滑光标移动、点击波纹、缩放、标记、think() 用于剪除等待时间。
  • scripts/speak.py 将旁白文本转为 WAV 和字幕计时。
  • scripts/overlays.mjs 将字幕、标签和标题卡片渲染为图片。
  • scripts/assemble.py 根据语音重新调整片段时长、拼接、叠加、混合音频、生成 MP4 和 SRT。
  • templates/ 场景、登录保存、幻灯片和旁白文件的起始模板。
  • references/ 工具包指南、设置和经验教训。

当出现故障时

  • 语音失败并出现 espeakng_loader/phontab: No such file:请参阅 references/setup.md。
  • 场景因等待文本超时:页面可能尚未完成绘制,或者记忆的过滤器隐藏了目标元素。在失败时截取屏幕截图并查看。
  • 视频中出现等待时间:将慢速步骤包装在 think() 中。
  • 画面和声音不同步:重新录制场景,因为标记时间会随着脚本变化而改变。

相关技能