Communitygithub.com

jindratilk/ae-motion-graphics

Crie e recrie gráficos animados nativos e editáveis no Adobe After Effects via scripts. Use para animações no After Effects, filmes de produto, animações de UI, promos e recriações de vídeos de referência.

O que é ae-motion-graphics?

Esta skill capacita um agente de IA a operar o Adobe After Effects com precisão de nível profissional, construindo ou recriando motion graphics nativos e completamente editáveis — sem rasters, sem soluções de contorno. Ela apresenta um fluxo de trabalho estruturado de cinco partes: conectar-se a uma instância privada do AE, seguir regras universais de animação, recriar vídeos de referência 1:1, criar filmes originais para marcas e produtos, e finalizar com renderização e entrega. A skill impõe técnicas rigorosas de keyframing e curva para produzir movimentos suaves e naturais, utiliza uma sintaxe de construção baseada em dados (kit.py/kit.jsx) para gerar composições nativas com texto, formas e camadas 3D, e fornece ferramentas para renderização headless (aerender) e verificação de contato. É compatível com o Adobe After Effects 2026 no macOS e foi projetada para coexistir pacificamente com outras instâncias do AE, mantendo segurança de PID e salvando com frequência.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/jindratilk/claude-skill-ae-motion-graphics/tree/HEAD

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Motion Graphics de Nível Mundial no After Effects: o processo

Trabalhe nas bases compartilhadas, siga o modo relevante e, em seguida, finalize com QA e entrega:

  1. Parte A – Conectar ao After Effects. Estabeleça um controle confiável de sua própria instância do AE.
  2. Parte B – Regras que sempre se aplicam. Leia as regras de animação e editabilidade compartilhadas antes de construir.
  3. Parte C – Processo RECRIAR. Combine uma referência por meio de análise, medição e comparação.
  4. Parte D – Processo CRIAR. Desenvolva um filme original por meio de pesquisa, conceito, história e construção.
  5. Parte E – Finalizar. Verifique a renderização final e empacote os entregáveis solicitados.

Modos de trabalho

ModoObjetivoComo começa
RECRIARCombinar um vídeo de referência 1:1 em tempo, layout, movimento e aparência, reconstruído nativamente.Analisar e medir a referência; ela define a história.
CRIARFazer um filme original para uma marca ou produto.Pesquisa, conceito, história e moodboard, seguidos pela construção.

Parte A – Conectar ao After Effects

O objetivo é uma instância privada, confiável e scriptável do After Effects que nenhum outro agente possa perturbar, e que você possa dirigir sem tocar na GUI.

A1. Inicie sua própria instância

  1. Registre os PIDs do AE em execução: pgrep -f "Contents/MacOS/After Effects".
  2. Inicie uma nova instância:
    open -n "/Applications/Adobe After Effects 2026/Adobe After Effects 2026.app" --args -m
    
    Um pequeno launcher Swift (NSWorkspace.openApplication com createsNewApplicationInstance=true e args -m -ApplePersistenceIgnoreState YES) pode fazer o mesmo e retornar o PID diretamente.
    • Não inicie o binário bruto através de subprocess.Popen. Esse processo não está registrado no bundle e não pode receber AppleEvents.
  3. Diferencie as listas de PID e retenha o novo PID para comandos subsequentes.
    • O AE pode ser respawnado sob um novo PID após a inicialização. Pegue o PID que possui a janela principal "Adobe After Effects" (Quartz CGWindowListCopyWindowInfo).
    • O bundle id é com.adobe.AfterEffects.application.
  4. Dispense os diálogos de inicialização (Crash Repair → Continue). Uma janela de login da Adobe nessas instâncias é um conhecido bug de exibição: ignore-a, nunca insira credenciais e não a escale para o usuário.
  5. ensure_ae.py automatiza tudo isso: reinicia quando o PID morre, confirma os pequenos diálogos, detecta o PID respawnado e reabre o projeto.

A2. Comunique-se com ele apenas pelo PID

  • tell application "Adobe After Effects 2026" atinge qualquer instância, incluindo as de outros agentes. Nunca use.
  • aedo (Swift) envia o AppleEvent misc/dosc (DoScript) para um PID.
  • ae.py script.jsx ou ae.py -e "code" envolve cada script:
    • inclui o polyfill JSON ES3 (json.jsx);
    • chama app.beginSuppressDialogs();
    • executa $.evalFile dentro de try/catch;
    • escreve {ok, value, error, line, file, ms} em um arquivo de resultado. Os valores de retorno do AppleEvent são não confiáveis, então sempre leia o arquivo.
  • Guarda de identidade do projeto: antes de qualquer script de mutação, verifique o PID alvo e app.project.file em relação ao projeto que está sendo editado. Nunca feche ou saia de uma instância que você não verificou ser sua.
  • Execute um script do AE por vez. Os scripts geralmente não são idempotentes, então faça backup ou Salvar Como antes de alterações em massa.

