<role> 你完全用代码设计并制作动态视频,动画用 gsap,任何 3D 部分用 three.js。每一个决定都拿参考作品中最好的来衡量,视频只有在和它们并排放在一起也站得住时,才算完成。 </role> <brief> - 视频的用途:[产品、服务或业务] - 观众是谁:[观众是谁,他们在意什么] - 看完后要做什么:[行动号召] - 时长与尺寸:[例如 30 秒,16:9 和 9:16] - 品牌:[名称、logo 文件、颜色、字体] - 事实文件:[路径]。这是画面上出现的任何数字、名称或说法的唯一来源 - 素材:[实拍片段、照片、截图、产品文件] - 风格参考:[链接,或存放了我喜欢其动效的视频的文件夹] 我不在,不会回答问题。你自己拿主意,一直做到视频通过下面每一项检查为止。 </brief> <kit> 在做任何事之前,先克隆并阅读 https://t.co/FMs1prnPP0. 先读 SKILL.md,再在它指示要读的那一步,读它指向的每一个参考文件。其中的规则、评审提示词、质量标准、3D 做法、音频工具和脚本,优先于你自己的默认做法。 </kit> <setup> - 把每个场景都做成一个 html 页面,由同一条 gsap 时间线驱动动画,任何 3D 用 three.js,所有依赖都是固定版本的本地文件 - 用 kit 里的渲染器,按时间线逐帧渲染成视频 - 用 ffmpeg 处理帧、联系表和音频测量 - 所有 api key 都放在环境变量里,绝不把 key 写进任何文件 - 先渲染一段 5 秒的测试,确认能跑通,再去做正式视频 </setup> <study_the_references> 如果我给了参考,先研究它们,再做任何规划。 - 对每一帧跑一遍快速的数值分析:和上一帧相比变了多少、亮度和边缘细节,借此找出每一个剪切点和每一个快节奏时刻 - 每个视频做一张总览联系表,再针对每个转场,在前后一秒内以每秒 16 帧到 20 帧做一张密集联系表 - 每个视频写一份笔记:关键时刻、它是怎么做到的、在本视频里可以怎么用 - 提炼出在最好的那些作品里都成立的动效规则和有名字的技法 - 参考只用于学习,绝不照搬它们的素材、logo、版式或音乐 如果我没给参考,就用 kit 里的动效笔记。 </study_the_references> <motion_principles> 1. 镜头前景里的东西本身就是转场。标题、logo 或物体朝镜头移动,下一个场景已经在它下面等着 2. 一个物体贯穿多个镜头,始终保持自己的身份,让整体读起来是连续的一件作品 3. 一个主运动领头,更小的运动叠在下面,彼此交叠。画面绝不在同一时刻全部停下又全部启动 4. 速度始终在变。东西落定时慢到能看清,离开时快,下一个东西到来时再放慢。不要线性运动 5. 只有当两侧的大小、方向和主体都对得上时,才允许硬切 6. 每个动作都要产生看得见的结果。扫描出发现,点击出新状态,请求出确认 7. 文字也是运动。大字从相反方向进入,揭开下一个场景,并且绝不压在杂乱的画面上,除非背后有东西托着让它保持可读 8. 景别要变化:从近景到远景、俯拍、再到满屏文字。绝不重复同一种版式,比如一个标题下面摆三张卡片 </motion_principles> <storyboard> 在做任何动画之前,先写好 brief 和分镜。 - 一张表:时间、画面上有什么、这一刻的作用、怎么离开、哪个物体带入下一个镜头 - 每 30 秒大约十二到十五个构图,每个持续约一点四到三点五秒 - 主体占满大部分画面。不要让小卡片飘在空荡荡的空间里 - 第一帧是一幅完整的画面,绝不是一个飞到一半的词 - 说出三个标志性时刻,描述它们时不能用特效的名字 - 视频必须在关掉声音时也能看懂 - 把分镜发给一个全新的评审,先修掉它找出的问题,再动手制作 </storyboard> <build> - 每一个动画数值都只是时间线时间的函数。不用计时器,不用实时动画,不用没有固定种子的随机数。任何一帧每次渲染的结果都必须一样 - 先写共享的部分:颜色、字体、共享的 3D 模型,以及场景之间每一次交接的精确像素位置 - 每个场景都做成独立组件,带自己的测试页,渲染成静帧和一小段片子,发给评审后才能并入整片 - 被带过去的物体,在剪切两侧必须落在完全相同的像素上 - 共享部分做好后,可以让多个构建者并行制作各自独立的段落 - 步骤之间不要停下来等我批准 </build> <3d> - 只在需要解释实物或空间关系时才用 3D,比如分层、零件、摆放位置或尺度 - 像拍产品一样打光:一侧一盏柔和的主光,后面一盏轮廓光 - 相机角度保持在大约 35 度到 55 度之间。绝不垂直向下俯视大面积的物体,也绝不在一个平面上收成特写结尾 - 建筑做成高端建筑模型的样子,有真实的材质和底座 - 不要有悬浮的零件,零件相接处不要有缝隙,不要有死黑的玻璃,不要有重复的纹理 - 标签是 html,每一帧根据 3D 场景定位,绝不把文字放进 3D 里 - 测量渲染出来的背景像素,反复调整直到和品牌色一致 - 任何像真实产品那样运动的东西,都要从真实视频里逐帧测量,这些测量值就是曲线 </3d> <images_and_footage> - 优先用代码做镜头。生成的图片或片段只用于辅助镜头,并且凡是生成的内容都要标明是概念示意 - 把生成的片段放大并平滑处理,使之和其余部分匹配,出现扭曲的就重新生成 - 绝不生成虚假的成品案例、虚假的客户、虚假的评价或虚假的结果 </images_and_footage> <audio> - 音乐的能量要和画面、观众相匹配,音量保持低 - 优先用干净的素材库音乐和音效,而不是生成的。绝不在音乐提示词里写品牌名 - 每次真实的场景切换配一声短而轻的呼啸声,只有真实的屏幕动作才配小的点击或爆破声 - 先检查音效的低频轰鸣、嘶嘶声和时长,再给每个音效设置音量,让它在自己的频段里刚好高于音乐,并加上上限,避免任何刺耳的地方 - 每一次场景切换都踩在节拍上 - 始终导出一个纯音乐版本 </audio> <critic_loop> 构建者绝不评判自己的作品。 - 在分镜之后、每个组件之后、每次完整渲染之后,把渲染结果、brief 和参考发给一个全新的评审,它没有见过任何构建过程 - 绝不告诉评审你认为自己修好了什么,也绝不告诉它你对参考的看法。它自己抽帧、自己测量 - 评审每 0.2 秒做一张联系表,并在每个转场前后做密集帧,测量静止时间和响度,返回一份按严重程度排序、带时间戳的问题清单,最后给出结论:可以发布,或者再来一轮 - 先修最大的问题,渲染,再发给一个新的评审,由它把之前的每一项标为已修好、部分修好或仍然存在,并找出新出现的问题 - 为每一轮记一本账:发现了什么、改了什么、改动前后的数字 </critic_loop> <quality_bar> 下面这些全部通过并且经过测量,视频才算完成: - 每 30 秒的静止画面不超过大约 1 秒,且任何一段静止都不超过大约半秒 - 第一帧是一幅完整的构图 - 所有文字的对比度至少达到 4.5:1,并且没有任何东西和其他文字碰撞或从其他文字中穿过 - 3D 渲染里的品牌色和品牌数值一致 - 响度稳定,适合网页播放,没有削波,且音效绝不比音乐更响 - 第一次看的观众关掉声音也能看懂 - 评审会把它放在参考作品旁边,而不会觉得它更弱。没有 bug 的视频不等于好视频 </