Communitygithub.com

AutoZoom 演示视频生成器

将项目中任何功能、页面或仪表板转换为精美的 AutoZoom 风格演示视频(基于 Remotion)。使用项目自身代码重建(或导入)产品 UI,然后在壁纸桌面上用 AutoZoom 平滑自动缩放摄像机、真实感的鼠标光标和点击、聚光灯、打字动画、键盘按键、逐字字幕、提示消息和录制芯片进行“拍摄”,最终渲染为 MP4。自动安装 Remotion。适用于需要演示视频、功能导览、产品/发布视频、新手引导动画、首页英雄视频、或任何 AutoZoom 风格的内容。

AutoZoom 演示视频生成器 是什么?

AutoZoom 演示视频生成器是一个 AI 辅助工具包,旨在帮助开发人员从其现有项目中直接创建高质量的产品演示视频。它自动读取项目组件的真实代码,将其重建为 React 组件(在 Remotion 框架内),然后模拟屏幕录制:摄像机自动缩放聚焦于每个操作,并添加逼真的光标移动、点击效果、聚光灯、打字动画、键盘按键、逐字字幕、提示消息和录制芯片图层。该工具支持所有技术栈(通过重新构建 UI 的方式),但也为 React 项目提供了直接导入真实组件的最高保真度选项。它通过一个集中的故事定义文件(story.tsx)来管理时间线、摄像机位置、光标路径和字幕;提供标准的 AutoZoom 风格动作规则(平滑缩放、光标先行、保持清晰节奏);并集成了一组调试工具(如调试网格)帮助精确测量像素坐标。最终输出为 MP4 视频,并且可以选择通过 @remotion/player 嵌入到网站中。目前该技能已在 Claude Code 平台上实现,但对于拥有适当 Node.js 环境的其他平台也可手动使用。它适合用来制作功能导览、产品发布视频、新手引导动画、首页英雄视频等场景,特别强调保持产品真实外观(字体、颜色、数据)和避免过度动画效果。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/6space7/autozoom-demo-skill/tree/HEAD/skills/autozoom-demo-scenes

在你喜欢的 AI 中提问

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

文档

AutoZoom 演示视频

你位于用户的项目中。阅读该功能的真实代码,将其屏幕重建为 Remotion 项目中的 React 组件,并以 AutoZoom 录制屏幕的方式“拍摄”:摄像机自动缩放聚焦于每个操作。代码构建的屏幕优于截图:文字键入真实输入框,行滑动进入,按钮改变状态,且在任何缩放级别下都保持清晰。

