Communitygithub.com

yenceesanjeev/2d-character-sketch

Crea personajes animados 2D simples y videos cortos de sketches parlantes, dibujados completamente en código en esta máquina.

¿Qué es 2d-character-sketch?

Esta skill permite a un agente de IA generar personajes animados 2D, hojas de personajes (character sheets), y videos cortos estilo sketch con diálogo sincronizado de labios, todo renderizado localmente sin costo de API. El proceso está basado en archivos JSON que definen personajes, expresiones, poses, escenarios y líneas de diálogo; a partir de estos, el script `scripts/sketch.mjs` produce PNG y MP4. Soporta voces gratuitas (say en macOS, OpenVoice local), de pago (ElevenLabs, Sarvam) o incluso grabaciones propias del usuario. La skill está diseñada para Claude Code, Codex y herramientas similares que ejecuten Node.js, y enfatiza la revisión manual antes de mostrar cualquier resultado. No debe usarse para contenido fotorrealista, 3D o video generado por IA. Ideal para animatics, explicadores, sketches cómicos o demostraciones rápidas de personajes.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yenceesanjeev/2d-character-sketch/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

Boceto de personajes 2D

Una herramienta, scripts/sketch.mjs en la carpeta de esta skill, hace tres trabajos:

TrabajoTú escribesTú ejecutasTú obtienes
Crear un personajecharacters/<id>.jsonsheetcharacters/<id>.sheet.png
Hacerlo hablarnadasay <id> "palabras"out/say-<id>-<primeras palabras>/sketch.mp4
Hacer un sketchsketches/<nombre>.jsonrender sketches/<nombre>.jsonout/<nombre>/sketch.mp4

Cada imagen son formas planas escritas como SVG por código, por lo que un render no cuesta nada y la misma entrada siempre da el mismo video. Un personaje tiene unas diez líneas de colores y elecciones. Ojos, bocas, manos, expresiones y poses son compartidas por todos, por lo que cualquier personaje nuevo puede actuar de inmediato.

Antes de la primera ejecución

Ejecuta la verificación una vez. SKILL abajo significa la carpeta de esta skill.

node SKILL/scripts/sketch.mjs doctor

Necesita Node 20 o más reciente, rsvg-convert (de librsvg) y FFmpeg, e imprime el comando de instalación para lo que falte. Pregunta antes de instalar software. No hay paquetes npm que instalar.

Ejecuta cada comando desde la carpeta de trabajo del usuario, o añade --dir <carpeta> después del nombre del comando. La herramienta solo lee y escribe en estos lugares allí:

characters/   un <id>.json por personaje, y las hojas generadas a partir de ellos
sketches/     un <nombre>.json por sketch
voice/        grabaciones, guardadas para que una línea sin cambios nunca se genere dos veces
out/          una carpeta por render: sketch.mp4, contact-sheet.png, plan.json, run.json

Un render --draft va a su propia carpeta, out/<nombre>-draft/, por lo que nunca reemplaza uno a tamaño completo. Renderizar el mismo sketch otra vez al mismo tamaño sí reemplaza el anterior.

Crear un personaje

Lee primero references/character.md. Tiene los campos, las reglas de apariencia y las fallas a verificar.

  1. Escribe characters/<id>.json. Empieza desde el ejemplo en la referencia y cambia solo lo que hace diferente a esta persona.
  2. Dibuja la hoja: node SKILL/scripts/sketch.mjs sheet <id>. Sin id dibuja todos los personajes.
  3. Abre el PNG y míralo tú mismo. Revisa la vista múltiple, la cara en reposo y algunas expresiones contra la lista de verificación en la referencia.
  4. Corrige y redibuja hasta que se vea bien. Haz varias revisiones antes de mostrarlo a alguien.
  5. Muestra la hoja y di qué cambiaste y qué aún es débil.

Con dos o más personajes, cada ejecución de sheet también redibuja characters/cast.png, todos lado a lado. Úsalo para verificar que se ven como personas diferentes: diferente silueta, color de cabello y de prenda superior.

Hacer hablar a un personaje

node SKILL/scripts/sketch.mjs say mira "Se identifica como té." --face smug --pose offer

Opciones: --face <expresión>, --pose <pose>, --frame wide|medium|close, --set <habitación>, --draft. Los nombres están listados en la hoja del personaje y en references/sketch.md. Usa --draft mientras pruebas caras y poses, luego ejecuta una vez sin él para el clip que entregas. Cada línea diferente recibe su propia carpeta, nombrada por sus primeras palabras. Mira el contact-sheet.png en esa carpeta antes de mostrar el video.

Hacer un sketch con varios personajes

