Communitygithub.com

explainer-editor

Edita una toma vertical en bruto (9:16) de alguien hablando a cámara para convertirla en un corto terminado en el LENGUAJE EXPLICATIVO de Pipecorn, con el movimiento de una edición de After Effects.

¿Qué es explainer-editor?

El skill `explainer-editor` transforma una grabación vertical en bruto de un presentador hablando a cámara en un video explicativo estilizado, similar a un motion design de After Effects. El presentador aparece en un marco con esquinas redondeadas en la parte inferior de un escenario oscuro, con su cabeza (y manos) sobresaliendo del marco. Sobre él, el escenario representa visualmente lo que dice, con escenas unidas por movimientos de cámara (barridos con destellos, elevaciones, empujes), todo con desenfoque de movimiento real y curvas de aceleración. El skill se basa en el motor de `short-editor` y proporciona una tubería completa: desde la transcripción, el enmascaramiento de la persona, la redacción del storyboard con figuras predefinidas, hasta la renderización final. Está diseñado para editores que buscan un estilo visual consistente y dinámico, con reglas derivadas de cortos reales editados para clientes.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ihsaneGTM/gtm-skills/tree/main/plugins/video/skills/explainer-editor

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

explainer-editor: una toma explicada en un escenario sobre el presentador

El usuario entrega una toma vertical de sí mismo hablando a cámara. Este skill lo coloca en un marco en la parte inferior de un escenario oscuro iluminado como un set, su cabeza sobresaliendo de él, y dibuja lo que explica sobre él, mientras lo dice, con el movimiento y la luz de una edición de After Effects: escenas entre las que viaja una cámara, figuras que vuelan, se elevan y aparecen con desenfoque de movimiento, cada una con su sombra y su brillo, algo nuevo en el escenario cada segundo aproximadamente, un sonido en cada movimiento. Sus palabras corren entre el escenario y ellos, una a la vez. Un par de veces por minuto un flash de cámara los corta a pantalla completa.

El aspecto de un corto está definido: § El lenguaje explicativo (debajo de la tubería). Fue medido fotograma a fotograma en un corto que el usuario editó para un cliente (108 s, una guía sobre ganchos de texto), luego revisado en una primera edición (2026-10-05: "no es After Effects en absoluto, no es motion design, hay muy pocas cosas en pantalla, es aburrido, faltan los whooshes"), luego en la segunda ("mucho mejor; no hay suficientes sombras pequeñas y brillos detrás de los elementos, el fondo completamente negro no los resalta; aquí hay un paquete para muchos más sonidos muy ligeros"): cada fila de ambos veredictos ahora es una regla. Comience cada nueva toma desde ahí (init.sh lo estructura); no lo reabra.

Este skill se ejecuta en el motor del skill short-editor. Su renderizado, mezcla, máscara de persona, vistas previas, compilación y verificación son los archivos del motor, como se describe en ../short-editor/SKILL.md § Prerrequisitos, § Dónde viven las cosas y § 4 a § 6; este archivo dice lo que es diferente. Lo propio de este skill: el diseño (layout.mjs: el marco del presentador y los respiros a pantalla completa, ejecutado por build.sh y preview.mjs del motor en lugar de su zoom), el escenario (stage.mjs: la cámara, las escenas, el desenfoque de movimiento, las figuras, los subtítulos, los sonidos del movimiento), la base (bed.mjs), los fotogramas fijos (stills.mjs) y las mediciones (measure.mjs). Lea antes del primer corte, cada ejecución:

  • ../../references/pitfalls.md § Transcripción y subtítulos, § Método de trabajo: las trampas con las que se escribe una edición (sus otras secciones cuando llegue su paso: § Audio antes de un sonido medido a mano, § ffmpeg y § El shell antes de un comando propio; las herramientas del motor siguen el resto)
  • ../../references/brand-kit.md, cuando la edición los muestre: los logotipos reales del usuario, capturas de pantalla y números, nunca inventados, y su conjunto de marca una vez en workspace/brand/ (§ Tu marca, configurada una vez)
  • $X/example/: el proyecto de referencia, cada archivo de una edición entregada (stage.theme: "light" para su versión clara); $X/example-2/: el skill ejecutado desde cero en otra toma (dos tomas, una grabación silenciosa, sin respiro), y qué cambió esa ejecución

