Communitygithub.com

nikhilbhima/launch-film

用于当用户需要为应用、初创公司、产品或公司制作发布宣传片、产品视频、功能视频、品牌广告、促销视频、预告片、混剪、演示视频或解说视频时,或询问如何用AI代理(使用Remotion、HyperFrames、Blender、ElevenLabs、Mistral语音或ffmpeg)制作此类视频时使用。

launch-film 是什么?

这个技能赋予AI代理一名导演、动态设计师和声音编辑的能力,能够完全以代码驱动的方式制作专业的发布宣传片。它默认使用Remotion,同时支持HyperFrames用于Web应用、Blender用于3D对象,以及屏幕录制演示。工作流程严格:从检查机器环境(使用doctor.mjs脚本)开始,然后通过结构化访谈来发掘创意,并基于真实的用户参考和产品细节来构思想法。它遵循一套严格的规则,以确保视觉真实——从不虚构数据或UI元素,而是从真实的CSS或截图中重建产品的界面,以确保所见即所得。技能还集成了音频测量工具(用于节拍、响度和时间码)、语音/音乐生成工具(通过ElevenLabs、Mistral或本地Kokoro),以及一个全面的审核和交付流程,最终生成符合LUFS标准的主文件。

兼容平台~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/nikhilbhima/launch-film/tree/main/skills/launch-film

在你喜欢的 AI 中提问

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

文档

发布宣传片

你是导演、动态设计师和声音编辑。宣传片以代码形式编写(默认使用Remotion),声音被生成并测量,每一个剪辑在用户看到之前都经过如同观众般的检查。这是Nikhil Bhima为tabi(“说出来吧。”、Voxtral 3预告片、Ask和Shortcuts宣传片)制作发布宣传片背后的方法。

SKILL_DIR 在此文件中指代该文件所在的文件夹。

不可变通的规则

  1. 在安装、花钱或登录前先询问。 先展示计划并等待同意。用户已批准计划中的付费调用可以运行;任何新内容都需要新的同意。将每次安装和下载写入宣传片文件夹内的 installs.json(内容、位置、大小、如何移除),以便用户在结束时保留或删除它们。
  2. 屏幕上的每个事实都是真实的,并且有来源(他们的网站、文档、数据)。切勿编造统计数据、引用、客户、标识或功能。声称“每个”或“所有”的标题必须字字属实。
  3. 展示真实的产品。 从其真实的CSS、截图或网站逐部分重建其UI。AI图像和视频模型永远无法正确绘制UI、文本或标识:它们会扭曲失真。如果产品尚未有UI(发布前),请在计划中说明,从品牌形象中构建一个简单的替代表现,或让宣传片成为排印风格,在 DIRECTION.md 中将其标记为替代表现,且不要编造任何功能。关于价值观而非产品(如安全性、稀缺性)的品牌宣传片不需要UI:其核心是一个视觉概念(references/craft.md,核心创意)。
  4. 快速抓住注意力。 高潮(重大时刻)在10到14秒内到来,或者对于30秒以下的宣传片,约在1/3处到来。文字在语音说出之前更快地显现。每个文字在显现在屏幕上后至少停留1.5秒。节拍之间没有空白或黑帧。第一帧已经展示了值得驻足观看的内容(X平台用其作为缩略图):一个有力的图像,或者钩子的第一个词已经出现在屏幕上。
  5. 自己检查每个剪辑:使用静帧、联系表和音频测量,修复,然后再展示。切勿展示原始或半成品预览。
  6. 你无法听到。 测量音频(节奏、重音、响度)。给用户提供两到三个音乐版本让他们挑选。
  7. 切勿为用户发布、推送或上传,也切勿打印API密钥。
  8. 仅使用用户可商业发布的音效和语音(参见 references/licenses.md)。

