Communitygithub.com

Caroselli Canva (ex carosello-aurum)

Crea un carosello Instagram per @aurumiles dentro Canva (create-design / copy-design de #8), estilo audaz con Davide el 24-25 de septiembre de 2026: fuente Anton/Roboto/OpenSauce, oro sobre negro, una foto real de Davide solo en la portada. Usa SOLO cuando Davide pida explícitamente «en Canva» o clonar/adaptar un carrusel ya hecho en Canva. Para los carruseles en el estilo de las lecciones (rojo sobre negro, Oswald, hechos aquí por Claude) usa la skill `caroselli-claude`.

¿Qué es Caroselli Canva (ex carosello-aurum)?

Esta skill está diseñada para crear carruseles de Instagram para @aurumiles utilizando el motor de diseño AI de Canva. Reemplaza el método anterior (plantillas copiadas manualmente) y se enfoca en producir gráficos de alta calidad con un estilo específico: fondo negro/antracita, texto blanco, un único acento en oro claro (#c29342–#d8af54) y fuentes Anton/Roboto/OpenSauce. La skill opera en varias fases: primero genera un brief textual detallado para Canva, espera la generación asíncrona del diseño, luego realiza un riguroso control de calidad (orden de páginas, diapositivas faltantes, texto fantasma en fondos, orden de superposición, numeración romana, consistencia de fuentes y foto de portada si se proporciona). Finalmente, añade una CTA estándar (icono de marcador + dos líneas de texto) y entrega las imágenes exportadas. Está dirigida a agentes de IA como los de Cursor o Codex (se ejecuta a través de llamadas API a Canva) y es fundamental usarla solo cuando Davide lo solicite explícitamente, ya que para otros estilos (rojo sobre negro con Oswald) se debe usar la skill `caroselli-claude`.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aurumiles/Skill/tree/HEAD/caroselli-canva

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Caroselli Canva (ex carosello-aurum)?

A partir del 13 de octubre de 2026, Davide prefiere el estilo de las diapositivas de la Lección 1 y quiere replicarlo para todos los carruseles: esos se hacen con la skill caroselli-claude (sin Canva). Esta skill permanece para los carruseles en Canva.

Sustituye el método antiguo (plantilla Canva copiada a mano, fuente Anton sobre foto + banda oscura). Eso sigue siendo válido como estilo de referencia para las portadas de los reels ([[copertine-reel]]), ya no para los carruseles. También sustituye la skill global ig-carousel (Higgsfield/Nano Banana): esa genera imágenes AI y texto quemado dentro, ya no es nuestro flujo.

Antes de usar esta skill, el contenido (textos, estudios, tono) se prepara como se describe en [[caroselli]] (memoria/wiki): 5-6 preguntas a Davide, estudios reales verificados, voz en "tú" con Davide siempre impersonal (nunca "yo"). Esta skill parte de ahí y se ocupa solo de la producción gráfica.

Por qué este método y no el antiguo

edit-design (la herramienta usada para las portadas de los reels) es quirúrgico: modifica un elemento que ya existe, nunca puede elegir una fuente o un diseño para algo nuevo. create-design es diferente: se le envía un brief escrito y el motor AI de Canva mismo (el mismo de "Magic Design") decide fuente, diseño, iconos, jerarquía — no yo a mano. El resultado es un diseño real, con un gráfico diferente para cada diapositiva (punto de mira, números gigantes, lista de verificación, círculos numerados), no un collage. El precio: siempre llega con defectos que revisar — por eso la Fase 4 a continuación no es opcional.

Fase 1 — El brief

Un único brief textual (no un esquema estructurado — eso solo vale para design_type: presentation, que aquí no usamos) con:

  • Formato: "Instagram Post" (da 4:5, 1080x1350 — confirmado en este proyecto).
  • Tono: registro caballeresco/romano moderado, acordado con Davide el 25 de septiembre de 2026 tras una investigación — gladiador/espartano es el cliché más saturado del sector fitness/combate (Gladiator Gym Gear, Spartan Race...), el caballero está menos explotado y es coherente con lo ya escrito en [[cammino-guerriero]] (Musashi/Bushido = código individual, no disciplina de masas de una legión). Aún no fijado al 100% — Davide dijo que le gustan ambos registros y quiere encontrar "la mezcla adecuada" con el tiempo: pide confirmación si no ha pasado mucho tiempo desde la última vez, de lo contrario vuelve a proponer la misma mezcla (Anton/Roboto/OpenSauce, oro sobre negro, sin casco/escudo/gladio explícito, solo detalles discretos como números romanos).
  • Colores: fondo negro/antracita, texto blanco, un solo acento en oro claro (zona #c29342–#d8af54, varía ligeramente entre diapositivas porque lo genera la IA — no es un error, no es necesario uniformarlo).
  • Foto: SOLO la portada lleva foto (decidido por Davide el 24 de septiembre: las demás diapositivas se quedan gráficas/tipográficas, sin foto — así no es necesario gestionar muchas imágenes diferentes). En el brief escribe "SOLO la portada lleva foto... las otras 7 páginas son gráficas/tipográficas, sin foto".
  • Estructura: enumera cada diapositiva como PÁGINA N: ... con etiqueta, título, cuerpo y notas en cursiva donde se cite un estudio. La última página es el cierre con la CTA "guardado" (icono + dos líneas, ver Fase 4).
  • Indicador de desplazamiento: pide un indicador de página "1/8"…"8/8" + flecha en todas las páginas excepto la última (ya lo da así, luego en Fase 4 se convierte en números romanos).
  • Logo/handle: "AURUM MILES" pequeño, discreto, en cada página.

Llama a create-design con este brief, user_intent breve, sin outline (estamos en Instagram Post, no Presentation).

Fase 2 — Esperar la generación

create-design es asíncrono: devuelve un job_id + continuation_token y un status: pending.

  1. Espera polling_policy.wait_seconds (normalmente 10-15s) antes de la primera consulta.
  2. Llama a get-create-design-async-job con job_id + el último continuation_token.
  3. Repite hasta que status: completed — normalmente 4-6 rondas, no acortes la espera (la misma respuesta se devuelve idéntica, no acelera nada). Usa Bash con sleep para esperar, no llamadas seguidas.
  4. El resultado da design.id y design.url — ese es el carrusel que hay que revisar y corregir.

Fase 3 — Control de calidad (siempre, sin excepciones)

Antes de mostrar cualquier cosa a Davide, lee todas las páginas (read-design, design_content sin page_indices para ver todo el texto de una vez) y verifica:

a) El orden físico de las páginas

El generador a veces crea las páginas en un orden diferente al escrito arriba de cada diapositiva ("N/8"). Compara el texto de cada página con la etiqueta que lleva; si una diapositiva está fuera de lugar, reordena con:

merge-designs, type: modify_existing_design, operations: [{type: move_pages, from_page_numbers: [N], to_after_page_number: M}]

Una operación por llamada — la herramienta rechaza lotes múltiples.

b) Diapositivas faltantes

El generador a veces salta una página del brief (ya ha pasado: 7 páginas en lugar de 8, faltaba el cierre). Si falta:

  1. copy-design de la página más similar en estructura (ej. la última "corrección" para un cierre, no una página con un número-fantasma tipo "01" temático).
  2. Reescribe los textos con replace_text sobre los localizadores existentes (nunca add_text para títulos — pierde la fuente elegida por el generador, ver nota técnica abajo).
  3. Elimina los elementos decorativos que ya no sirven (ej. la fila de iconos de lista de verificación si se convierte en una CTA) con delete_element.
  4. Inserta la CTA final (icono + dos líneas, ver abajo).
  5. Inserta la página en su lugar con merge-designs → insert_pages.

c) Texto "fantasma" en el fondo

