Skill de estilo: cordel
Esta skill crea vídeos siempre con el mismo aspecto. El ESTILO está en references/estilo.md (la biblia).
El CONTENIDO proviene del pedido. Nunca copies personajes, logos o textos del vídeo que inspiró el estilo.
SKILL_DIR = la carpeta de este archivo. Los scripts están en SKILL_DIR/scripts/ y se ejecutan con python3.
Trabaja en una carpeta de proyecto del vídeo (por defecto: la carpeta actual). Todo va a saida/ y final/ de esa carpeta.
Antes de todo
- Lee
references/estilo.md,references/regras-storyboard.md,references/regras-video.mdy, si existe,references/licoes.md(lo que ha salido mal con este estilo). - Verifica las herramientas:
ffmpeg -version,python3 -c "import PIL". Si falta algo → di qué instalar y para.
Paso 1 — los 5 datos (pregunta en texto libre lo que falte, sugiriendo el valor por defecto)
| dato | opciones | por defecto |
|---|---|---|
| tema | una frase | — (obligatorio) |
| formato | 9:16 · 16:9 · 1:1 | 9:16 |
| duración | segundos; se redondea a múltiplo de 2,5 | 15 |
| resolución | ej.: 1080x1920 | la del formato (9:16 → 1080x1920, 16:9 → 1920x1080, 1:1 → 1080x1080) |
| motor | local (gratis, probado) · kling · seedance (solo prompts, no probados) | local |
Paso 2 — plan de escenas
python3 SKILL_DIR/scripts/cenas.py --tema "<tema>" --duracao <s> --formato <f> --resolucao <WxH> --motor <m>
Muestra cuántas escenas (2,5 s cada) y storyboards (hasta 6 escenas cada). Si avisa que normalizó la duración, comunícalo al usuario.
Paso 3 — guión (tú lo escribes)
Escribe roteiro.json siguiendo references/regras-video.md (habla de hasta 6 palabras por escena, una
palabra clave grande por escena, la 1ª escena abre con el dolor o el deseo de quien ve, en "tú"):
{"personagem": "quien aparece en varias escenas, descrito siempre igual (ropa, color, accesorio)",
"cenas": [{"texto_tela": "PALABRA", "fala": "frase corta hablada", "acao": "lo que se ve", "camera": "zoom_in"}]}
personagem se envía en cada petición de storyboard (sin él, cada storyboard inventa una persona). Después:
python3 SKILL_DIR/scripts/cenas.py ... --roteiro roteiro.json # mismo comando + el guión
Paso 4 — storyboards en el estilo
Arma las peticiones (una por storyboard) a partir de la plantilla + biblia + plan + personaje:
python3 SKILL_DIR/scripts/pedido_storyboard.py # → saida/storyboards/pedido-storyboard-N.txt
Envía cada petición, sin reescribirla, a tu herramienta de imagen (Codex: image_gen; Claude Code: la herramienta de
imagen que tengas, o pide al usuario que genere y guarde). Guarda en saida/storyboards/storyboard-N.png.
Para cambiar la petición, cambia la plantilla (modelos/prompt-storyboard.md) o la biblia, no el texto generado.
- Genera uno por vez. A partir del 2º, pasa el storyboard anterior como imagen de referencia (continuidad).
- Abre la imagen y verifica con la lista de
regras-storyboard.md(cuadrícula correcta, palabra exacta letra por letra, estilo, continuidad). Amplía las palabras para verificar. Mala → rehazla (hasta 2 veces) y anota enreferences/licoes.md.
Paso 5 — recortar
python3 SKILL_DIR/scripts/recortar.py --plano saida/plano.json # --respiro 0.08 (por defecto) protege la palabra del zoom
Paso 6 — animar
python3 SKILL_DIR/scripts/animar.py # motor local: zoom/pan lento + dissolve
python3 SKILL_DIR/scripts/animar.py --motor kling --so-prompts # NO PROBADO: solo escribe los comandos
python3 SKILL_DIR/scripts/animar.py --motor seedance --so-prompts # NO PROBADO: solo escribe los prompts
Con kling/seedance, quien ejecuta es el usuario, en su cuenta; después los clips vuelven a saida/clipes/.
Paso 7 — narración (una sola voz)
python3 SKILL_DIR/scripts/narrar.py --arquivo voz.wav # el usuario grabó todo
python3 SKILL_DIR/scripts/narrar.py --falas-dir falas/ # el usuario grabó una frase por escena
python3 SKILL_DIR/scripts/narrar.py --comando '<tts> {texto} {saida}' # cualquier TTS local
python3 SKILL_DIR/scripts/narrar.py --inemavox --inemavox-dir <carpeta> --ref <voz.wav>
python3 SKILL_DIR/scripts/narrar.py --edge # NO PROBADO (servicio online)
Con TTS, narrar.py corta la "cola" que la voz a veces inventa después de la frase y genera de nuevo la frase larga
demasiado para el número de palabras (--tentativas 3). Si avisa que una frase excede la escena, acorta la frase en el
guión y ejecuta de nuevo. Si puedes, verifica la narración con una transcripción local (¿coinciden las frases con el guión?);
frase con problema → narrar.py ... --refazer N rehace solo la escena N.
Paso 8 — montar con pista única
python3 SKILL_DIR/scripts/montar.py [--trilha assets/trilha/x.mp3] [--volume 0.5]
Sin pista en assets/trilha/ → pregunta al usuario qué música usar (suya o con licencia). Varias → pide que elija.
Paso 9 — verificar (obligatorio)
python3 SKILL_DIR/scripts/validar.py --duracao <s> --resolucao <WxH>
python3 SKILL_DIR/scripts/folha.py # final/folha-final.jpg: un fotograma de cada escena
Solo di "listo" después de que validar.py imprima PASSOU y tú MIRES la final/folha-final.jpg
(texto legible, sin letra cambiada, estilo igual en todos los paneles). Si falla, di qué falta.
Paso 10 — mejora la skill
Después de cada vídeo, escribe en references/licoes.md (una línea por ítem) lo que salió mal y la regla que
lo evitaría. Si es regla de estilo o de storyboard, cambia también estilo.md/regras-storyboard.md, no solo el prompt.