Communitygithub.com

Stickman Story Reels

Convierte una premisa en un video vertical animado de 60-90 segundos con figuras de palitos, locución de ElevenLabs, subtítulos sincronizados, diseño de sonido y un final interactivo de votación.

¿Qué es Stickman Story Reels?

Stickman Story Reels es una skill de agente de IA que toma una premisa narrativa corta y la transforma en un reel vertical completo (1080×1920 MP4) optimizado para Instagram Reels, TikTok y YouTube Shorts. El flujo de trabajo es determinista y no requiere modelos de imagen, metraje de archivo ni herramientas de pago, excepto la voz de ElevenLabs. La skill escribe un guion con gancho inicial, dibuja viñetas de figuras de palitos en código SVG, sincroniza la locución con subtítulos palabra por palabra, sintetiza 19 efectos de sonido y una banda sonora ambiental, y añade una votación de dos opciones al final para fomentar la participación y la continuación en serie. Está diseñada para creadores de contenido que quieran producir historias virales de terror, thriller, drama o supervivencia, y es compatible con sistemas que ejecuten Python 3.9+, Node 18+ y FFmpeg, usando una función shell `reel()` para los comandos. El proceso incluye una fase de borrador gratuito para ajustar temporización y legibilidad antes de consumir créditos de voz, y entrega el MP4, la portada y el texto de publicación listo para subir.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/QuantumCoderSys/stickman-story-reels/tree/main

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Stickman Story Reels?

Convierte una premisa en un reel vertical terminado de 60–90 segundos: un guion con gancho optimizado para retención, viñetas de figuras de palitos dibujadas en código, locución con subtítulos sincronizados, diseño de sonido y una votación de dos opciones que hace que la gente comente y vuelva para la Parte 2. Construido a partir del flujo de trabajo de las historias interactivas PlotVote (@plotvote).

El pipeline es determinista: escribes episode.json (guion, temporización, movimiento) y scenes.js (dibujos), y scripts/reel.py hace el resto (voz → sonido → montaje → verificación → renderizado). Sin modelos de imagen, sin metraje de archivo, sin herramientas de pago excepto la voz.

Configuración (una vez por máquina)

Verifica python3 --version (3.9+), ffmpeg -version y node --version (18+). El primer renderizado descarga HyperFrames y un Chrome sin cabeza a través de npx; es normal y tarda un minuto. Para la voz, el usuario coloca ELEVENLABS_API_KEY=... en un archivo .env dentro de su carpeta de proyecto (o lo exporta). Nunca imprimas la clave. Sin clave, todo funciona igual en modo --draft (silencioso, temporizado a velocidad real).

Define esta función de shell una vez por sesión de terminal (una función, no una variable de cadena, para que funcione tanto en zsh como en bash). Los comandos siguientes la usan:

reel() { python3 "<carpeta de esta skill>/scripts/reel.py" "$@"; }

Flujo de trabajo

1. Entiende la solicitud

  • "Haz esta historia" con una premisa clara → escribe un guion sólido y constrúyela.
  • "Dame opciones" o "ideas de guiones" → presenta 3 opciones completas (ver el manual §10), deja que elijan, luego construye.
  • "Siguiente parte" o "X ganó la votación" → continúa la serie: abre con la consecuencia, resuelve la última pista, da una respuesta real, escala la tensión, nueva votación (manual §9). Lee la biblia de la serie si existe.
  • Solo guion (o sin shell disponible) → entrega la tabla del guion, más episode.json y scenes.js por si quieren renderizarlo ellos mismos.

2. Escribe el guion

Lee references/viral-script-playbook.md primero, cada vez. Contiene las reglas que deciden si la gente se queda más allá de los 3 segundos. Al inventar una premisa, una serie o una temporada, lee también references/story-engines.md.