Lea cuando el paso lo necesite: ../../references/audio-spec.md en los niveles (el estándar de sonoridad, cómo se mide un nivel al ser escuchado). Las figuras del motor: node plugins/video/skills/short-editor/scripts/api.mjs <módulo> [figura], nunca sus fuentes.

No puedo ver el video ni escucharlo. Dónde está la cabeza, dónde comienza una palabra, qué tan fuerte se escucha un whoosh: cada uno es una medición. verify.mjs se interpone entre "está listo" y un archivo roto; measure.mjs dice si el diseño de sonido se escucha. Nunca los omita.

Todas las rutas a continuación son relativas a la raíz de la carpeta GTM by Pipecorn. $X significa plugins/video/skills/explainer-editor/scripts (este skill), $E significa plugins/video/skills/short-editor/scripts (el motor). Ejecute ambos por su ruta absoluta.

Prerrequisitos (prevuelo: verificar antes de cualquier trabajo)

Los del motor: ffmpeg + ffprobe en PATH (brew install ffmpeg) y python3 (Xcode Command Line Tools) son necesarios y no se pueden instalar desde aquí; deténgase y diga el comando si falta alguno. Todo lo demás se autoabastece: el bootstrap.mjs del motor (paquetes de node, el venv de voz a texto, la estantería de música) se ejecuta dentro de init.sh, transcribe.sh y build.sh, y init.sh obtiene las fuentes: Inter (ExtraBold, Bold, SemiBold, Medium; Licencia de Fuente Abierta SIL, del paquete npm inter-ui a través de jsDelivr) e Instrument Serif Italic (Google Fonts, OFL) en el proyecto assets/fonts/. No se instala nada a nivel de sistema. swiftc compila la máscara de persona: sin ella la cabeza no sobresale del marco (el marco simplemente recorta al presentador) y el escenario se dibuja en la capa superior; dígalo.

Dónde viven las cosas

Como dice el motor, y solo de esta manera: un directorio de trabajo por edición, workspace/projects/<slug>/, un slug que ningún otro proyecto tenga; el archivo terminado workspace/videos/<slug>.mp4; nunca los archivos de otro proyecto, ni siquiera de la misma toma; archivos temporales en tmp/ del proyecto, nunca en /tmp. Los scripts/ del skill permanecen de solo lectura. Las imágenes del usuario (capturas de pantalla, logotipos, fotogramas de sus videos) van en assets/ del proyecto.

La tubería

0. Configurar el directorio de trabajo

$X/init.sh workspace/projects/<slug> <source.mp4> workspace/videos/<slug>.mp4 [--theme light]

El andamio del motor (project.json leído del archivo, el paquete SFX en assets/sfx-top5/), luego plan.mjs y edl.mjs de este skill, las claves del lenguaje explicativo en project.json (style: "explainer", layout: la ruta de $X/layout.mjs, blurBand 0), sfxMasterDb configurado en la voz de la toma (su sonoridad + 15.3 dB, + 0.13 dB por dB por debajo de −20.5 LUFS: los sonidos de la casa se escuchan como en los skills base, sea cual sea el nivel de la toma), las fuentes, un maestro de 1080x1920 para una toma de retrato más pequeña (conservado en una segunda ejecución), y el tema (stage.theme: dark, la referencia, o light; --theme light lo configura; un proyecto ya configurado conserva el suyo). Ejecute cada comando posterior desde ese directorio.

0.2. Preguntar primero, en UNA pregunta

El tema (oscuro, la referencia, o claro: el mismo escenario, vidrio blanco, palabras oscuras, sombras más suaves), la música (la estantería, plugins/video/assets/music/; Convergencia por defecto; diga que las pistas que no son de Mixkit pueden bloquear la monetización del video), el ritmo (×1 por defecto; una entrega lenta se lee mejor a ×1.1), y las imágenes que el usuario puede dar: capturas de pantalla de su producto, fotogramas de los videos de los que habla, su logotipo, los números reales. Lo que el usuario no proporciona se dibuja con sus palabras y los pictogramas de la casa, nunca con pantallas o números inventados. Ejecute desde la página GTM by Pipecorn, el resumen del primer mensaje lo responde (el tema a partir de sus notas: "light" allí significa el tema claro): decida según las reglas a continuación y no pregunte de nuevo.

