| name | stories-gen |
| description | Genera Instagram Stories con fotos reales del creador usando Kie AI (Nano Banana Pro). Selecciona automaticamente las mejores fotos de una carpeta, genera storytelling adaptado al tema, y crea stories con texto handwritten limpio y balanceado. |
| allowed-tools | Read, Write, Bash(python3:*), Bash(ls:*), Bash(cat:*), Glob |
| user-invocable | true |
Generador de Instagram Stories v2
Skill que orquesta la creacion de Instagram Stories. TU (Claude) haces el trabajo inteligente: ver las fotos, elegir las mejores, escribir el storytelling. El script de Python solo ejecuta la generacion con Kie AI.
Uso
/stories-gen <carpeta_fotos> "<tema>" [--slides N] [--dry-run] [--regenerate "2,4"]
Ejemplos:
/stories-gen scripts/imagenes-historias "Por que aprender agentes IA"
/stories-gen ~/fotos-stories "Nuevo curso de Claude Code" --slides 5
/stories-gen scripts/imagenes-historias "Automatizar WhatsApp" --dry-run
Flujo de Ejecucion (paso a paso)
Paso 1: Listar y ver las fotos
Listar todas las fotos de la carpeta:
ls <carpeta_fotos>
Luego usar Read para VER cada foto (eres multimodal). Analiza:
- Que se ve en la foto (pose, expresion, entorno, objetos)
- Donde esta la cara
- Cuanto espacio libre hay para texto
- El mood general (serio, casual, energetico, profesional)
Paso 2: Seleccionar las mejores fotos
De todas las fotos disponibles, selecciona las mejores N para el storytelling.
Criterios de seleccion por rol de slide:
| Rol del slide | Buscar en la foto |
|---|
| hook | Llamativa, intrigante. Setup interesante o mirada directa a camara. Espacio para texto grande arriba |
| problema/conflicto | Expresion pensativa o seria. Fondo que no distraiga |
| explicacion/reveal | Gesticulando, senalando, o espacio amplio para texto/cards |
| contenido/lista | MUCHO espacio libre (cielo, pared, fondo simple) para colocar informacion |
| resultado | Sonriente, energetico, positivo |
| cta | Diferente al resto (otro lugar, otra ropa, exterior). Espacio para texto final |
Reglas de seleccion:
- Priorizar VARIEDAD (no usar 5 selfies iguales)
- Mezclar poses, angulos y entornos
- Si hay pocas fotos (< slides necesarios), ajustar el numero de slides
- Nunca repetir la misma foto en dos slides
Paso 3: Generar el storytelling
Basandote en el tema, escribe el texto para cada slide. Lee .claude/skills/stories-gen/structures.md para elegir una estructura narrativa apropiada.
Reglas de texto:
- Maximo 8-10 palabras en texto principal
- Maximo 6-8 palabras en texto secundario
- Texto de acento (abajo): maximo 6 palabras, tono intimo/personal
- Espanol conversacional, directo
- Sin emojis, sin hype, sin datos inventados
- Los textos deben funcionar como secuencia narrativa (cada slide conecta con el siguiente)
Paso 4: Pedir imagenes extra al usuario
Despues de definir los slides, analiza cuales se beneficiarian de imagenes extra de referencia. Estas pueden ser: screenshots de herramientas, portadas, logos, interfaces, fotos de producto, etc.
Mostrar al usuario algo como:
IMAGENES EXTRA SUGERIDAS:
Slide 1 (hook): Seria bueno tener una captura de Claude Code o de la terminal
-> Tienes una URL o archivo? (o escribe 'skip')
Slide 2 (reveal): La portada del curso ayudaria mucho aqui
-> URL o archivo?
Slide 3 (contenido): Un screenshot de la interfaz del curso mostrando los modulos
-> URL o archivo?
El usuario responde con:
- Una URL (https://...)
- Una ruta de archivo local (/Users/.../imagen.png)
- "skip" para no agregar extra a ese slide
IMPORTANTE sobre la portada/slide 1:
- La portada es el slide mas importante, es la que decide si la gente ve el resto
- Sugerir SIEMPRE al menos 1 imagen extra para la portada
- Puede ser: logo del tema, screenshot llamativo, imagen de la herramienta, portada del curso
Config JSON con extras:
{
"slide_num": 1,
"photo": "/ruta/a/foto.jpg",
"extra_images": ["https://url-imagen-extra.png", "/ruta/local/otra.png"],
"extra_descriptions": [
"Screenshot of Claude Code terminal showing code generation",
"Course cover image with logo"
],
...
}
extra_images: lista de URLs o paths de archivos locales
extra_descriptions: descripcion de cada extra para que el prompt sepa como integrarla
Paso 5: Crear config.json
Generar el archivo de configuracion en la carpeta del bundle (incluyendo extras si los hay):
/outputs/bundles/[bundle_id]/stories-config.json
Formato:
{
"bundle_id": "YYYY-MM-DD-slug-del-tema",
"topic": "Tema completo",
"slides": [
{
"slide_num": 1,
"role": "hook",
"photo": "/ruta/absoluta/a/foto.jpg",
"text_main": "Texto principal corto",
"text_secondary": "Subtexto opcional",
"text_accent": "texto pequeno abajo",
"hand_drawn": "",
"style": "clean_bold",
"text_position": "auto"
}
]
}
Paso 5: Mostrar plan al usuario
ANTES de ejecutar, mostrar al usuario:
PLAN DE STORIES: [tema]
Bundle: [bundle_id]
Slide 1 (hook): foto-elegida.jpg
"Texto principal"
"texto secundario"
Estilo: clean_bold
Slide 2 (problema): otra-foto.jpg
"Texto principal"
Estilo: soft_overlay
[...]
Total: N slides | Costo estimado: ~$X.XX
Generar? (si/no)
Esperar confirmacion del usuario antes de ejecutar.
Paso 6: Ejecutar generacion
cd "/Users/santiagomunoz/Documents/Copia de agentesanmunoz"
python3 scripts/generate-stories-v2.py outputs/bundles/[bundle_id]/stories-config.json
Para dry-run (solo ver prompts):
python3 scripts/generate-stories-v2.py outputs/bundles/[bundle_id]/stories-config.json --dry-run
Para regenerar slides especificos:
python3 scripts/generate-stories-v2.py outputs/bundles/[bundle_id]/stories-config.json --regenerate "2,4"
Estilos Visuales (v2)
Solo 3 estilos, limpios y probados:
| Estilo | Cuando usar | Descripcion |
|---|
clean_bold | Default. Hook, CTA, slides simples | Texto bold handwritten directo sobre la foto. Sin cards, sin overlays. Limpio |
soft_overlay | Fotos con fondo ocupado/complejo | Gradiente sutil (30% de la imagen) para legibilidad. NO un rectangulo oscuro agresivo |
accent_card | Slides con listas o mucha info | UNA sola frosted glass card compacta. Para cuando hay 3+ lineas de texto |
Regla de distribucion:
- Maximo 1 slide con
accent_card por secuencia
- Maximo 2 slides con
soft_overlay
- El resto:
clean_bold
- Alternar estilos para variedad visual
Elementos Hand-Drawn y Visuales
REGLA: Todo elemento debe tener razon de ser.
La cantidad de elementos por slide NO es fija. Depende de lo que el contenido necesite. Un slide de lista puede tener 4 cards con iconos si eso comunica mejor el mensaje. Un slide de hook puede tener solo texto y nada mas.
Criterio: si lo quitas y el slide pierde significado, dejalo. Si lo quitas y no cambia nada, sobraba.
- Elementos decorativos genericos (sparkles, estrellas random) = NO
- Iconos que refuerzan el mensaje (flecha que apunta, icono de la herramienta mencionada) = SI
- Cards de frosted glass para organizar informacion = SI cuando hay lista o multiples puntos
- Flechas, brackets de codigo
{}, iconos tech = SI si el tema es tech/codigo
Referencia v4 (lo que funciono):
- Slide 1 (hook): iconos de web/mobile/code porque el tema era construir algo tech
- Slide 2 (reveal): brackets
{} y flechas porque era un curso de codigo
- Slide 4 (contenido): 4 frosted glass cards porque habia 4 puntos de contenido
- Slide 6 (CTA): badge "10 DIAS", cohete, burbuja "nos vemos!" — todo reforzaba la urgencia y energia
Principios de Diseno
- La foto es la protagonista — El texto complementa, no compite
- NUNCA cubrir la cara — El script detecta la zona pero TU verificas visualmente
- Cada elemento debe tener razon de ser — Si refuerza el mensaje, va. Si es decorativo generico, no
- Legibilidad — El texto debe leerse en 1 segundo en mobile (letras grandes, contraste)
- Variedad — Alternar estilos, posiciones, y densidad entre slides
- Coherencia narrativa — Los slides cuentan una historia, cada uno conecta con el siguiente
- Adaptarse a la foto — Si la foto tiene mucho espacio, puedes poner mas. Si esta llena, minimo texto
Requisitos
- KIE_AI_API_KEY configurada:
export KIE_AI_API_KEY="tu-key"
- Pillow:
pip install Pillow
- Fotos del creador en una carpeta (HEIC, JPG, PNG)
Output
/outputs/bundles/[bundle_id]/
stories-config.json # Config generado por Claude
stories/
story-01.png # Stories generadas
story-02.png
...
manifest.json # Metadata
Google Drive: STORIES/[bundle_id]/
Costos
- ~$0.10 por slide
- 5 slides = ~$0.50
- 6 slides = ~$0.60
- Tiempo: ~8-12 minutos