Communitygithub.com

memex-lab/product-launch-video-skill

使用 Remotion(React)设计和制作惊艳、高影响力的产品发布视频。当用户想要创建产品发布视频、宣传视频、演示视频、功能公告视频、品牌揭晓或任何由动态图形驱动的产品展示时,请使用此技能。

product-launch-video-skill 是什么?

该技能专为利用 Remotion(一个基于 React 的框架)创建电影级、高影响力的产品发布视频而设计。其核心理念强调“有意图的装饰”、“感官翻译”和“对比的掌控”,确保每个视觉元素都具有目的性,让观众在接触产品前就能感受到它。该技能遵循一个结构化的五阶段工作流程:从深入了解产品(阶段 0)开始,接着建立独特的美学方向(阶段 1),创建详细的动画分镜脚本(阶段 2),最后在阶段 3 和 4 中进行开发和交付。它支持多种视频类型,从简短预告片到深度产品演示,并能适配各种发布渠道,如网站、社交媒体和投资者演示。该技能还集成了严格的检查清单,以避免常见的 AI 生成视频陷阱,并强制要求实现分镜脚本作为“单一事实来源”,以确保精确、高质量的最终输出。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/memex-lab/product-launch-video-skill/tree/HEAD/skills/product-launch-video

在你喜欢的 AI 中提问

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

文档

产品发布视频

设计和制作电影级、高影响力的产品发布视频,让观众在接触产品之前就能感受到它。

此技能不局限于单一美学。视觉风格会适应产品的基因——关键在于,无论选择哪种方向,执行都要体现出运动、光照、构图和视觉叙事方面的绝对顶尖水准。

核心原则

三个原则指导每一个决策:

有意图而非装饰。 每一个视觉元素、运动和光源都必须有目的。无论是极简主义还是极繁主义,没有东西只是为了填补空间而存在。一切都在推动叙事、突出功能或唤起特定的情感。

感官翻译。 一个好的发布视频能让观众感受到产品。将抽象概念(速度、安全、舒适)和物理特性(重量、纹理、响应性)转化为视觉和听觉体验。如果产品很快,观众应该感受到速度。如果它很优雅,观众应该在每一帧中感受到精良。

对比的掌控。 优秀的视频在并置中蓬勃发展。利用规模(微距细节与全景广角)、节奏(狂热能量与慢动作揭示)、光照(阴影与高光)和音频(静默与重拍)的对比,创造吸引注意力的动态张力。

何时使用

  • 创建产品发布或公告视频
  • 制作具有电影画质的演示或功能导览
  • 制作品牌揭晓或预告片
  • 制作带有动态图形的动画产品展示
  • 为任何产品进行视频结构的草图和规划
  • 将产品视觉效果、照片或概念转化为视频叙事

阶段 0:了解产品

在进行任何视觉工作之前,深入了解你要展示的内容。这决定了后续的一切。

一次性向用户提问(不要零散地提问):

  1. 产品 — 该产品是什么?它做什么?它解决了什么问题?
  2. 受众 — 谁观看这个视频?开发者?消费者?投资者?内部团队?
  3. 核心信息 — 观众看完后最应该记住的一件事是什么?
  4. 基调 — 观众应该感觉到什么?(印象深刻 / 兴奋 / 平静 / 受启发 / 被赋能)
  5. 时长 — 多长?(15 秒预告片 / 30 秒广告 / 45-60 秒完整发布 / 90 秒以上深度展示)
  6. 素材 — 你有 Logo、产品图片、截图、录制文件、品牌颜色或字体吗?
  7. 旁白 — 视频是否需要解说?如果需要,用什么语言?对话角色有什么偏好(性别、语调、能量水平)?
  8. 参考 — 你欣赏哪些视频?(苹果发布会风格、Nike 产品电影、Stripe 开发者美学、俏皮的 Notion 氛围、奢侈品手表广告等)
  9. 发布背景 — 这个视频将发布在哪里?(落地页、X/Twitter、LinkedIn、YouTube、Shorts/Reels/TikTok、投资者演示、内部演示)。宽高比、字幕和节奏取决于此。

如果用户已在对话中提供了背景信息,请从已有内容中提取答案,并确认缺失的部分。

