---
name: carrossel-tweet-lexmuller
description: |
  Use esta skill quando o usuário quiser criar um carrossel pra Instagram no formato visual de tweet (Twitter/X). Gatilhos: "carrossel estilo Twitter", "carrossel estilo tweet", "transformar texto em carrossel", "criar carrossel com IA", "carrossel tweet". Saída em PNG 1080x1350 prontos pra postar, com estrutura AIDA (Atenção, Interesse, Desejo, Ação).
license: MIT
metadata:
  author: Lex Muller (@lex.estrategista)
  whatsapp: https://wa.me/5531983204162
  version: "1.0"
---

# Carrossel Tweet (estilo Twitter pra Instagram) — by Lexmuller

Esta skill transforma um tema (ou um texto pronto) em um carrossel no formato visual de tweet/X. A saída são PNGs 1080x1350 (4:5 do Instagram), prontos pra postar. Sem Canva, sem template, sem retrabalho.

---

## REGRAS INEGOCIÁVEIS

1. **NUNCA gere direto. Faça as 6 perguntas primeiro, na ordem.** Mesmo que o usuário já mande tudo, confirme cada decisão.
2. **NUNCA use widgets/botões.** Sempre texto livre.
3. **SEMPRE entregue PNG renderizado (Python/PIL), baixável.** Nada de SVG, HTML ou "código de exemplo".
4. **SEMPRE estrutura AIDA** (Atenção → Interesse → Desejo → Ação).
5. **Layout IDÊNTICO em todos os slides** (inclusive a capa): avatar + nome + selo + handle + texto, centralizado verticalmente. Slide com imagem só adiciona a imagem abaixo do texto.
6. **NUNCA use travessão (— ou –)** no texto. Use vírgula, ponto ou quebra de linha. Travessão deixa cara de blog; tweet é direto.
7. **SEM emoji, SEM hashtag no meio, SEM contador de slide, SEM barras de topo/rodapé, SEM métricas fake, SEM watermark.** O slide é só: avatar + nome + selo + handle + texto. Espaço vazio é design.
8. **NÃO desenhe linha separadora** entre o header e o texto. Header → gap de 32px → texto.
9. **Mesma fonte em todos os slides** do mesmo carrossel (ver "Fonte por estilo").
10. **CTA do último slide = mesmo tamanho/peso de fonte do resto.** A única exceção visual é o estilo C (bloco roxo no CTA). Nos estilos A/B o destaque vem da COPY ("comenta TEMPLATE"), não da formatação.

---

## AS 6 PERGUNTAS (uma por vez)

**1. Identidade do perfil**
```
Vamos montar seu carrossel estilo Twitter. Primeiro o "perfil":
1) Nome de exibição? (ex: Lex Muller)
2) @ (handle)? (ex: @lex.estrategista)
3) Quer subir uma foto de perfil? Se sim, anexa agora.
Pode responder os 3 juntos.
```
Sem foto → use avatar genérico com a inicial.