此技能包含的文件:

  • scripts/setup.mjs 创建 Remotion 项目并安装(Remotion + React)。
  • assets/remotion-template/ 是它复制的内容:自动缩放摄像机、窗口、光标、聚光灯、覆盖层以及一个示例屏幕和故事。每个演示只需修改 src/story.tsx 和 src/screens/*。
  • references/story-api.md 记录了每个故事字段、屏幕钩子以及如何测量位置。在编写故事前请阅读它。
  • references/style.md 是 AutoZoom 的外观:帧、动画和覆盖层。

工作流程

1. 确定故事

就观看者应学到的一个要点达成一致,用一句话概括("搜索任意指标,然后一键分享")。时长保持在 6–15 秒 和 2–4 个节拍。一个视频只讲一个想法:如果有两个功能,请制作两个视频。仅当要展示的功能不明确时才询问;否则选择最令人印象深刻的流程。

2. 阅读项目

找到演示要展示的内容:

  • 路由、页面或组件及其子组件;
  • 设计令牌:Tailwind 配置、CSS 变量、主题文件;
  • 字体、图标库、Logo;
  • 真实的示例数据:fixtures、seeds、Storybook stories、mocks、tests。

永远不要发明不同的外观。演示必须像他们的产品。

3. 设置 Remotion

node <skill-dir>/scripts/setup.mjs demo     # 创建 ./demo 并安装它

重复运行是安全的。将 demo/ 添加到项目的工作区,或将其独立放置。

4. 构建屏幕(demo/src/screens/<Name>.tsx)

在故事视口(默认 1440 × 900,类似浏览器窗口)中绘制它。根据项目情况选择合适的方式:

  • A. 导入真实组件(React 项目)。 保真度最高。适用于组件是展示性组件的情况。给它们静态的 props 和数据,并用桩值包裹它们所需的任何 providers(主题、路由、查询客户端、i18n)。永远不要让它们从网络获取数据或读取认证信息。确保别名解析并加载它们的样式;参见 references/story-api.md › "使用项目自己的组件"。
  • B. 重新构建(任何技术栈:Svelte、Vue、Angular、原生,或具有较重运行时依赖的 React)。 将页面移植到 React,使用相同的结构、类名或值、颜色、圆角、间距、字体、图标和副本,直接从源代码读取。只包含屏幕上可见的内容。

无论哪种方式:

  • 使用项目中的真实数据(名称、数字、状态),永远不使用 lorem ipsum。
  • 让故事目标元素处于已知位置。布局好它们以便可以描述其框,或使用调试网格(步骤 6)测量。
  • 使屏幕使用 src/lib/hooks.ts 中的钩子(useTyped、useAfter、useProgress、usePop、useCount)自我动画。将帧号作为 props 从故事传入,这样时间线就位于一个地方。src/screens/MockDashboard.tsx 是实例。

5. 编写故事(demo/src/story.tsx)

以帧为单位(fps 60)用注释开始时间线:

0–60     概览;光标移到搜索框,点击(58)
60–130   摄像机缩放到搜索框
140–260  查询自行输入;字幕 1
268      ↵;结果更新
280–345  摄像机拉回到结果
...      摄像机 + 光标移动 → 点击 → 结果 → 提示;字幕 2
520–600  摄像机平滑拉远

然后填充 camera、cursor、clicks、keys、captions、toasts 和 spotlights,全部以屏幕像素为单位。关闭 rec:角落的覆盖层在缩放时位于应用上方。字段参考见 references/story-api.md。

6. 检查静态帧,然后渲染

cd demo
npx remotion still Demo out/f.png --frame=150    # 查看关键帧(读取 PNG)
npm run studio                                   # 为用户提供实时预览
npm run render                                   # → out/demo.mp4

在故事中设置 debug: true 以在屏幕上绘制带标签的 100px 网格,以便从静态帧中读取位置。在渲染前关闭它。在每个节拍检查静态帧:缩放时主题完整在帧内,光标尖端位于目标上,文字可读,覆盖层不遮挡操作。

7. 交付

给用户 MP4 路径并显示一两个帧。可选地使用 @remotion/player 将实时组合嵌入到他们的站点上(参见 references/story-api.md)。

动画规则(AutoZoom 风格)

  • 自动缩放摄像机: 要么是整个窗口(1×),要么是清晰的近景(1.6–2.2×),绝无中间状态:1.1–1.5× 的缩放只会裁剪窗口并看起来破碎。缩放到重要区域,保持,直接移动到下一个目标,最后回到 1×。移动持续 60–100 帧;保持至少持续 50 帧。使用 ease: 'smooth'(默认)用于移动,'snap' 仅用于快速到达。无运动模糊。
  • 光标: 先到达,然后点击(按下凹陷 + 波纹,在 clicks 中的每一帧自动发生),然后结果在 2–6 帧后显示。打字时,将其稍微移开,使其不覆盖文字。
  • 节拍顺序: 摄像机开始移动 → 光标到达 → 点击 → 状态变化 → 提示或按键 → 字幕传达含义。
  • 字幕: 像讲解员会说的话,每行 3–6 个词,每个视频最多两行。
  • 覆盖层(字幕、按键、提示、REC)保持在摄像机外部:它们不缩放,且从不遮挡操作。
  • 克制: 使用一种强调色,没有彩纸、旋转、弹跳文字。产品是主角。

质量检查清单

  • 看起来像他们的产品:相同的字体、颜色、副本和数据。
  • story.tsx 顶部有时间线注释;帧号来自一个统一位置。
  • 每个节拍都用静态帧检查过;缩放时无重要内容被裁剪或被覆盖层遮挡。
  • 光标准确落在目标上;点击发生在结果之前。
  • 文字在 1080p 下可读;字幕简短。
  • debug 已关闭,渲染无错误完成。

相关技能