Motion Replicate — リファレンスリンクから編集可能なAE再構築へ
最初に skill/SKILL.md の「复刻参考片失败的五个根因」と「复刻参考片:先逐帧量,再动手」のセクションを読んでください。
ルール: 計測してから構築すること。 再構築のすべての数値はリファレンスから取得します。
1. リファレンスを取得する
python3 tools/fetch_reference.py "<link>" --slug <short-name>
- Pinterest (pin.it または /pin//): Pinterestの公開ウィジェットAPIを通じてピンの動画をダウンロードします(アイデア/ストーリーピンを含む)。ピンが画像のみの場合、ツールはその旨を伝え、外部リンクを表示します。実際の動きは通常そこにあります(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)+ スクリーンショットで、測定用の1フレームフル解像度の画像が得られます。 - スクリーンショットと返された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 を実行します。このケースでは、元の作成者とソースリンクのクレジットを記録し、再構築したフレームのみを含め、測定値とそれを再現したキーフレームを記録します。