Communitygithub.com

shaharsha/producción-de-episodios-animados

Úsalo para crear un video animado narrado o con voces y personajes recurrentes —un episodio de anime, cómic, historieta, un corto para un grupo de chat, una historia sobre amigos, familia, una clase o un equipo— a partir de fotos, exportaciones de chat, una idea o un guion, en cualquier estilo visual, en hebreo (RTL) o inglés. También cuando el video tenga subtítulos o tarjetas demasiado rápidas, música que se corta antes de tiempo, el final truncado, líneas sepultadas bajo la música, bocas desincronizadas, un gesto antes de su línea, o un rostro...

¿Qué es producción-de-episodios-animados?

Esta habilidad permite a un agente de IA producir episodios animados completos con voces, subtítulos, música y sincronización labial a partir de un único archivo de proyecto (episode.json). El motor engine/episode.py orquesta todas las fases: generación de personajes, paneles, líneas de diálogo, música, animación, lip-sync y edición final. Está diseñado para que el audio sea la referencia maestra de tiempos, evitando estimaciones manuales. Soporta hebreo (RTL) e inglés, requiere Python, ffmpeg y claves API externas (OpenAI, ElevenLabs, Gemini, FAL). Incluye puntos de control (gates) para revisión humana en cada fase, optimización de costos y verificación de duraciones. Es útil para creadores de contenido, equipos de storytelling o cualquier persona que quiera automatizar la producción de videos animados de alta calidad.

Compatible con~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/shaharsha/claude-skills/tree/HEAD/skills/producing-animated-episodes

Preguntar en tu IA favorita

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

Documentación

Producción de episodios animados

Resumen

Un episodio animado vertical, con voz, subtítulos y animación: arte de personajes, paneles, voces clonadas o de biblioteca, música, clips de imagen a video y sincronización labial, cortados por un motor que temporiza cada toma a partir del audio real del diálogo. Un único episode.json contiene todo el proyecto, y engine/episode.py ejecuta todas las fases desde él. Las habilidades hermanas realizan el trabajo de los proveedores.

Usa el motor; no escribas tus propios scripts de edición. La línea de tiempo, superposiciones, subtítulos, texto de derecha a izquierda, la mezcla, las duraciones y las uniones de sincronización labial ya están en engine/. Está probado al reconstruir un episodio real de 3.5 minutos: fotogramas idénticos, audio idéntico y la duración exacta que el original había fallado. Una edición hecha a mano redescubre cada error en references/troubleshooting.md.

El audio es el maestro. Las duraciones de las tomas, los tiempos de los subtítulos y las partes de sincronización labial provienen de los archivos de diálogo terminados. Nunca estimes un tiempo a partir del texto.

No puedes ver ni oír. Tú verificas fotogramas, duraciones y números. El ser humano juzga el parecido, las voces, la pronunciación, el ritmo y los chistes. Planifica sus puntos de control y mantenlos.

Requiere:

  • Estas habilidades junto a esta: image-generation, elevenlabs-tts, generating-video-clips.
  • Python 3 con pip install -r <directorio-de-esta-habilidad>/requirements.txt (Pillow compilado con RAQM, numpy; OpenCV opcional).
  • ffmpeg 7 o más reciente.
  • Fuentes: los estilos y subtítulos nombran claves de fuente (bold, hblack, black en el ejemplo) que fonts mapea a archivos .ttf instalados. Para hebreo y latín, Rubik y Heebo (gratuitas, Google Fonts) funcionan bien; check bloquea si falta alguna.
  • Claves en variables de entorno, establecidas en cada shell que ejecute el motor: OPENAI_IMAGE_API_KEY, ELEVENLABS_API_KEY, GEMINI_API_KEY, FAL_KEY.

Para ver todo el pipeline funcionar sin llamadas a API, ejecuta python3 <directorio-de-esta-habilidad>/engine/episode.py /tmp demo, luego check y build el proyecto demo que crea.

El pipeline y sus puntos de control

Cada punto de control es una parada: envía el artefacto, pregunta, espera. Los comandos son python3 <directorio-de-esta-habilidad>/engine/episode.py PROYECTO <comando>. Costos medidos en 2026-10.