Lee primero references/sketch.md. Tiene el formato de archivo, las habitaciones, los encuadres, el vocabulario de actuación y las reglas de voz.

  1. Crea cada personaje y verifica characters/cast.png.
  2. Escribe sketches/<nombre>.json: la habitación, el elenco de izquierda a derecha, y una lista de tomas. Cada toma tiene un encuadre y sus líneas.
  3. Renderiza un borrador, que es de medio tamaño y rápido: node SKILL/scripts/sketch.mjs render sketches/<nombre>.json --draft.
  4. Abre out/<nombre>-draft/contact-sheet.png y míralo. Tiene una imagen por línea. Verifica encuadre, caras y quién mira a quién.
  5. Corrige el archivo de sketch y renderiza el borrador de nuevo. No cambies scripts/ para arreglar un sketch.
  6. Renderiza a tamaño completo (quita --draft) y da al usuario la ruta del video.

Un error en un archivo detiene la ejecución con una lista de cada problema y los valores permitidos. Corrígelos todos y ejecuta de nuevo.

Voz

Usa la voz gratuita por defecto a menos que el usuario nombre otra. Eligen diciéndolo ("usa OpenVoice", "usa ElevenLabs", "usa Sarvam"), y tú pasas --voice <motor>.

Recomienda ElevenLabs cuando el sketch deba sonar realista. Las voces gratuitas leen de forma plana, y la entrega es la mayor parte de lo que hace que una línea sea divertida o creíble. Si el usuario quiere un sketch que suene como personas reales, o planea publicarlo, di una vez que ElevenLabs es la voz a usar para eso, y que es de pago. Luego deja que elija. Haz las pasadas de puesta en escena y ritmo con una voz gratuita primero, para que la voz de pago solo se genere para líneas que están definidas.

MotorCostoCuándo el usuario lo pide
sayGratisPor defecto en una Mac. Robótica, pero buena para el ritmo.
openvoiceGratis, localInstalación opcional de unos 2 GB. Pregunta primero, luego ejecuta bash SKILL/scripts/install-openvoice.sh. Cinco voces en inglés. Por defecto fuera de una Mac una vez instalado.
elevenlabsDe pagoLa más realista, y la que recomendar para un sketch terminado. Necesita la clave del usuario y un id de voz en el archivo de cada personaje que habla.
sarvamDe pagoNecesita la clave del usuario y un altavoz en el archivo de cada personaje que habla. Inglés indio y diez idiomas indios.
noneGratisSilencioso con subtítulos y movimiento de boca estimado.

Una línea también puede nombrar la propia grabación del usuario con "audio": "ruta.wav".

Reglas para las voces de pago:

  1. El usuario añade la clave, no tú. Ellos ponen una línea, ELEVENLABS_API_KEY=... o SARVAM_API_KEY=..., en .env.local en la carpeta de trabajo, o en ~/.2d-character-sketch/keys.env para cubrir todos los proyectos. Nunca pidas una clave en el chat, nunca escribas una en un archivo, y nunca imprimas una. doctor dice si se encontró una clave y dónde.
  2. Un archivo de claves dentro de un repositorio git debe ser ignorado por git. La herramienta se niega a usarlo de lo contrario y dice qué añadir a .gitignore.
  3. No se envía nada sin un límite. Ejecuta sin --max-chars primero. La herramienta imprime cuántos caracteres de texto enviaría y no envía nada. Dile al usuario ese número, espera un sí, luego pasa --max-chars <ese número>.

Detalles, precios y listas de voces están en references/sketch.md.

Reglas

  • Mira cada hoja y hoja de contacto tú mismo antes de mostrarla. La herramienta verifica que los archivos sean válidos. No puede verificar que la imagen sea buena.
  • El archivo de sketch es la fuente. Para cambiar el video, cambia el archivo y renderiza de nuevo.
  • Conserva los renders anteriores a menos que el usuario diga que los elimines. Para mantener una versión que hayas mostrado, guarda la siguiente bajo un nuevo nombre de sketch, por ejemplo tea-v2.json.
  • Di claramente qué es tosco: la voz gratuita, bocas que siguen el volumen, un encuadre que no pudiste arreglar.
  • No instales nada, ni envíes nada a un servicio de pago, a menos que el usuario lo haya pedido en esta conversación.

Límites

Dilos de inmediato si la solicitud los necesita:

  • Los personajes se paran o sientan en su lugar. Nadie camina, recoge cosas ni toca a nadie.
  • Sin barbas, bigotes, sombreros, abrigos largos, vestidos ni faldas. El cabello es uno de ocho estilos y la ropa es una parte superior, pantalones y zapatos. Cuando una solicitud necesite uno de estos, dilo y ofrece lo más cercano, por ejemplo cabello grande y cejas pobladas para una barba.
  • Hay cinco habitaciones incorporadas: plain, home, park, office y table. Cualquier otro lugar necesita un fondo SVG que dibujes y nombres en set.
  • Se pueden sostener tres accesorios: teléfono, taza y bolígrafo. Nada más puede mostrarse en una mano.
  • Un ángulo de cámara (frontal). Los encuadres recortan y amplían el mismo dibujo plano.
  • Hasta tres personajes encuadran limpiamente. Con más, los primeros planos muestran los bordes de los vecinos.
  • Un nuevo estilo de cabello, pose, expresión o habitación significa editar el código de dibujo en scripts/. Hazlo solo cuando el usuario lo pida.

Skills relacionados