After Effects, manejado por Claude

Guía · @vanlookeren

After Effects, manejado por Claude

After Effects ejecuta scripts. Si le describes una escena a Claude, él escribe ese script y After Effects la arma: cámara, texto, tiempos y render. Así hago mis reels. Acá está cómo empezar.

La puerta

After Effects trae un motor de scripts desde hace años. Un script es un archivo de texto .jsx que crea composiciones, capas, cámaras y expresiones, y manda a renderizar. Todo lo que harías con el mouse, escrito.

En Mac se ejecuta desde la Terminal con una línea:

osascript -e 'tell application "Adobe After Effects 2026" to DoScriptFile "/ruta/a/hola.jsx"'

Esa línea es lo que le permite a Claude Code trabajar solo: escribe el archivo, lo manda a After Effects, mira el resultado y corrige.

Antes de empezar

En los ajustes de After Effects, en la sección de scripts y expresiones, activa el permiso para que los scripts escriban archivos. Sin eso no pueden guardar cuadros ni el proyecto.

Lo que necesitas

Paso a paso

  1. Prueba la puerta con un script mínimo

    Guarda esto como hola.jsx y ejecútalo con la línea de arriba. Crea una composición vertical con un texto que entra con resorte, sin un solo keyframe:

    // hola.jsx: una comp vertical con un texto que entra con resorte. Sin keyframes.
    app.beginSuppressDialogs();
    app.newProject();
    var comp = app.project.items.addComp("hola", 1080, 1920, 1, 4, 30);
    var t = comp.layers.addText("Hola, After Effects");
    var doc = t.property("Source Text").value;
    doc.fontSize = 96; doc.fillColor = [1, 1, 1]; doc.justification = ParagraphJustification.CENTER_JUSTIFY;
    t.property("Source Text").setValue(doc);
    t.property("Position").setValue([540, 960]);
    // resorte: 0 → 1 con un poco de rebote; mueve y hace aparecer el texto
    var sp = "function sp(t){ if(t<=0) return 0; var w=2*Math.PI/0.5, z=0.7, wd=w*Math.sqrt(1-z*z); return 1-Math.exp(-z*w*t)*(Math.cos(wd*t)+(z*w/wd)*Math.sin(wd*t)); }\n";
    t.property("Position").expression = sp + "add(value, [0, 200*(1-sp(time-0.3))])";
    t.property("Opacity").expression = sp + "100*Math.min(1, sp(time-0.3)*1.5)";
    comp.openInViewer();
    app.endSuppressDialogs(false);

    Lo probé tal cual en After Effects 2026.

  2. Describe la escena, no los pasos

    A Claude le pido el resultado y le doy las reglas. Por ejemplo:

    Escribe un script de After Effects (.jsx) para un video vertical de 1080 × 1920 a 30 fps.
    Tres tarjetas oscuras apiladas en un mundo 3D y una cámara con profundidad de campo
    que viaja de una a otra con rebote. El texto entra letra por letra.
    Toda la animación con expresiones, sin keyframes. Guarda cuadros PNG en los segundos
    1, 3 y 5 para que los revisemos antes de renderizar.

    Lo importante es el último punto: que el script guarde cuadros. Claude los mira, ve lo que quedó mal y corrige solo.

  3. Amarra cada animación a la voz

    Paso la voz por Whisper, que devuelve el segundo exacto de cada palabra. Esos tiempos entran al script como datos, y cada tarjeta llega en la palabra que la nombra. Si cambio el guion, todo se vuelve a sincronizar solo.

  4. Revisa cuadros y recién ahí renderiza

    Armar el proyecto y sacar los cuadros de revisión toma segundos. El render completo es el paso lento, así que va al final, cuando los cuadros ya están bien.

Los números de mi video

El reel de esta guía
Líneas de script
471
Keyframes puestos a mano
0
Duración del video
27 s · 1080 × 1920 · 30 fps
Armado y render completo
3 min 34 s

Medido en un MacBook Pro con chip M4 Max.

Las trampas que me costaron un render

01 · Un error de sintaxis deja a After Effects pegado

Si el script tiene un error de sintaxis, After Effects muestra un aviso que hay que cerrar a mano. Por eso reviso el archivo con node --check antes de mandarlo.

02 · Las tarjetas 3D se ven planas

Una precomposición 3D con «contraer transformaciones» ignora la cámara. Va sin contraer. Para que el texto se vea nítido de cerca, la armo al doble de tamaño y la uso al 50 %.

03 · Sumar posiciones con + no funciona

En las expresiones, [1, 2] + [3, 4] junta los dos como texto y la expresión se apaga. Se usa add(), sub() y mul().

04 · Lo que no se ve igual se calcula

Una escena fuera de cuadro sigue costando render. Con opacidad 0 fuera de su momento y luces hechas con un degradado en vez de desenfoque, mi primer video pasó de unos 3,5 minutos por cuadro a renderizar entero en unos 5 minutos.

05 · After Effects recién abierto no responde

Si el script llega antes de que termine de cargar, contesta que el plugin de scripts no está instalado. Espera un minuto y medio después de abrirlo.