product-recording 是 remotion-dev/remotion 仓库中的内部技能,用于把用户亲自录制的产品演示操作,转换成 packages/brand 中可编辑的 Remotion 组合,并最终上传托管。它不代替用户录制,而是负责环境准备、取景建议、录像导入和资源迁移。
用途 该技能覆盖产品演示录制的完整链路:准备浏览器与 Studio、预设镜头、把用户的原始录制导入为组合、再把媒体托管并更新引用。它面向 Remotion 内部工作流,应保留在 .agents/skills 目录中。
主要能力
- 环境准备:使用 canvas-capture-extension 在持久目录中构建并安装扩展;重建后需通过 chrome://extensions 重新加载,仅构建成功不会刷新 Chrome 已加载的扩展。使用已启用 Canvas Draw Element 的兼容 Chrome,避免干扰其他标签页和未完成的录制。
- Studio 启动与定位:按 studio 技能准备依赖与构建,从目标组合所属包启动 bunx remotion studio --no-open,并使用该命令实际打印的 URL,不能假设 3000 端口属于当前检出。打开组合时在查询串加入 studioPixelRatio=4,并保留其他 URL 参数,例如 http://localhost:3001/RollerSkiRoughCut?studioPixelRatio=4;该参数提高的是 Studio 画布后端分辨率,不决定扩展输出分辨率。
- 镜头预设:按需调整视口、时间线高度/缩放、播放头和侧栏,再取景。扩展激活后可用 setup_shot 和 get_shot 这类 WebMCP 工具,选择视口、单个可见元素或矩形区域,并用 get_shot 配合 preview: true 检查静帧;裁剪范围以视口 CSS 像素固定,窗口或布局变化后需重新取景。工具不可用时,改用 Entire page 或 Select area 控件并目视确认,同时注意输出缩放与尺寸独立于 studioPixelRatio。
- 交接录制:记录 Downloads 中现有录制文件及其修改时间,便于后续识别新文件;保持镜头就绪但不开始录制,由用户点击 Record、执行操作、停止并选择 Download recording。
- 导入录像:根据文件名和修改时间在 ~/Downloads 中识别新的完整录制,排除 .crdownload 等未完成文件;若存在多个可能文件则询问。保留含 REMOTION_CAPTURE_DATA 元数据的原始 MP4/WebM,导入前不得转码。使用 import-canvas-capture 指向 packages/brand 及其组合注册文件(当前为 src/Root.tsx),选择未使用的描述性组合 ID,例如:
node ../cli/remotion-cli.js experimental-codemod add-canvas-capture
/absolute/path/to/downloaded-capture.mp4
--composition-file src/Root.tsx --id TimelineRecording 导入完整镜头时应检查录制尺寸并传入匹配的 --width 和 --height,因为默认 1920×1080 组合可能裁剪更大的录制。保留原下载与既有组合/资源,并在后续交接前检查生成的组件、注册、复制的公共资源及依赖变更。 - 卸载托管:使用 offload-r2 将导入的录像上传到 remotion.media,校验公共对象的 SHA-256 与本地文件一致后,把组合的本地资源引用替换为托管 URL;仅在校验后删除仓库内媒体副本,保留原始下载。最后报告组合 ID、托管 URL 和变更文件。
使用方式 该技能通过 Remotion 仓库内的代理技能机制调用,依赖 canvas-capture-extension、studio、import-canvas-capture、offload-r2 等配套技能,并使用 bunx、Chrome、Remotion CLI 和 WebMCP 工具。使用前需已检出 Remotion 仓库,并明确目标组合及其所属包。
适用场景 适合需要真实用户操作录屏的产品演示、时间线操作展示或 Studio 交互录制,并希望录制结果作为可编辑 Remotion 组合纳入品牌资源包、最后托管到 remotion.media 的内部开发场景。
限制 这是 Remotion 内部工作流,不是通用录屏产品。录制开始与停止由用户控制;在用户完成录制前,不得用旧下载代替或声称已导入。导入前不得转码,否则会丢失可编辑光标元数据。URL、端口、组合位置和注册文件均需按实际仓库核对,不能假设固定值。公开收费、平台支持范围等信息暂未提供。