Communitygithub.com

animation-studio

Convierte una idea o guion en un video animado terminado (historias bíblicas, tecnología/programación, matemáticas/educación o historias/anuncios generales) en el estilo y formato elegidos, después de verificar que el ordenador pueda renderizarlo de forma segura.

¿Qué es animation-studio?

animation-studio es una habilidad para agentes de IA (como Claude Code) que guía al usuario desde una idea o guion hasta un video animado terminado en formato MP4, pasando por la selección de contenido, estilo, formato, calidad, voz, branding y más. Soporta una amplia variedad de estilos: Stickman, Whiteboard, Flat 2D, Modern Vector, Storybook, Toon 3D y Cinematic 3D, y múltiples formatos de pantalla (9:16, 16:9, 1:1, 4:5). El sistema sigue un proceso estructurado en cinco etapas: ingreso de parámetros, verificación de hardware, selección del motor de renderizado, creación del paquete de guion (con investigación precisa y verificación de fuentes) y producción final. La habilidad respeta estrictamente los límites del hardware (LITE, STANDARD, POWER) y nunca inicia un renderizado sin antes estimar el tiempo y el espacio en disco. Además, ofrece opciones de marca personalizada, subtítulos, música sintetizada o del usuario, y proyectos para editores de video (Kdenlive, Shotcut, DaVinci Resolve, Blender VSE, etc.). Todo el código es de código abierto (MIT) y las salidas del usuario no incluyen marcas de agua forzadas.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

animation-studio: idea → guion → voz → render seguro → MP4

Este archivo es un enrutador. Haz las cuatro grandes preguntas, verifica el hardware y luego carga solo los archivos que el trabajo necesita: content/<paquete>.md (reglas de escritura y precisión) + styles/<estilo>.md (apariencia; su bloque JSON es el preset que lee el motor) + engines/<motor>/README.md (cómo renderizar). Las herramientas compartidas viven en shared/.

Encuentra la carpeta de la habilidad (SKILL_DIR) = la carpeta que contiene este archivo. Claude Code la muestra como el directorio base de la habilidad; otros agentes: la carpeta del SKILL.md que se te indicó leer. Siempre llama a las herramientas como "$SKILL_DIR/shared/...", entre comillas (las rutas suelen contener espacios). Busca un Python 3.10+ (python3, python o py -3) y llámalo PY. Después de setup_check.py --install, usa el python del venv que imprime.

Mantén al usuario informado con una lista de tareas. Escribe cada entregable en videos/<slug>/ dentro de la carpeta de trabajo del usuario (slug = nombre corto en minúsculas con guiones). Explica en lenguaje sencillo.

Lo que funciona en esta versión

ParteEstado
Paquetes de contenido✅ Biblia (content/bible.md) · ✅ Tecnología (content/tech.md) · ✅ Historia/anuncio general (content/general-story.md) · ✅ Matemáticas/educación (content/education-math.md)
Estilosmotor A: ✅ Stickman · ✅ Flat 2D · ✅ Storybook · ✅ Whiteboard · ✅ Modern vector — motor B: ✅ Manim (+ colores Whiteboard / Modern vector) — motor C: ✅ Toon 3D — motor D: ✅ Cinematic 3D
Motores✅ A py2d (Python 2D) · ✅ B Manim (LaTeX opcional) · ✅ C Toon 3D (lento: limitado por nivel) · ✅ D Blender (vistas previas Eevee, finales Cycles en POWER)
Formatos✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
Subtítulos✅ .srt siempre + incrustación estilizada con resaltado de palabras (shared/captions.py)
Voz✅ grabación del usuario · ✅ Piper TTS (shared/voice.py, gratuito, sin conexión)
Música/SFX✅ sintetizada (shared/sound.py) · ✅ archivo de música propio del usuario con licencia
Proyectos de editor✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve (FCPXML) · ✅ Blender VSE · 🧪 OpenShot (experimental) · ✅ paquete de editor (CapCut, cualquier editor)
Kit de marca✅ marcas guardadas (carpeta del usuario), marca de agua, tercio inferior, tarjeta final de marca, colores de marca en cualquier estilo (shared/brand.py, docs/branding.md)
Instalaciones de software✅ un registro verificado (shared/tools.yaml) con comandos para Windows, macOS y cada familia de Linux; nunca instala sin un sí

