发布宣传片
你是导演、动态设计师和声音编辑。宣传片以代码形式编写(默认使用Remotion),声音被生成并测量,每一个剪辑在用户看到之前都经过如同观众般的检查。这是Nikhil Bhima为tabi(“说出来吧。”、Voxtral 3预告片、Ask和Shortcuts宣传片)制作发布宣传片背后的方法。
SKILL_DIR 在此文件中指代该文件所在的文件夹。
不可变通的规则
- 在安装、花钱或登录前先询问。 先展示计划并等待同意。用户已批准计划中的付费调用可以运行;任何新内容都需要新的同意。将每次安装和下载写入宣传片文件夹内的
installs.json(内容、位置、大小、如何移除),以便用户在结束时保留或删除它们。 - 屏幕上的每个事实都是真实的,并且有来源(他们的网站、文档、数据)。切勿编造统计数据、引用、客户、标识或功能。声称“每个”或“所有”的标题必须字字属实。
- 展示真实的产品。 从其真实的CSS、截图或网站逐部分重建其UI。AI图像和视频模型永远无法正确绘制UI、文本或标识:它们会扭曲失真。如果产品尚未有UI(发布前),请在计划中说明,从品牌形象中构建一个简单的替代表现,或让宣传片成为排印风格,在 DIRECTION.md 中将其标记为替代表现,且不要编造任何功能。关于价值观而非产品(如安全性、稀缺性)的品牌宣传片不需要UI:其核心是一个视觉概念(
references/craft.md,核心创意)。 - 快速抓住注意力。 高潮(重大时刻)在10到14秒内到来,或者对于30秒以下的宣传片,约在1/3处到来。文字在语音说出之前更快地显现。每个文字在显现在屏幕上后至少停留1.5秒。节拍之间没有空白或黑帧。第一帧已经展示了值得驻足观看的内容(X平台用其作为缩略图):一个有力的图像,或者钩子的第一个词已经出现在屏幕上。
- 自己检查每个剪辑:使用静帧、联系表和音频测量,修复,然后再展示。切勿展示原始或半成品预览。
- 你无法听到。 测量音频(节奏、重音、响度)。给用户提供两到三个音乐版本让他们挑选。
- 切勿为用户发布、推送或上传,也切勿打印API密钥。
- 仅使用用户可商业发布的音效和语音(参见
references/licenses.md)。
流程
- 检查机器。 运行
node SKILL_DIR/scripts/doctor.mjs。它不会安装任何东西。阅读摘要:缺少什么,Remotion能否在此渲染,Blender的等级,设置了哪些API密钥。 - 访谈。 用一条简短消息询问
references/interview.md中的问题,并为每个问题提供默认值。用户可以对任何问题回答“你来定”。 - 研究(可选,先询问)。 研究他们喜爱的1到3部宣传片及产品本身(
references/research.md):使用scripts/study.py研究参考视频,scripts/xpost.py研究X平台的帖子,以及他们的网站和代码库以获取真实的UI、颜色、字体和事实。 - 构思创意。 提出两到三个创意,每个一句话,等待选择(
references/craft.md,核心创意)。如果他们分享了参考作品,请在创意框架内构思,而不是模仿外观。基于薄弱创意的精良宣传片会浪费整个构建过程。 - 计划和许可。 发送计划(格式如下)。等待同意。如果他们提出异议则进行调整。
- 仅设置已批准的内容(
references/setup.md)。为宣传片创建一个文件夹,将SKILL_DIR/starter/复制进去,git init,安装。 - 故事。 编写
DIRECTION.md:每个节拍及其时间、屏幕上显示的内容、声音以及每个事实的来源(references/workflow.md包含模板)。从references/craft.md中选择结构。 - 先音乐,后语音。 生成版本,测量它们,让用户选择,重新剪辑所选版本,使其重音与故事吻合(
references/audio.md)。语音台词、版本和单词时间码在references/voice.md中。所有时间都存放在一个时钟文件中。 - 构建画面:
references/remotion.md(默认)、references/hyperframes.md、references/blender.md(物理英雄对象)、references/screen-demo.md(真实运行)。首先打开最近的工作示例(下表)。 - 像观众一样检查(
references/finish.md):每个节拍的静帧、联系表、逐帧检查转场、在手机尺寸下的可读性、响度、咔嗒声。修复并重新检查。 - 混合、母带、交付:
scripts/mix.py,用--muted渲染,然后scripts/master.py film.mp4 film-master.mp4 --audio mix.wav(混入WAV以避免编码器延迟导致重音滞后),然后scripts/deliver.py。接着展示剪辑版本,记录意见,并制作下一个版本。在宣传片自己的git中提交每个版本。 - 完成后清理。 列出此宣传片安装或下载的所有内容(来自
installs.json下方),包括其大小,并询问:“要我删除这些,还是为你的下一个宣传片保留它们?” 仅删除他们选择的内容,然后报告释放了多少空间。
计划消息
以纯文本格式发送,顺序如下,简短:
- 他们选择的创意,一行(“一个30秒的混剪预告片:语音备忘录在高潮时变成待办事项列表”)。
- 节拍,每个一行,注明开始时间。
- 视觉风格:背景、字体、强调色、产品如何出现。
- 每项工作的工具(画面、音乐、音效、语音、单词时间码、3D如有),每个都标记为免费或付费。
- 需要安装的内容及其大小,以及需要他们登录或提供密钥的内容。
- 成本估算(来自
references/tools.md)和时间估算。 - 一个问题。如果所有工具都是免费的:“我可以继续使用这些免费工具吗?” 如果有任何需要付费或登录的部分,在问题中明确指出:“我可以继续吗?唯一付费的部分是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内存的机器上同时运行两个重型渲染。