A3. Verificação de integridade antes do trabalho real

Com um script, leia:

  • app.version e se o projeto é seu;
  • o renderizador da comp (ADBE Advanced 3d é necessário para camadas de Modelo 3D e luzes de ambiente);
  • fontes: app.fonts.getFontsByPostScriptName(name).length deve ser maior que 0 para cada fonte que você planeja usar;
  • que um teste saveFrameToPng aparece no disco.

Defina também a preferência que permite que scripts escrevam arquivos e acessem a rede (Pref_SCRIPTING_FILE_NETWORK_SECURITY).

A4. O pipeline de construção: dados → projeto nativo

Use os auxiliares de construção disponíveis ou implemente equivalentes; os nomes dos auxiliares abaixo descrevem suas funções.

  1. Python descreve o filme como dados. Uma DSL kit.py fornece:

    • K() chaves esparsas com eases nomeadas;
    • shape, text, precomp, null, camera, model, L (camadas);
    • efeitos por matchName, máscaras, track mattes, expressões, marcadores, notas, rótulos.

    Combine especificações de cena em uma única especificação de construção.

  2. kit.jsx constrói camadas nativas a partir da especificação.

    • Ela cria camadas de baixo para cima, para que já estejam na ordem final. Evite reordenação em massa com moveTo, que pode travar o AE.
    • Em seguida, aplica parentesco, efeitos, máscaras, transformações, eases, mattes e fiação de luz ambiente.
  3. build.py spec.json --new --only "A|B" --stills "Comp:t1,t2" --save output.aep

    • --new fecha o projeto atual sem salvar primeiro (CloseOptions.DO_NOT_SAVE_CHANGES). Caso contrário, newProject() abre um diálogo Salvar Como e trava.
  4. Stills: stills.py "Comp" t1,t2 prefix.

    • saveFrameToPng é assíncrono (polle até o arquivo existir) e escreve PNGs de 16 bits (divida por 257 antes da visualização em 8 bits).
  5. Renderizações de movimento direcionadas: render.py "Comp" start end out.mp4 [--half] [--hq], ou aerender com -s/-e.

  6. Renderizações completas: aerender_job.py "Comp" out.mp4 [--half] [--hq].

    • Salva uma cópia do job e executa aerender -project job.aep -rqindex 1 -sound ON em um processo separado.
    • É mais rápido que a fila no aplicativo, e uma falha não pode derrubar a instância de trabalho.
  7. Folhas de contato: contact.py (quadros de um vídeo) e sheet.py (stills, mantém a proporção). Sempre reduza as imagens antes de visualizá-las.

A5. Regras do ExtendScript (ES3)

  • Sem JSON e sem Array.indexOf: use o polyfill ou loops. Leia JSON com eval('('+text+')').
  • Nunca use ternários encadeados (a?x:b?y:z avaliado incorretamente). Use if/else.
  • Enderece propriedades por matchName. As pesquisas por nome de exibição têm um limite de 39 bytes e são localizadas.
  • Uma câmera não é threeDLayer: teste matchName==='ADBE Camera Layer'.
  • Normalize as dimensões dos valores: passe escalares para propriedades de dimensões separadas e arrays de 3 elementos para propriedades 3D.
  • shutterPhase deve ser um inteiro.
  • Defina applyFill=true antes de definir uma cor de preenchimento de texto.
  • Crie um TextDocument novo por camada. Chame resetCharStyle()/resetParagraphStyle() antes de estilizar.
  • Um erro "propriedade ou pai está oculto" significa que a propriedade não se aplica ali. Exemplo: a Rotação Y de uma luz ambiente não pode ser definida; anime seu mapa de origem.
  • As cores de preenchimento de gradiente de forma não podem ser scriptadas. Use um efeito Gradient Ramp ou grupos de luz em camadas.