#FaseComandoPunto de control (el humano)Costo
1Historia y guionscript.md desde templates/script.template.mdel guion, y cada tema sensible-
2Biblia de personajestemplates/characters.template.md, luego characters en episode.json--
3Rostros, tarjetas, promocionarchars face, chars card key=face.png, chars final keysparecido, en una hoja de todas las tarjetas~$0.30 por personaje
4Panelespanels draft, luego panels final idscada panel, en una hoja~$0.30 por panel
5Vocesuna muestra por voz (elevenlabs-tts)cada voz, de oído, antes del lotecentavos
6Líneaslinesel conjunto de oído, con marcas de tiempo; nombres A/Bcentavos a unos pocos $
7Música y SFXsoundla músicacentavos
8Animáticabuild (aún sin clips: fotos fijas con movimientos de cámara)ritmo y orden, antes de cualquier gasto en videogratis
9Animaciónanimate, hojas, repeticiones con animate S --takes 2 + animate pick S Kmovimiento, desde las hojas~$0.10 por segundo de clip, por toma
10Sincronización labiallipsync prep, puntos faciales en configuración, lipsync runverificar fotogramas al azar~$0.13 por segundo
11Editar y entregarbuild, sheet, deliverel humano ve el mp4gratis

Comandos, entradas, salidas y manejo de fallos para cada fase: references/pipeline.md.

Escribir el guion

Reglas que se mantuvieron (detalles y un ejemplo práctico: references/script-writing.md):

  • Un gancho en los primeros 3-4 segundos (una apertura en frío sobre el problema), luego el título. En menos de 30 segundos, pon el título y la tarjeta final como superposiciones en tomas de la historia y omite el montaje.
  • Cada personaje recurrente habla al menos una vez. Un montaje de introducción, una palabra cada uno con su propia voz a aproximadamente 1.2-1.5 s por tarjeta, es económico y gusta.
  • El texto en pantalla debe ser legible: aproximadamente 0.8 s más 0.06 s por carácter; 1.2-1.5 s para una tarjeta corta; 4-6 s para un título final. Asigna un mindur a las tarjetas.
  • Planta pistas temprano y resuélvelas. Los guiños a chistes recurrentes reales del grupo impactan más.
  • Los temas sensibles son decisión del usuario. Enumera cada detalle privado que te gustaría usar (salud, dinero, relaciones, familia, peleas), pregunta por cada uno y usa solo lo que confirmen.
  • Líneas de 12 palabras o menos, números en palabras. El texto en pantalla mantiene la ortografía normal; las correcciones de pronunciación van en pronounce.
  • Música y efectos de sonido, incluso para narración. Al menos una base musical y algunos efectos (silbidos en cortes, un golpe en la revelación); una base silenciosa suena inacabada.

episode.json en una pantalla

templates/episode.example.json es un episodio pequeño completo; cada clave está en references/config-schema.md. Las partes que más editas:

  • characters: nombre mostrado, color, voz y los campos de indicaciones de la biblia de personajes.
  • speakers: voces que nunca se dibujan, como un narrador ({"display": null, "voice": "<id>"} da subtítulos sin nombre).
  • lines: id, hablante, texto con etiquetas de audio; trim y level en líneas de una palabra.
  • shots: imagen, líneas ("[email protected]" superpone la línea anterior), pads, mindur, cámara, fx, sfx, superposiciones, desplazamiento y velocidad del clip.
  • music_cues: [cue, desde toma, hasta toma, volumen, desplazamiento]. El build advierte cuando un cue es más corto que su ventana.
  • lipsync: qué tomas, qué líneas omitir, un punto facial por parte.
  • prompts: anula char_style y panel_style para un estilo diferente (dibujo animado 3D, acuarela, fotorrealista).

Construir y revisar

  • Agrupa las correcciones. Una compilación completa lleva minutos. Recoge todas las notas de una ronda de revisión (una toma de línea, un pad, un desplazamiento de clip), aplícalas todas y luego reconstruye una vez.
  • Los segmentos se almacenan en caché y se rastrean. build re-renderiza exactamente las tomas cuyas entradas cambiaron: un clip nuevo o con sincronización labial, un panel promocionado, una línea editada, toma o estilo. build --only S05,S06 fuerza esas tomas; --force re-renderiza todo.
  • Una toma con sincronización labial se rehace después de cualquier cambio en su clip, desplazamiento, velocidad o líneas: lipsync prep S05 && lipsync run S05. Hasta entonces, el build advierte que está obsoleto y usa el clip sin procesar.
  • Regenerar un activo existente necesita --force (sound theme --force, animate S05 --force); sin él, los archivos existentes se conservan y solo se llenan los vacíos.
  • Revisa con hojas. sheet pone 3 fotogramas por toma en una página. Cuando el humano nombra un momento por tiempo, extrae y lee esos fotogramas antes de responder (ffmpeg -ss T -i build/<output>.mp4 -frames:v 1 f.jpg).
  • check antes de cada compilación: activos faltantes, claves, habilidades hermanas y texto de superposición más ancho que el fotograma.
  • Las duraciones se verifican al final de cada compilación. El audio más corto que el video falla la compilación en lugar de cortar el final.
  • Antes de enviar: references/qa-checklist.md.

