SmartHub AppsMáquina de aquisição

P2.3 · Fábrica de criativos

Depende de P2.1 e do Chromium instalado em P1.3. É o que permite testar 20 criativos por semana em vez de 2.

O prompt

Construa a fábrica que gera todos os criativos de anúncio na identidade, sem designer e sem Canva.

O princípio: criativo é template HTML mais dados JSON, renderizado em PNG pelo Chromium headless. Determinístico, versionado em git, na marca por construção.

1. Formatos

NomeTamanhoUso
feed1080×1080Meta feed, Instagram
story1080×1920Stories e Reels
horizontal1200×628Feed horizontal, Display
og1200×630Open Graph
carrossel1080×1080 ×NAté 6 cartões

2. Superfícies e a regra de etapa

SuperfícieFundoEtapa
branco#FFFFFFProspecção — padrão
nevoalinear-gradient(180deg,#FFFFFF,#EEF4FF)Prospecção com mockup
profundoas três camadas oficiaisRetargeting
navy#0B1033Dado puro

A fábrica impõe no código: superficie escura com etapa=prospeccao levanta exceção. Isso evita o erro mais comum e mais caro — queimar prospecção com criativo escuro.

3. Templates

  1. afirmacao — título Figtree 700 de 72 a 96 px, até 3 linhas, ancorado na base. Logo e @ no topo esquerdo a 28 px. Margem 96 px. Botão pílula
  2. dado — número de 200 a 260 px, azul 700 tabular (#8DB0FF em fundo escuro). Legenda de até 12 palavras com período e base. Título na base
  3. mockup_alerta — card branco: nome do produto, preço riscado em #6B7790, preço novo em #0A5BF0 700 tabular, pílula #DC2626 com o percentual
  4. mockup_lista — três cards empilhados, miniatura, nome do concorrente, pílula #16A34A com "{n} dias no ar"
  5. mockup_relatorio — capa do Raio-X em moldura com sombra (a única sombra permitida), KPI grande
  6. carrossel — capa Névoa com "Arraste →" e contador; internos brancos com número azul e até 18 palavras; penúltimo navy com o dado; último Profundo com CTA

4. Validações — não pule nenhuma

A peça é rejeitada, com mensagem explícita do que corrigir, se:

  1. Texto ocupar mais de 20% da área renderizada (calcule pela área dos blocos de texto, não por estimativa)
  2. Faltar margem mínima — 96 px no 1080, zona segura de 250 px no story
  3. Houver mais de um degradê
  4. Houver degradê em texto ou ícone
  5. Contraste abaixo de AA — escreva o cálculo de razão de contraste
  6. O texto contiver palavra proibida, incluindo espionar
  7. Faltar período ou base num template dado
  8. superficie escura com etapa=prospeccao

5. Interface

python manage.py criativo \
  --template dado --formato feed --superficie branco --etapa prospeccao \
  --dados '{"numero":"62%","legenda":"das lojas analisadas tinham o produto campeão mais caro que o concorrente","base":"1.400 lojas · ago/2026","titulo":"Seu campeão está mais caro?","cta":"Testar grátis"}' \
  --saida ./out/preco-dado-62-feed-branco.png

E um arquivo de lote criativos/lotes/<produto>.yaml que gera todas as variações de uma campanha num comando.

6. Nomenclatura — a disciplina que sustenta a medição

{produto}-{template}-{angulo}-{formato}-{superficie}.png

Esse nome vira, sem alteração: o nome do anúncio na Meta, o valor de utm_content na URL, e a chave de junção no painel de ROI. Divergência entre os três falha a validação no publicador.

Critérios de aceite

  1. Os 6 templates nos 5 formatos, 30 PNGs, todos passando nas validações
  2. Teste unitário de cada validação, com um caso que deve ser rejeitado por cada regra
  3. superficie=profundo com etapa=prospeccao levanta exceção
  4. Lote completo gerado por um comando, com os arquivos no padrão de nome
  5. Checklist do manual para 3 peças de amostra
  6. Geração de um PNG abaixo de 3 segundos
© 2026 EcomSmart · Uso interno · pt-BR