Communitygithub.com

promo-video-skill(推广视频生成技能)

通过网站URL或用户提供的品牌信息,自动生成营销推广视频、产品演示视频或宣传视频。

promo-video-skill(推广视频生成技能) 是什么?

该技能是一个基于Remotion的推广视频生成工具,能够根据用户提供的网站URL自动抓取品牌信息(品牌名、tagline、品牌色、功能卖点等),或通过对话引导用户手动填写品牌信息,然后生成结构化的视频脚本(brand.json和script.json)。技能支持两种路径:路径A自动从URL提取数据并生成脚本;路径B在用户没有明确信息时,通过一系列问题收集品牌详情。生成脚本后,AI会展示脚本摘要供用户确认或调整,确认后启动Remotion Studio预览,并支持导出MP4。技能提供了详细的视觉设计指南,包括填满画面减少留白、避免模板化重复版式、统一卡片圆角、主色调取自网站CTA按钮、全局字幕等。同时包含数据校验清单和视觉自检清单,确保输出的视频质量。支持平台:Remotion Studio,文件结构清晰,包含品牌数据、视频脚本和场景组件,易于自定义。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add bayvibe/promo-video-skill

在你喜欢的 AI 中提问

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

文档

推广视频技能(Remotion)

根据网站URL或用户提供的品牌信息,生成推广视频。

两种路径

路径A:用户提供了网站URL

当用户提供URL时:

  1. 运行 python generate_promo.py --source <url> 生成 src/data/brand.json 和 src/data/script.json
  2. 立即向用户展示生成的脚本 — 呈现简洁摘要:
    品牌名: xxx
    Tagline: xxx
    主色调: #xxx
    场景规划:
      1. 开场 (3s) — 品牌Logo + 名称 + tagline
      2. 功能 (5s) — 功能1 / 功能2 / 功能3
      3. 仪表盘 (4s) — 产品界面展示
      4. 行为号召 (3s) — "xxx" + 按钮
    
  3. 询问:“确认这个脚本,还是需要调整?”
  4. 确认后,运行 npm run dev 并告知用户在 http://localhost:3000 预览

路径B:用户未提供任何信息

当用户只是说“生成视频”/“制作推广视频”而没有具体信息时,不要直接开始编码。而是,一次性提出以下问题:

  1. 品牌名是什么?(或者你要推广的产品/项目名)
  2. 一句话描述你的产品(用作 tagline)
  3. 有品牌色吗?(没有的话我会帮你选)
  4. 想突出哪几个卖点?(最多3个)
  5. 有网站 URL 吗?(有的话我可以自动抓取信息)

用户回答后,直接根据其答案编写 src/data/brand.json 和 src/data/script.json。然后展示脚本摘要并确认(同路径A的步骤2-3)。

确认后

  1. 运行 npm run dev 启动 Remotion Studio
  2. 告知用户在 http://localhost:3000 预览
  3. 导出方法:npx remotion render PromoVideo out/promo.mp4

设计指南

视觉原则

  • 填满画面,减少留白 — 中间场景(功能/仪表盘)用 flex: 1 或全宽布局撑满 1920×1080 画布,避免大片空白
  • 避免模板化重复版式 — 同一条视频里不要反复使用“左大标题 + 右卡片/mockup + 底部字幕”的骨架。每条视频至少使用 3 种明显不同的构图:例如满版标题、斜向 ticker、中心轴构图、拼贴式卡片、杂志式分栏、全屏产品界面、代码 overlay、时间线/路径式构图。
  • 同视频卡片圆角必须一致 — 每条视频定义一个 CARD_RADIUS token,所有卡片、面板、mockup 容器、feature blocks 使用同一个值。不要同一条视频里一会儿直角、一会儿 12px、一会儿 34px。字幕、logo、小按钮、进度条可以有自己的功能性圆角,但内容卡片必须统一。
  • 卡片不是默认答案 — Feature 场景可以用错位拼贴、纵深层叠、ticker、节点图、编辑器面板、产品截图裁切等方式表达;不要默认三等宽卡片横排。
  • 结尾页必须换一种收束方式 — CTA/Ending 不要默认复用前面场景的左标题右卡片或左标题左按钮。优先使用居中 lockup、海报式排版、环绕式信息块、全屏 typographic close、或品牌/网址作为视觉中心,形成明确的最后一拍。居中构图时,CTA 按钮和网址必须上下排列,保持中心轴线稳定。
  • 主色调取自网站 CTA 按钮 — 品牌色必须从 button/a 元素的 inline style 提取渐变色,不是随机 CSS 颜色
  • 全局字幕 — 每个场景底部居中显示字幕条(药丸形半透明背景),字号 32px,padding 18px 48px,弹簧动画入场。字幕通过 script.json 每个场景的 subtitle 字段控制,不设则不显示
  • 只支持 URL 输入 — SVG 模式已移除,只接受网站 URL 作为数据源

抓取规则

  • 品牌名优先用 og:site_name,其次 title tag(取 - 或 | 分隔的第一段)
  • Tagline 优先用 og:description,截断到 80 字符以内
  • 品牌色优先提取 button/CTA 元素 inline style 中的 gradient 颜色
  • Feature 标题过滤长度 < 45 字符,跳过过长的句子
  • 检测网站 light/dark 主题,自动匹配背景色和文字色

数据校验清单

生成数据后,检查以下问题再给用户确认:

  • 品牌名是否简短干净(不是完整 HTML title)
  • Tagline 是否 < 80 字符
  • 主色调是否来自 CTA 按钮(不是随机色)
  • Feature 是否恰好 3 个,标题简短有力
  • 各场景文字在 1920×1080 画布上是否可读

视觉自检清单(必须执行)

实现或修改视频后,必须自己做视觉审查,不能只跑 lint:

  1. 运行 npm run lint
  2. 用 npx remotion compositions src/index.ts 确认 composition 存在、时长正确
  3. 每个主要场景至少导出 1 张 still,自查布局。例如:
    npx remotion still src/index.ts <CompositionId> /tmp/<id>-scene1.png --frame=30
    npx remotion still src/index.ts <CompositionId> /tmp/<id>-scene2.png --frame=120
    npx remotion still src/index.ts <CompositionId> /tmp/<id>-scene3.png --frame=210
    
  4. 打开关键帧图片检查以下问题,发现任何一项必须先修复再交付:
    • 没有关键文字、按钮、字幕被裁切或超出画布
    • 有意出血的装饰/运动版式(如 ticker、背景图形、超大标题裁切)必须看起来是设计选择,而不是错误;可以越出画布
    • 卡片内部控件没有越过卡片边界,包括进度条轨道、图表条、输入框、按钮、状态条;这类无意溢出必须修复
    • 没有元素互相遮挡到无法阅读
    • 字幕居中,且没有压住主要 CTA 或核心画面
    • 同一视频内所有内容卡片/面板/mockup 容器使用同一个 CARD_RADIUS
    • 至少 3 种不同版式,不是整条视频都在重复同一左右分栏结构
    • 画面边缘留有安全区:关键文字距离边缘至少 64px
    • 长单词、长 headline、按钮文案没有溢出容器
  5. 用户如果只要在 Studio 预览,不要重复导出 mp4;确保 http://localhost:3000 可打开即可。

文件结构

src/
├── Root.tsx              # Remotion composition 注册
├── PromoVideo.tsx        # 主视频协调器
├── scenes/
│   ├── Scene01_Intro.tsx     # Logo + 品牌名 + tagline
│   ├── Scene02_Feature.tsx   # 三卡片等宽横排弹入
│   ├── Scene03_Dashboard.tsx # 全宽产品界面模拟
│   └── Scene04_CTA.tsx       # 行动号召 + 按钮
└── data/
    ├── script.json       # 视频脚本(文案、时序)
    └── brand.json        # 品牌数据(颜色、字体、Logo)

数据格式

brand.json

{
  "name": "Brand Name",
  "tagline": "One line description",
  "colors": {
    "primary": "#3E4E33",
    "secondary": "#687058",
    "background": "#FFFFFF",
    "surface": "#F8FAFC",
    "text": "#0F172A",
    "textSecondary": "#64748B",
    "accent": "#3E4E33"
  },
  "font": "Inter, sans-serif",
  "logoUrl": "",
  "features": [
    { "title": "Feature 1", "description": "Short desc" },
    { "title": "Feature 2", "description": "Short desc" },
    { "title": "Feature 3", "description": "Short desc" }
  ],
  "cta": {
    "headline": "Ready to get started?",
    "buttonText": "Get Started Free",
    "url": "https://example.com"
  }
}

script.json

{
  "fps": 30,
  "width": 1920,
  "height": 1080,
  "scenes": [
    { "id": "intro", "duration": 90, "headline": "", "subtext": "", "subtitle": "" },
    { "id": "feature", "duration": 150, "headline": "", "subtitle": "", "items": [] },
    { "id": "dashboard", "duration": 120, "headline": "", "subtitle": "" },
    { "id": "cta", "duration": 90, "headline": "", "buttonText": "", "subtitle": "" }
  ]
}

自定义

  • 编辑 src/data/brand.json 更改颜色、字体、Logo、品牌名
  • 编辑 src/data/script.json 更改场景文案和时序
  • 编辑 src/scenes/ 中的场景组件以更改布局/动画

相关技能