生成Logo动画
该技能可把Logo图片转化为5秒动画展示。每种风格都是一个画布场景,由无头Chrome逐帧渲染,ffmpeg编码帧画面,音效则根据场景事件(落地、弹出、闪烁)合成。不需要任何AI图像服务、素材库或样片。每种风格的最后一帧都是Logo文件本身的像素,因此动画不会“重绘”品牌形象。
要求:Node 22+、ffmpeg(libx264、libvpx-vp9、prores_ks)和Chrome或Chromium。如果Chrome不在标准路径下,请设置环境变量CHROME_PATH。
工作流程
1. 查找并查看Logo
找到用户所指的文件:检查当前工作目录、~/Downloads和~/Desktop,或直接询问用户。渲染前务必读取图片。注意Logo是否有透明或纯色背景、包含多少个独立形状、是否已有文字标记以及它的颜色。这些信息将决定哪种风格最合适。在检查预览时请牢记这些特征。
2. 确定需求,尽量使用默认值而非提问
默认输出为全部五种风格、1920×1080分辨率、60帧/秒、自动背景、MP4加透明WebM。仅当答案会改变输出且无法推理时再提问。例如,用户希望添加名称但你不确定确切拼写或颜色分割位置时。
| 用户需求 | 选项 |
|---|---|
| 指定风格 | --styles liquid,neon |
| Instagram/正方形、TikTok/Reels/竖版 | --size square、--size vertical(或 --size 1280x720) |
| 标记旁添加品牌名称 | `--text "Pharm |
| 深色或浅色页面 | --bg dark、--bg light、--bg "#0b1e2d"(霓虹风格始终为深色) |
| Premiere/Final Cut 文件 | --prores(添加带Alpha通道的ProRes 4444 .mov大文件) |
3. 先预览(只需数秒,而非数分钟)
<skill>/scripts/animate.sh "<logo>" --preview --out "<out-dir>" [options]
此命令将为每种风格生成<名称>-5s-<风格>-preview.png(每种风格10张静态图),以及两种以上风格时的<名称>-5s-overview.png和每个风格的-info.json文件。查看总览图并检查:
- **抠图:**边缘干净,Logo内部无背景色或杂点。若背景已抠除(文件中无透明度),
info.json中的keyedBackground会被设为true。 - 分组:
parts表示独立形状数量,textParts表示检测到的字母数量。霓虹闪烁、液态珠粒和弹跳下落等效果需要将字母识别为文本,才能将它们当作单词处理。 - **构图:**未发生裁剪,尺寸正确。
如有问题,请参阅下面的“修复分析问题”。如果用户希望在完整渲染前发表意见,可将总览图展示给用户。
4. 渲染
<skill>/scripts/animate.sh "<logo>" --styles <列表> --out "<out-dir>" [options]
每种风格大约需要60-70秒(不透明和透明通道渲染及编码)。四种或更多风格时可在后台运行。每个风格的输出文件位于输出文件夹:
<名称>-5s-<风格>.mp4(带音效)、-alpha.webm、-alpha.mov(使用--prores时)、-sfx.wav、-keyframes.png和-info.json。
5. 交付前检查
- 查看每个
-keyframes.png。最后一帧必须是清晰、完整的Logo。 - 使用
ffprobe确认时长5.000秒和尺寸。音效峰值已归一化至-3 dB。 - 将MP4文件和总览图发送给用户(可用SendUserFile时),并以链接形式列出所有文件。提及透明版本,并以一行说明每种风格的作用。
6. 迭代调整
每种风格的定时参数位于scripts/styles/<风格>.mjs中的T对象内。所有其他定时参数都依赖于它,音效也会自动跟随,因此在此修改即可。如果五种风格无法满足需求,或者Logo的特定形状需要特殊动画,请编写新的风格。参考references/custom-style.md。
风格详解
完整细节在references/styles.md中;在为用户选择或解释每种风格时阅读它。
- **液态(liquid):**一小滴Logo主色从页面落下,扩散成最大的形状。其他形状和字母像珠子一样挤出。最适合圆润、有机的Logo。
- **霓虹(neon):**在深色页面上,发光管线勾勒每个形状,Logo伴随闪光亮起,字母像招牌一样闪烁点亮。非常深的形状会变为白色。
- **弹跳(bounce):**大形状翻滚或滚入并像塑料一样弹跳,随后彩屑弹出,接着字母落入。充满趣味。
- **透镜(lens):**放大镜在空白页面上滑过,Logo只在其镜片下显现。然后从主要形状处缩放推出。适合搜索、健康或洞察类品牌。
- **升起(rise):**品牌色的细线打开成带状,形状从中升起。沉稳商务,适用于任何Logo。
修复分析问题
- **JPG Logo周围出现光晕或背景残留:**背景是根据其边缘颜色抠除的。如果Logo接触到图像边缘,或位于渐变或照片背景上,请先将其导出为透明PNG再重新运行。
- **白色细节消失(白色形状在白色背景上):**这是正确的抠图效果。如果需要显示这些白色部分,请使用透明PNG。
- **字母未被识别为文本:**需要在主要形状旁边或下方有3个或更多高度相近的独立字母排成一行。连笔字或单个形状的文字标记被视为一个部件,在升起和透镜风格中动画效果依然正常。
- **文字标记字体错误:**必须确保
--font指定的字体已安装在机器上。使用fc-list检查,macOS上可查看/System/Library/Fonts。
制作定制风格
当用户有特殊需求时,例如“药片应该落入位置”或“放大镜应该扫描”,请阅读references/custom-style.md。其中涵盖了风格API、引擎助手、音效事件列表以及以往定制的Logo动画效果良好的技术。这些技术包括将标记重建为矢量形状、对照PNG检查重建结果,以及在最后移交真实像素。