Guía · @vanlookeren
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.
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.
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.
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.
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.
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.
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.
Medido en un MacBook Pro con chip M4 Max.
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.
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 %.
En las expresiones, [1, 2] + [3, 4] junta los dos como texto y la expresión se apaga. Se usa add(), sub() y mul().
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.
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.