Error recurrente de este generador: el texto original (antes de cualquier replace_text) a veces queda "quemado" dentro de la imagen de fondo de la página, no solo en el elemento de texto editable — reemplazar el texto no lo hace desaparecer del renderizado. Se ve como un escrito desvaído detrás del título o del cuerpo. Solución: insert_shape con un rectángulo relleno (path M0,0 H<w> V<h> H0 Z), color cercano al negro de la página (#0e0e0e o #131110 son válidos), posicionado sobre toda la zona sucia — luego siempre layer_element con position: "back" en el mismo localizador, así el parche queda sobre el fondo rasterizado pero debajo del título/cuerpo/badge (que siguen siendo elementos separados, visibles). Si el fantasma sigue viéndose más abajo (ej. cerca de una lista), agranda el parche con resize_element hasta que no quede rastro — compruébalo siempre con el renderizado antes de darlo por cerrado.

d) Orden de superposición (z-order) en general

Cada elemento nuevo (insert_shape, add_text) se inserta siempre en la parte superior (delante de todo). Si añades algo que debe estar detrás del texto existente (como los parches anteriores), siempre necesitas layer_element: back después. Si, por el contrario, un elemento existente (logo, título, número de página) queda detrás de algo que has añadido, usa layer_element: front sobre él.