**2. Estilo visual**
```
Estilo do carrossel:

A) FUNDO BRANCO (light mode, Twitter clássico, fonte Inter clean)

B) FUNDO PRETO (dark mode, mais usado hoje, fonte Inter clean)

C) DESCOLADO (fundo preto + verde-lima e roxo, fonte display, vibe criador moderno)

D) PERSONALIZADO (cores da sua marca)

Sugestão pro seu caso: B. Qual prefere?
```
- C → confirme a paleta (Fundo #0A0A0F, Texto #F5F5F7, Acento #84CC16, Secundário #7C3AED, Handle #71767B).
- D → peça 3 hex (fundo, texto, handle). Selo fica azul #1D9BF0. Se não tiver cor, peça a logo e extraia 3 cores dominantes (Pillow/KMeans).

**3. Conteúdo**
```
Agora o conteúdo. Pode mandar:
1) SÓ O TEMA. Ex: "5 erros de quem começa a vender online"
2) UM TEXTO COMPLETO (artigo, transcrição). Eu fatio em slides.
3) JÁ FATIADO (o texto de cada slide pronto). Só renderizo.
Qual desses?
```
Detecte: tema curto = opção 1 (você escreve); texto >200 palavras = opção 2 (fatie); lista/blocos = opção 3 (renderize).

**4. Quantidade de slides**
```
Quantos slides? Padrão 10 (pode 5 a 15).
```
>15 → avise que fica longo demais.

**5. CTA final**
```
Qual o CTA do último slide? Ex:
- "Comenta TEMPLATE que eu mando o material"
- "Me segue pra mais conteúdo de IA aplicada"
- "Salva esse post pra consultar depois"
```

**6. Confirmação**
```
Confirma:
- Perfil: [Nome] (@handle) + [foto/avatar]
- Estilo: [A/B/C/D]
- Tema: [1 linha]
- Slides: [N]
- CTA: [texto]
Posso seguir? (sim/ajusta)
```

---

## ESTRUTURA AIDA (10 slides como base)

- **Slide 1 — ATENÇÃO:** hook que para o scroll. Contradiz expectativa ou expõe uma verdade desconfortável. Ex: "Eu levava 2 horas num carrossel. Hoje faço em 2 minutos."
- **Slides 2-3 — INTERESSE:** aprofunda a dor; nomeia o que a pessoa sente e não articula.
- **Slides 4-7 — DESEJO:** entrega o valor central (passos, framework, princípios). 60% do conteúdo.
- **Slides 8-9 — REFORÇO:** consolida a tese, dá um exemplo concreto.
- **Slide 10 — AÇÃO:** o CTA da pergunta 5.

5-7 slides: comprime (hook + problema + 3 solução + CTA). 11-15: expande Interesse/Desejo, nunca o hook ou o CTA.

---

## COPY (quando você escreve, a partir do tema)

- Português brasileiro coloquial, não tradução de inglês.
- Frases curtas (máx ~12 palavras). Quebra de parágrafo entre ideias.
- Sem emoji, sem hashtag, **sem travessão** (use vírgula/ponto).
- Hook do slide 1 CONTRADIZ ou PROVOCA. Tom de tweet: declarativo, opinativo, sem rodeio. Não é tutorial, é pensamento curto.

Hooks que funcionam:
- "A maioria quer a parte boa de X, mas evita Y."
- "Ninguém te conta que [verdade desconfortável]."
- "X anos fazendo Y, e a lição foi Z."
- "Pare de [ação comum]. Comece a [ação contraintuitiva]."

---

## ESPECIFICAÇÃO DO PNG

- **Canvas:** 1080x1350, RGB, 72 DPI, PNG.
- **Margem lateral:** 80px (texto de x=80 a x=1000).
- **Centralização VERTICAL:** calcule a altura do bloco (avatar + texto) e posicione no centro Y. Não no topo.
- **Header:** avatar circular 100x100 à esquerda; gap 20px; nome bold 36px; selo verificado 32px ao lado do nome; handle regular 28px (cinza) abaixo do nome.
- **Texto:** gap header→texto 32px; fonte 44px; line-height ~60px; peso regular; parágrafos separados por 1 linha em branco.

### Paletas
- **A (branco):** fundo #FFFFFF, texto #0F1419, handle #536471, selo #1D9BF0.
- **B (preto):** fundo #000000, texto #E7E9EA, handle #71767B, selo #1D9BF0.
- **C (descolado):** fundo #0A0A0F, texto #F5F5F7, handle #71767B, selo #7C3AED, acento #84CC16, secundário #7C3AED.
- **D:** cores do usuário, contraste mínimo WCAG AA (4.5:1).

### Fonte por estilo
- **A e B:** mais próxima de Chirp. 1ª escolha LiberationSans (Regular/Bold); fallbacks DejaVuSans, FreeSans. Bold no nome, Regular no resto.
- **C:** fonte display (Bricolage Grotesque 700/900; fallback Inter ExtraBold). Texto 56-72px, palavras-chave 80-100px.
- **D:** LiberationSans, salvo se o usuário pedir outra.

### Selo verificado
Círculo (#1D9BF0; roxo #7C3AED no estilo C) com check branco (2 linhas).

---

## IMPLEMENTAÇÃO (Python + PIL)

```python
from PIL import Image, ImageDraw, ImageFont

CANVAS_W, CANVAS_H = 1080, 1350
MARGIN_X, AVATAR = 80, 100
LINE_H, TEXT_SZ, NAME_SZ, HANDLE_SZ = 60, 44, 36, 28

def wrap_text(text, font, max_w):
    out = []
    for para in text.split('\n\n'):
        for line in para.split('\n'):
            cur = ''
            for w in line.split():
                t = (cur + ' ' + w).strip()
                if font.getlength(t) <= max_w: cur = t
                else: out.append(cur); cur = w
            out.append(cur)
        out.append('')
    if out and out[-1] == '': out.pop()
    return out

def badge(draw, x, y, color):
    draw.ellipse((x, y, x+32, y+32), fill=color)
    draw.line([(x+8,y+16),(x+14,y+22)], fill='white', width=3)
    draw.line([(x+14,y+22),(x+24,y+10)], fill='white', width=3)

def slide(text, n, cfg):
    img = Image.new('RGB', (CANVAS_W, CANVAS_H), cfg['bg'])
    d = ImageDraw.Draw(img)
    fb = ImageFont.truetype(cfg['bold'], NAME_SZ)
    fr = ImageFont.truetype(cfg['reg'], TEXT_SZ)
    fh = ImageFont.truetype(cfg['reg'], HANDLE_SZ)
    lines = wrap_text(text, fr, CANVAS_W - 2*MARGIN_X)
    total = AVATAR + 32 + len(lines)*LINE_H
    y = (CANVAS_H - total)//2
    av = Image.open(cfg['avatar']).resize((AVATAR, AVATAR))
    m = Image.new('L', (AVATAR, AVATAR), 0)
    ImageDraw.Draw(m).ellipse((0,0,AVATAR,AVATAR), fill=255)
    img.paste(av, (MARGIN_X, y), m)
    nx = MARGIN_X + AVATAR + 20
    d.text((nx, y+10), cfg['name'], font=fb, fill=cfg['fg'])
    badge(d, nx + d.textlength(cfg['name'], font=fb) + 10, y+18, cfg['badge'])
    d.text((nx, y+50), cfg['handle'], font=fh, fill=cfg['handle'])
    ty = y + AVATAR + 32
    for ln in lines:
        d.text((MARGIN_X, ty), ln, font=fr, fill=cfg['fg']); ty += LINE_H
    img.save(f'slide_{n:02d}.png', 'PNG', optimize=True)
```

---

## DEPOIS DE GERAR

1. Renderize todos os slides (slide_01.png ... slide_N.png).
2. Empacote em um ZIP `carrossel.zip`.
3. Apresente o ZIP primeiro, depois os PNGs.
4. Mensagem de entrega:
```
Pronto! Os N slides estão prontos. Baixa o ZIP e posta no Instagram na ordem.

Quer ajustar algo antes? Ex: destacar uma palavra, deixar a copy mais agressiva, refazer só um slide. É só dizer o que e em qual slide.
```

## REFINAMENTO (sempre regere SÓ o slide afetado, mantendo paleta/fonte/layout)
- **Mais curto/longo:** ajusta o texto do slide, recalcula wrap e centralização.
- **Destacar palavra:** pinta a palavra na cor de acento (estilo C/D).
- **Adicionar imagem:** redimensiona (máx 920x600), cantos arredondados 24px, abaixo do texto, recentraliza tudo.
- **NUNCA** mude estilo/paleta/fonte por conta própria nem invente layout no slide 1.

---

_Skill feita por **Lex Muller** (@lex.estrategista). Quer IA mais a fundo no seu negócio? Chama no WhatsApp: wa.me/5531983204162_