门控:在获得(来自用户或从上下文中推断出的)以上全部 9 个问题的答案之前,不要进入阶段 1。如果提供了素材,请对其进行审计——列出每个可用素材,并计划在能增强叙事的地方使用它们。并非每个素材都必须出现,但没有一个素材可以无理由地被忽略。


阶段 1:确立美学

这是最重要的创意决策。 美学必须感觉像是为这个特定产品设计的——而不是一个简单地替换了 Logo 的通用模板。

步骤 1.1:选择视觉方向

根据产品的个性和用户偏好的基调,提出 2-3 个不同的美学方向。每个方向应包括:

  • 名称 — 一个简短、有感染力的标签(例如,“午夜精准”、“温暖模拟”、“电子脉冲”)

  • 氛围 — 2-3 句话描述的情感氛围

  • 调色板 — 4-5 种颜色及其十六进制代码和角色(背景、主色、强调色、文本色、高亮色)

  • 字体 — 来自 Google Fonts 或 Fontshare 的展示字体 + 正文字体配对(永远不要使用 Inter、Roboto、Arial 或系统字体)。字体必须体现产品的个性:

    • 优雅衬线体(例如,Playfair Display、Cormorant)→ 奢华、编辑感、高级
    • 粗体怪异无衬线体(例如,Space Grotesk、Satoshi)→ 科技、大胆、现代
    • 几何无衬线体(例如,Plus Jakarta Sans、General Sans)→ 简洁、可信赖、SaaS
    • 动态或可变字体(例如,Syne、Cabinet Grotesk)→ 青年文化、创意、俏皮
    • 等宽或代码字体(例如,JetBrains Mono、Fira Code)→ 开发者工具、终端美学

    字体是品牌声音的视觉化呈现。产品个性与字体不匹配会削弱所有其他设计决策。

  • 运动特征 — 事物如何运动(弹簧般干脆、平滑滑动、弹性弹跳、电影般的缓慢揭示)

  • 标志性元素 — 使本视频与众不同的一个视觉主题(渐变网格背景、玻璃态卡片、粒子场、几何图案、光线轨迹、电影级照片处理、带标注的产品特写等)

以简洁的卡片形式呈现,而不是大段文字。用户选择一个或混合元素。

反面例子(“AI 垃圾”检查清单)

