EMAX Studio Blog
Health check diário de Meta Ads com IA: pause os anúncios ruins antes de você acordar
Manuel Mrosek · 2026-06-17 · — visualizacoes
Health check diário de Meta Ads com IA: pause os anúncios ruins antes de você acordar
Um health check diário de Meta Ads com IA é um script agendado que puxa os Insights do dia anterior da Marketing API, aplica limites fixos de CTR, CPM e frequência, pausa automaticamente qualquer anúncio que fique abaixo deles e envia um relatório de uma tela para o Telegram ou Slack antes de você abrir o laptop. Bem feito, ele custa cerca de três minutos de processamento por dia, economiza mais do que isso em gasto desperdiçado de anúncios até as 9h da manhã e substitui o ritual matinal de clicar no Ads Manager e ficar apertando os olhos nas mesmas cinco colunas.
Se você ainda não configurou a Marketing API da Meta na sua conta, comece com como configurar a Meta Ads CLI passo a passo. E se você ainda está em cima do muro sobre se um agente de IA deveria estar rodando seus anúncios em primeiro lugar, o argumento mais amplo está em Facebook Ads com agentes de IA. Este post assume que você já tem uma CLI funcionando, um token de system user e pelo menos um ad set ativo. Estamos retomando na parte que a maioria das pessoas pula: efetivamente conferir os anúncios todo santo dia.
Por que um health check diário ganha de uma revisão semanal
O algoritmo de entrega da Meta não dá uma semana para anúncios perdedores se ajeitarem. A curva de decaimento é rápida. Um ad set que abre com 1,4% de CTR e cai para 0,4% no segundo dia já está sendo estrangulado pelo algoritmo: entrega menor, CPM maior, placements piores. No terceiro dia o orçamento ainda está sendo drenado no mesmo ritmo diário, mas o anúncio está sendo entregue para pessoas que clicaram porque o dedo escorregou, não porque queriam a oferta.
A matemática financeira é o que importa aqui. Um ad set de $30 por dia que roda cinco dias a mais a 0,3% de CTR antes de você perceber queimou $150 em tráfego que não converte. Rode vinte ad sets em duas campanhas e isso vira $3.000 por mês jogados fora porque nenhum humano olhou o dashboard num sábado de manhã. O hábito da revisão semanal pressupõe que anúncios morrem devagar. Não morrem. Eles morrem em 24 a 48 horas, e seu orçamento continua pagando o velório até você desligá-los.
A outra razão para o diário ganhar do semanal: fadiga criativa. Frequência acima de 4,0 numa janela de 7 dias significa que a mesma pessoa está vendo seu anúncio quatro ou mais vezes. O engajamento despenca, a relevância do anúncio cai e a Meta começa a te cobrar mais por impressão para compensar. A única forma de pegar fadiga cedo é olhar a frequência todo dia, não na sexta à tarde quando você se senta para "fazer marketing".
O que um health check diário de verdade realmente faz
A expressão "dashboard de anúncios" faz as pessoas pensarem no Ads Manager. Não é isso que estamos construindo. Estamos construindo um pequeno script Python que faz quatro coisas em sequência, sem dashboard nenhum.
Primeiro, ele se autentica na Marketing API da Meta com um token de system user que nunca expira. Sem login, sem prompt de dois fatores, sem timeout de sessão — o token funciona às 7h de domingo do mesmo jeito que funciona ao meio-dia de terça.
Segundo, ele puxa os Insights de todo ad set ativo do dia anterior: impressões, cliques, CTR, CPM, gasto, frequência e quaisquer eventos de conversão personalizados que você tenha configurado. Para a maioria das contas, isso é uma chamada de API por conta de anúncios, com breakdowns por ad set e por anúncio.
Terceiro, ele aplica seus limites. Não os limites recomendados pela Meta, não algum benchmark da indústria — os seus. Os limites que você decidiu serem a linha entre "esse anúncio está funcionando" e "esse anúncio está queimando dinheiro". Se um anúncio falha, o script o sinaliza. Se ele falha feio (vamos cobrir o que isso significa abaixo), o script pode pausá-lo na hora, enquanto você dorme.
Quarto, ele envia uma única mensagem para onde você realmente presta atenção. Para a maioria dos operadores, isso é Telegram ou Slack. Não e-mail — e-mail é onde relatórios vão para morrer. A mensagem inclui um resumo de uma linha, uma tabela do que passou e do que falhou e quaisquer ações que foram tomadas automaticamente durante a noite.
É isso. Sem dashboard, sem suite de analytics, sem login diário. O loop inteiro tem 200 linhas de Python e uma entrada de cron.
Três regras diárias de gatilho que de fato funcionam
Depois de rodar isso em campanhas reais do EMAX Studio e ajudar um punhado de pequenos anunciantes a fazerem o mesmo, três regras acabam fazendo a maior parte do trabalho. Tudo o mais é luxo.
Regra 1: CTR abaixo de 0,5% após mais de 100 impressões = pausa automática.
Essa é a regra de maior alavancagem. Abaixo de 100 impressões você não tem sinal — pausar no primeiro dia é coisa de amador. Depois de 100 impressões o CTR é estatisticamente significativo o bastante para tomar uma decisão. CTR abaixo de 0,5% num público frio significa que ou o criativo está errado, ou o hook está errado, ou o público está errado. Nada disso melhora queimando mais $50 no mesmo anúncio. Pause automaticamente e siga em frente.
Regra 2: CPM mais do que 2x a mediana do ad set por 3 dias consecutivos = aviso.
Não pausa automática — aviso. Se um único anúncio dentro de um ad set está pagando o dobro do CPM médio dos irmãos por três dias seguidos, a Meta está te dizendo que aquele anúncio tem uma nota de relevância baixa. Às vezes você o mantém mesmo assim, porque as conversões estão fortes; o aviso te dá a chance de olhar. Pausar automaticamente só pelo CPM é um erro, porque CPM alto com taxa de conversão alta ainda é um anúncio lucrativo.
Regra 3: Frequência acima de 4,0 numa janela de 7 dias = sinalização de fadiga criativa.
Mesmo princípio da Regra 2 — uma sinalização, não um kill. Frequência acima de 4 significa que seu público está vendo o mesmo criativo quatro ou mais vezes em uma semana. Às vezes isso é intencional (retargeting). Na maior parte do tempo significa que você precisa de uma nova variante de criativo nas próximas 48 horas, ou os CPMs vão continuar subindo. O script sinaliza o anúncio e idealmente avisa quem faz criativo.
Essa é a cartilha inteira. Três limites, uma ação automática, dois avisos. Você não precisa de um motor de regras com 20 itens. Você precisa de três regras nas quais você confia.
Um passo a passo real da configuração
É assim que isso fica montado. O Manuel roda exatamente esse stack no EMAX Studio.
O script mora em scripts/meta_daily_report.py. Ele carrega as credenciais de ~/.emax/automation-config.json (ou o equivalente de produção em /opt/emaxstudio/.emax/), lê a seção meta_ads para pegar o token do System User, o ID da conta de anúncios e as credenciais do bot do Telegram. O endpoint da Marketing API é https://graph.facebook.com/v23.0/act_<account_id>/insights com o conjunto certo de campos: impressions, clicks, ctr, cpm, spend, frequency, actions, com breakdown por ad_id e ad_name. Uma requisição HTTPS por conta de anúncios, parseada em um dict Python.
O script então junta esses dados com o banco interno de eventos de Quick Scan do EMAX Studio — para cada anúncio, quantas pessoas clicaram através dele e de fato começaram um Quick Scan. Essa coluna de conversão é a diferença entre "esse anúncio recebe cliques" e "esse anúncio recebe os cliques certos". Se o seu negócio tem um evento de funil parecido (signup, agendamento de demo, início de trial gratuito), puxe do seu próprio banco e faça join por utm_campaign ou por um parâmetro de URL customizado. Não confie nas conversões reportadas pela Meta em uma janela diária pequena — elas são barulhentas.
Limites aplicados no código: se impressions >= 100 AND ctr < 0.005, o script chama POST /act_<id>/<ad_id> com status=PAUSED. A ação é logada. Se --auto-pause não for passado na linha de comando, o script sinaliza o anúncio no relatório, mas não pausa de fato — útil na primeira semana enquanto você constrói confiança nos limites.
A entrega é via Telegram. O bot de produção (ID 8569897179) posta no chat do operador (6301180951) com uma mensagem formatada em Markdown. Se o Telegram falhar por qualquer motivo — instabilidade de rede, rate limit, chat expirado — o script faz fallback para e-mail via Resend para você nunca ter uma manhã silenciosa.
Entrada do cron no VPS Hetzner: 0 5 * * * cd /opt/emaxstudio && python3 scripts/meta_daily_report.py --auto-pause. Isso é 5:00 UTC, que é 7:00 horário de Berlim CEST — cedo o suficiente para o relatório estar esperando no celular antes do primeiro café. A flag --auto-pause é o que vira o script de "só avisar" para "de fato agir durante a noite".
A coisa toda levou uma tarde para ser conectada depois que a CLI já estava no lugar. A parte difícil não é o código. A parte difícil é se comprometer com os limites e confiar neles.
Formato de saída do health check
Como o relatório deve ficar quando chega. Não um paredão de números — um resumo de uma tela que te diz se é para relaxar ou abrir o laptop.
| Seção | O que tem dentro |
|---|---|
| Cabeçalho | Data, gasto total de ontem, moeda |
| Ações automáticas | Lista de anúncios pausados automaticamente durante a noite, com motivo ("CTR 0,31% após 142 imp") |
| Avisos | Anúncios acima de 2x da mediana de CPM ou com frequência > 4, sem ação tomada |
| Top performers | Top 3 anúncios por CTR com impressões >= 100, como sanidade de que o algoritmo está achando vencedores |
| KPIs de funil | Quick Scans (ou seu evento de conversão equivalente) iniciados ontem, custo por scan, vs. média móvel de 7 dias |
| Rodapé | Uma frase: "All systems green" ou "X itens precisam de atenção" |
A mensagem do Telegram nunca deveria exceder o que cabe em uma tela de celular sem rolar. Se você se pegar deixando-a mais longa, está lendo métricas demais. Três regras, dois avisos, três top performers, um número de funil. Qualquer coisa além disso é um problema de análise de terça à tarde, não um problema de operador às 7h.
Tabela de limites — pausa automática, avisar ou ignorar
Para quem quer um ponto de partida pronto para copiar e colar. Ajuste à sua faixa de CPM, à sua indústria e ao seu evento de conversão. Isso não é evangelho; são defaults sensatos.
| Métrica | Amostra mínima | Pausa automática | Avisar | Ignorar |
|---|---|---|---|---|
| CTR (cliques no link) | 100 impressões | < 0,5% | 0,5%–0,8% | > 0,8% |
| CPM vs. mediana do ad set | 3 dias consecutivos | — | > 2,0x | < 2,0x |
| Frequência (7 dias) | 7 dias de entrega | — | > 4,0 | < 4,0 |
| Taxa de conversão (clique → scan) | 50 cliques | < 1% | 1%–3% | > 3% |
| ROAS (se rastreado) | $50 de gasto | < 0,5 | 0,5–1,0 | > 1,0 |
Duas observações. Um: nunca pause automaticamente em uma métrica abaixo da amostra mínima. Abaixo de 100 impressões, um CTR de 0% não significa nada — pausar cedo demais mata anúncios antes de a Meta sequer começar a aprender. Dois: ROAS como gatilho de pausa automática é perigoso em janelas diárias pequenas. ROAS de 0,4 no dia um não é sentença de morte; no dia cinco é. Construa uma checagem de múltiplos dias antes de automatizar qualquer kill baseado em ROAS.
Armadilhas
Algumas coisas que vão te morder se você pular.
Não pause automaticamente sem um limite mínimo de impressões. A razão pela qual um anúncio novinho às vezes mostra 0% de CTR depois de 8 impressões não é porque o criativo é ruim. É porque 8 impressões é ruído estatístico. Sempre exija pelo menos 100 — e, para verticais com CPM mais alto, 200 — antes de qualquer decisão de pausa automática.
Não pause sem uma regra de redistribuição de orçamento. Se seu script pausar 4 de 10 anúncios em um ad set com orçamento de campanha de $100/dia, esse orçamento vai fluir para os 6 anúncios sobreviventes — ótimo se eles estiverem saudáveis, terrível se também estiverem marginais. Decida com antecedência se o orçamento pausado é redistribuído dentro da campanha ou volta para a conta, e documente.
Não rode o health check durante uma fase ativa de escalonamento. Se você está deliberadamente testando o estresse de um novo público com um aumento de orçamento de 5x, as primeiras 48 horas vão produzir CTRs feios enquanto a Meta reaprende a entrega. Uma pausa automática nessa janela mata o experimento antes de ele terminar. Ou desabilite a pausa automática para a campanha com uma tag, ou construa uma flag de "modo de escalonamento" que seu script respeite.
Não confie nos números do primeiro dia. As primeiras 24 horas após publicar um anúncio incluem a fase de exploração do algoritmo: ele deliberadamente entrega o anúncio para um conjunto mais amplo e mais esquisito de usuários para achar seus conversores. O CTR no dia um é quase sempre pior do que no dia três. Pause no CTR do dia um e você vai pausar anúncios que teriam estabilizado em vencedores.
Não pause automaticamente quedas de fim de semana na manhã de segunda. Para a maioria dos verticais B2B e muitos B2C, o CTR de sábado-domingo é 30 a 50% abaixo do CTR de dias úteis. Se seu relatório de segunda de manhã pausar automaticamente todo anúncio que teve performance abaixo do esperado no fim de semana, você vai chegar numa campanha sem nenhum anúncio ativo. Ou pondere o limite para cima nos fins de semana, ou simplesmente coloque o script em "só avisar" nas segundas. A versão mais profunda desse argumento está em automação de marketing com IA do lead até o cliente, que cobre por que regras automatizadas precisam ter consciência de calendário.
Perguntas frequentes
Quanto custa rodar isso por mês?
Centavos. As chamadas da Marketing API são gratuitas dentro dos rate limits padrão da Meta. Um VPS barato para hospedar o cron job custa por volta de $5 por mês — ou $0 se você já tem um servidor. Os tokens da Anthropic ou da OpenAI, se você usar um LLM para escrever o texto do resumo em vez de templatear, custam cerca de $0,01 a $0,03 por execução diária. Então mais ou menos $5 a $7 por mês no total. A economia no primeiro anúncio de $50/dia pausado automaticamente paga o ano inteiro.
Isso funciona para Google Ads, LinkedIn Ads ou TikTok Ads?
A mesma arquitetura funciona para todos eles. Cada plataforma tem uma API, retorna mais ou menos os mesmos KPIs e aceita comandos de pausa. Os limites diferem — CTRs do TikTok correm mais altos do que os da Meta, CPMs do LinkedIn são 5 a 10x os da Meta. Mas a estrutura do script (puxar, aplicar limites, agir, reportar) é idêntica. A maioria dos operadores começa pela Meta porque é o maior gasto e a pior em sinalizar problemas rapidamente. Adicione as outras plataformas uma por uma depois que a Meta estiver rodando redondinho.
Como lido com o refresh de criativo — a IA escreve a próxima variante?
O health check em si não escreve criativo. Ele te diz quais anúncios estão morrendo, por quê e quando. O próximo passo — gerar criativo novo — é um trabalho separado. A sinalização que o script levanta é o gatilho para um refresh de criativo, que você pode fazer manualmente ou jogar dentro de uma ferramenta de geração de conteúdo que produz novos hooks, imagens e copy prontos para upload. O EMAX Studio faz isso de ponta a ponta para nossos próprios anúncios: o relatório diário sinaliza fadiga, e na manhã seguinte a fila de campanhas tem três novas variantes prontas. O pedaço que faz a ponte entre essas duas coisas está descrito em automação de marketing com IA do lead até o cliente.
A IA pode mesmo decidir qual criativo escrever em seguida?
Pode — e cada vez mais decide — mas tome cuidado com onde você deixa. A IA é sólida em produzir novas variantes de hook de uma ideia que funciona (reformular, mudar a ênfase, trocar o ângulo). Ela é muito pior em decidir quando abandonar um conceito inteiramente e tentar algo genuinamente novo. Use a IA para geração de variantes; deixe o julgamento humano para "será que ainda deveríamos rodar essa oferta". É essa divisão que tem funcionado para nós.
Isso funciona em várias contas de anúncios?
Sim, e deveria. A maioria dos operadores que conhecemos roda entre 2 e 8 contas de anúncios — uma por cliente, ou uma por marca para times in-house. O script aceita uma lista de IDs de conta e roda o mesmo pipeline contra cada uma, enviando ou um relatório combinado ou um relatório por conta. Para agências, um relatório por cliente faz sentido; para times multi-marca in-house, um dashboard combinado costuma ser mais rápido de escanear. De qualquer forma, o token do System User cobre todas as contas às quais o usuário tem acesso, então a autenticação é uma configuração única.
O que acontece se a API estiver fora do ar ou com rate limit?
O script tenta novamente com backoff exponencial (3 tentativas, e então desiste). Se ainda falhar, você recebe uma mensagem no Telegram: "Health check failed, manual review needed". É o comportamento certo. O comportamento errado é falhar silenciosamente e te deixar descobrir três dias depois que nenhum check rodou. Construa o modo de falha desde o primeiro dia.
A conclusão honesta
Um health check diário de Meta Ads com IA não é uma ferramenta de enriquecimento rápido. Ela não vai transformar uma campanha perdedora em uma vencedora. Não vai escrever hooks melhores para você. Não vai negociar briefings de criativo com seu designer.
O que ela vai fazer é pegar as decisões mais caras de 24 a 48 horas na sua operação de anúncios — as decisões sobre se vale a pena continuar queimando orçamento em um anúncio cujo CTR está colapsando — e tomá-las enquanto você dorme. Ela vai substituir o ritual matinal de abrir o Ads Manager e temer o que vai encontrar. Ela vai te dar um único número no seu celular às 7h da manhã que te diz se é para relaxar ou abrir o laptop.
Para um operador solo gastando $1.000 por mês na Meta, isso economiza orçamento desperdiçado suficiente para se pagar dez vezes. Para uma agência gerenciando $50.000 por mês entre cinco clientes, é a diferença entre um media buyer júnior que dá conta de dois clientes e um que dá conta de seis. A alavancagem escala com o gasto.
Os agentes que conhecemos que fazem isso de forma consistente — definem os limites, confiam neles, deixam o script pausar durante a noite, só intervêm em avisos sinalizados — superam quem gerencia manualmente. Não por uma margem pequena. Em 30 a 50% mais ROAS no mesmo criativo, mesmo orçamento, mesmo público, porque os anúncios ruins morrem mais rápido e o orçamento flui para os sobreviventes mais cedo.
Passe seus próprios ativos de marketing por um scan grátis de 90 segundos em emax.studio e veja onde o gargalo realmente está no seu funil. É grátis, sem precisar de cadastro, e o relatório completo volta em menos de dois minutos.
Pronto para criar seus próprios reels de vídeo com IA?
5 créditos grátis. Sem cartão de crédito.
Comece grátis