Si el usuario elige un elemento 🚧, dilo claramente, ofrece la opción ✅ más cercana y entrega igualmente el paquete de guion.

Etapa 1: Ingreso (AskUserQuestion, máximo 4 preguntas por llamada; omite lo que ya esté respondido)

Llamada 1

  1. Contenido: Historia bíblica · Tecnología/programación · Matemáticas/educación · Historia/anuncio general
  2. Estilo: ofrece primero el predeterminado para el contenido (Biblia → Storybook · Tecnología → Modern vector · Matemáticas → Manim · General → Flat 2D), luego 2–3 más. Menciona Stickman para piezas rápidas y ligeras.
  3. Formato(s) (multiSelect): 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/proyector) · 1:1 1080x1080 · 4:5 1080x1350. PY shared/formats.py table imprime la tabla de plataformas.
  4. Calidad: Vista previa (rápida, 720p) · Final (1080p). Recomienda primero una Vista previa de 5 s, siempre.

Llamada 2 (solo lo que aplique) 0. ¿Marca? Ninguna · Usar marca guardada (lista desde PY "$SKILL_DIR/shared/brand.py" list) · Crear nueva marca. Crear nueva: pregunta cada campo UNO a la vez, todos opcionales (nombre, eslogan, sitio web, archivo de logo, teléfonos, WhatsApp, correos electrónicos, redes sociales, colores, fuente OFL, CTA) y guarda cada uno con brand.py set (valida formatos de teléfono/correo/URL/color); logo mediante brand.py logo, fuente mediante brand.py font. Nunca inventes datos de contacto: solo lo que el usuario proporcione (o confirme de su propio sitio web). Luego las opciones, con valores predeterminados de docs/branding.md: marca de agua (anuncio/promoción ACTIVADO; Biblia, tecnología y matemáticas DESACTIVADO), esquina/tamaño/opacidad/logo o logo+nombre · tercio inferior (cuándo, duración) · tarjeta final con CTA + contactos (anuncio/promoción ACTIVADO) y su duración · recolorear el estilo con los colores de la marca (sí/no). 5. Tema/historia y duración (30 s · 60 s · 90 s · 2–3 min; otras duraciones mediante "Otro"). Los paquetes de contenido añaden los suyos propios (Biblia: audiencia). 6. Voz: Mi propia grabación (predeterminado) · Piper TTS (gratuito, sin conexión; voz predeterminada en_US-ljspeech-medium, datos de dominio público). Piper necesita una instalación única (setup_check.py --tts --install) y descarga de voz (voice.py --download, ~60 MB): pregunta primero. 7. ¿Subtítulos incrustados? Sugiere Sí para 9:16 y 1:1 (la mayoría ve sin sonido), No para 16:9. Siempre se crea un archivo .srt. 8. ¿Tarjeta final "Hecho con animation-studio"? Desactivada por defecto; solo por aceptación explícita. Nunca añadas una marca de agua. 9. Salida: MP4 terminado · Archivo de proyecto para un editor · Ambos.

Elección del editor (solo si la salida incluye un archivo de proyecto): ejecuta PY "$SKILL_DIR/shared/tools.py" status --kind editor y muestra la lista numerada COMPLETA (✅ instalado + versión · ❌ no instalado · ⚠️ no compatible aquí, p. ej., editores de escritorio en un servidor sin pantalla). El usuario elige exactamente uno (AskUserQuestion: hasta 4 opciones con los editores instalados primero; el resto se puede escribir en "Otro"). Si la elección es ❌, muestra PY "$SKILL_DIR/shared/tools.py" flow <editor> palabra por palabra (qué es, el comando de instalación para ESTE sistema operativo/distribución/shell, el enlace oficial) y pregunta: Instalar ahora (lo ejecutaré) · Lo instalaré yo mismo, luego digo "listo" · Elegir otro editor · Saltar, dame MP4 + paquete de editor. "Instalar ahora" → tools.py install <editor> --yes (dilo primero si Windows mostrará un aviso de permiso o si un paso necesita sudo; los pasos con sudo se entregan al usuario como ! sudo ...). Después de cualquier instalación o "listo": ejecuta status de nuevo, confirma ✅, continúa donde lo dejaste. CapCut y los editores no compatibles reciben el paquete de editor. Detalles: docs/editors.md.

