Communitygithub.com

exiao/skills

通过自动化浏览器交互并捕获帧来创建产品演示视频。适用于用户想要录制演示、产品导览、功能展示或Web应用的交互式视频时。支持Playwright CDP屏幕录制以进行高质量捕获,以及FFmpeg进行视频编码。

skills 是什么?

这是一个用于创建产品演示视频的AI agent技能,通过自动化浏览器交互并逐帧捕获来生成视频。用户可以直接要求agent“录制一个演示视频”,技能便会自动规划演示流程、使用Playwright的CDP屏幕录制捕获帧,最后通过FFmpeg编码成视频。该技能支持OpenClaw浏览器环境,并提供了可定制的记录脚本(`scripts/record-demo.js`)和编码脚本(`scripts/frames-to-video.sh`),支持MP4、GIF、WebM等多种格式输出。它特别适合需要快速制作Web应用演示、产品导览或交互式教程的场景,但需注意上下文限制(200k token)以及避免多个agent并行干扰同一浏览器标签页。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/exiao/skills/tree/HEAD/video/demo-video

在你喜欢的 AI 中提问

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

文档

Demo Video Creator

通过自动化浏览器交互,创建精美的产品演示视频。

概述

  1. 规划 演示序列(页面、交互、时间)
  2. 录制 使用 Playwright CDP 屏幕录制捕获帧
  3. 编码 通过 FFmpeg 合成视频

快速开始

前置条件

  • OpenClaw 浏览器正在运行(browser action=start profile=clawd)
  • 应用可通过浏览器访问(localhost 或远程)
  • 已安装 FFmpeg 用于编码

录制工作流

  1. 如果 OpenClaw 浏览器未运行,请先启动
  2. 手动或通过 browser action=open 导航到应用
  3. 根据目标应用自定义 scripts/record-demo.js
  4. 运行:node scripts/record-demo.js
  5. 编码:bash scripts/frames-to-video.sh

规划演示

参见 references/demo-planning.md 了解以下指导:

  • 如何构建演示序列
  • 时间与节奏
  • 交互模式
  • 如何使演示更具吸引力

脚本

scripts/record-demo.js

模板化的 Playwright 脚本,实现:

  • 通过 CDP 连接到 OpenClaw 浏览器
  • 启动屏幕录制捕获(JPEG 帧)
  • 执行演示序列(导航、点击、悬停、输入)
  • 将帧保存到输出目录

针对每次演示进行自定义:

  • DEMO_SEQUENCES 数组 — 定义页面和交互
  • OUTPUT_DIR — 保存帧的目录
  • FRAME_SKIP — 跳过第 N 帧(值越小帧越多)

scripts/frames-to-video.sh

FFmpeg 编码脚本,提供预设:

  • mp4 — H.264,质量/大小平衡良好(默认)
  • gif — 用于嵌入的动画 GIF
  • webm — VP9,文件更小

用法:./frames-to-video.sh [输入目录] [输出名称] [格式]

交互模式

// 导航
await page.goto('http://localhost/dashboard');
await page.waitForTimeout(2000);

// 点击元素
await page.locator('button:has-text("Create")').click();
await page.waitForTimeout(500);

// 悬停(显示工具提示、悬停状态)
await page.locator('.card').first().hover();
await page.waitForTimeout(1000);

// 输入文本
await page.locator('input[placeholder="Search"]').fill('query');
await page.waitForTimeout(500);

// 按键
await page.keyboard.press('Enter');
await page.keyboard.press('Escape');

// 滚动
await page.evaluate(() => window.scrollBy(0, 300));

技巧

  • 时间控制:页面加载 2 秒,交互之间 0.5-1 秒,展示结果 1.5 秒
  • 帧跳过:3-5 用于流畅视频,8-10 用于较小文件
  • 质量:85-90 JPEG 质量可平衡体积和清晰度
  • 分辨率:浏览器窗口大小决定输出分辨率
  • 循环:GIF 应无缝循环 — 结束位置与开始位置一致

注意事项

  • 截图 vs 视频:如果用户只需查看某个功能,请直接内联截图,而不要录制完整视频。先检查 browser action=tabs profile=clawd — 如果应用标签页已打开,直接截取截图,无需子 agent。
  • 上下文限制:包含大量截图的录制循环会快速消耗上下文(200k token 限制)。保持范围紧凑:先录制所有帧,再进行分析 — 切勿将帧捕获与分析交错进行。如果上下文紧张,将帧写入磁盘并在单独的通道中分析。
  • 并行 agent 风险:不要同时针对同一浏览器标签页启动多个演示 agent — 它们会相互干扰导航状态。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能