用途
本技能用于制作产品发布视频、产品影片、动态设计作品、UI 动效集锦、Dribbble 风格 UI 动画,以及品牌或 Logo 动画短片。它记录了 Chan 期望的发布影片制作方式,是产出 Cheerful 的 "The Spark"(v1)和真实数据剪辑版(v2)过程中所有提示词与评审的提炼。
主要能力与创作立场
- 导演式创作:Chan 表示 "我希望你来做导演"、"完全创意控制"、"跳出框架思考"、"对形状或按钮没有限制"。无需为创意选择请求许可,直接做出决定,记录为 DECISION,并在最后列出以便他一次性推翻。
- 原创,绝不用模板,绝不复制:不要整体照搬产品网站的文案、UI、数据或图片。自行发明场景。"任何看起来像模板的东西"都被禁止。
- 发布影片能量:现代、未来感、高级,像顶级动态设计师(Linear、Apple、Arc)那样。每个节拍都有事情发生,没有死时间。
- 细节即产品:微交互(按钮按下、旋钮拉伸、名称胶囊延迟、点击涟漪、里程表稳定、贴纸倾斜)是让它显得昂贵的关键。
不可妥协的动效规则
- 单一形状,绝不剪切:每个状态都是同一元素在变形其尺寸、圆角和颜色,同时内容以短模糊切换。不鼓励剪切;转场是变形、摄像机移动、放大进入某个元素并成为下一场景(一个磁贴打开成收件箱,回复卡片变成订单,光标变成 Logo 星形)。
- 内容以短模糊切换,变形容器内的文字有自己的进入和退出时机——退出短且早——否则新旧文字会重叠。
- 处处使用弹簧,最多微小过冲。不用弹跳缓动。仅使用闭式阻尼弹簧阶跃响应(见 technique)。
- 前缘/后缘使用不同弹簧以产生拉伸:标签指示器、切换旋钮、液体胶囊——前缘跑在后缘前面。
- 光标驱动每次变化,带真实点击和拖拽。拖拽是直接操作:按住时,值由光标位置计算;释放时从所在位置弹回。产品的智能体可以是自己的光标(带名称胶囊的渐变多人光标,短运动轨迹,随速度倾斜,点击时按下缩放 + 涟漪),从用户光标("You")交接。
- 摄像机缩放使每个状态填满画面。空帧是 bug;先框住内容,然后推、甩或拉回。拉回揭示规模(一封邮件 → 数百封的网格;一条帖子 → 一面墙)。
- 音乐优先的时机:约 120 BPM,用 numpy 分析歌曲的节拍网格,从强拍开始,剪切歌曲窗口使 drop 落在产品的大时刻。每个节拍都有事情发生;打字在军鼓构建上骑 32 分音符;重击加速节拍 → 8 分 → 16 分。
- 每个 UI 声音都是合成的,并按其在 kick-peak 网格上的测量峰值放置。
- 循环:当作品循环时,最后一帧就是第一帧——包括光标位置和速度——否则循环会卡顿。
视觉风格
- 调色板:品牌自己的设计系统(对 Cheerful:暖近白画布,品牌渐变 #B04ADC → #E35C91 → #FF7247 → #FFB21E,淡紫/桃色光池,墨色 #111827)。不是 "黑色加一个紫色"。一种干净的 UI 字体。
- 禁止(来自原始简报,除非 Chan 推翻否则仍有约束力):弹跳缓动、粒子爆发、辉光、UI 铬上的渐变、不匹配的图标描边、死时间、模板外观。
内容
- 使用真实数据。Chan:"你可以访问数据库。你可以有创意,而不只是挑图片。" 只读拉取真实、可辩护的数字(触达的创作者、送出的礼物、追踪的帖子/浏览量),并以滚动里程表展示。发明微故事(创作者、品牌、消息),但保持大数字真实,并在报告中说明哪个是哪个。
- 客户 Logo 一个接一个,砰砰砰——绝不是网站风格的 "trusted by" 行。每次命中时一个形状重新调整尺寸/颜色,只展示真正运行过活动的品牌。
- 仅使用授权媒体。来自免费许可来源的库存视频/静帧,逐项检查(Mixkit 混有 Restricted 项目)。绝不用产品自己的营销图片作为捷径。
- 保留他喜欢的:对 Cheerful,标题介绍、打字的简报、发现搜索墙和字标结尾测试良好——在版本之间保留强节拍,迭代其余部分。
使用方式与流程
- 先询问输入(除非已给出或他说 "你决定"):形状应变成的 8–12 个状态、调色板(黑白、一个强调色或品牌系统),以及一首免版税约 120 BPM 的歌曲。提供 "Director's cut / Director picks" 选项——他通常选这些。
- 在写代码前,在节拍网格上展示状态列表(小节/节拍表:发生什么、哪个元素变形成什么、哪个声音)。
- 构建一个 HTML 文件,其中每个样式都在 seek(t) 内由时间计算——没有 CSS 过渡、没有计时器、帧间没有状态。
- 在完整渲染前每拍渲染一帧,做成联系表,修复任何偏离网格、拥挤、空、难读或重叠的地方。然后检查 ±0.1 秒处的转场。
- 完整渲染:Playwright 子帧 → ffmpeg tmix 运动模糊 → 60 fps H.264 + 混音。
- 验证 MP4 本身(每秒 1 帧的故事板、帧差扫描接缝/故障),通过 tailnet 提供服务,并报告:链接、概念、场景列表、真实 vs 虚构数据、DECISION、注意事项(音频未听——要说明;Logo/肖像许可)。
适用场景
适用于需要制作产品发布视频、产品影片、动态设计作品、UI 动效集锦、Dribbble 风格 UI 动画或品牌/Logo 动画短片的场景。
限制与注意事项
- 提示词本身逐字且按顺序在 references/prompts.md 中——开始前阅读;它们就是规范。代码模式在 references/technique.md 中。一个完整可用的影片可复制自 ~/code/cheerful-motion/launch2/。
- 常见陷阱:绝不在摄像机缩放的对象上放 will-change——文字会渲染模糊。弹簧从其事件开始:必须在时间 T 到达的目标提前一个 settle-lead 发出。将不透明度归零的 hide() 必须由绘制函数撤销,否则元素保持不可见。比例数字在里程表中跳动:将每个槽位调整到其最终字形大小,仅垂直裁剪。在 VPS 上:磁盘紧张(以 4 秒块渲染并删除 PNG),Chromium 是 earlyoom 首先杀掉的(自动重试、重新启动、完成时硬退出),一个杂散的 /tmp/inspect.py 会遮蔽标准库(从项目目录运行 Python),PreToolUse 钩子会阻止某些 ffmpeg glob 字符串。
- 交付物在 deliver/ 文件夹中,用 serve <dir> 提供服务(tailnet URL,绝不用 localhost):MP4、每秒 1 帧的故事板、关键静帧,以及用于比较的上一版本。