e) Números de página en romano

El generador hace "1/8", "2/8"… Sustituye por "I / VIII", "II / VIII"… hasta "VIII / VIII" en la última. El texto romano es más largo: casi siempre hay que agrandar la caja (resize_element, +100/150px de ancho) y reposicionar a la izquierda (position_element) para que no se salga de la flechita de al lado — verifica siempre el left del icono-flecha en la misma página y deja la caja del número justo antes de ella. La última diapositiva no tiene flecha (ya no hay nada que desplazar): deja solo "VIII / VIII" sin tocar nada más.

f) Fuente coherente

El generador asigna fuentes diferentes a elementos diferentes. No puedo elegir una fuente para un elemento nuevo o ya existente — ninguna operación lo permite (format_text solo cambia tamaño/peso/color/cursiva, nunca la familia). La única forma: Davide selecciona el texto en Canva (enlace del edit_url) y elige la fuente a mano, una vez por elemento; desde ahí lo reciclo en otros elementos con replace_text, que siempre preserva la fuente del elemento de destino. Si un carrusel nuevo sale con fuentes incoherentes entre diapositivas, es normal — pide a Davide que haga el mismo repaso rápido que ya ha hecho (títulos en una fuente, cuerpo en otra, etiquetas pequeñas en una tercera), luego corrige tú tamaños/espaciado.

g) Foto de portada

Si Davide envía una foto suya: create-upload-url (no upload-asset-from-url, ese quiere una URL pública) → una POST directa del archivo a la URL de un solo uso recibida → mediaId → update_fill sobre el rect-foto de la portada. El recorte automático de Canva suele ser bueno en fotos verticales o cuadradas; verifícalo con el renderizado antes de ajustar a mano con crop_media. Las demás diapositivas se quedan sin foto (ver Fase 1).

Fase 4 — La CTA final (diapositiva de cierre)

Estándar fijado con Davide (22-25 de septiembre de 2026), a reproducir igual cada vez:

  • Icono de marcador (insert_shape, path M0,0 H34 V44 L17,30 L0,44 Z, color oro) en la misma línea que la primera línea de CTA, no encima.
  • Línea 1 (la acción, ej. "GUÁRDALO ANTES DEL PRÓXIMO SPARRING."): mayúsculas, negrita, NO cursiva, color oro.
  • Línea 2 (el plus, ej. "Envíalo a quien deba subir la próxima vez."): minúsculas excepto la inicial, cursiva, mismo oro — un tono más claro. Atención al texto: no limites demasiado el público objetivo (ej. no "quien sube por primera vez" si el mensaje debe valer para cualquiera que vuelva al ring, no solo los principiantes — depende del contenido específico, pregunta a Davide si el primer borrador parece demasiado restrictivo).
  • Bloque separado con un espacio vertical real del párrafo superior (~150px), no pegado — de lo contrario parece la continuación de la misma frase.
  • Dos líneas = dos elementos de texto distintos (no un \n dentro de uno solo), porque cada una lleva un formato diferente.