避免这些通用 AI 生成视频的明显标志:

  • 深色背景上的紫色渐变(#1 陈词滥调)
  • 使用 Inter/Roboto/系统字体作为展示文本
  • 统一的时序——所有元素以相同的速度和延迟进入
  • 使用 emoji 作为图标
  • 没有深度或阴影、均匀照亮的场景
  • 带有相同动画的千篇一律的卡片网格
  • 与内容没有空间关系、只是“淡入”的文本
  • 只是纯色的背景

门控:向用户展示 2-3 个美学方向。在用户选择或确认方向之前,不要进入阶段 2。如果用户说“你来做吧”,选择最能匹配产品个性的方向,并在继续之前明确说明你的选择。


阶段 2:分镜脚本

分镜脚本是蓝图。每个场景必须证明其存在的合理性。

必须:在编写任何代码之前写下完整的分镜脚本。使用下面定义的 schema 将其保存为项目根目录下的 storyboard.json。对照本节末尾的分镜脚本审查清单进行验证。连续两个展示场景不得使用相同的布局或动画模式。

“无限视觉预算”规则

在构思分镜脚本时,不要将你的想象力限制在用户提供的原始素材上。

  • 将用户提供的 2D 素材(原始截图、扁平 Logo、基本照片)仅视为概念种子或基础纹理。
  • 评估叙事需求。如果故事需要更多的视觉多样性、补充环境或 B-roll 来构建更丰富的生态系统,请自然地将其纳入分镜。
  • 但是,仅当新的生成素材能积极服务于产品的叙事和视觉层级时才引入它们。不要仅仅为了复杂而生成素材。

叙事弧

产品发布视频遵循戏剧性结构,即使是很短的视频:

幕目的典型时长(30 秒视频)
钩子吸引注意力。提出问题、展示张力或以引人注目的视觉效果开场。3-5 秒
揭示引入产品。“英雄时刻”。5-8 秒
展示演示 2-4 个关键功能。每个都有其自己的视觉节拍。12-18 秒
高潮最令人印象深刻的时刻——全屏演示、戏剧性统计数据或“哇”的过渡。3-5 秒
结尾标志、标语、行动号召。留下持久印象。3-5 秒

对于较短的视频(15 秒),压缩为:钩子 → 揭示 → 结尾。 对于较长的视频(60 秒以上),用更多的功能节拍扩展展示部分,并在结尾前增加一个“社会证明”或“愿景”节拍。

在编写一行代码之前规划好视频结构。分镜脚本是创意愿景与技术执行之间的契约。

发布与信息流规则

  • 尽早展示产品。 在发布、演示和社交格式中,观众应在最初的 3 秒内看到产品、产品界面或明确的产品元素。仅当抽象钩子能立即解析到产品时才允许使用。
  • 为静音播放设计。 如果视频可能出现在信息流中,假设许多观众会在没有声音的情况下观看。关键声明、场景节拍、字幕和行动号召必须可见于屏幕,即使存在旁白。

视频元数据

在开始构建之前,记录这些决策:

  • 时长、帧率、分辨率 — 源自阶段 0
  • 发布背景 — 源自阶段 0。记录视频将发布的位置以及任何影响节奏、字幕、安全区域或交付物的约束。
  • 展示字体 + 正文字体 — 来自阶段 1 的美学方向(含字重)
  • 调色板 — 定义角色,而不仅仅是颜色:背景、表面(抬高元素)、主色(标题)、柔和色(次要文本)、强调色(行动号召/高亮)、高亮色(特殊时刻)。每个角色应有明确的使用规则。

叙事结构

选择最适合产品故事的结构:

  • 问题 → 解决方案 — 最适合解决明确痛点的产品。以问题开场制造张力,将产品作为答案揭示,展示功能,以“哇”时刻作为高潮,以行动号召结束。
  • 愿景 → 现实 — 最适合有抱负的产品或新品类。描绘理想的未来,承认差距,展示产品如何弥合它,用功能证明,结束。
  • 蒙太奇 → 焦点 — 最适合功能丰富的产品或重大更新。快速蒙太奇展示众多功能,暂停减速,深入介绍 2-3 个关键功能,返回蒙太奇展示广度,结束。
  • 预告片(15 秒或更短) — 用抽象视觉制造好奇,快速闪现产品片段,揭示标志 + 发布日期。

分镜脚本 Schema

分镜脚本保存为项目根目录下的 storyboard.json。这是单一事实来源——它驱动实现、旁白生成和计时。

{
  "meta": {
    "title": "产品名称和视频类型",
    "durationSec": "视频总时长(秒)",
    "fps": 30,
    "width": 1920,
    "height": 1080,
    "narrativeStructure": "problem-solution | vision-reality | montage-focus | teaser",
    "fonts": {
      "display": { "family": "Google Fonts / Fontshare 字体家族名称", "weights": ["700"] },
      "body": { "family": "Google Fonts / Fontshare 字体家族名称", "weights": ["400", "500"] }
    },
    "colors": {
      "background": "#hex - 基础背景",
      "surface": "#hex - 抬高元素,如卡片",
      "primary": "#hex - 标题和关键文本",
      "muted": "#hex - 次要文本和标签",
      "accent": "#hex - 行动号召和高亮",
      "highlight": "#hex - 特殊时刻和强调"
    }
  },
  "voice": {
    "enabled": "true 如果视频有旁白,false 如果纯音乐",
    "gender": "male | female | neutral",
    "age": "young adult | middle-aged | mature",
    "tone": ["用于 AI 语音搜索的特征数组:confident, warm, energetic, calm, authoritative, conversational, inspiring"],
    "accent": "American | British | neutral | other",
    "pace": "fast | moderate | slow"
  },
  "scenes": [
    {
      "id": "唯一的 kebab-case 场景标识符",
      "act": "hook | reveal | showcase | climax | close",
      "startSec": "绝对开始时间。相邻场景可重叠 0.2-0.5 秒用于过渡",
      "durationSec": "场景长度。如果存在旁白,必须能容纳约 2.5 词/秒的叙述",
      "purpose": "此场景存在的原因,它传达什么",
      "emotionalBeat": "观众应该感受到什么",
      "voiceover": "确切的叙述文本,如果没有旁白则为 null。旁白是计时骨干——视觉元素与关键词同步。并非每个场景都需要旁白",
      "layout": "元素的空间布局(草绘或描述位置)",
      "elements": "每个视觉元素及其描述、大小、颜色、位置",
      "animation": "每个元素:效果类型、延迟、时长、缓动函数",
      "camera": "视口移动(缩放、平移、视差)",
      "lighting": "光从哪里来,什么是亮的,什么在阴影中",
      "transitionOut": "此场景如何过渡到下一个"
    }
  ]
}

分镜脚本描述必须高度具体。禁止使用“酷炫过渡”或“元素动画进入”等模糊描述——它们为实现留下了太多解释空间,并导致通用输出。

每个元素的运动必须用精确的机制描述。不要写“标题出现”,而要写:“标题从 30px 以下以缩放 0.9→1 和模糊 8→0 在 0.5 秒内弹入,同时一道对角光束在 0.3 秒延迟时从文本表面从左到右扫过。”不要写“卡片动画进入”,而要写:“三张功能卡片从右侧以 150ms 交错级联进入,每张卡片以 translateX(40)→0、透明度 0→1 进入,并带有一个微妙的 3° 旋转,最终稳定到 0°。”

描述必须足够具体,以至于两个不同的开发者能从中产生几乎相同的实现。如果一个描述可能导致截然不同的视觉结果,那么它还不足够具体。

计时与节奏

节奏韵律。 一个节奏良好的视频在紧张与释放之间交替:

快 → 慢 → 快 → 慢 → 快 → 保持

钩子    揭示   功能   呼吸   高潮   结尾
(紧张)  (释放) (能量) (暂停) (顶峰) (解决)

a产品发布视频最糟糕的事情就是自始至终保持单一节奏。单调的节奏会使观众入睡,无论视觉效果多么美丽。

时长分配。 根据总时长按比例分配时间。比例比精确秒数更重要:

  • 15 秒预告片: 约 20% 钩子,约 50% 产品闪现,约 30% 标志揭示。没有时间深入介绍功能。
  • 30 秒广告: 约 10% 钩子,约 20% 揭示,约 45% 展示(2 个功能),约 10% 高潮,约 15% 结尾。
  • 45-60 秒完整发布: 约 8% 钩子,约 15% 揭示,约 50% 展示(3-4 个功能),约 12% 高潮,约 15% 结尾。
  • 90 秒以上深度展示: 约 5% 钩子,约 10% 揭示,约 55% 展示(4-5 个功能 + 1 个愿景节拍),约 15% 高潮,约 15% 结尾。

节奏工具

  • 加速 → 快速剪辑、相机抖动、压缩缓动(easeOut 如 0.5, 0, 0.5, 1),快速平移、脉冲音频
  • 减速 → 缓慢溶解、运动模糊、反曲缓动(easeInOut 如 0.65, 0, 0.35, 1),平稳摄像机推进、宽阔暂停、静默或氛围音景
  • 压缩与拉伸(Squash & Stretch) → 经过的节拍使用 transitionOut: "scale 1.1→0.8 with slight rotation" 然后立即反转,或使用基于持续时间的弹性缓动

门控:在编写任何代码之前写出完整的分镜脚本。对照审查清单进行验证。从阶段 1 到阶段 2 没有用户门控——分镜脚本是制作人必须执行的质量门槛。


阶段 3:开发

工作流:

  1. 读取 storyboard.json 并安装 Remotion 依赖:

    • 运行 npm init video 创建一个新的 Remotion 项目
    • 安装 @remotion/cli 和其他必需包
    • 使用 npx create-video 引导时,不要使用 blank 模板——选择一个提供合理文件结构的模板,如 javascript、typescript、next 或 still
  2. 从 storyboard.json 中的元数据创建主题配置(src/theme.ts 或 src/theme.js):

    • 导出字体、颜色和布局常量的配置对象
    • config.ts:导出硬件设置(still 与 video 组合器、分辨率、帧率、输出持续时间)
  3. 为场景构建组件,遵循指定的美学和故事板参数。在 src/ 中命名为:

    • Scene1_Hook.tsx、Scene2_Reveal.tsx 等。
  4. 安装并使用 @remotion/fonts API 加载 Google Font:

    • 使用 loadFont 加载 body 和 display 字体家族
    • 如果字体来自 Fontshare,则从 CDN 加载自定义 CSS
  5. 在 Root.tsx 中将所有场景组合成一个序列,使用从故事板计算出的精确持续时间:

    • 使用 <Sequence> 组件
    • 使用 <TransitionSeries> 进行基于过渡的序列
    • 过渡应在故事板中描述,并使用 @remotion/transitions 包中的预设
    • 每个序列的开始时间必须与故事板中的 startSec 匹配
  6. 如果启用了旁白,生成旁白音频:

    • 如果用户提供了录制的音频,将其分割成场景文件并使用 @remotion/media-utils 通过 getAudioDurationInSeconds 计算持续时间
    • 如果用户需要AI语音,使用 elevenLabs 功能或替代的 TTS 方法生成音频:
      • 使用 elevenLabs 函数为包含旁白的场景生成音频,传入场景的配音文本、语音特征(性别、年龄、语调、口音)以及 voiceID(如果已知)
      • 将每个场景的音频保存为 public/audio/scene-{sceneId}.mp3
      • 验证每个音频文件的持续时间,如果不匹配,调整场景持续时间
      • 使用 <Audio> 组件将音频添加到场景
    • 如果视频无旁白,使用免版税音乐并可选地添加音效
  7. 在 Root.tsx 中的 Audio 元素后添加字幕轨道,使用 <Subtitles> 组件或手动 <span> 标签

    • 字幕应同步到旁白或情节关键点
    • 为社交视频将字幕样式设置为白色、中心对齐、黑色背景矩形
    • 为电影视频将字幕样式设置为白色、底部对齐、无阴影或带微妙投影的透明黑色背景条
  8. 计算精确的总帧数并导出 config.ts 内的 totalDurationInFrames 常量,供 Root.tsx 使用

  9. 如果旁白文本包含非英语语言,在开始渲染前与用户确认旁白的准确性和发音

开发注意事项

保持组件专注于单一职责。 每个组件只做一件事。如果场景组件超过 100 行 JSX,将其拆分为更小的子组件。

在 Remotion 中使用 CSS 变量进行主题化。 在 Root.tsx 的顶层 <div> 上设置 CSS 变量,以实现一致的色彩和排版。

使用 useCurrentFrame() 和 useVideoConfig() 进行动画。 避免硬编码持续时间——始终从故事板的 startSec 和 durationSec 计算。

使用 @remotion/transitions 进行场景切换。 不要编写自定义过渡逻辑。使用 slide、fade、glitch、wipe、clock-wipe 等预设。

避免对外部数据源的实时 HTTP 请求。 如果在开发过程中需要数据,将其缓存为静态 JSON 并直接导入。

门控:在所有场景组件编写完成并通过视觉检查后,进入阶段 4。


阶段 4:交付

渲染

  1. 运行 npx remotion render(或 studio)确保所有资源已加载且没有错误
  2. 渲染为 out/ 目录中的视频
  3. 使用 Remotion 的 still 命令生成静态缩略图,并使用 @remotion/player 进行预览

最终检查清单

  • 视频时长匹配故事板的 meta.durationSec(±0.5 秒内)
  • 所有字体成功加载(无 FOIT/FOUT)
  • 颜色与故事板角色一致(背景、表面、主色、柔和色、强调色、高亮色)
  • 旁白轨道同步到视觉节拍
  • 无旁白场景在屏幕上有足够的字幕或文本覆盖
  • 每个场景的过渡与故事板一致
  • 结尾场景至少保留 2 秒的静态标志和行动号召
  • 为垂直格式(Socials)生成的版本有正确的宽高比(9:16)和修剪的宽高比
  • 渲染检查时无资产加载错误

交付物

提供以下输出:

  1. 全宽版本 (1920x1080 或故事板中指定的分辨率) — out/full.mp4
  2. 方形版本 (1080x1080 在中心裁剪) — out/square.mp4
  3. 垂直版本 (1080x1920 为 Reels/Shorts/TikTok 创建) — out/vertical.mp4。垂直版本应具有:
    • 为垂直视频优化的重新布局的元素(而非中心裁剪)
    • 更大、更粗的文本以保持在小屏幕上的可读性
    • 更快的剪辑以在更短的时间跨度内保持注意力
    • 不包括不适用于较小画面的复杂多人或宽镜头
  4. 缩略图 (1920x1080 截取自高潮或结尾场景) — out/thumbnail.png
  5. CSS 变量表 (theme.css) 记录颜色和排版系统,供用户参考
  6. 源文件 — 完整可用的 Remotion 项目,用户可以修改和重新渲染

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能