Motion Replicate — 从参考链接到可编辑的 AE 重建
先阅读 skill/SKILL.md 的“复刻参考片失败的五个根因”和“复刻参考片:先逐帧量,再动手”章节。
规则:先测量,后构建。 重建中的每一个数字都来自参考。
1. 获取参考视频
python3 tools/fetch_reference.py "<link>" --slug <short-name>
- Pinterest(pin.it 或 /pin//):通过 Pinterest 公开的 widget API 下载 pin 的视频,包括 idea/story 类型。如果 pin 只是图片,工具会说明并打印出站链接:真正的动画通常在那里(Instagram 或 Behance 帖子)。请跟随该链接。
- 直接视频 URL(.mp4/.mov/.webm/.gif):直接下载。
- Behance、Vimeo、YouTube、作品集网站:通常拒绝命令行请求(退出码 3)或嵌入播放器。此时应观看而非下载:
- 在浏览器中打开项目页面,列出所有播放器:
[...document.querySelectorAll('iframe,video')].map(n => n.src || n.currentSrc)。 - 打开播放器 URL 本身(例如
https://player.vimeo.com/video/<id>),将tools/browser_frame_sampler.js粘贴到浏览器的 JavaScript 工具中,运行await motionAgentSample({ fps: 12 }),然后截图:你将得到一张带时间戳的联系表以及每帧的运动能量。await motionAgentShowFrame(t)+ 截图功能可提供一个全分辨率帧用于测量位置。 - 将截图和返回的 JSON 保存到
refs/<slug>/。
- 在浏览器中打开项目页面,列出所有播放器:
- 绝不要绕过登录、付费墙或机器人检测,也绝不要伪造标头来拉取受保护文件。如果页面阻止你,请使用浏览器方式或请用户下载片段。
refs/ 下的所有内容都被 git 忽略。参考视频属于它们的创作者:绝不要提交它们或发布它们的帧;在使用案例中需注明创作者(meta.json)。
2. 测量
python3 tools/analyze_reference.py refs/<slug>/reference.mp4 --fps 24
阅读 refs/<slug>/ANALYSIS.md:尺寸、帧率、时长、停顿、切换、最快时刻、是否循环、调色板,以及联系表和运动能量图。然后从 frames/ 中测量每个运动元素(像素位置、缩放、旋转在开始、结束和转折点的值;tools/measure.py 有帮助),并编写一个简短的规格说明:元素 → 关键帧(时间,值)→ 速度形状(缓入/缓出/两者皆含,过冲)。
在构建前,用 3-5 行文字告诉用户你测量了哪些内容以及将如何构建。
3. 在 After Effects 中重建
- 合成设置应使用参考视频的尺寸和帧率(对于小参考视频,尺寸放大 2 倍,并说明)。
- 在查看器中打开合成并边工作边移动播放头,以便用户可以实时观看。
- 优先使用带有贝塞尔缓动的关键帧(明确的速度/影响,以复现测量的速度曲线);仅当关键帧无法实现时才使用表达式。
- 合成和图层名称保持简短,每个名称一个单词。
- 每次结构性更改前保存备份。
4. 比较和迭代
将我们渲染的相同时间戳帧与参考帧并排放置:
python3 tools/sheet.py "<our frames glob>" refs/<slug>/compare.png --pair "refs/<slug>/frames/f_*.jpg"
检查时间(停顿和切换是否落在相同的帧号上)、位置(在相同缩放比例下,误差在几个像素内)、速度形状和颜色。首先修复最大的不匹配,然后再次比较。每次比较都附上对比图。当用户满意时停止。
5. 保留学到的内容
当用户确认渲染后,运行 agent-skills/motion-retrospective。该案例需注明原始创作者和来源链接,仅包含我们自己重建的帧,并记录测量的数字以及复现这些数字的关键帧。