Fase 5 — Entrega

  1. export-design, formato png, width: 1080, height: 1350, sin pages (todas juntas) una vez que la Fase 3 esté cerrada.
  2. Descarga cada PNG y guárdalos en Caroselli elaborati/AAMMGG_Titulo/1.png … 8.png (misma carpeta que el texto, slide_, caption_, note_ — ver [[caroselli]] y [[produzione-contenuti]]).
  3. Envía una hoja de contacto o las 8 imágenes a Davide antes de darlo por definitivo — siempre hay una ronda de correcciones, no des por aprobado al primer export.
  4. Control previo a la publicación: cuenta los PNG exportados (N) y en el mensaje de entrega recuerda explícitamente a Davide que verifique que todas las N diapositivas estén en cola en Instagram antes de presionar publicar (ej. "Son N diapositivas, 1.png...N.png — verifica que estén todas antes de publicar"). Ya ha pasado (carrusel #8) que una diapositiva se quedara fuera por olvido al cargar, sin que nadie se diera cuenta antes de la publicación — no afectó al resultado esa vez, pero es un control de costo cero.
  5. Solo tras su aprobación: registra en memoria/wiki/log.md, actualiza el estado en [[caroselli]].

Estándares de maquetación — fijados por Davide el 2 de octubre de 2026 sobre #12 (válidos para cada carrusel a partir de ahora)

Después del clon-de-#8 (ver abajo), Davide corrigió a mano en Canva una serie de detalles que se repiten idénticos en cada diapositiva "con encabezado" (etiqueta + numeración romana + flecha arriba, tipo "Técnica N"). Estas son las medidas/criterios fijos a aplicar desde ahora, no a redescubrir diapositiva por diapositiva:

  • Numeración romana alineada con la etiqueta: el top del número romano debe coincidir (o casi) con el top de la etiqueta al lado ("Técnica 2", "Por qué", etc.), no estar más arriba o más abajo por su cuenta. Misma línea, misma altura visual.
  • Flecha: fuente/tamaño ~32-36px, color siempre #c29342 (oro estándar, ver abajo). La flecha queda justo después del número romano con un pequeño espacio limpio (~15-20px), nunca pegada.
  • Divisor horizontal bajo el encabezado: cuando exista (diapositiva con línea bajo la etiqueta), que ocupe casi todo el ancho (orden de 560-930px), no un trazo corto — corta limpio bajo todo el bloque etiqueta+numeración, no solo bajo la etiqueta.
  • Cuerpo de texto en negrita: el cuerpo de texto (no el título, no las citas) debe ir en font_weight: bold, no normal/medium — representación más llena y legible sobre fondo negro. Los párrafos breves y consecutivos (ej. "frase 1:" + "frase 2.") se pueden agrupar en un único elemento de texto en lugar de mantenerlos separados, si lógicamente son una sola frase partida en dos líneas.
  • Blanco nunca puro: #ffffff debe sustituirse por #f1f1f1 en texto blanco y logo "Aurum Miles" — ligeramente menos duro contra el negro.
  • CTA final (icono+2 líneas): el icono de guardado y la primera línea de texto ("GUÁRDALO...") comparten el mismo top (misma línea, no icono-más-arriba-texto-más-abajo), con ~25-30px de separación horizontal entre el borde derecho del icono y el inicio del texto.

Error confirmado: resize_element sobre iconos con relleno de imagen

No se puede resolver por nuestra parte: redimensionar mediante API un icono con relleno de imagen (flechas, badges) lo recorta en lugar de escalarlo (ver nota en [[caroselli]]). Cuando se necesite una flecha/icono más pequeño, no uses resize_element: o se deja en el tamaño nativo y se trabaja en la posición, o — si Davide lo ajusta a mano en Canva — se nota que allí el redimensionamiento funciona bien (el editor real escala el contenido correctamente, solo la operación API tiene el error). Señal concreta de que algo se ha roto así: un elemento cercano a un texto con textAlign: end que parece "invertido" — probable fragmento de icono roto superpuesto, no un error en el texto.

Notas técnicas varias (que no redescubrir cada vez)

  • merge-designs: una operación por llamada, siempre.
  • resize-design (el del método antiguo con plantilla Canva) es de uso limitado/prueba — ya no es necesario con este flujo, create-design genera ya en el formato correcto.
  • Si se necesita conservar una versión del diseño antes de modificarla, usa copy-design antes de empezar las correcciones de la Fase 3.
  • La CTA final (icono + dos líneas) debe respetar el estándar exacto descrito en la Fase 4 — no hay variaciones permitidas sin consultar a Davide.
  • Siempre que sea posible, trabaja con replace_text sobre localizadores existentes para preservar la fuente; evita add_text a menos que sea estrictamente necesario (como insertar la línea 2 de la CTA, que no existe previamente).
  • La numeración romana en la última diapositiva ("VIII / VIII") no lleva flecha; asegúrate de que el elemento de la flecha se haya eliminado o esté oculto.

Historial de cambios

  • 13 oct 2026: Se actualiza la nota introductoria para reflejar que Davide prefiere el estilo de la Lección 1 para todos los carruseles, redirigiendo a caroselli-claude. Esta skill se mantiene solo para carruseles en Canva.
  • 2 oct 2026: Se añaden estándares de maquetación fijos tras la revisión de #12.
  • 25 sep 2026: Se fija el tono caballeresco/romano moderado tras investigación de clichés.
  • 24 sep 2026: Se decide que solo la portada lleva foto.

Documento generado para uso del agente AI. Todas las referencias a [[...]] son enlaces a entradas de la memoria interna del proyecto.

Skills relacionados