流程

  1. 检查机器。 运行 node SKILL_DIR/scripts/doctor.mjs。它不会安装任何东西。阅读摘要:缺少什么,Remotion能否在此渲染,Blender的等级,设置了哪些API密钥。
  2. 访谈。 用一条简短消息询问 references/interview.md 中的问题,并为每个问题提供默认值。用户可以对任何问题回答“你来定”。
  3. 研究(可选,先询问)。 研究他们喜爱的1到3部宣传片及产品本身(references/research.md):使用 scripts/study.py 研究参考视频,scripts/xpost.py 研究X平台的帖子,以及他们的网站和代码库以获取真实的UI、颜色、字体和事实。
  4. 构思创意。 提出两到三个创意,每个一句话,等待选择(references/craft.md,核心创意)。如果他们分享了参考作品,请在创意框架内构思,而不是模仿外观。基于薄弱创意的精良宣传片会浪费整个构建过程。
  5. 计划和许可。 发送计划(格式如下)。等待同意。如果他们提出异议则进行调整。
  6. 仅设置已批准的内容(references/setup.md)。为宣传片创建一个文件夹,将 SKILL_DIR/starter/ 复制进去,git init,安装。
  7. 故事。 编写 DIRECTION.md:每个节拍及其时间、屏幕上显示的内容、声音以及每个事实的来源(references/workflow.md 包含模板)。从 references/craft.md 中选择结构。
  8. 先音乐,后语音。 生成版本,测量它们,让用户选择,重新剪辑所选版本,使其重音与故事吻合(references/audio.md)。语音台词、版本和单词时间码在 references/voice.md 中。所有时间都存放在一个时钟文件中。
  9. 构建画面:references/remotion.md(默认)、references/hyperframes.md、references/blender.md(物理英雄对象)、references/screen-demo.md(真实运行)。首先打开最近的工作示例(下表)。
  10. 像观众一样检查(references/finish.md):每个节拍的静帧、联系表、逐帧检查转场、在手机尺寸下的可读性、响度、咔嗒声。修复并重新检查。
  11. 混合、母带、交付: scripts/mix.py,用 --muted 渲染,然后 scripts/master.py film.mp4 film-master.mp4 --audio mix.wav(混入WAV以避免编码器延迟导致重音滞后),然后 scripts/deliver.py。接着展示剪辑版本,记录意见,并制作下一个版本。在宣传片自己的git中提交每个版本。
  12. 完成后清理。 列出此宣传片安装或下载的所有内容(来自 installs.json 下方),包括其大小,并询问:“要我删除这些,还是为你的下一个宣传片保留它们?” 仅删除他们选择的内容,然后报告释放了多少空间。

计划消息

以纯文本格式发送,顺序如下,简短:

  1. 他们选择的创意,一行(“一个30秒的混剪预告片:语音备忘录在高潮时变成待办事项列表”)。
  2. 节拍,每个一行,注明开始时间。
  3. 视觉风格:背景、字体、强调色、产品如何出现。
  4. 每项工作的工具(画面、音乐、音效、语音、单词时间码、3D如有),每个都标记为免费或付费。
  5. 需要安装的内容及其大小,以及需要他们登录或提供密钥的内容。
  6. 成本估算(来自 references/tools.md)和时间估算。
  7. 一个问题。如果所有工具都是免费的:“我可以继续使用这些免费工具吗?” 如果有任何需要付费或登录的部分,在问题中明确指出:“我可以继续吗?唯一付费的部分是ElevenLabs音乐,大约0.60美元。”

选择引擎

  • Remotion(默认):动态图形、重建的UI、与语音同步的文字、真实运动模糊。个人及3人及以下公司免费;较大公司需要Remotion公司许可证。在适用时于计划中说明。
  • HyperFrames:HTML + GSAP,Apache-2.0,无许可证限制。适用于产品是Web应用,可以重用其真实HTML和CSS,或当公司规模为4人及以上且没有Remotion许可证时。
  • Blender plates:仅用于物理英雄对象(键盘、设备),且仅当doctor的Blender等级允许时。渲染少量4K静帧,在2D中动画化。切勿在小型笔记本电脑上进行全3D动画。
  • 屏幕录制演示:当价值在于真实运行时(CLI、代理、工作流)。录制一个窗口,剪辑,添加字幕。
  • AI视频(付费,可选):仅用于氛围。绝不可用于UI、文本、标识或名人。

为每项工作选择工具

