Communitygithub.com

Caroselli Canva (ex carosello-aurum)

Crea e modifica caroselli Instagram per @aurumiles direttamente in Canva, con stile deciso (oro su nero, font Anton/Roboto/OpenSauce) quando Davide richiede esplicitamente l'uso di Canva.

O que é Caroselli Canva (ex carosello-aurum)?

Esta habilidade é especializada na produção de carrosséis do Instagram para a conta @aurumiles, exclusivamente dentro da plataforma Canva. Ela substitui o método antigo de templates manuais para se concentrar em um fluxo de trabalho que utiliza o motor de criação de design do Canva (create-design), que, embora eficiente, frequentemente gera designs com pequenos defeitos que exigem uma fase de controle de qualidade rigorosa (Fase 3). A habilidade define um estilo visual preciso: tons de ouro claro (#c29342 a #d8af54) sobre fundo preto, usando as fontes Anton, Roboto e OpenSauce, com uma única foto real de Davide na capa do carrossel. Ao contrário da habilidade paralela `caroselli-claude`, que cria carrosséis no estilo das aulas (vermelho sobre preto, fonte Oswald), esta é ativada apenas quando Davide solicita explicitamente o uso do Canva ou a clonagem/adaptação de um carrossel já existente no Canva. O processo é dividido em fases claras: criação do brief textual, geração assíncrona do design, revisão completa (ordem das páginas, slides faltantes, texto fantasma no fundo, fontes e z-order), padronização da numeração romana e da CTA final (ícone de bookmark + duas linhas), e por fim a exportação e entrega. A habilidade também documenta um bug conhecido com `resize_element` em ícones com preenchimento de imagem e fornece instruções detalhadas para correções pós-geração, garantindo que o carrossel final atenda aos padrões visuais exigidos.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Caroselli Canva (ex carosello-aurum) faz?

A partir de 13 out 2026 Davide prefere o estilo dos slides da Aula 1 e quer replicá-lo para todos os carrosséis: estes são feitos com a skill caroselli-claude (nenhum Canva). Esta skill permanece para os carrosséis no Canva.

Substitui o método antigo (template Canva copiado manualmente, fonte Anton sobre foto + faixa escura). Esse continua sendo bom como estilo de referência para as capas dos reels ([[capas-reel]]), não mais para carrosséis. Substitui também a skill global ig-carousel (Higgsfield/Nano Banana): essa gera imagens AI e texto queimado por cima, não é mais nosso fluxo.

Antes de abrir esta skill, o conteúdo (textos, estudos, tom) é preparado conforme descrito em [[carrosséis]] (memória/wiki): 5-6 perguntas para Davide, estudos reais verificados, voz em "tu" com Davide sempre impessoal (nunca "eu"). Esta skill parte daí e cuida apenas da produção gráfica.

Por que este método e não o antigo

edit-design (a ferramenta usada para as capas dos reels) é cirúrgico: modifica um elemento que já existe, nunca pode escolher uma fonte ou layout para algo novo. create-design é diferente: envia-se um brief escrito e o motor de IA do próprio Canva (o mesmo do "Magic Design") decide fonte, layout, ícones, hierarquia — não eu manualmente. O resultado é um design verdadeiro, com uma gráfica diferente para cada slide (alça de mira, números gigantes, checklist, círculos numerados), não uma colagem. O preço: sempre chega com defeitos a verificar — por isso a Fase 4 abaixo não é opcional.

Fase 1 — O brief

Um único brief textual (não um outline estruturado — isso vale apenas para design_type: presentation, que não usamos aqui) com:

  • Formato: "Instagram Post" (dá 4:5, 1080×1350 — confirmado neste projeto).
  • Tom: registro cavalheiresco/romano moderado, definido com Davide em 25 set 2026 após uma pesquisa — gladiador/espartano é o clichê mais saturado do setor fitness/combate (Gladiator Gym Gear, Spartan Race…), o cavaleiro é menos batido e é coerente com o já escrito em [[caminho-guerreiro]] (Musashi/Bushido = código individual, não disciplina de massa de uma legião). Ainda não fixado 100% — Davide disse que gosta de ambos os registros e quer encontrar "a mistura certa" com o tempo: peça confirmação se não passou muito tempo desde a última vez, senão reproponha a mesma mistura (Anton/Roboto/OpenSauce, ouro sobre preto, nenhum elmo/escudo/gládio explícito, apenas detalhes discretos como números romanos).
  • Cores: fundo preto/antracite, texto branco, um único acento ouro claro (zona #c29342–#d8af54, varia ligeiramente slide a slide porque gerado pela IA — não é um bug, não precisa uniformizar).
  • Foto: APENAS a capa tem uma foto (decidido por Davide em 24 set: os outros slides permanecem gráficos/tipográficos, sem foto — assim não precisa gerenciar várias imagens diferentes). No brief escreva "APENAS a capa tem uma foto… os outros 7 slides são gráficos/tipográficos, sem foto".
  • Estrutura: liste cada slide como SLIDE N: … com etiqueta, título, corpo, e notas em itálico onde houver um estudo citado. O último slide é o encerramento com a CTA "salvamento" (ícone + duas linhas, veja Fase 4).
  • Sinal de rolagem: peça um indicador de página "1/8"…"8/8" + seta em todos os slides, exceto o último (já vem assim, depois na Fase 4 se converte para números romanos).
  • Logo/handle: "AURUM MILES" pequeno, discreto, em cada slide.

Chame create-design com este brief, user_intent curto, nenhum outline (estamos em Instagram Post, não Presentation).

Fase 2 — Aguardar a geração

create-design é assíncrono: retorna um job_id + continuation_token e um status: pending.

  1. Aguarde polling_policy.wait_seconds (geralmente 10-15s) antes do primeiro poll.
  2. Chame get-create-design-async-job com job_id + o último continuation_token.
  3. Repita até status: completed — geralmente 4-6 rodadas, não encurte a espera (a mesma resposta retorna idêntica, não acelera nada). Use Bash com sleep para esperar, não chamadas muito próximas.
  4. O resultado dá design.id e design.url — esse é o carrossel a verificar e corrigir.

Fase 3 — Controle de qualidade (sempre, sem exceções)

Antes de mostrar qualquer coisa a Davide, leia todas as páginas (read-design, design_content sem page_indices para ver todo o texto de uma vez) e verifique:

a) A ordem física das páginas

O gerador às vezes cria as páginas em uma ordem diferente da escrita acima de cada slide ("N/8"). Compare o texto de cada página com a etiqueta que ela carrega; se um slide estiver fora do lugar, reordene com:

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

Uma operação por chamada — a ferramenta recusa lotes múltiplos.

b) Slides faltantes