Guarda las respuestas en videos/<slug>/brief.md.

Etapa 2: Verificación de hardware (antes de cualquier renderizado; nunca la saltes)

Ejecuta PY "$SKILL_DIR/shared/hwcheck.py" y muestra su tabla y nivel en un mensaje breve. También guarda el perfil del sistema (SO + versión, WSL, Apple Silicon, distribución y familia de Linux, gestores de paquetes, shell, pantalla) que cada paso posterior lee. Cada comando de instalación que muestres o ejecutes proviene de PY "$SKILL_DIR/shared/tools.py" cmd <herramienta> (coincidiendo con este SO, distribución y shell); nunca escribas uno de memoria. Sin pantalla (sin interfaz gráfica) → solo renderizado: sin aplicaciones de editor.

NivelReglaMotoresLímites
LITE< 12 GB RAM o < 4 hilos de CPUA, BSolo 720p; Toon 3D y Blender bloqueados (ofrece imágenes fijas)
STANDARDentreA, B completo; C ≤ 5 s de vista previa (más solo con confirmación + reanudación); D Eevee ≤ 5 s a 720p, muestras bajas1 trabajo de renderizado; workers = hilos − 2
POWER≥ 32 GB RAM + GPU dedicada ≥ 6 GB VRAMtodos, Cycles en la GPUworkers = hilos − 1
Si el portátil está con batería, advierte antes de cualquier renderizado de más de un minuto. Si la RAM libre es inferior al 25 %, pide al usuario que cierre las aplicaciones grandes.

Etapa 3: Elegir el motor (estilo → motor), luego cargar archivos

EstiloMotorCargar
Stickman, Flat 2D, Storybook, Whiteboard, Modern vectorA engines/py2dstyles/<estilo>.md, engines/py2d/README.md
Manim (matemáticas, algoritmos, diagramas); los colores de Whiteboard/Modern vector también funcionan aquíB engines/manimstyles/manim.md (o el estilo elegido), engines/manim/README.md
Toon 3DC engines/toon3d (una carpeta de proyecto con story.js + world.js)styles/toon-3d.md, engines/toon3d/README.md
Cinematic 3DD engines/blender (scene.json, Z hacia arriba)styles/cinematic-3d.md, engines/blender/README.md
Si el nivel bloquea el motor, explica por qué y ofrece: la misma historia en un estilo del motor A, o solo algunas imágenes fijas. El usuario puede anular un límite solo después de una advertencia clara ("esto puede congelar o sobrecalentar tu ordenador; guarda tu trabajo primero").

Luego carga content/<paquete>.md y sigue sus etapas de investigación y escritura.

Etapa 4: Paquete de guion (reglas del paquete de contenido), luego PARAR

Cada paquete entrega: la narración en un bloque copiable (≈ 3.7 palabras/s a menos que el paquete indique lo contrario) con recuento de palabras y duración → script.txt; una lista de tomas → shotlist.md; extras del paquete (Biblia: tabla de fidelidad, notas de estudio, descripción); y fuentes al final. Nunca inventes versículos, citas, API, banderas, versiones o hechos: búscalos o ejecútalos, de lo contrario márcalos como NO VERIFICADO. Luego entrega la voz en off (grabación del usuario: mp3/wav, sin música) y espera el audio. Si el usuario solo quería el guion, detente aquí.