El genérico de Pipecorn: un BONO de cada estilo, preguntado SIEMPRE, nunca activo por defecto (plugins/video/references/pipecorn-generic.md): unos 6 s al final, Pipecorn, luego sus valores reemplazándose entre sí en una ranura, luego Pipecorn nuevamente, sin música. No · Sí, con qué valores (1 a 4; node $E/generic.mjs --list; por defecto cobertura telefónica, tasa de conexión, tubería).

Tu voz mejorada: un BONO, preguntado SIEMPRE, nunca activo por defecto (plugins/video/references/voice-clean.md): el aislador de voz de ElevenLabs elimina el eco de la habitación y el ruido de la toma. No · Sí, mejora mi voz. Necesita el conector de ElevenLabs: sin una clave, diga en una línea que existe (Configuración › Conectores › Agregar clave) y continúe. En un sí, antes del paso 1: node plugins/video/motion/voice.mjs clean <source>, luego en project.json › source es <…>-voice.<ext> (la misma duración, la imagen intacta).

1. Transcribir, textualmente

$E/transcribe.sh --lang en      # el idioma REALMENTE HABLADO; luego project.json "lang"

words.json, sobre el reloj de la toma en bruto. Nunca traducido. Una toma llena de reinicios se ensambla primero con rough-cut.mjs del motor (short-editor/SKILL.md § 0.7), luego se transcribe de nuevo. Luego node $E/words.mjs (del motor): words-fixed.json, el inicio de cada palabra movido fuera de un silencio hacia la voz y su final real antes de una pausa, las dudosas listadas; words.mjs env|end|say para leer una (short-editor/SKILL.md § 1). Nunca un script propio para ello.

2. La máscara y el marco

node $E/matte.mjs                          # la máscara de persona (necesita swiftc), ~1 min por minuto
node $X/layout.mjs --measure --write       # dónde está la cabeza → project.json stage
node $X/layout.mjs --print                 # el marco, el subtítulo, los respiros

--measure encuentra las tomas del video (sus cortes de origen, como los encuentra verify.mjs) y lee la cabeza en la máscara en cada una (32 fotogramas por toma): el ancho del marco coloca la cabeza de la toma más larga en el tamaño de referencia (226 px de ancho; una toma cercana obtiene un marco más estrecho, centrado, para que sus hombros y pecho entren: 598 px en el ejemplo trabajado, cuya cabeza ocupa el 38 % del ancho de la toma, 782 en la segunda toma; --keep-frame mantiene la referencia de 942 y advierte que el marco mostrará principalmente la cara); en cada toma el borde superior del marco pasa 88 px por debajo de la parte superior habitual de la cabeza (la referencia), por lo que la cabeza sobresale de él; el subtítulo sube tanto como la cabeza suele subir (máximo 90 px) y permanece 20 px por encima de ella; la pantalla completa hace que la cabeza tenga el 45 % del ancho. Una toma de varios cortes obtiene stage.shots (el recorte, subtítulo y encuadre completo de cada toma; la cámara cambia en el corte, el marco permanece). Compruébelo en una vista previa (§ 5). En este estilo, un corte de origen ocurre dentro del marco del presentador, una pequeña parte de la imagen: verify.mjs puede reportarlo "bajo una placa de fotograma completo" (la segunda toma); verifique que aterrice en su marco por las diferencias del propio marco, no a simple vista.

3. Leer la transcripción, escribir el storyboard