O gerador às vezes pula uma página do brief (já aconteceu: 7 páginas em vez de 8, faltava o encerramento). Se faltar:

  1. copy-design da página mais parecida estruturalmente (ex.: a última "correção" para um encerramento, não uma página com um número-fantasma tipo "01" temático).
  2. Reescreva os textos com replace_text nos locators existentes (nunca add_text para títulos — perde a fonte escolhida pelo gerador, veja nota técnica abaixo).
  3. Apague os elementos decorativos que não servem mais (ex.: a fileira de ícones checklist se vira uma CTA) com delete_element.
  4. Insira a CTA final (ícone + duas linhas, veja abaixo).
  5. Reinsira a página no lugar certo com merge-designs → insert_pages.

c) Texto "fantasma" no fundo

Bug recorrente deste gerador: o texto original (antes de qualquer replace_text) às vezes fica "cozido" dentro da imagem de fundo da página, não apenas no elemento de texto editável — substituir o texto não o faz desaparecer do render. Aparece como uma escrita desbotada atrás do título ou do corpo. Correção: insert_shape com um retângulo cheio (path M0,0 H<w> V<h> H0 Z), cor próxima ao preto da página (#0e0e0e ou #131110 servem), posicionado sobre toda a área suja — depois sempre layer_element com position: "back" no mesmo locator, assim o remendo fica sobre o fundo raster mas atrás do título/corpo/badge (que permanecem elementos separados, visíveis). Se o fantasma continuar aparecendo mais embaixo (ex.: perto de uma lista), alargue o remendo com resize_element até não restar vestígio — verifique sempre com o render antes de considerar resolvido.

d) Ordem de sobreposição (z-order) em geral

