Motion Replicate — desde un enlace de referencia hasta una reconstrucción editable en AE
Lee primero las secciones "Cinco causas raíz de fallos al replicar una referencia" y "Replicar una referencia: primero mide fotograma a fotograma, luego construye" del archivo skill/SKILL.md.
La regla: mide antes de construir. Cada número en la reconstrucción proviene de la referencia.
1. Obtén la referencia
python3 tools/fetch_reference.py "<enlace>" --slug <nombre-corto>
- Pinterest (pin.it o /pin//): descarga el video del pin a través de la API pública de widgets de Pinterest, incluyendo pins de ideas/historias. Si el pin es solo una imagen, la herramienta lo indica e imprime el enlace externo: el movimiento real suele estar ahí (una publicación de Instagram o Behance). Sigue ese enlace.
- Enlace de video directo (.mp4/.mov/.webm/.gif): se descarga tal cual.
- Behance, Vimeo, YouTube, sitios de portafolio: a menudo rechazan solicitudes de línea de comandos (código de salida 3) o incrustan un reproductor. En ese caso, observa en lugar de descargar:
- Abre la página del proyecto en el navegador y lista los reproductores:
[...document.querySelectorAll('iframe,video')].map(n => n.src || n.currentSrc). - Abre la URL del reproductor (por ejemplo,
https://player.vimeo.com/video/<id>), pegatools/browser_frame_sampler.jsen la consola JavaScript del navegador, ejecutaawait motionAgentSample({ fps: 12 }), luego toma una captura de pantalla: obtendrás una hoja de contactos con marcas de tiempo y la energía de movimiento por fotograma.await motionAgentShowFrame(t)+ captura de pantalla da un fotograma a resolución completa para medir posiciones. - Guarda las capturas de pantalla y el JSON devuelto en
refs/<slug>/.
- Abre la página del proyecto en el navegador y lista los reproductores:
- Nunca omitas inicios de sesión, muros de pago ni comprobaciones de bots, y nunca falsifiques encabezados para descargar archivos protegidos. Si una página te bloquea, usa la ruta del navegador o pide al usuario que descargue el clip.
Todo lo que esté en refs/ está ignorado por git. Los videos de referencia pertenecen a sus creadores: nunca los confirmes ni publiques sus fotogramas; acredita al creador (meta.json) en el caso.
2. Mide
python3 tools/analyze_reference.py refs/<slug>/reference.mp4 --fps 24
Lee refs/<slug>/ANALYSIS.md: tamaño, velocidad de fotogramas, duración, pausas, cortes, momentos más rápidos, si tiene bucle, paleta, más una hoja de contactos y un gráfico de energía de movimiento. Luego mide cada elemento en movimiento desde frames/ (posiciones en píxeles, escala, rotación en su inicio, final y puntos de inflexión; tools/measure.py ayuda) y escribe una especificación breve: elemento → fotogramas clave (tiempo, valor) → forma de la velocidad (facilidad de entrada / salida / ambas, rebasamiento).
Informa al usuario en 3–5 líneas lo que mediste y cómo lo construirás antes de construir.
3. Reconstruye en After Effects
- Comp al tamaño y velocidad de fotogramas de la referencia (escala ×2 para referencias pequeñas, y dilo).
- Abre la composición en el visor y mueve el cabezal de reproducción mientras trabajas, para que el usuario pueda observar.
- Fotogramas clave con interpolación Bézier primero (velocidad/influencia explícitas que reproduzcan la curva de velocidad medida); expresiones solo cuando los fotogramas clave no puedan hacerlo.
- Una palabra corta por nombre de composición y capa.
- Guarda una copia de seguridad antes de cada cambio estructural.
4. Compara e itera
Renderiza las mismas marcas de tiempo que los fotogramas de referencia y colócalos lado a lado:
python3 tools/sheet.py "<nuestro patrón de fotogramas>" refs/<slug>/compare.png --pair "refs/<slug>/frames/f_*.jpg"
Verifica el timing (las pausas y cortes caen en los mismos fotogramas), las posiciones (dentro de unos pocos píxeles a la misma escala), la forma de la velocidad y el color. Corrige primero la discrepancia más grande y vuelve a comparar. Informa cada ronda con la hoja de comparación. Detente cuando el usuario esté satisfecho.
5. Conserva lo aprendido
Cuando el usuario confirme el renderizado, ejecuta agent-skills/motion-retrospective. El caso acredita al creador original y al enlace fuente, incluye solo los fotogramas de nuestra propia reconstrucción, y registra los números medidos y los fotogramas clave que los reprodujeron.