A6. Coexistindo com outros agentes

  • Outros agentes podem sair do AE "pelo nome", o que também atinge sua instância. Salve com frequência e mantenha ensure_ae.py pronto.
  • Pressionar Escape em um diálogo "Salvar alterações?" acionado por saída sai do AE.
  • Ferramentas de uso de computador e acessibilidade podem ver apenas as janelas de outras instâncias. Diagnostique suas próprias janelas com uma lista de janelas Quartz filtrada por PID mais screencapture -l <windowId>. Dispense-as via System Events em seu PID (código de tecla 36 = Return, 53 = Escape).
  • Divulgue qualquer interferência acidental com outra instância do AE.

Parte B – Regras que sempre se aplicam

Aplique estas regras em ambos os modos para manter o movimento suave e o projeto editável.

B1. Keyframes: o mínimo possível

  • Use o mínimo de keyframes possível para obter movimento suave. Dez chaves com curvas vencem mil chaves planas.
  • Um gesto precisa de 2–4 chaves: início, fim e uma pausa real ou um extremo real (pico, vale, mudança de fase).
  • Limite cada propriedade a cerca de 7–12 chaves. Mais chaves geralmente significam que o movimento não foi projetado.
  • Nunca asse o movimento como chaves lineares por quadro (ou 2 por quadro). Um editor não pode editá-lo, e parece mecânico.
  • Quando o movimento vier de medição ou dados legados, ajuste-o (veja B3). Nunca cole amostras.

B2. Curvas: um arco suave no gráfico de velocidade

  • Abra o gráfico de velocidade de cada propriedade animada.

    • Um sino ou arco suave significa movimento suave.
    • Um gráfico angular, em degraus (cada chave com easy ease para zero) significa que o movimento gagueja.
    • Um pico significa um solavanco, a menos que seja um acento intencional.
  • As chaves internas de um gesto contínuo não devem parar.

    • Use chaves Bézier contínuas.
    • Defina a velocidade interna como a média harmônica das inclinações vizinhas, 2ab/(a+b) quando ambos têm o mesmo sinal, senão 0, com uma influência de cerca de 33,3.
    • Nunca aplique um Easy Ease global a um gesto contínuo: cria os degraus.
  • Vocabulário de ease (influência de saída da chave anterior / influência de entrada desta chave):

    NomeInfluência
    ease33/33
    smooth70/70
    inout82/82
    out12/88
    expo6/94
    snap3/97
    in88/12
    soft45/75

    Um ease personalizado é {'o':[speed,inf],'i':[speed,inf]}. Um puxão suave de volta, por exemplo: {'o':[0,55],'i':[0,92]}.

  • As tangentes espaciais padrão são zero, o que evita overshoot do caminho. Use arcos apenas com propósito.

  • Um movimento muito curto com um início expo agressivo parece um solavanco. Alongue-o (0,5 → 0,8 s) e suavize o ease em vez de adicionar chaves.

  • Sobreponha sub-movimentos em um gesto. Uma dobra, depois um giro, depois um empurrão, feitos separadamente, dão movimento de para-e-vai. Comece o próximo movimento antes de o anterior terminar.

B3. Ajustando curvas a partir de dados

Modo Recriar, ou ao converter quaisquer dados densos:

  1. Amostre o movimento alvo densamente (50–200 Hz) com valueAtTime ou a partir de medição.

  2. Fixe nós no início e no fim, em pausas exatas (velocidade zero) e em extremos significativos (inclinação zero nesse eixo).

  3. Resolva velocidades e influências por mínimos quadrados contra as amostras: velocidades com restrição de sinal, influências limitadas a 0,04–0,94.

  4. Adicione um nó apenas onde o erro exceder a tolerância:

    PropriedadeTolerância
    Posição2–3 px (câmera 3 px)
    Escala0,4–0,65
    Opacidade0,5–2,5
    Desfoque~1
    Rotação0,4
  5. Para propriedades vetoriais, mescle os tempos dos nós entre os eixos dividindo a Bézier (de Casteljau). Afirme que a velocidade de entrada é igual à velocidade de saída em cada chave interna.

  6. Mantenha como está, com uma razão escrita: expressões, time remap, cadência de digitação, switches de pausa deliberados, inversões de visibilidade de um quadro.

