Install
openclaw skills install @formula100k/carrusel-viral-formula100kCrea carruseles virales de Instagram completos, slide por slide. Activar SIEMPRE que alguien pida: crear un carrusel, diseñar slides, convertir un reel en carrusel, hacer un post de varias diapositivas, estructurar o guionizar un carrusel. También con "hazme un carrusel", "convierte esto en carrusel", "quiero hacer slides", "estructura mis diapositivas". Conoce los 35 formatos del recetario de FÓRMULA 100K (F01–F20 y G01–G15: frase partida, tier list, checklist, libreta, garabatos sobre tu foto, chat, antes/después…) y elige uno por objetivo. Investiga referencias virales reales, entrega el guion completo con diseño, genera la imagen gancho con Gemini (Nano Banana) si hay llave, lo arma en Canva si está conectado y da instrucciones precisas de producción.
openclaw skills install @formula100k/carrusel-viral-formula100kEsta versión corre en un agente OpenClaw (servidor + Telegram), no en Claude Code. Antes de seguir, lee la skill
f100k-puente: traduce herramientas y rutas. Lo específico de esta skill:
- La imagen gancho: usa
GEMINI_API_KEYdel entorno (o el modelo de imagen de OpenRouter). La skillbananay su script no vienen en este paquete: llama a la API directo como muestra el ejemplo con curl. Costo → ✅ → generar.- Construir en Canva solo si Canva está conectado (por ejemplo vía Composio). Si no, entrega el guion y el diseño slide por slide listos para armar.
- Referencias virales: búsqueda web, o Apify con
APIFY_TOKEN. Nunca navegador logueado.- La imagen se guarda en
entregables/imagenes/y se manda por Telegram.
Esta skill enseña un método. El método es agnóstico de industria: sirve igual para formulación cosmética, nutrición, repostería, fisioterapia, finanzas o jabonería. Los ejemplos escritos aquí abajo son ilustraciones del método, nunca del tema.
Antes de escribir nada:
[TU OFERTA], [TU RESULTADO]). Nunca asumas que el rubro es marketing.El método viaja, el rubro no. El mismo molde, vestido con rubros distintos:
| Rubro | El mismo molde |
|---|---|
| Cocina | "Así es mi cena favorita para no dormir con el azúcar alta." |
| Relaciones | "5 señales de que estás forzando una relación que ya no funciona." |
| Finanzas | "La principal causa de un divorcio no es una infidelidad." |
| Formulación cosmética | "El conservante decide si tu crema dura tres meses o te da una infección. No el aceite." |
| Jabonería | "Si tu jabón se pone blando a los dos días, no fue el aceite. Fue la sosa." |
| Fisioterapia | "Ese dolor de rodilla al bajar escaleras casi nunca nace en la rodilla." |
| Repostería | "Tu bizcocho se hunde en el centro por la temperatura, no por la harina." |
| Jardinería | "Tu planta no se está muriendo de sed. Se está ahogando." |
Mismo molde en todos; ninguno menciona reels ni embudos. Haz exactamente eso.
Esta skill transforma una idea o guion en un carrusel de Instagram completamente guionizado, diseñado y construido. El proceso incluye investigación de ganchos virales reales, guion slide por slide con especificaciones de diseño, generación de imagen del gancho con Nanobanana (skill banana / Gemini API), y construcción directa del carrusel en Canva si el usuario proporciona el enlace editable.
Este paso se ejecuta SIEMPRE, al principio de cada sesión. El perfil visual garantiza que todos los carruseles tengan coherencia de marca.
Lee el archivo references/design_profile.md.
Si el archivo contiene [PERFIL NO CONFIGURADO] o está vacío:
→ Ir al PASO 0.2 para hacer el setup inicial
Si el archivo contiene un perfil completo con datos reales: → Cargar el perfil en memoria y usarlo como base visual para todo el carrusel → Confirmar en un mensaje breve: "✓ Perfil de marca cargado: [nombre de marca]." → Ir directamente al PASO 0.5 para obtener la idea
Explicar al usuario:
"Para crear carruseles con tu estilo visual consistente, necesito conocer tu identidad de marca. Tienes dos opciones:
Opción A — Compartir referencias visuales (recomendada) Sube 1-3 screenshots de carruseles que representen tu estilo (pueden ser tuyos o de inspiración). Analizaré los colores, tipografía, layout y jerarquía visual.
Opción B — Describir tu marca Responde estas preguntas:
- ¿Nombre de tu marca/cuenta de Instagram?
- ¿Colores de marca? (hex codes o descripción: azul marino, naranja, etc.)
- ¿Tipografías? (si no las sabes: ¿bold/moderna/manuscrita/clásica?)
- ¿Cómo describes tu estilo visual? (minimalista, colorido, profesional, vibrante…)
- ¿Usas algún elemento visual fijo? (marcos, líneas, emojis recurrentes, íconos)"
Esperar la respuesta del usuario antes de continuar.
Si el usuario compartió imágenes:
Analiza cada imagen y extrae:
JERARQUÍA VISUAL
CONSISTENCIA DE MARCA
PATRONES DE LAYOUT
Si el usuario respondió las preguntas: Completa el perfil usando sus respuestas, estimando valores faltantes según el estilo descrito.
Genera el perfil con este formato exacto:
# Perfil Visual de Marca — [Nombre de Marca]
## Identidad Visual
- Nombre de marca: [nombre]
- Estilo general: [minimalista / vibrante / profesional / casual / premium]
- Tono visual: [descripción en 1-2 oraciones]
## Paleta de Colores
- Color primario: #[hex] — [uso: "fondo principal"]
- Color secundario: #[hex] — [uso: "acentos, CTAs"]
- Color de énfasis: #[hex] — [uso: "palabras clave, highlights"]
- Color de fondo slides interiores: #[hex]
- Color de texto principal: #[hex]
## Tipografía
- Fuente de títulos: [nombre] — tamaño sugerido Slide 1: [X]px
- Fuente de cuerpo: [nombre] — tamaño sugerido slides interiores: [X]px
- Estilo tipográfico: [CAPS / title case / bold / italic / regular]
## Layout Base
- Orientación preferida: [texto centrado / texto izquierda / texto derecha]
- Fondo slides interiores: [color sólido / gradiente / textura]
- Uso de imágenes: [sí — estilo [X] / solo en Slide 1 / no]
- Elementos decorativos: [ninguno / líneas / formas / marcos / descripción]
## Jerarquía Visual
- Estructura del Slide 1 (gancho): [imagen grande + texto superpuesto / texto dominante / 50/50]
- Elemento de énfasis para palabras clave: [subrayado / círculo / highlight / bold / color diferente]
- CTA visual: [texto bold / color de énfasis / flecha / botón]
## Prompt de Diseño Canva
"Carrusel Instagram [nombre de marca]: fondo [color + hex], títulos en [fuente] [tamaño]px [color + hex], cuerpo en [fuente] [tamaño]px [color + hex], palabras clave en [color de énfasis + hex], layout [descripción], elementos decorativos: [descripción]. Estilo: [3 adjetivos que describan el look]."
Presenta el perfil al usuario y pregunta:
"¿Está correcto o quieres ajustar algo? Una vez confirmado, usaré este perfil para todos tus carruseles."
Aplica los ajustes que pida.
Luego dile:
"Para guardar este perfil para sesiones futuras, cópialo y reemplaza el contenido de
references/design_profile.mden tu skill. Así no tendrás que configurarlo de nuevo."
Si el usuario ya proporcionó su idea o guion junto con la solicitud inicial, úsala directamente.
Si no la proporcionó, pregunta:
"¿Cuál es la idea o guion que quieres convertir en carrusel? Puedes pegar el texto de un reel, describir el tema en 1-2 oraciones, o darme el mensaje central que quieres comunicar."
Siempre preguntar esto, ya sea que la idea haya venido en el mensaje inicial o no:
"¿Quieres que construya el carrusel directamente en tu Canva? Si es así, pásame el enlace de edición (el que termina en
/edit) y lo armo slide por slide con tu perfil de marca. Si prefieres hacerlo tú, te entrego el guion completo con instrucciones detalladas."
Si el usuario proporciona un enlace de Canva: → Guardar el enlace en memoria → Confirmar: "✓ Link de Canva recibido. Construiré el carrusel ahí directamente después de generar el guion y la imagen del gancho." → Ejecutar PASO 6 (construcción en Canva) después de PASO 5
Si el usuario prefiere hacerlo él: → Continuar con el flujo normal (guion + instrucciones detalladas) → Omitir PASO 6
Antes de hacer cualquier investigación, extrae los siguientes elementos del input recibido:
Este paso es obligatorio. No se entrega el guion sin haber investigado primero.
Opción A — TikTok MCP (davibauer/tiktok-mcp):
Si el MCP davibauer/tiktok-mcp está disponible en el entorno, úsalo primero. Herramientas disponibles:
# Buscar videos virales por tema
search_videos(query="[tema] [nicho]", count=10)
# Buscar por hashtag específico del nicho
search_videos(query="#[hashtag_relevante]", count=10)
# Buscar tendencias actuales en el nicho
search_videos(query="[tema] tips estrategia", count=10)
De los resultados del MCP, extrae:
play_count / digg_count (likes) — filtra solo los que superan 100K vistasdesc (descripción/gancho) — copia los primeros 15 palabras de los más viralesauthor.nickname — nota qué cuentas dominan el temacreate_time — prioriza contenido de los últimos 90 díasOpción B — WebSearch (fallback si el MCP no está disponible):
Búsquedas a realizar:
- "[tema] carrusel viral Instagram 2024 2025"
- "[tema] tiktok viral [mes actual] millones vistas"
- "[tema] instagram carousel hook viral"
- "site:tiktok.com [tema palabras clave]"
Busca al menos 3-5 referencias con evidencia de viralidad (millones de vistas, alto engagement).
Nota: Siempre intenta el MCP primero. Solo cae a WebSearch si el MCP lanza error de conexión o no está instalado.
De los resultados encontrados (MCP o WebSearch), identifica:
Compara la idea del usuario con los patrones encontrados:
Lee references/formatos-carrusel-35.md: los 37 formatos del recetario de FÓRMULA 100K con su objetivo, mecánica, soporte, motor y qué tan bien los resuelve Nano Banana. No inventes un «tipo» si uno de los 37 ya lo cubre.
Formato — cruza el objetivo del PASO 1 con los patrones virales del PASO 2:
| Objetivo | Primero se proponen | También |
|---|---|---|
| Guardado | F07 chuleta · G01 checklist · G05 recursos | F18, F04, G06 glosario, G13 de A a B |
| Comentario | F17 tier list · G03 qué tipo eres · G08 molde | F08, F14, G12 confesión, G10 frases |
| Compartido | F01 causa y consecuencia · G10 frases · G06 glosario | F19 mapa |
| Seguidor | F10 anáfora · F13 garabatos (post fijado) · F07 | F06 |
| Conexión | F11 historia de origen · G11 errores propios · G12 confesión | F12 |
| Venta | G07 caso de estudio · G14 antes/después · G15 FAQ en chat | F11, F20, F09 |
| Autoridad / actualidad | G02 noticia · G04 lo que nadie te dice | F14 hot take |
Ninguna encaja de verdad → dilo y usa la arquitectura simple (gancho → 3-5 puntos → cierre con CTA).
Anatomía — con la ficha elegida, abre su bloque en skills/carrusel-formatos-f100k/references/catalogo.md (### <ID> · ) y respeta su anatomía slide por slide, su prompt de guion y su error típico. El número de slides lo manda la ficha (F17 puede ser 1 sola; F07, 2); si la ficha no lo fija: mínimo 5, máximo 10.
CTA final — específico y accionable ("Comenta X", "Guarda esto", "Envía a alguien que...")
Fabricación según el formato: el guion lo entregas aquí (PASO 4). Para los PNG del formato elegido (plantillas split / papel / datos / garabato, HTML libre de las fichas G, o los prompts listos para Gemini y ChatGPT si la persona no usa Claude Code), invoca carrusel-formatos-f100k con la ficha + el guion aprobado: esa skill tiene el visual detallado, las plantillas y su tabla de a qué skill derivar. El PASO 6 (Canva) queda para cuando la persona da un link de Canva.
Nano Banana: si el índice marca 2 o más arreglos para esa ficha, o si la slide lleva más de ~25 palabras o una lista, no le pidas el texto al modelo de imagen: texto en HTML (motor A) o fondo IA sin texto + texto encima (motor C).
Para cada slide, entrega exactamente este formato:
---
### SLIDE [N] — [Nombre del slide]
**TEXTO PRINCIPAL:**
[El texto exacto que va en el slide — máximo 40-60 palabras]
**DISEÑO:**
*(Usar los valores del Perfil Visual de Marca cargado en PASO 0. Si no hay perfil, usar valores por defecto: Bebas Neue para títulos, Garet para cuerpo, fondo negro/blanco, acento naranja.)*
- Tipografía: [Fuente de títulos del perfil + tamaño sugerido / Fuente de cuerpo del perfil]
- Elemento de énfasis: [Elemento de énfasis del perfil: subrayado / círculo / highlight / bold]
- Layout: [Layout base del perfil: texto centrado / izquierda / derecha]
- Color de fondo: [Color de fondo del perfil para slides interiores]
- Color de texto: [Color de texto del perfil]
- Color de énfasis: [Color de énfasis del perfil para palabras clave]
- Emoji: [cuál y dónde según el estilo del perfil, o "ninguno"]
**INSTRUCCIÓN CANVA:**
[Instrucción específica paso a paso usando los valores exactos del Perfil Visual de Marca]
---
Reglas de escritura del guion:
Slide 1 (gancho) tiene estructura fija e inamovible:
┌─────────────────────────────┐
│ @usuario (pequeño, top) │
│ │
│ IMAGEN │
│ (60% del slide) │
│ │
│─────────────────────────────│
│ GANCHO EN 1-2 LÍNEAS │ ← máx. 6-8 palabras, tipografía grande
│ → │
└─────────────────────────────┘
Slides interiores (2 en adelante) deben ser SOLO TEXTO — sin grillas de íconos, sin elementos decorativos fijos. Esto garantiza compatibilidad total con edición automática vía Canva MCP. Los íconos de línea fijos no son reemplazables programáticamente.
⚠️ ADVERTENCIA DE TEMPLATE: Antes de iniciar la construcción en Canva (PASO 6), verificar que el template del usuario NO tenga grillas de íconos de línea en los slides interiores. Si las tiene, advertirlo explícitamente y pedirle un template texto-only antes de continuar. Un template compatible tiene esta estructura en slides interiores:
┌─────────────────────────────┐
│ TÍTULO GRANDE │
│ │
│ Texto de apoyo │
│ en 1-2 líneas │
│ │
│ Frase de cierre │
│ → │
└─────────────────────────────┘
Cada slide tiene UNA sola idea
El texto debe leer solo, sin depender de la imagen
Progresión lógica: cada slide hace querer ver el siguiente
Slide final siempre termina con CTA específico y directo
El slide 1 (gancho) necesita una imagen generada con IA. La herramienta es el skill banana (skills/banana), que usa la API de Gemini (Nano Banana 2 — gemini-3.1-flash-image-preview).
NO pasar una descripción genérica. Construir el prompt siguiendo los 5 componentes del skill banana:
| Componente | Peso | Qué incluir |
|---|---|---|
| Sujeto | 30% | Elemento visual principal: persona con rasgos específicos, objeto con material/textura, escena con detalle |
| Acción | 10% | Verbo presente fuerte: "mira fijamente", "sostiene", "emerge desde" |
| Contexto | 15% | Ubicación + hora + atmósfera: "estudio oscuro a las 2am", "ciudad al amanecer" |
| Composición | 10% | Ángulo + encuadre: "plano medio bajo", "primer plano extremo", "toma aérea" |
| Estilo + Luz | 25% | Cámara real + focal + diafragma + iluminación + referencia de publicación |
Reglas obligatorias (del skill banana):
Plantilla de prompt:
[Sujeto específico con edad/material/textura], [acción con verbo fuerte]
en [ubicación concreta + hora del día]. [Micro-detalle visual].
Captado con [cámara real], lente [focal] a [diafragma], [iluminación].
Paleta: [colores del perfil de marca].
Composición vertical limpia. Estilo editorial [referencia de publicación].
NEVER include any text or watermarks.
Ejemplo aplicado (tema: productividad):
A focused 28-year-old woman with sharp cheekbones and dark hair pulled back,
staring intensely at a glowing laptop screen in a minimal dark studio at 2am.
Blue light casting cool shadows across her face, single warm desk lamp behind.
Shot on Sony A7R IV, 85mm f/1.4 lens, shallow depth of field.
Deep navy and charcoal tones with warm amber accent. Clean vertical composition.
WIRED magazine editorial aesthetic. NEVER include any text or watermarks.
Intentar en este orden exacto:
Si los tools gemini_generate_image, set_aspect_ratio etc. están disponibles:
set_aspect_ratio("4:5")
gemini_generate_image(prompt="[prompt de 5.1]", imageSize="2K")
API_KEY="$GEMINI_API_KEY"
GOOGLE_AI_API_KEY="$API_KEY" python3 skills/banana/scripts/generate.py \
--prompt "[prompt de 5.1]" \
--aspect-ratio "4:5" \
--resolution "2K" \
--model "gemini-3.1-flash-image-preview"
La imagen se guarda en entregables/imagenes/.
API_KEY="$GEMINI_API_KEY"
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent?key=$API_KEY" \
-H "Content-Type: application/json" \
-d @- <<\'JSONBODY\' -o /tmp/gemini_hook_response.json
{
"contents": [{"parts": [{"text": "[PROMPT]"}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "4:5", "imageSize": "2K"}
}
}
JSONBODY
python3 -c "
import json, base64
with open(\'/tmp/gemini_hook_response.json\') as f: data = json.load(f)
for part in data[\'candidates\'][0][\'content\'][\'parts\']:
if \'inlineData\' in part:
with open(\'entregables/imagenes/hook_carrusel.png\', \'wb\') as f:
f.write(base64.b64decode(part[\'inlineData\'][\'data\']))
print(\'Guardada: entregables/imagenes/hook_carrusel.png\')
"
Dentro de Canva → Apps → "Texto a imagen" → usar el prompt de 5.1.
Después de una generación exitosa:
python3 skills/banana/scripts/cost_tracker.py log \
--model "gemini-3.1-flash-image-preview" \
--resolution "2K" \
--prompt "hook_carrusel — [tema breve]"
La imagen va como fondo del Slide 1 completo (aspect 4:5) o en el 60% superior (aspect 1:1).
Subidas > Subir archivos)Este paso solo se ejecuta si el usuario proporcionó un enlace de Canva editable en PASO 0.6. Si el usuario eligió hacer el diseño él mismo, omitir este paso y continuar con PASO 7.
Verificar disponibilidad: Si los tools mcp__canva__* (o con prefijo de Canva) están disponibles en el entorno, usar SIEMPRE este flujo. Es más rápido, más preciso y no depende de la interfaz visual del navegador.
Del URL del usuario: https://www.canva.com/design/{DESIGN_ID}/...
Ejemplo: https://www.canva.com/design/DAHEly0BYWc/RC2ybuD9olRxDlDUVkQMVQ/edit → design_id = DAHEly0BYWc
get-design-pages(design_id)
→ Obtiene número de páginas y sus IDs
get-design-content(design_id, page_number=N)
→ Para cada página: element IDs, texto actual, posiciones
Mapear qué elementos de texto existen en cada página, sus IDs y contenido actual.
start-editing-transaction(design_id)
→ Guardar el transaction_id devuelto
Agrupar TODAS las operaciones del carrusel en UN SOLO llamado a perform-editing-operations.
No hacer múltiples llamadas individuales — una transacción bulk es más eficiente y atómica.
Operaciones disponibles:
| Operación | Parámetros clave | Uso |
|---|---|---|
replace_text | page_number, element_id, new_text | Cambiar texto de un elemento existente |
format_text | page_number, element_id, font_size, bold, italic, color, alignment | Formato tipográfico |
resize_element | page_number, element_id, width, height | Cambiar dimensiones de un elemento |
position_element | page_number, element_id, top, left | Mover elemento en el canvas |
Ejemplo bulk (múltiples slides en una sola llamada):
[
{"type": "replace_text", "page_number": 2, "element_id": "ABC", "new_text": "Texto slide 2..."},
{"type": "format_text", "page_number": 2, "element_id": "ABC", "font_size": 54, "italic": true, "alignment": "center", "color": "#1A1A1A"},
{"type": "replace_text", "page_number": 3, "element_id": "DEF", "new_text": "Texto slide 3..."},
{"type": "format_text", "page_number": 3, "element_id": "DEF", "font_size": 54, "italic": true, "alignment": "center", "color": "#1A1A1A"},
{"type": "resize_element", "page_number": 4, "element_id": "GHI", "width": 1080},
{"type": "position_element", "page_number": 4, "element_id": "GHI", "top": 560, "left": 0}
]
get-design-thumbnail(design_id, page_number=N)
→ Para cada página modificada
Revisar visualmente que el contenido y formato se aplicaron correctamente antes de commitear.
Mostrar thumbnails al usuario y preguntar:
"¿Se ve bien? ¿Hago commit para guardar los cambios de forma permanente?"
Si confirma → commit-editing-transaction(transaction_id)
Si hay problemas → cancel-editing-transaction(transaction_id) → corregir → nueva transacción
| Lo que NO puede hacer el MCP | Solución manual para el usuario |
|---|---|
| Agregar páginas nuevas | Clic en "+" en panel de páginas |
| Cambiar color de fondo de página | Clic en fondo → seleccionar color |
| Cambiar familia tipográfica | Seleccionar texto → menú fuente |
| Insertar elementos nuevos (texto, íconos) | Panel Elementos o Texto |
Para slides que requieren nueva página o cambio de fondo (ej: CTA con fondo negro), dar instrucciones claras al usuario para que lo haga manualmente, y continuar con el MCP para el contenido textual.
Usar solo si el Canva MCP connector NO está activo en la sesión.
/edit)Para slides interiores:
Precauciones Chrome:
"✅ Carrusel construido en Canva. Revísalo en: [enlace]. Tienes [N] slides listos. Exporta desde
Compartir → Descargarcomo JPG/PNG o PDF con páginas."
Después de los slides, entrega también el caption optimizado:
**CAPTION SUGERIDO:**
[Primera línea = gancho — igual o derivado del Slide 1]
[2-3 líneas de contexto o promesa]
[CTA específico]
.
.
.
[3-5 hashtags de nicho]
Reglas del caption:
Al final, entrega un resumen de acciones para que el usuario pueda producir de inmediato:
## ✅ CHECKLIST DE PRODUCCIÓN
**Imagen del gancho:**
- [ ] Imagen generada con Nanobanana (skill banana) — guardada en `entregables/imagenes/`
- [ ] Subir a Canva (si no se construyó en PASO 6)
**En Canva (1080 × 1350 px):**
*(Si el carrusel ya fue construido en PASO 6, este paso es de verificación final)*
- [ ] Slide 1: Colocar imagen de gancho + texto [TÍTULO] en fuente de títulos del perfil
- [ ] Slide 2: [descripción breve]
- [ ] Slide 3: [descripción breve]
- [ ] ... (un punto por slide)
- [ ] Slide final: CTA con fondo [color]
**Para publicar:**
- [ ] Exportar como JPG/PNG individual o PDF con páginas
- [ ] Caption listo arriba
- [ ] Agregar música en Instagram (opcional pero aumenta alcance)
- [ ] Publicar en horario óptimo (Martes/Jueves 9am o 6pm)
Después de entregar el carrusel completo, genera automáticamente un calendario de publicación de 30 días que extiende el contenido del carrusel a múltiples formatos y fechas.
El carrusel recién creado es la pieza ancla. A partir de él, se derivan:
Entrega el calendario en esta tabla:
## 📅 CALENDARIO DE CONTENIDO — 30 DÍAS
**Semana 1 — Lanzamiento**
| Día | Formato | Tema/Gancho | Plataforma | Hora sugerida |
|---|---|---|---|---|
| Día 1 | Carrusel | [Gancho del carrusel recién creado] | Instagram | Mar/Jue 9am o 6pm |
| Día 2 | Story x3 | Teaser de los 3 puntos clave del carrusel | Instagram Stories | 10am |
| Día 3 | Reel 30s | [El tip más accionable del carrusel en formato reel] | Instagram / TikTok | 6pm |
| Día 5 | Post texto | Reflexión personal sobre [tema del carrusel] | Instagram | 12pm |
| Día 7 | Story encuesta | "¿Cuál de estos puntos te resultó más útil?" | Instagram Stories | 11am |
**Semana 2 — Profundización**
| Día | Formato | Tema/Gancho | Plataforma | Hora sugerida |
| Día 10 | Reel 60s | Desarrolla el punto #[N más importante] del carrusel | Instagram / TikTok | 6pm |
| Día 12 | Carrusel 2 | [Tema derivado — el punto que más generó preguntas] | Instagram | 9am |
| Día 14 | Story detrás | "El proceso de crear este contenido" | Instagram Stories | 3pm |
**Semana 3 — Engagement y repurpose**
| Día | Formato | Tema/Gancho | Plataforma | Hora sugerida |
| Día 17 | Reel 15s | Hook de una sola línea del carrusel con texto animado | TikTok / Reels | 6pm |
| Día 19 | Post Q&A | Responde las preguntas más frecuentes del carrusel | Instagram | 9am |
| Día 21 | Carrusel mini | Versión de 5 slides con resumen del carrusel original | Instagram | 6pm |
**Semana 4 — Cierre y próxima pieza**
| Día | Formato | Tema/Gancho | Plataforma | Hora sugerida |
| Día 24 | Reel detrás | Resultados y métricas del carrusel (si hay datos) | Instagram / TikTok | 6pm |
| Día 28 | Story serie | Serie de 5 stories con cada punto del carrusel (1/día) | Instagram Stories | 10am |
| Día 30 | Carrusel nuevo | [Nueva idea derivada de la conversación generada] | Instagram | 9am |
Antes de entregarlo, reemplaza todos los placeholders [...] con:
Incluye siempre este bloque al final del calendario:
💡 **Cómo usar este calendario:**
- Graba los reels en un solo día de producción (batch)
- Crea las stories como extensión natural del carrusel
- El Día 30 ya tiene lista la siguiente idea — el ciclo nunca para
- Ajusta horarios según tus analytics de Instagram (Insights → Audiencia → Horas activas)
Antes de entregar, verifica:
gemini_generate_image / set_aspect_ratio están activos en la sesiónGOOGLE_AI_API_KEY=... python3 skills/banana/scripts/generate.py (API key en la variable de entorno GEMINI_API_KEY)cost_tracker.py log después de cada generación exitosaperform-editing-operations. No hacer llamadas individuales por slide.davibauer/tiktok-mcp está disponible, úsalo en PASO 2 para obtener datos de engagement reales. Si no, WebSearch es válido como fallback.references/design_profile.md tiene el placeholder [PERFIL NO CONFIGURADO], disparar el setup. Si tiene contenido real, cargarlo sin preguntar nada y continuar.references/design_profile.md al inicio de cada sesión (el sistema visual de la marca vive ahí) y references/formatos-carrusel-35.md en el PASO 3 (los 37 formatos; se regenera desde el recetario, no se edita a mano).