Escribe el guion como una tabla (# · voz · texto · en pantalla), apuntando a unas 210–230 palabras (unos 85 segundos al ritmo habitual). Ejecuta la lista de verificación previa a la voz del manual. Los errores más comunes: el fotograma 1 debe moverse; el dónde, cuándo y quién en los primeros 5 segundos; cada decisión supera la prueba del niño de 12 años; los personajes dicen sus propias revelaciones en primera persona; la votación son dos acciones físicas de una palabra con un costo en ambos lados; una pista susurrada después de la votación apunta a algo plantado antes.

Si el usuario pidió opciones, o si puede querer aprobar antes de gastar créditos, muestra la tabla del guion y espera. Si no, continúa.

3. Crea el andamio del reel

reel new reels/<slug>-parte1 --title "<Título> — Parte 1"

Esto crea episode.json y scenes.js a partir de un iniciador pequeño funcional. Reemplázalos con tu historia.

4. Dibuja las viñetas (scenes.js)

Lee references/drawing-kit.md, y abre examples/sundown-part1/scenes.js como biblioteca de patrones (una criatura asomándose, un mapa en zoom, un muro de reglas revelado línea por línea, criaturas en stop-motion, una ventana casi impacto, una radio parlante, una linterna entre árboles, la división de la elección, una portada).

Una función por viñeta desde tu tabla de guion. Cada una devuelve un SVG de 1080×1920 construido con ayudas del kit (defs(), sky(), forest(), cabin(), room(), water(), stick(), kid(), creature(), phone(), radio(), chip(), ring(), splitChoice()…). Un escenario que el kit no tenga (un parque acuático, un tren, un desierto) es normal: dibújalo con rectángulos, trazados y las ayudas, siguiendo la sección "Construir un nuevo escenario" del kit de dibujo. Asigna un id a todo lo que deba moverse o aparecer en una palabra. Mantén las caras fuera de la banda de subtítulos (y 1180–1380) y de los 140 px de la derecha. Añade un mode para la portada (sujeto colocado debajo del título) y para los recuadros de tarjeta de votación.

5. Conecta el episodio (episode.json)

Lee references/episode-format.md. Para cada escena: draw, líneas say, kenburns y entradas animate que aterricen en palabras habladas ("at": "faster"). Luego: voces (con fx y etiquetas tag de subtítulos para otros personajes), píldoras HUD con un reloj, sfx colocados manualmente en palabras, pistas bed, la escena de votación (dos opciones, recuadros, la línea de pista), cover y post (subtítulo con {vote_line}, comentario fijado, posts_at). Para voces, sonidos y subtítulos, consulta references/sound-voice-posting.md.

6. Pase de borrador (gratuito)

reel voice reels/<slug> --draft     # silencioso, temporizado a velocidad real
reel sound reels/<slug>
reel build reels/<slug>
reel check reels/<slug>
reel snap  reels/<slug> --at scenes  # dos imágenes fijas por viñeta (o --at 0.5,12,30.5 segundos)

Mira cada imagen fija en reels/<slug>/snaps/. Corrige lo que las reglas de legibilidad del kit de dibujo advierten: cosas demasiado oscuras para leer, caras debajo de subtítulos, sujetos demasiado pequeños, una revelación mal temporizada. check debe decir "Verificación superada" (all se detiene antes de renderizar si no es así). Estas advertencias son esperadas y están bien: "estructura anidada", "pista demasiado densa", "archivo de composición demasiado grande" y recuadros "desbordando" su recorte.

7. Voz y renderizado

reel all reels/<slug>               # voz (ElevenLabs) → sonido → montaje → verificación → renderizado
reel frames reels/<slug> --every 2  # hoja de contacto de todo el reel, para revisión

Verifica la duración impresa (60–90 s; recorta la introducción si excede). Mira renders/review.png: el sujeto es legible, los subtítulos son claros, lo nombrado se mueve en su palabra, y aparecen la tarjeta de votación y el recuadro de pista. Escucha la línea 1; si una palabra puede malinterpretarse, cámbiala y vuelve a poner la voz (solo las líneas cambiadas consumen créditos).

8. Entrega

Entrega al usuario renders/<slug>.mp4, renders/cover.png y POST.md (subtítulo, comentario fijado, texto alternativo, hora de cierre de votación). Para una serie, escribe o actualiza bible.md junto a la carpeta del reel: reparto, reglas, canon, la pista, y una línea por opción de votación de cómo comienza la siguiente parte (story-engines §4).

Comandos

ComandoQué hace
reel new <dir> --title "…"Crea el andamio de una carpeta de reel
reel voice <dir> [--draft]Voz + temporización de palabras → timing.json, assets/audio/narration.wav
reel sound <dir>Sintetiza 19 efectos de sonido + la banda ambiental
reel build <dir>Compila index.html, cover/, POST.md
reel check <dir>HyperFrames lint, maquetación y puerta de contraste (sale con error si falla)
reel snap <dir> --at scenesPNGs fijos de la composición, dos por viñeta (o --at 1,5.5,9 segundos)
reel render <dir> [--draft]MP4 a −14 LUFS + cover.png + hoja de contacto
reel all <dir> [--draft]voz → sonido → montaje → verificación → renderizado (se detiene si la verificación falla)
reel frames <dir> --every 2Hoja de revisión de todo el MP4 renderizado

Solución de problemas

  • "palabra" no se dice ahí: la referencia temporal usa la ortografía del subtítulo y se busca solo dentro de esa escena; el error imprime lo que dice la escena. Usa palabra#1 para la segunda aparición, sN:palabra para otra escena, start+0.2 para un desplazamiento, o 12.5s para un tiempo absoluto.
  • Voz no encontrada: usa un nombre predefinido (Liam, Brian, George, Daniel, Callum, Bill, Roger, Chris, Eric, Will, Harry, Charlie, River, Adam, Sarah, Matilda, Jessica, Alice, Lily, Laura, Bella) o el id de la voz.
  • Créditos agotados: las líneas ya vocalizadas están en caché; recarga y vuelve a ejecutar voice.
  • Una viñeta en blanco o negra: un error de JavaScript en ese conjunto. check lo muestra; prueba la función volviendo a montar después de la corrección.
  • Más de 90 s: recorta líneas de presentación y adjetivos; conserva el gancho, el giro, la votación y la pista.
  • Errores de npx o node: instala Node 18+; en la primera ejecución deja que npx descargue HyperFrames y Chrome.

Qué incluye esta skill

  • scripts/reel.py: el CLI. scripts/synth.py: 19 efectos de sonido y la banda (zumbido, viento, pulso, murmullo, agua), todo sintetizado.
  • assets/kit.js: el kit de dibujo. assets/runtime.js, assets/base.css: subtítulos, HUD y la tarjeta de votación.
  • references/: viral-script-playbook.md (siempre), story-engines.md (premisas, series, biblia), episode-format.md (la especificación), drawing-kit.md (dibujo), sound-voice-posting.md (voces, sonido, subtítulos, publicación, seguridad).
  • examples/sundown-part1/: una Parte 1 completa de 89 segundos (episode.json + scenes.js). examples/starter/: el iniciador de 4 viñetas usado por new. examples/script-pitches.md: cinco guiones completos más de Parte 1 (LA RUEDA, ÚLTIMO COCHE, MAREA BAJA, 3:33, PRIMERA FILA).

Skills relacionados