Este es el proceso exacto con el que hice el carrusel de las noches de salsa y bachata de Cabarete para Ninafrika Dance School y OJO. No usé Canva ni plantillas: le di a la IA un brief, fotos sacadas de mis propios videos y le fui corrigiendo como a un diseñador. Aquí tienes cada paso, con los comandos y los prompts para copiar.
Qué vas a usar
| Herramienta | Para qué | Dónde | Precio |
|---|---|---|---|
| Claude Code | El asistente de IA que escribe y ejecuta todo desde la terminal | claude.com | Incluido en los planes de pago de Claude |
| Open Carrusel | Editor de carruseles: la IA diseña cada slide en HTML y lo exporta a PNG con las medidas exactas de Instagram | github.com/Hainrixz/open-carrusel | Gratis, código abierto (MIT) |
| ffmpeg | Sacar fotogramas de tus videos | ffmpeg.org | Gratis |
| ImageMagick (opcional) | Medir qué fotograma está más nítido | imagemagick.org | Gratis |
| Claude Banana (lo revisé, no lo usé) | Escribe prompts para generar imágenes con IA (usa la API de Google) | github.com/Hainrixz/claude-banana | Gratis (MIT); necesitas clave de Google AI |
Sobre las skills: no instalé ninguna skill aparte. Open Carrusel ya trae sus comandos para Claude Code (/start, /stop, /reset y /doctor) y unas instrucciones internas que le dicen a la IA cómo armar un carrusel (un arco de 8 slides con gancho y llamado final, en src/lib/chat-system-prompt.ts). Lo que pone tu estilo es el brief del paso 1. Open Carrusel y Claude Banana son proyectos de Hainrixz, de tododeia.
Paso 1
Escribe el brief
Antes de tocar ninguna herramienta, escribe en un archivo quién eres, a quién le hablas y qué quieres lograr. La IA lo lee antes de cada slide; sin esto, todo sale genérico. Yo lo escribo una vez por marca y lo reutilizo.
# Brief de marca para carruseles
## Quién soy
- Nombre / marca:
- Qué hago (una frase):
- Dónde estoy:
- Cuenta de Instagram:
## A quién le hablo
- Público principal:
- Qué busca o qué le preocupa:
- Idioma de los slides:
## Qué quiero lograr con este carrusel
- Objetivo (guardados, envíos, visitas a la web, mensajes):
- Llamado a la acción del último slide:
## Estilo
- Colores (hex): fondo / texto / acento
- Fuente:
- Logo (sí/no, dónde va):
- Fotos: propias. Nada generado con IA de personas o lugares reales.
- Lo que NO quiero:
## Datos
- De dónde salen los datos (enlace):
- Qué hay que verificar antes de publicar:
## Formato
- 4:5 (1080 × 1350), entre 6 y 9 slides
- Slide 1: gancho de máximo 8 palabras
- Una idea por slide, 10 a 20 palabras
- Todo el texto dentro del 80 % central
En mi caso: fondo #0C0C0C, crema #F0EDE8 y dorado #C9A84C (los de mi web), Helvetica (la que uso en mis videos), sin mi cara, y los datos sacados de mi propio post del blog, que ya estaban verificados.
Paso 2
Saca las fotos de tus videos
Yo no tenía fotos de las fiestas, solo videos del iPhone en 4K. Pausar el video y hacer captura da fotos borrosas y en baja resolución. Con ffmpeg sacas fotogramas a resolución completa. Instálalo en Mac con brew install ffmpeg.
1. Una hoja de contactos por video, para ver todos los momentos de un vistazo (aquí, un fotograma cada 2 segundos):
ffmpeg -i video.mov -vf "fps=1/2,scale=360:-1,tile=4x6" -frames:v 1 -q:v 3 hoja.jpg
2. Extrae una ráfaga del momento que te gusta. Si el momento está en el segundo 14, saca 4 fotogramas por segundo durante 2 segundos:
ffmpeg -ss 14 -t 2 -i video.mov -vf fps=4 -q:v 2 cand_%02d.jpg
3. Elige el más nítido a ojo o, si tienes ImageMagick, con una medida de nitidez (mientras más alto el número, más nítido):
for f in cand_*.jpg; do echo "$f $(magick "$f" -resize 540x -colorspace Gray -morphology Convolve Laplacian:0 -format '%[fx:standard_deviation*10000]' info:)"; done
4. Recórtalo a 4:5:
ffmpeg -i cand_05.jpg -vf "crop=iw:iw*5/4,scale=1620:2025" -q:v 2 elegida_4x5.jpg
No hace falta que escribas esto a mano: pídeselo a Claude Code.
Tengo videos en la carpeta "videos/". Para cada video haz una hoja de contactos con ffmpeg (un fotograma cada 1 o 2 segundos, mosaico de 4×6) y guárdalas en "_trabajo/contactos/".
Después te digo qué momentos quiero (video + segundo). Para cada uno: extrae fotogramas a 4 por segundo durante 2 segundos, quédate con los 3 más nítidos, recórtalos a 4:5 (1620×2025) y guárdalos en "_trabajo/fotogramas/<nombre-del-slide>/".
No borres ni muevas mis videos originales.
Ojo con la gente que sale en las fotos. En una fiesta salen personas que no son tu cliente. Pide permiso a quien organiza, prefiere fotos donde el foco sea el equipo y no uses imágenes de menores. Y no generes personas con IA para "rellenar".
Paso 3
Instala Open Carrusel
Necesitas Node.js 20 o más nuevo y Claude Code con tu sesión iniciada. Luego, en la terminal:
git clone https://github.com/Hainrixz/open-carrusel.git
cd open-carrusel
claude
Dentro de Claude Code escribe:
/start
La primera vez instala todo y descarga unos 300 MB de Chromium (lo usa para exportar los PNG), así que tarda un par de minutos. Después se abre el editor en http://localhost:3000: chat a la izquierda, vista previa al centro y los slides abajo.
Cierra una puerta antes de usarlo. El chat de Open Carrusel ejecuta Claude con permiso para usar la terminal sin límites (Bash). Solo lo necesita para mandar los slides a su propia API con curl. En src/app/api/chat/route.ts cambia la línea de Bash para que quede así:
"--allowedTools", "Bash(curl *)",
Si después el chat no crea slides por un error de permisos, vuelve a dejarla como estaba. Y no le pegues al chat enlaces ni textos de fuentes en las que no confíes: un texto con instrucciones escondidas podría hacer que ejecute cosas.
Paso 4
Configura tu marca
En la configuración de marca del editor pon el nombre, los colores, la fuente, tu logo y unas palabras de estilo (por ejemplo: "oscuro, editorial, mucho aire, texto grande"). La IA la lee antes de cada slide. Sube también tus fotos: quedan en /uploads/ y desde ahí las usa en los slides.
Truco de fuentes: si usas una fuente del sistema como Helvetica, escríbela entre comillas en la marca ('Helvetica Neue', Helvetica, Arial, sans-serif) para que Open Carrusel no la busque en Google Fonts.
Paso 5
Genera los slides
Hay dos caminos. El primero es pedirlo en el chat del editor:
Usa mi marca (ya está configurada). Crea un carrusel 4:5 de 7 slides sobre [TEMA] para [PÚBLICO].
Datos (úsalos tal cual, no inventes nada):
[PEGA AQUÍ LOS DATOS]
Estructura:
1. Gancho de máximo 8 palabras que abra una pregunta
2. Contexto en una frase
3–5. Una idea por slide
6. Un consejo práctico
7. Llamado a la acción: [guardar / enviar a un amigo / comentar PALABRA]
Fotos: usa [/uploads/foto1.png, /uploads/foto2.png...] en los slides 1, 3, 4, 5 y 7, con un degradado oscuro abajo para que el texto se lea.
Reglas: máximo 20 palabras por slide, todo el texto dentro del 80 % central, contador 01/07 arriba a la derecha, logo arriba a la izquierda.
Al final escribe el caption (máximo 150 palabras) y de 5 a 8 hashtags específicos.
El segundo es el que usé yo: pedirle a Claude Code, desde la terminal, un script que cree el carrusel por la API local de Open Carrusel. Tarda un poco más la primera vez, pero después cada corrección es cambiar una línea y volver a correrlo, y el diseño queda idéntico entre versiones.
Open Carrusel está corriendo en http://localhost:3000. Escribe un script en Python (solo librería estándar) que cree mi carrusel por su API:
1. POST /api/carousels con {"name": "...", "aspectRatio": "4:5"}
2. POST /api/carousels/{id}/slides con {"html": ..., "notes": ...} para cada slide
3. PUT /api/carousels/{id}/caption con el caption y los hashtags
Cada slide es HTML de cuerpo (sin <html> ni <body>) con estilos en línea, de 1080×1350.
Usa BRIEF.md para colores, fuente y logo, y COPY.md para el texto exacto de cada slide.
Haz funciones reutilizables: slide con foto de fondo y texto abajo, y slide de lista numerada.
Si le paso como argumento el id de una versión anterior, que la borre antes de crear la nueva.
No inventes datos: si algo no está en COPY.md, pregúntame.
Paso 6
Corrige como si fuera tu diseñador
La primera versión nunca es la buena. El mío pasó por ocho. Lo que funciona es corregir con instrucciones concretas, una cosa a la vez. Estas son correcciones reales que hice:
Quita todo lo del viernes: esa fiesta está en pausa. El gancho ahora es "2 nights. Zero cover."
Usa Helvetica en todo, la misma de mis videos.
Arriba a la izquierda pon el co-branding: mi logo × Ninafrika × OJO, en una fila.
La foto del slide 4 está muy oscura: prueba con los otros dos candidatos de esa carpeta.
En el slide del equipo pon el logo de Ninafrika grande, encima del título.
Revisa que ningún texto quede fuera del 80 % central.
Antes de exportar, revisa los datos uno por uno contra la fuente. En mi caso, una de las tres fiestas se había pausado justo esa semana: si no lo reviso, publico un horario que ya no existe.
Paso 7
Exporta y publica
Desde el editor exportas un ZIP con un PNG por slide, en 1080 × 1350. Súbelos a Instagram en orden. Este es el caption que preparé, para publicarlo en colaboración con @ninafrikadance:
Cabarete has a dance floor two nights a week — and it's free. Tuesday at OJO, Thursday on the OJO rooftop. Salsa and bachata, led by the @ninafrikadance team. No partner needed. Save this and send it to the friend who "doesn't dance" 😉 Full guide: link in bio. 📍 Cabarete, DR
Para saber si funcionó, no mires los likes. Mira los guardados, los envíos por mensaje y cuánta gente llega al último slide comparado con el primero.
Errores comunes
- "Node no está instalado" o la versión es vieja: instala Node.js 20 o más nuevo y vuelve a escribir
/start. - El puerto 3000 está ocupado:
/startte pregunta si cerrar el otro proceso o usar otro puerto. - Algo no arranca y no sabes por qué: escribe
/doctoren Claude Code; revisa la instalación y te dice qué falta. - Las fotos se ven pequeñas o pixeladas: sácalas del video original, no de una captura de pantalla, y súbelas a buena resolución.
- El texto queda tapado en el perfil: la cuadrícula de Instagram recorta el centro de la foto. Por eso el texto va en el 80 % central.
¿Quieres esto para tu marca sin hacerlo tú?
Hago carruseles, video y manejo de redes para negocios en la Costa Norte. Puedes ver cómo trabajo con Ninafrika en este caso de éxito.