Etapa 5: Producción

  1. Configuración: PY "$SKILL_DIR/shared/setup_check.py" --engine <motor> → tabla ✅/❌. Una herramienta faltante (Blender, Manim, Node, LaTeX, Inkscape...) usa el mismo flujo que los editores: muestra tools.py flow <herramienta> --for engine, luego Instalar ahora · Lo instalaré yo mismo, luego digo "listo" · Elegir otro estilo · Saltar (solo guion, lista de tomas y referencias); vuelve a comprobar después. Los paquetes de Python van solo al .venv propio de la habilidad (--install, después de un sí).
  2. Voz + sincronización. Piper: PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85 (tiempos exactos de frases, sin adivinanzas). Grabación del usuario: PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work. Ambos escriben work/words.json + work/phrases.json.
  3. Escena: motor A: videos/<slug>/scene.json; motor B: una escena .py de Manim que comience con from studio import *; motor C: videos/<slug>/story.js + world.js; motor D: un scene.json de Blender (formatos en los README del motor). Una toma por frase; mantén rostros, texto y objetos clave dentro de la zona segura de cada formato elegido (shared/formats.md).
  4. Verificación de aspecto: renderiza 3–6 imágenes fijas por formato (--frames 0,60,...), crea una hoja de contactos (PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>), muéstrala y compárala con las reglas del paquete de contenido (Biblia: reverencia + violencia). Corrige antes de renderizar.
  5. Estimación: PY "$SKILL_DIR/shared/estimate.py" --engine <motor> scene.json --fmt <fmts> --quality <q> (Manim: --engine manim scene.py --name SceneName --timing work/phrases.json; Toon 3D: --engine toon3d <carpeta del proyecto>; Blender: --engine blender scene.json) → DECISION: OK renderizar · ASK decir al usuario "~X min, Y GB" y preguntar (ofrece la vista previa de 5 s) · REFUSE no hay suficiente disco (necesita 2× la estimación): pide al usuario que libere espacio.
  6. Renderiza un formato a la vez (nunca dos trabajos a la vez). Los renderizados largos se ejecutan en segundo plano; el motor se ejecuta con baja prioridad, se reanuda desde el último fotograma guardado si se vuelve a ejecutar y se pausa (código de salida 4) si la RAM libre cae por debajo del 15 %. Dile al usuario que puede seguir trabajando.
  7. Audio: música PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <duración del video> --mood warm|calm|tense|tech|playful, SFX ... sfx sfx.wav --seconds <len> --cues cues.json (pop, whoosh, type, chime, success, swell, rain, soft thunder), luego PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len> (la música nunca supera −6 dB por debajo de la voz; −9 a −12 para videos con mucho diálogo o reverentes). Un archivo de música proporcionado por el usuario reemplaza music.wav: recuérdale una vez que debe poseer los derechos. 7b. Marca (si se eligió): recolorea antes de renderizar (brand.py recolor <marca> --style <estilo> --out style_<marca>.md, úsalo como estilo de la escena); después de renderizar, brand.py apply <marca> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] y usa branded_<fmt> de aquí en adelante. Con una tarjeta final, mezcla el audio con --seconds <nueva duración>.
  8. Subtítulos + finalización + QA: PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <estilo> --fmt <fmt> --quality <q> (→ .srt + _<fmt>.ass), luego PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Title>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Title>_<fmt>.ass] --srt out/<Title>.srt [--end-card solo si se optó por ella]. Verifica las líneas de QA (segmentos negros/estáticos, aproximadamente −14 LUFS) y mira la hoja _qa.jpg.
  9. Proyecto de editor (si se eligió): PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<nombre>,..." --final out/<Title>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Title>.srt --out videos/<slug>/editor luego ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>. Muestra su tabla de verificación (la sincronización debe coincidir con el MP4; Kdenlive/Shotcut también reciben un renderizado melt de 2 s). Dile al usuario cómo abrirlo (docs/tools/.md).
  10. Entrega los MP4, el .srt, el proyecto de editor si lo hay, y una línea por toma describiendo lo que muestra. Tarjeta final opcional solo si el usuario optó por ella.

Reglas de seguridad (siempre)

  • Nunca inicies un renderizado sin la Etapa 2 y el paso 5 (estimación). Siempre ofrece "Vista previa de 5 s primero".
  • Respeta los límites del nivel; las anulaciones solo después de una advertencia clara y un sí.
  • Un trabajo pesado a la vez. Nunca elimines ni sobrescribas los archivos del usuario sin preguntar (volver a renderizar en una carpeta de fotogramas existente se reanuda; --force sobrescribe, así que pregunta).
  • Si una herramienta falta o el usuario rechaza las instalaciones, entrega igualmente el guion, la lista de tomas y las referencias.

Créditos y licencias

Código: MIT (consulta LICENSE). El código de terceros incluido se enumera en THIRD_PARTY_NOTICES.md. La habilidad no incluye fuentes, música ni imágenes: utiliza fuentes del sistema y sonido sintetizado. Los videos del usuario son suyos: sin marca de agua forzada; la tarjeta final es opcional.

Skills relacionados