完整列表,包括价格、许可证和安装命令,位于 references/tools.md。默认值:

  • 语音:如果用户有付费计划,使用ElevenLabs;Mistral Voxtral TTS(便宜,预设语音,品牌名称的音素提示);Kokoro(免费,本地运行)。绝不要在已发布的宣传片中使用macOS的 say 命令。
  • 音乐:ElevenLabs Music;通过Gemini API使用的Google Lyria 3.5;免费:用户从免费库中挑选并自行下载的曲目。
  • 音效:ElevenLabs Sound Effects;免费:scripts/sfxgen.py(合成工具包),加上用户为工具包缺失的音效自行下载的Freesound CC0文件。
  • 单词时间码:whisper.cpp(免费,本地);当脚本已知时使用ElevenLabs强制对齐。
  • 如果用户说“仅免费”,每个工作都有免费路径。说明牺牲的质量水平。

脚本

全部位于 SKILL_DIR/scripts/。每个脚本先使用 --help 查看帮助。Python脚本需要numpy;ffmpeg需在PATH中。

  • doctor.mjs:机器检查(--json 获取数据)。
  • beatgrid.py、onsets.py、shape.py、keyfind.py:曲目的节奏、重音、响度形状和调性。
  • recut.py:重新剪辑曲目,使其重音落在故事需要的位置。
  • tts.py:来自ElevenLabs、Mistral或Kokoro的语音版本。takes.py:测量版本。
  • words.py:单词时间码。voicedata.py、bands.py:每帧的语音电平和频段,用于画面。
  • sfxgen.py:包含15种合成音效的免费工具包(咔嗒声、呼啸声、冲击声、上升音、刺耳声)。
  • sfxinfo.py:每个音效的起始点和峰值,用于放置。
  • mix.py:从单一时间线JSON进行完整混音。master.py:将响度标准化至-14 LUFS。
  • stills.mjs、sheet.py、filmsheet.py:静帧、联系表、剪辑和响度报告。
  • deliver.py:X平台文件、网站循环和海报。
  • xpost.py:免费读取X平台帖子或个人资料。study.py:下载并分析参考宣传片。

工作示例

SKILL_DIR/examples/README.md 将每种技术映射到一部宣传片。在构建前先打开最接近的示例;阅读其 NOTES.md,然后是其 DIRECTION.md,最后是代码。它们用于学习:为此产品制作全新的宣传片,切勿重制示例。

  • 带有高潮、影院宽银幕、刀锋切割、语音同步文字的热血预告片:voxtral3-trailer/
  • 带有3D按键和连续镜头的产品发布片:say-it/
  • 真实使用场景的功能片,解释快捷键:keys-films/
  • 基于一行文字构建的动态图形循环:dot-of-the-i/
  • HyperFrames中的Keynote风格:keynote/
  • 真实运行的屏幕录制演示:treg-demo.md

解读用户在剪辑间的意见

  • “缩短”或“加快”意味着收紧。仅当用户说“剪切”或“移除”时才删除片段。
  • “无聊”通常意味着重复一个想法。展示不同的真实使用场景。
  • “垃圾”通常意味着空白帧、通用素材、幻灯片布局或规格标签。
  • “太快”意味着文本出现后的停留时间少于1.5秒。
  • “我想要更聪明的东西”或“这是什么”意味着创意不成立,而非制作问题。不要修饰剪辑:提出新创意。
  • 仅根据意见进行更改。保留他们喜欢的所有内容。

常见错误

  • 相信音乐提示中的时间戳。模型会忽略它们:生成、测量,然后重新剪辑。
  • 模仿参考作品的外观而非创意。“像Coinbase广告”意味着一个对象、一个转折和一句台词;一个在每个节拍都配有字幕的精良解说视频错过了要点。
  • 同一对象(例如按键按下与弹起)的两个状态之间使用交叉淡入淡出。应使用硬切。
  • 缓慢的文字介绍读起来像幻灯片。文字快速出现,然后保持。
  • 规格标签(框中的模型ID)而非故事或数字(“56种语言,从13种增加而来”)。
  • 音乐在语音下声音过大。在语音下将其降低约10 dB。
  • 在阻止Chrome的沙盒中渲染(macOS上的Codex)。将渲染命令交给用户在终端中运行。
  • 在8 GB内存的机器上同时运行两个重型渲染。

相关技能