Cada elemento novo (insert_shape, add_text) se insere sempre no topo (na frente de tudo). Se adicionar algo que deve ficar atrás do texto existente (como os remendos acima), é sempre necessário layer_element: back depois. Se ao contrário um elemento existente (logo, título, número de página) ficar atrás de algo que você adicionou, use layer_element: front nele.

e) Números de página em romano

O gerador faz "1/8", "2/8"… Substitua por "I / VIII", "II / VIII"… até "VIII / VIII" no último. O texto romano é mais longo: quase sempre precisa alargar a caixa (resize_element, +100/150px de largura) e reposicionar à esquerda (position_element) para não ultrapassar a setinha ao lado — verifique sempre o left do ícone-seta na mesma página e deixe a caixa do número flush antes dela. O último slide não tem seta (não há mais nada para rolar): deixe apenas "VIII / VIII" sem mexer em mais nada.

f) Fonte coerente

O gerador atribui fontes diferentes a elementos diferentes. Não posso escolher uma fonte para um elemento novo ou já existente — nenhuma operação permite isso (format_text muda apenas tamanho/peso/cor/itálico, nunca a família). O único modo: Davide seleciona o texto no Canva (link do edit_url) e escolhe a fonte manualmente, uma vez por elemento; a partir daí, reciclo em outros elementos com replace_text, que sempre preserva a fonte do elemento de destino. Se um carrossel novo sair com fontes incoerentes entre slides, é normal — peça a Davide para fazer o mesmo giro rápido que já fez (títulos em uma fonte, corpo em outra, etiquetas pequenas em uma terceira), depois corrija você os tamanhos/espaçamentos.

g) Foto de capa

Se Davide enviar uma foto sua: create-upload-url (não upload-asset-from-url, esse quer uma URL pública) → um POST direto do arquivo para a URL de uso único recebida → mediaId → update_fill no retângulo-foto da capa. O recorte automático do Canva geralmente já fica bom em fotos verticais ou quadradas; verifique com o render antes de ajustar manualmente com crop_media. Os outros slides permanecem sem foto (veja Fase 1).

Fase 4 — A CTA final (slide de encerramento)

Padrão fixado com Davide (22-25 set 2026), a ser reproduzido igual toda vez:

  • Ícone de marcador (insert_shape, path M0,0 H34 V44 L17,30 L0,44 Z, cor ouro) na mesma linha da primeira linha da CTA, não acima.
  • Linha 1 (a ação, ex.: "SALVE-O ANTES DO PRÓXIMO SPARRING."): maiúscula, negrito, NÃO itálico, cor ouro.
  • Linha 2 (o plus, ex.: "Mande para quem precisar subir na próxima vez."): minúscula exceto a inicial, itálico, mesmo ouro — um degrau mais leve. Atenção ao texto: não restrinja demais o público-alvo (ex.: não "quem sobe pela primeira vez" se a mensagem deve valer para qualquer um que volte ao ringue, não só iniciantes — depende do conteúdo específico, pergunte a Davide se o primeiro rascunho parecer muito restrito).
  • Bloco separado com um verdadeiro espaço vertical do parágrafo acima (~150px), não colado — senão parece a continuação da mesma frase.
  • Duas linhas = dois elementos de texto distintos (não um \n dentro de um só), porque cada uma carrega uma formatação diferente.

