mcpField
B
browser-video-recording

browser-video-recording

github.com/mengto创意与媒体7.1k1.4k 次安装3 天前更新
代码仓库

关于 browser-video-recording

这项技能通过 Codex 内置浏览器获取真实浏览器截图,再用附带的 Python 渲染器生成 MP4 演示视频。原生录制 MCP 为可选项。

主要功能

  1. 01内置浏览器截图流程
  2. 02将截图渲染为 MP4
  3. 03光标与镜头运动控制
  4. 04可选的原生录制器指南
  5. 05视频输出验证步骤

适用场景

  1. 01制作网站操作演示视频
  2. 02将浏览器交互状态制作为演示
  3. 03原生录制不可用时渲染视频
  4. 04检查输出分辨率与帧率

MCP 相关

该流程使用 Browser skill/MCP 控制内置浏览器并截取画面。原生录制 MCP 为可选项,仅在可调用且确有用途时使用。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mengto/skills --skill browser-video-recording

安装后在 Claude Code 中输入/browser-video-recording确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

demo/
expected-output.md
index.html
input.md
PROMPT.md
scripts/
render_browser_demo.py

详细介绍

浏览器视频录制

依赖模型

将工作流分为三个层次:

  1. 浏览器控制和源帧:通过 Browser skill/MCP 使用 Codex 内置浏览器。用户要求使用 Codex 浏览器,或项目明确要求不要使用 Chrome 时,不要使用 Chrome。浏览器层提供真实截图,以及真实的点击、滚动和导航状态。
  2. 本地视频渲染器:使用随附的 Python 脚本,将截图渲染为 MP4,并添加自然的 macOS 光标、轻微的点击缩放效果和舒缓的缩放跟随取景。此过程不需要屏幕录制 MCP。
  3. 可选的原生录制器集成:仅当原生录制 MCP 可调用,且明确适用于启动/停止实际应用录制或打开生成的项目时,才使用它。如果不可用、受到阻止,或无法捕获 Codex 浏览器界面,则改用截图转视频渲染器,并说明回退方案。

独立执行

只要安装了完整的 skill 文件夹(包括 scripts/render_browser_demo.py),其他 Codex 实例就能使用此 skill 执行 Python 渲染。Codex 应运行随附脚本,而不是重新创建渲染器。

所需的本地工具:

  • python3
  • Python 包 Pillow
  • ffmpeg 和 ffprobe

可选的 macOS 光标提取功能使用 swift 和 /usr/sbin/screencapture。如果这些工具不可用,请通过 cursor_asset 提供透明 PNG,并在配置中设置 cursor_hotspot。

如需获取新的 Codex 内置浏览器截图,仍需使用 Browser skill/MCP。如果不可用,请使用最佳可用的浏览器自动化截图来源,并说明回退方案。

可选的原生录制器支持

对于原生应用录制,请确认 MCP 支持:

  • 使用 frameRate: 60。
  • 使用 resolutionRawValue: "4K"。
  • 区域录制使用 ratioPresetRawValue: "4:3"。
  • 裁剪嵌入式浏览器视口时,使用明确指定的 selectedRegionOnScreen。

对于本地渲染器,4K 4:3 指 3840x2880。如果原生录制器提供 4K 枚举值,应将其视为应用端分辨率预设,并在通过该 MCP 录制时搭配 4:3 区域选择。

捕获工作流

首先使用 browser:control-in-app-browser。阅读其文档后,通过 Node/browser API 操作内置浏览器:

  • 将视口设为 1920x1440,以输出 4:3 4K 视频,然后在结束前恢复原设置。
  • 导航到指定页面,并实际执行点击、返回、搜索和滚动操作。
  • 每次重要状态变化后保存仅包含浏览器内容的截图。使用类似 01-results-top.png、02-after-card-click.png、03-back-results.png 的名称。
  • 记录每个点击/滚动目标的视口坐标。最终光标路径应落在这些坐标上,短暂停留、点击,然后移至下一个有意义的位置。

除非用户明确需要操作系统界面,否则避免使用桌面坐标自动化。Codex 浏览器可能无法提供可捕获的 macOS 界面;通过浏览器 API 获取截图是可靠的来源。

动效规则

让光标移动显得有目的性:

  • 使用稀疏且大多笔直的光标路径。
  • 点击前在目标上短暂停留。
  • 不要在无关的界面区域游移。
  • 点击后再呈现页面切换,而不是提前切换。
  • 仅使用轻微的点击反馈:缩放下压/回弹;除非用户要求,否则不要添加装饰性圆环。
  • 缩放跟随效果应比光标动作更平缓。镜头应对准点击的内容,而不是追随每次细微的鼠标移动。

默认视觉目标:

  • 使用从合成器提取的真实 macOS 指针,或现有的透明光标素材。
  • 光标缩放比例为 3.0,与演示录制编辑中常用的大尺寸光标样式一致。
  • 点击动画强度为 15,实现轻微的点击缩放下压效果。
  • 仅在水平速度产生旋转时使用,旋转强度最高为 8deg。

渲染脚本

使用 scripts/render_browser_demo.py 生成确定性的 60 fps、4:3、4K 输出:

python3 /path/to/browser-video-recording/scripts/render_browser_demo.py \
  --config /tmp/browser-demo-config.json \
  --output /tmp/browser-demo-4x3-4k-60fps.mp4

生成一个入门配置:

python3 /path/to/browser-video-recording/scripts/render_browser_demo.py --write-template

配置包含:

  • shots:将状态名称映射到截图 PNG 路径。
  • scene_starts:[time, shotName, transition] 条目。
  • cursor_keys:[time, x, y] 视口坐标条目。
  • camera_keys:[time, x, y, zoom] 条目。
  • click_times:点击时间戳。
  • duration、fps、output_size、source_size、cursor_scale。

推荐默认值:

{
  "fps": 60,
  "output_size": [3840, 2880],
  "source_size": [1920, 1440]
}

如果未提供 cursor_asset,脚本会短暂显示纯色叠加层,并使用 screencapture 将 macOS 当前真实光标提取到透明 PNG 中。这是本地渲染支持功能,不是 MCP 依赖项。

验证

务必验证交付的视频:

ffprobe -v error \
  -show_entries stream=codec_name,width,height,r_frame_rate \
  -show_entries format=duration,size \
  -of json /path/to/output.mp4

至少提取一张视频中段的缩略图并检查:

ffmpeg -y -ss 8 -i /path/to/output.mp4 -frames:v 1 -update 1 /tmp/browser-demo-thumb.png

确认:

  • 分辨率符合所需输出,4:3 4K 通常为 3840x2880。
  • 帧率为 60/1 或等效值。
  • 时长符合要求。
  • 光标清晰可见、自然且位置准确。
  • 视频仅裁剪浏览器内容,不包含桌面。
  • 浏览器视口覆盖设置已重置。

评论

支持 Markdown