Motion Replicate — de um link de referência para uma reconstrução editável no After Effects
Leia as seções "skill/SKILL.md": "五个根因" e "复刻参考片:先逐帧量,再动手" primeiro. A regra: meça antes de construir. Cada número na reconstrução vem da referência.
1. Obter a referência
python3 tools/fetch_reference.py "<link>" --slug <nome-curto>
- Pinterest (pin.it ou /pin//): baixa o vídeo do pin através da API pública de widgets do Pinterest, incluindo pins de ideias/histórias. Se o pin for apenas uma imagem, a ferramenta informa e imprime o link de saída: o movimento real geralmente está lá (um post do Instagram ou Behance). Siga-o.
- URL de vídeo direto (.mp4/.mov/.webm/.gif): baixado como está.
- Behance, Vimeo, YouTube, sites de portfólio: frequentemente recusam requisições em linha de comando (código de saída 3) ou incorporam um player. Então assista em vez de baixar:
- Abra a página do projeto no navegador e liste os players:
[...document.querySelectorAll('iframe,video')].map(n => n.src || n.currentSrc). - Abra a URL do player (ex.:
https://player.vimeo.com/video/<id>), coletools/browser_frame_sampler.jsna ferramenta JavaScript do navegador, executeawait motionAgentSample({ fps: 12 }), depois faça uma captura de tela: você obtém uma folha de contato com timestamps e energia de movimento por quadro.await motionAgentShowFrame(t)+ captura de tela fornece um quadro em resolução total para medir posições. - Salve as capturas de tela e o JSON retornado em
refs/<slug>/.
- Abra a página do projeto no navegador e liste os players:
- Nunca ignore logins, paywalls ou verificações de bot, e nunca falsifique cabeçalhos para baixar arquivos protegidos. Se uma página bloquear, use a rota do navegador ou peça ao usuário para baixar o clipe.
Tudo em refs/ é ignorado pelo git. Os vídeos de referência pertencem aos seus criadores: nunca os commite ou publique seus frames; credite o criador (meta.json) no caso.
2. Medir
python3 tools/analyze_reference.py refs/<slug>/reference.mp4 --fps 24
Leia refs/<slug>/ANALYSIS.md: tamanho, taxa de quadros, duração, pausas, cortes, momentos mais rápidos, se loop, paleta, mais uma folha de contato e um gráfico de energia de movimento. Depois meça cada elemento em movimento a partir de frames/ (posições em pixels, escala, rotação no início, fim e pontos de virada; tools/measure.py ajuda) e escreva uma especificação curta: elemento → chaves (tempo, valor) → forma de velocidade (ease in / out / ambos, overshoot).
Informe ao usuário em 3–5 linhas o que você mediu e como construirá antes de construir.
3. Reconstruir no After Effects
- Comp no tamanho e taxa de quadros da referência (escala ×2 para referências pequenas, e avise).
- Abra a comp no visualizador e mova o playhead enquanto trabalha, para que o usuário possa assistir.
- Quadros-chave com interpolação Bezier primeiro (velocidade/influência explícitas que reproduzam a curva de velocidade medida); expressões apenas quando quadros-chave não conseguirem.
- Uma palavra curta por nome de comp e camada.
- Salve um backup antes de cada mudança estrutural.
4. Comparar e iterar
Renderize os mesmos timestamps dos frames de referência e coloque-os lado a lado:
python3 tools/sheet.py "<nosso glob de frames>" refs/<slug>/compare.png --pair "refs/<slug>/frames/f_*.jpg"
Verifique o tempo (pausas e cortes no mesmo quadro), posições (poucos pixels na mesma escala), forma de velocidade e cor. Corrija a maior discrepância primeiro e compare novamente. Relate cada rodada com a planilha de comparação. Pare quando o usuário estiver satisfeito.
5. Manter o que foi aprendido
Quando o usuário confirmar a renderização, execute agent-skills/motion-retrospective. O caso credita o criador original e o link de origem, inclui apenas os frames da nossa reconstrução e registra as métricas medidas e os quadros-chave que as reproduziram.