Fase 5 — Entrega

  1. export-design, formato png, width: 1080, height: 1350, sem pages (todas juntas) uma vez que a Fase 3 esteja encerrada.
  2. Baixe cada PNG e salve-os em Carrosséis elaborados/AAMMGG_Titulo/1.png … 8.png (mesma pasta do texto, slide_, caption_, note_ — veja [[carrosséis]] e [[produção-conteúdo]]).
  3. Envie uma contact sheet ou as 8 imagens para Davide antes de considerar definitivo — é sempre uma rodada de correções, não dê como aprovado na primeira exportação.
  4. Verificação pré-publicação: conte os PNGs exportados (N) e na mensagem de entrega lembre explicitamente a Davide de verificar que todos os N slides estão na fila do Instagram antes de apertar publicar (ex.: "São N slides, 1.png...N.png — verifique se estão todos antes de publicar"). Já aconteceu (carrossel #8) de um slide ficar de fora por esquecimento no carregamento, sem que ninguém percebesse antes da publicação — não afetou o resultado daquela vez, mas é uma verificação de custo zero.
  5. Só após o ok dele: registre em memória/wiki/log.md, atualize o estado em [[carrosséis]].

Padrões de layout — fixados por Davide em 2 out 2026 no #12 (valem para todo carrossel de agora em diante)

Após o clone-do-#8 (veja abaixo), Davide corrigiu manualmente no Canva uma série de detalhes que se repetem idênticos em todo slide "com cabeçalho" (etiqueta + numeração romana + seta no topo, tipo "Técnica N"). Estas são as medidas/critérios fixos a aplicar desde já, não a redescobrir slide a slide:

  • Numeração romana alinhada à etiqueta: o top do número romano deve coincidir (ou quase) com o top da etiqueta ao lado ("Técnica 2", "Porquê", etc.), não ficar mais acima ou mais abaixo por conta própria. Mesma linha, mesma altura visual.
  • Seta: fonte/tamanho ~32-36px, cor sempre #c29342 (ouro padrão, veja abaixo). A seta fica logo após o número romano com um pequeno espaçamento limpo (~15-20px), nunca colada.
  • Divisor horizontal abaixo do cabeçalho: quando houver (slide com linha sob a etiqueta), fazê-lo quase em toda a largura (ordem de 560-930px), não um traço curto — corta limpo sob todo o bloco etiqueta+numeração, não só sob a etiqueta.
  • Corpo do texto em negrito: o corpo do texto (não o título, não as citações) vai em font_weight: bold, não normal/medium — renderização mais cheia e legível sobre fundo preto. Parágrafos curtos e consecutivos (ex.: "frase 1:" + "frase 2.") podem ser agrupados em um único elemento de texto em vez de mantê-los separados, se logicamente forem uma única frase partida em duas linhas.
  • Branco nunca puro: #ffffff deve ser substituído por #f1f1f1 no texto branco e no logo "Aurum Miles" — ligeiramente menos duro contra o preto.
  • CTA final (ícone+2 linhas): o ícone de salvamento e a primeira linha de texto ("SALVE-O…") compartilham o mesmo top (mesma linha, não ícone-mais-acima-texto-mais-abaixo), com ~25-30px de espaçamento horizontal entre a borda direita do ícone e o início do texto.

Bug confirmado: resize_element em ícones com preenchimento de imagem

Não solucionável do nosso lado: redimensionar via API um ícone com preenchimento de imagem (setas, badges) o recorta em vez de escaloná-lo (veja nota em [[carrosséis]]). Quando for necessária uma seta/ícone menor, não use resize_element: ou a deixa no tamanho nativo e trabalha na posição, ou — se Davide ajustar manualmente no Canva — note que lá o redimensionamento funciona bem (o editor verdadeiro escala o conteúdo corretamente, é só a operação da API que tem o bug). Sinal concreto de que algo quebrou assim: um elemento próximo a um texto com textAlign: end que parece "invertido" — provável fragmento de ícone quebrado sobreposto, não um bug no texto.

Notas técnicas avulsas (para não redescobrir toda vez)

  • merge-designs: uma operação por chamada, sempre.
  • resize-design (o do método antigo com template Canva) é de uso limitado/trial — não serve mais com este fluxo, create-design já gera no formato certo.
  • Se precisar conservar uma versão parcial (ex.: antes de uma correção grande na Fase 3), faça copy-design do design atual para um novo nome (ex.: "Carrossel #13 — WIP") e trabalhe sobre a cópia; o original fica intacto para referência.
  • A ferramenta layer_element não aceita index numérico (ordem de empilhamento exata) — apenas "front" ou "back". Para sobreposições complexas (ex.: remendo no meio de uma pilha de 5 elementos), a única saída é colocar o elemento no topo e depois mover manualmente o que deve ficar acima dele usando layer_element: front sobre esses.
  • Para a CTA final, o ícone de marcador tem sempre path fixo (veja Fase 4) — não mude. A cor ouro é #c29342 (mesmo padrão).

Habilidades Relacionadas