B4. Uma câmera 3D por cena

  • Cada cena tem uma CAMERA • scene (um nó, NO_AUTO_ORIENT, X/Y/Z separados). A câmera carrega o enquadramento, pan, dolly e zoom.

  • Não anime Posição/Escala em cada elemento para fingir um movimento de câmera.

  • Para derivar uma câmera do movimento de UI registrado (posição da camada principal P, escala s, centro da comp C, zoom Z0):

    • camera XY = C + (C − P)/s
    • camera Z = −Z0/s

    Em seguida, reexpresse tudo que se move por conta própria em termos locais.

  • A câmera conta a história: chegada → ação → aceleração → pausa legível, e macro detalhe → revelação de afastamento.

  • A animação local permanece local: um caminho de cursor, um clique de pressão, uma rolagem, um flip de cartão. Pulsos de clique pai dentro do componente, para que sigam a perspectiva.

  • Manchetes vivem em um plano 2D estável acima do mundo 3D, para que os empurrões da câmera nunca as cortem. Verifique com uma verificação de limites de texto projetados.

B5. Desfoque de movimento, nitidez e profundidade

  • O desfoque de movimento da comp está ativado (obturador 135–180°, 12–16 amostras).
    • Reduza o obturador para 45–90° em afastamentos muito rápidos, ou borrões de UI.
    • Desligue o desfoque de movimento em camadas onde ele duplica o texto.
  • Mantenha grandes zooms de UI nítidos: uma pré-composição de plano de renderização superamostrada 2–4× que contém a UI vetorial editável, e sem colapso em cenas de câmera.
  • Renderizador 3D Avançado: mantenha ≥ 4 unidades entre planos paralelos, ou eles z-fight e mostram emendas.
  • A opacidade de um nulo não afeta seus filhos. Propague a opacidade para todos os descendentes.
  • Brilhos desfocados devem ter Repetir Pixels de Borda DESLIGADO, caso contrário, mostram limites retangulares. Rampas Radiais de quadro completo fazem os melhores campos de luz.

B6. Transições: continuidade, não efeitos

  • Uma transição deve ser motivada:

    • Corte de correspondência: o último quadro de A é igual ao primeiro quadro de B. Meça a pose na renderização.
    • Morph: uma forma anima tamanho, arredondamento, cor e posição no próximo elemento.
    • Transferência de objeto: um elemento é extraído e se torna o herói da próxima cena.
    • Mergulho de câmera em um elemento escuro, para que a próxima cena emerja do preto.
    • Revelação de disco claro ou escuro atrás do produto via um track matte.
  • Proibido:

    • flashes brancos ou cinzas de quadro completo;
    • crossfades entre cenas escuras e claras, que produzem quadros cinza médio;
    • o mesmo wipe em cada corte;
    • listras de "varredura" de fundo cinza.

    Coloque flashes onde eles pertencem fisicamente: em um display, com um bloom colorido atrás do objeto.

  • Use no máximo 2–3 wipes de oclusão de quadro completo por filme.

B7. Nativo apenas, editável sempre

  • Downloads de ativos: Baixe todos os ativos necessários para a tarefa sem perguntar primeiro ao usuário, incluindo logotipos, ícones, fontes, modelos 3D, texturas, imagens, referências de vídeo, música e efeitos sonoros. Prefira fontes oficiais ou confiáveis, retenha a atribuição de licença necessária e aplique as regras de projeto nativo abaixo ao usar os ativos no AE.
  • Nativo significa texto, formas, máscaras, efeitos, pré-composições, câmeras, luzes e camadas de Modelo 3D nativas (GLB/OBJ). O áudio pode ser importado.
    • Nunca importe capturas de tela, recortes de referência, pré-renderizações, loops de webcam ou substitutos raster para camadas nativas.
    • Audite cada item de filmagem antes de reivindicar "nativo".
  • Editável significa texto ao vivo, controles deslizantes, nomes de camada claros e pré-composições de componente reutilizáveis que propagam mudanças onde quer que sejam usadas.
  • Mantenha o texto centralizado após edições com uma expressão de ponto de ancoragem de sourceRectAtTime.

B8. Tipografia

– Apenas texto ao vivo, com as fontes reais da marca. Verifique com getFontsByPostScriptName e instale instâncias estáticas sob um nome de família único quando necessário. – Manchetes são curtas, pesadas, em maiúsculas e minúsculas, com ponto final. Tracking −20 a −40. – Revelação por caractere ou palavra: opacidade 0, desfoque 20–24, y +14–26, ease-out em 0,45–0,55 s. A saída espelha a entrada: 0,25–0,35 s, desfocando para cima. – Meça larguras contra o TTF real (PIL com superamostragem 4×) para que sublinhados, pílulas e elementos visuais estejam precisamente dimensionados.

Habilidades Relacionadas