Trabajar con el humano

  • Envía cada artefacto con tu herramienta de envío de archivos y ofrece revelarlo en Finder; no te limites a imprimir una ruta. El paso final es deliver y enviar ese archivo.
  • Para el audio, di qué escuchar y dónde ("en 0:41, ¿suena bien el nombre de Dani?"). Nunca digas que lo oíste.
  • La pronunciación y las elecciones de voz son suyas: archivos A/B con marcas de tiempo (elevenlabs-tts).
  • Antes de cada fase paga, da la estimación de costo; después, el total acumulado.

Cuando algo parece mal

SíntomaSolución
Tarjetas o títulos demasiado rápidos para leeraumenta mindur / post: ~1.2-1.5 s por tarjeta corta, 4-6 s para el título final
Un título recortado en ambos bordescheck advierte; reduce el size del estilo o añade wrap
La música se detiene antes de que termine la secciónel build advirtió: aumenta los seconds del cue, sound <cue> --force; o divide la sección en dos cues
El final se cortano puede pasar con el motor (mezcla de duración exacta, verificación de duración); en muxes hechos a mano, consulta deck-to-video
Una línea queda sepultada bajo la músicalevel_clips.py --report en esa línea, luego una toma más firme; baja el volumen de ese cue
Un personaje señala o actúa antes de su líneaclip_off más allá de eso, o divide la toma y recorta la primera parte con clip_cam
Las bocas no se mueven con las palabrasfase de sincronización labial; si se mueve la boca incorrecta, corrige su punto facial
Una cara más grande en la toma grupalinstala OpenCV (las caras se igualan), o mirror una tarjeta cuyo accesorio cubre a un vecino
El hebreo se renderiza invertido o sin unirPillow sin RAQM: check dice cómo solucionarlo
Un nombre o préstamo mal pronunciadouna entrada pronounce, A/B de oído

Más, con causas: references/troubleshooting.md.

Habilidades relacionadas

  • image-generation: tarjetas de personajes y paneles ("Personajes recurrentes y paneles de historia").
  • elevenlabs-tts: voces, líneas de una palabra, pronunciación, música y SFX.
  • generating-video-clips: clips, hojas de tomas, sincronización labial.
  • deck-to-video: las mismas lecciones de ffmpeg para videos de diapositivas.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

shaharsha/deck-to-video

Use when turning a slide deck plus per-slide narration audio into an mp4 video — a self-playing/self-presenting deck video, "slides to video", "presentation to mp4", a shareable WhatsApp/Slack/Drive video of a narrated deck, or when a slide video needs a per-slide progress bar / countdown / slide counter. Also use when a slide video should highlight, glow or spotlight the element being talked about in time with the voice, or when narration and on-screen animation need syncing. Also use when...

shaharsha/generating-video-clips

Use when turning a still image, illustration, comic panel or character art into a short animated clip (image-to-video), choosing a video model or provider (Gemini Omni, Veo, Seedance, Kling, ElevenLabs Flows) or hitting their API gates, lip-syncing a character's mouth to existing dialogue audio (Sync, fal.ai, active speaker), or fixing a generated clip with artifacts - duplicated props, a door or a second figure appearing, hands through bodies, glowing eyes, a gesture repeated at the start,...

shaharsha/image-generation

Generate logos, icons, UI mockups, hero images, product shots, and other design assets using OpenAI GPT Image 2.5 (Sunburst, Flare) or Google Gemini (Nano Banana 2, Nano Banana Pro, Nano Banana 2 Lite). Use whenever the user asks to create, design, generate, mock up, render, or illustrate a visual asset, needs a transparent PNG, or asks for image prompt engineering. Picks the right model and quality for the job, writes a model-specific prompt following the official prompting rules of each...

Skills relacionados