Este es el paso de juicio, y es todo el trabajo. Lea la transcripción de principio a fin y escriba el storyboard como una lista antes de cualquier código: las escenas, y en cada una, qué aparece en qué palabra.

  • Escenas, unidas por movimientos de cámara. Una escena es una idea (la promesa, el producto, un proceso, los pasos, la lista, una comparación): de 4 a 8 segundos, luego la cámara se mueve a la siguiente. El movimiento predeterminado es el barrido (un paneo a la derecha: la escena antigua sale a la izquierda en un desenfoque, un destello cruza, la nueva llega); una elevación cuando la siguiente idea profundiza (la escena antigua sale hacia arriba); un empuje a través de la escena antigua cuando la nueva la responde (un "por qué", una revelación); un corte solo detrás de un respiro. Nunca dos iguales seguidas si se puede evitar.

  • Una escena llega compuesta. Lo que se coloca en el tiempo de la propia escena viaja CON la cámara (ya está allí cuando termina el movimiento: la referencia nunca muestra un escenario vacío después de un movimiento); lo que llega después entra en su palabra. Cuando las cosas de la escena se nombran una tras otra, colóquelas todas en el tiempo de la escena, en la oscuridad o fuera de foco (dim: 0.6, blur: 10), e ilumine cada una en su palabra (.blurTo(on(i), 0).lit(on(i)) y su sonido): el escenario está lleno desde el primer fotograma y aún se mueve en cada palabra (las personas y canales de la segunda toma, 2026-10-05).

  • Algo nuevo cada segundo aproximadamente. Cada frase que nombra una cosa, un número, un paso, una afirmación obtiene una figura o un movimiento en su palabra: una figura que entra, una etiqueta revelada, una marca dibujada alrededor de algo, una cosa iluminada, una escena que se mueve. Más de 2 segundos sin nada nuevo en el escenario se lee como aburrido: fue el veredicto en la primera edición (2026-10-05).

  • El título nombra la sección en dos líneas cortas, su palabra clave en serifa (*Ganchos* de Texto Asesinos), una caja roja en la línea con un conteo o una afirmación (3 Tipos Ganadores De). Cambia con la sección, la anterior se eleva antes de que las nuevas palabras aparezcan.

  • Qué figura para qué:

    lo que se dicela figura
    una lista de N cosas, pasos, reglasS.list: barras que vuelan desde la izquierda, etiquetas borrosas hasta que cada una se dice (reveal), la explicada iluminada (focus), su veredicto apareciendo al final (glyph: "check", "cross"…); header convierte una barra en el encabezado de la sección
    un nombre, un término, una definiciónS.pill (un pictograma en ella: glyph), S.arrow desde lo que nombra, S.ping (ring: true) alrededor de la cosa, S.mark (un círculo, un marco, un subrayado) dibujado en la palabra que lo enfatiza
    una cosa hecha de partes, una causa y sus efectos, una cadenaS.tree (hijos que caen, cada uno conectado con una chispa), S.wires entre dos cualesquiera
    una combinación, una comparaciónS.equation (+, =), un signo VS con S.shake y el fallo
    un producto, una herramienta, una plataformael logotipo del usuario (S.icon, su brillo, ring para hacer sonar un teléfono), su captura de pantalla en S.card o S.phone, S.prompt escrito cuando se usa
    ejemplos, videos, una serieS.cards de sus imágenes, o fotogramas de la propia toma (stills.mjs) con tarjetas player
    una búsqueda, muchas fuentes, una multituduna cuadrícula de S.cards con glyphs, iluminadas una tras otra (un escaneo)
    un númeroS.count que sube hasta él, o palabras de colores ({g:22 Días} verde, {r:Algunas Semanas} rojo)
    bueno / malo, sí / noS.glyph (check en un mosaico verde, cross en uno rojo), el veredicto de una barra
    una llamada a la acciónun título (Comenta "X", Para Obtener El *Skill*), S.file para lo que envían
  • Los respiros (FULL): un corte duro al presentador a pantalla completa (el flash de cámara al entrar, un whoosh al salir), nada dibujado excepto los subtítulos. En una confesión, un remate, una opinión fuerte; de 2 a 6 s; nunca en los primeros 15 s. Una toma que no es la cabeza parlante (b-roll, un plano general) va a pantalla completa completa: [from, to, { zoom: 1 }]. La escena después de un respiro se abre detrás de él (S.scene(<fin del respiro> - 0.45, "push")), por lo que está allí cuando el respiro termina.

  • Solo nombres y números reales (brand-kit.md): una figura que necesitaría una pantalla o un número que el usuario no proporcionó se dibuja con sus palabras y los pictogramas de la casa, o se elimina.

  • Los subtítulos son textuales: fi…

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados