Communitygithub.com

NiJingzhe/promo-video-skill

端到端制作一个节拍同步的产品宣传/发布视频,过程中保留人工参与——挑选音乐(Epidemic Sound“创建剪辑”)、设计分镜脚本、撰写拍摄脚本和 ElevenLabs 旁白脚本、剪辑返回的旁白录音,然后在 Remotion 中构建视频(Three.js 金属渲染、产品 UI 复刻、虚拟摄像机推拉摇移、每个剪辑都在节拍上)。适用于用户想要宣传片、预告片、发布视频、产品预告、动态图形广告,或要求视频与音乐同步、生成分镜脚本+旁白脚本的场景。

promo-video-skill 是什么?

这是一个端到端的视频制作技能,专为产品宣传/发布视频设计。它将制作过程分为六个阶段:音乐分析、分镜设计、旁白脚本、旁白剪辑、视频构建和最终审阅。每个阶段都以人工检查节点结束,确保昂贵构建阶段前的所有决策都已确认。技能利用 Epidemic Sound 和 ElevenLabs 等外部服务进行音乐和旁白生成(提供可选的浏览器自动化),并使用 Remotion 和 Three.js 进行最终视频渲染。核心理念是“音乐即时钟”:所有剪辑点、场景切换和摄像机运动都严格与真实节拍网格对齐。技能包含了多个实用脚本,如音乐节拍分析、轨道拼接、旁白切割 UI 和浏览器审阅 UI。它适用于 Claude Code、Cursor 和 Codex 等 AI 代理平台,但需注意某些操作依赖浏览器自动化工具和外部服务账号。

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

在你喜欢的 AI 中提问

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

文档

promo-video(宣传视频)

一部影片分六个阶段制作。每个阶段都以人工检查作为结束。 请勿超前执行: 昂贵阶段(构建阶段)只有在前期阶段确定好后才是便宜的,因为每个画面事件 都要与音乐和旁白对齐。

在开始时向人工一次性陈述计划(README.md 包含面向人工的版本),然后按顺序运行 各阶段。使用他们的语言进行交流。将所有项目文件保存在一个目录中(<project>/:audio/、 vo/、PLAN.md、elevenlabs.md,以及 video/ 中的 Remotion 项目)。

#阶段你做人工做参考文档
1音乐分析音轨,找到真实速度和关键标记点在 Epidemic Sound 上挑选音轨,使用创建剪辑确定长度,将文件交给你references/01-music.md
2分镜提出引导性问题,编写 PLAN.md(与音乐对应的镜头时间表)回答问题,批准references/02-storyboard.md
3旁白脚本撰写台词 + 带标签的 ElevenLabs 录音内容在 ElevenLabs 中生成录音,发送文件references/03-voiceover.md
4剪辑旁白对录音文件运行 cut_ui.py,然后拆分、调整电平、放置每一句台词在浏览器页面中在台词之间点击,按“完成”;检查放置表references/03-voiceover.md
5构建从 template/ 开始的 Remotion 项目,逐场景构建,每帧进行检查审查静态帧 / 草稿渲染结果references/04-build.md
6审阅与打磨渲染、响度检查、对渲染结果运行 review_ui.py、阅读注记和帧标记、修复、重新渲染在审阅页面观看,在画面上留下注记,选择“已批准”或“需要修改”references/05-review.md

浏览器自动化:提供选项,但绝不假定

第 1 和第 3 阶段在网站上进行(Epidemic Sound、ElevenLabs)。如果存在浏览器自动化技能或工具 (例如 ego-browser、Playwright 环境、浏览器 MCP),主动提出代替人工完成这些部分,并在征求同意之前明确说明 所涉及的内容:

  • 账号:两个站点都需要账户(Epidemic Sound 是付费订阅,有试用期;ElevenLabs 有免费套餐,但每月有字符限制)。如果人工没有账户,他们自己注册:你不得创建账户。
  • 费用:ElevenLabs 按字符计费;一部 40–60 秒的影片大约 600–1000 个字符,每次重新生成都会再次收费。Epidemic 的下载次数计入套餐。告知人工预期花费并先征询意见。
  • 登录和支付由人工负责:将浏览器控制权交给人工(在 ego-browser 中使用 task.handOff())以处理登录、2FA、验证码及任何支付页面;在人工告知完成后继续执行。绝不输入人工的密码,绝不输入或存储银行卡信息,绝不将人工的 API 密钥粘贴到页面或文件中。
  • 获得同意后你可以做的事:按商定的情绪和 BPM 搜索/筛选音轨,并打开候选音轨供人工试听(由人工选择);使用目标长度点击“创建剪辑”并下载结果;粘贴 elevenlabs.md 录音内容,应用人工选择的配音和设置,生成一次,下载 mp3。
  • 如果没有此类工具,或人工拒绝使用:提供准确的步骤(第 1 和 3 阶段的文档),等待文件。

选择权始终属于人工:音轨和配音永远不会由你代选。

基本原则(从实践中获得的教训)

  1. 所有展示的内容都是真实的。 真实的示例网格(对实际 CAD/STEP 文件进行三角剖分)、代码面板中的真实代码和 API、根据产品自身前端组件重建的 UI。虚假内容是观众唯一会注意到的问题。如果你无法获取真实内容,请说明情况并询问——不要凭空编造。
  2. 音乐就是时钟。 测量真实速度(scripts/music_analyze.py 进行拟合;如果猜测的 BPM 偏差超过 1.2 %,则拼接点会偏差三分之一节拍,人类会感觉到明显的顿挫感)。所有时间数据存放在 src/marks.ts 中;场景从中导入,绝不硬编码秒数。
  3. 确认对外或昂贵的步骤:音乐文件和旁白由人工选择;你绝不代选。绝不打印在拍摄产品中出现的 API 密钥或登录令牌。
  4. 用静态帧检查画面,而非仅凭信任:渲染标记点(节拍点、剪辑点、标志出现时刻)处的帧,并在完整渲染之前进行检查。完整渲染需要数分钟;静态帧只需数秒。
  5. 保留旧版本。 当人工要求精简或变体版本时,复制项目目录并在副本中编辑(cp -R video video_short,创建符号链接 node_modules)。
  6. 像编辑一样报告:说明更改了什么、文件路径、需要听/看的内容以及具体在哪一秒。

本技能中的工具

所有 Python 脚本使用 uv run 运行(依赖项已在每个文件中声明;无需另行安装)。

脚本用途
scripts/music_analyze.py track.wav --out beats.json真实 BPM(拟合值)、节拍/小节网格、段落结构、重音点、静音间隙
scripts/music_splice.py track.wav out.wav --beats beats.json --keep a:b --keep c:d通过按小节对齐的交叉淡入跳转缩短音轨;验证连接点
scripts/cut_ui.py take.mp3 --mode cuts --script elevenlabs.md --out vo/cuts.json浏览器剪辑页面(波形图、逐行显示的脚本、语音与停顿区分、缩放、撤销/重做):人工播放并在台词结束处点击,按“完成”,标签页关闭,cuts.json 为你准备就绪。--mode marks --beats beats.json 在节拍网格上标记音乐的重音/强拍/间奏部分
scripts/vo_cut.py take.mp3 --regions vo/cuts.json --out vo/将 ElevenLabs 录音拆分为经过电平调整的片段 + clips.json(如果人工更倾向于输入时间,也可使用 --lines N --ends t1,...)
scripts/review_ui.py out/promo.mp4 --out review/review.json [--overlay overlay.json]浏览器审阅页面:上方为监控画面,下方为时间轴条(胶片条 + 已完成混音的波形 + 可选的节拍/标记/旁白线)。人工可在某个时刻或某个范围内留下注记;每条注记携带精确帧号;最终选择“已批准”或“需要修改”,review.json 为你准备就绪
scripts/new_project.sh <dir> [--link-modules path]从 template/ 创建 Remotion 项目(金属舞台、节拍时钟、旁白混音、虚拟摄像机)
template/tools/mesh.pySTEP/OCC 形状 -> 适用于 three.js 的紧凑网格 + B-rep 边线
template/tools/refold.py清空 OCC 无法读取的巨大 STEP 元数据字符串
template/tools/variants.py、stages.py网格参数变体 / CAD 笔记本的每个中间实体(用于“拖动滑块,模型随之变化”和“逐个单元”的场景)

需要:ffmpeg、node 20+、uv。对于无头 Chrome 中的 three.js:需安装 Playwright 的 chrome-headless-shell (new_project.sh 会自动安装)。

相关技能