Escritório virtual 3D
um painel 3D na web onde cada automação é um personagem com status ao vivo, trabalhando, pronto, esperando ou erro, com registro de tudo que acontece.
Quero montar um escritório virtual 3D para acompanhar as minhas automações, igual a um painel de controle com personagens.
Ferramentas: site estático no Cloudflare Pages, com Pages Functions e banco D1. Cena 3D em Three.js. Login próprio com senha, sem depender de login de terceiros.
Como tem que funcionar:
- Um site na web, com uma cena 3D, onde cada automação é um personagem com nome, cor, lugar fixo na cena e um traço visual próprio. Exemplos do meu sistema: o bot de design é careca, de óculos laranja, numa baia fixa com coordenadas na cena; o bot de Threads tem uma perna só, usa muleta na mão direita e anda pulando, e é o mais lento; o bot de tráfego pago fica sempre em cadeira de rodas, com detalhes laranja. Você define os personagens do seu sistema com o Muse antes de montar.
- Cada personagem mostra o status ao vivo: trabalhando, pronto, esperando ou erro, com um texto curto do que está fazendo naquele momento. O status só mostra o que foi empurrado de verdade pela automação, nunca um status inventado.
- Toda automação nova que eu criar já nasce ligada a um personagem desse escritório, com um id próprio e uma chave de push própria, com escopo só para mandar o status daquele bot.
- O site tem login com senha, e só quem tem a senha vê o painel. Segurança: senha guardada com PBKDF2, bloqueio por IP depois de tentativas erradas, sessão de 36 horas, chaves de push com escopo por bot, limite de requisições, e qualquer chave antiga de push desligada.
- Os dados ficam no banco D1, e as automações mandam o status para lá por uma chave própria de cada uma. Cada envio registra também um log com data e hora, que é o histórico do que aconteceu.
- Um batimento a cada 5 minutos confere se o escritório está no ar e se os bots estão respondendo. Uma leitura de uso, 3 vezes por dia, registra o que cada automação consumiu.
- Uma aba de alcance mostra os números reais do meu perfil principal no Instagram, puxados da fonte oficial.
- O escritório pode mostrar eventos fixos, como um recebimento no dia do mês que você definir.
Formato da notificação no chat: uma linha curta por mudança de estado, no padrão ✅ [nome do bot] > [o que aconteceu] quando a automação terminou o trabalho, 🟨 [nome do bot] > [o que precisa de você] quando precisa de você, 🟥 [nome do bot] > [o que falhou, com o erro exato e o que resolver manualmente] quando falhou. Os pushes no escritório são o log. Não crie arquivo de log separado.
O que nunca fazer sem a minha aprovação explícita: nunca publicar o site, nunca mudar a senha, nunca trocar a chave de push de um bot, nunca desligar um bot, nunca inventar status, número ou resultado.
Primeira vez: passo a passo
1. Crie uma conta no Cloudflare, se ainda não tiver. No painel do Cloudflare, crie um projeto Pages e um banco D1, e anote os nomes que você deu a eles.
2. Peça ao Muse para conectar o Cloudflare, seguindo o fluxo de autorização na tela. A chave da conta vai para o cofre seguro do Muse. Nunca cole chave no chat.
3. Defina com o Muse a lista das suas automações e, para cada uma, o nome do bot, a cor, o lugar fixo na cena e um traço visual. Comece com 3 a 5 automações, não tente desenhar todas de uma vez.
4. Peça ao Muse para montar o site com login e senha, e para publicar num endereço de teste primeiro. Abra o link no seu computador e confira se o login funciona e se a cena abre.
5. Peça ao Muse para ligar o primeiro bot, com a chave de push própria dele, e confira no painel se o status muda de verdade quando a automação trabalha.
6. Só depois de ver o primeiro bot funcionando, ligue os outros, um por vez, e só publique no seu domínio quando aprovar.
Relatórios de produção no Trello
lê o quadro de produção todo dia, separa o que está pendente, produzido e não entregue, e manda o relatório no grupo do time no WhatsApp.
Quero uma automação que monitore a produção do meu time no Trello e me reporte no WhatsApp.
Ferramentas: Trello para o quadro de produção, ponte n8n para enviar o relatório no WhatsApp. O relatório nunca sai por outro acesso de WhatsApp, só pela ponte n8n.
Horários, fuso America/Bahia: relatório diário às 01:00, de segunda a sábado. Fechamento às 23:30, de segunda a sábado. Relatório semanal às 01:00 do domingo, com a visão da semana. Domingo de manhã é só projeção, sem fechamento.
Como tem que funcionar:
- Ler cartões SOMENTE das 15 listas que eu definir no meu quadro do Trello, ignorando todas as demais. As listas são 5 listas genéricas de fluxo, espera, pendências, mídia, aguardando cliente e em produção, mais uma lista por cliente. Duas listas ficam fora do escopo, e eu vou te dizer quais são. Nunca ler o quadro inteiro, porque o quadro tem mais de 1000 cartões abertos e a leitura do quadro inteiro corta no limite da API. Quem está marcado no cartão não importa, nunca filtrar por pessoa.
- Separar os cartões em pendente, produzido e não entregue ou em atraso. Produzido é o cartão com vencimento hoje marcado como concluído. A entregar é o cartão com vencimento hoje ainda não concluído. Nunca listar cartão sem data de vencimento num relatório de vencimento.
- Formato exato da entrega: só o nome do cartão, sem descrição e sem link. Negrito com asterisco duplo no texto gerado, que vira asterisco simples na mensagem do WhatsApp. Marcadores: 🟨 pendente, ✅ produzido, 🟥 não entregue ou em atraso. O fechamento inclui também a seção REAGENDADO.
- O produzido traz a data e a hora em que foi concluído, tiradas do histórico do cartão, no formato [Nome do cartão] ([DD/MM] [HH:MM]). Sem registro no histórico, só o nome, e nunca inventar horário.
- Ordenação: no fechamento, ENTREGUE por horário de conclusão e REAGENDADO por horário de reagendamento, do mais antigo para o mais novo, com desempate em ordem alfabética. O produzido do relatório diário vai em ordem alfabética.
- Exemplo de linha de pendente, sob o marcador 🟨: **[Nome do cartão]**
- Exemplo de linha de produzido, sob o marcador ✅: **[Nome do cartão] ([DD/MM] [HH:MM])**
- Exemplo de linha de reagendado, só no fechamento, sob REAGENDADO: **[Nome do cartão] ([DD/MM] [HH:MM])**
- Cartão com o rótulo Impossibilitado não é pendência. Ele só aparece na seção ⛔ IMPOSSIBILITADO no dia do vencimento, e no semanal só se vence naquela semana. Passou da data, ele some do relatório.
- Atraso só conta os últimos 7 dias. Cartão em atraso mais antigo que isso é ignorado por completo, sem nem resumir em contagem.
- Na sexta, o relatório da manhã inclui 🎯 META DE SEXTA, com uma seção por dia, sábado e segunda seguinte, para adiantar o fim de semana na sexta. O que não for adiantado aparece normalmente nos relatórios de sábado e de segunda, sem texto extra.
- Se o nome do cartão for de um cliente que é clínica com várias unidades, mostre a clínica entre parênteses depois do nome, no formato [Nome do cartão] ([clínica]), salvo se o nome do cartão já trouxer a clínica. Essa regra vale em todas as seções que mostram nome de cartão, inclusive não entregue, entregue e reagendado. Defina com o Muse quais são as suas clínicas antes de ligar.
- Se uma lista aparecer vazia ou uma lista nova aparecer no quadro, confira os nomes das listas do quadro com a lista de escopo antes de concluir que não há nada para entregar, e me pergunte antes de incluir uma lista nova no escopo.
Formato da notificação no chat: depois que o relatório sai no grupo, uma linha curta de confirmação no chat, no padrão ✅ Leonardo > [relatório do dia entregue no grupo]. Se precisar de você, 🟨 Leonardo > [o que precisa]. Se falhar, 🟥 Leonardo > [o erro exato e o que resolver manualmente]. O bot que emite o relatório se chama Leonardo. O relatório em si nunca vai para o chat, só para o grupo.
Regras de falha, retry e escalada: se o envio falhar, o bot vai para erro no escritório. Tentar de novo em 10 minutos e depois em 1 hora, sempre conferindo antes se o envio já aconteceu, sem nunca duplicar. Se as 3 tentativas falharem, avisar no chat com o erro exato e o que resolver manualmente. Se o envio falhar, use o botão de copiar o relatório só como saída de emergência, e nunca deixe a saída de emergência travar a entrega. Nunca mudar uma regra só na mensagem do chat, porque a próxima rodada não vai ver a mudança. Toda mudança de regra vai primeiro no script do relatório, depois roda de novo o relatório do mesmo dia para confirmar.
O que nunca fazer sem a minha aprovação explícita: nunca incluir uma lista nova no escopo, nunca mudar o horário, o formato ou a ordenação, nunca inventar horário de conclusão, nunca enviar o mesmo relatório pela ponte e por outro acesso de WhatsApp. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Trello, se ainda não tiver, e monte o seu quadro de produção com as suas listas. Anote o nome exato do quadro e das 15 listas que entram no relatório, e quais listas ficam fora.
2. Crie uma conta no n8n, se ainda não tiver, e monte a ponte que envia mensagem no seu grupo de WhatsApp. Peça ao Muse para conectar o Trello e o n8n, seguindo o fluxo de autorização na tela. As chaves vão para o cofre seguro do Muse. Nunca cole chave no chat.
3. Passe ao Muse o nome do quadro, as 15 listas, o grupo de WhatsApp que recebe o relatório e os horários: diário 01:00, fechamento 23:30, semanal domingo 01:00, tudo em America/Bahia.
4. Peça ao Muse para gerar um relatório de exemplo de um dia que você escolher, e confira linha por linha: só o nome do cartão, negrito certo, marcadores certos, horário de conclusão só quando existe no histórico.
5. Peça ao Muse para testar o envio no grupo, e confira se a mensagem chegou com o formato certo.
6. Só ligue a rotina quando aprovar o exemplo e o teste. Depois de ligar, qualquer mudança de regra volta primeiro no script, nunca só na conversa.
Relatórios mensais de clientes
todo mês, busca as métricas de cada cliente no mLabs, compara só com o mês anterior e gera o texto do relatório e a página pública dele.
Quero uma automação que gere o relatório mensal de cada cliente meu, todo dia 1.
Ferramentas: mLabs para agendamento e métricas de redes sociais, com o MCP do mLabs. Cloudflare Pages para a página pública do relatório. WhatsApp para entregar o texto.
Horários, fuso America/Bahia: a rodada roda todo dia 1, às 00:02, com os dados do mês anterior, para todos os clientes. A entrega chega no dia 1 de manhã, para eu revisar antes de mandar.
Como tem que funcionar:
- Buscar as métricas do mês na sua conta do mLabs, para cada cliente. Comparar cada número só com o mês anterior, nunca com outros meses.
- Gerar o texto do relatório em 10 mensagens curtas por cliente, em segunda pessoa, com voz em primeira pessoa masculina. Números em português. Negrito com asterisco simples. Sem travessão, sem markdown, sem bullets, sem link dentro dos textos.
- A mensagem 5 é obrigatória: o comparativo de stories em relação ao mês anterior.
- O funil usa a fórmula 40% x (comentários + curtidas) + 100% x novos seguidores, com 15% de agendamento.
- A página pública é o relatório: 10 seções de texto por cliente e por mês, num endereço por cliente e por mês, no formato [seu domínio]/[cliente]/[AAAA-MM]/. O modelo da página é fixo, só mudam as variáveis de cada cliente e de cada mês.
- No fim da página, um botão que abre o WhatsApp para o [seu número], com confirmação de leitura.
- Tom: ponto sensível com tom tranquilo, sem anunciar franqueza. Nunca escrever frases como vou ser direto, sem cobrança.
- Exemplo de mensagem do relatório, no formato exato, com os seus números no lugar dos colchetes: *Seus stories alcançaram [número] pessoas neste mês, [número]% [a mais ou a menos] que no mês passado.* E a mensagem seguinte traz o que isso significa para o cliente, em segunda pessoa, sem prometer nada do mês que vem.
- Regra dura: relatório entregue é relatório fechado. Nunca prometer dado futuro, nunca dizer que um número vai ser atualizado depois.
- Nunca afirmar que não houve publicação por um widget vazio ou por uma extração pendente. Ausência de publicação só depois de checagem cruzada.
- Collab: o mLabs só puxa de cada perfil os posts em que ele é autor principal. Coautor não aparece em nenhum formato, e o MCP não expõe colaborador, convite ou aceite, nem distingue carrossel de foto. A métrica de um collab em que o cliente é coautor vem do perfil da autora principal ou de conferência pública.
- Pegadinhas do mLabs que o Muse precisa respeitar: para buscar posts por data, a data final tem que ser o dia seguinte ao que você quer; a busca de publicados falha para postou hoje, então use a busca por data ou a busca de agendados, com status posted; os horários agendados vêm em UTC, converta para menos 3 horas; o schema da API é diferente do que a interface mostra, nunca misture os dois; a extração de métricas pode ficar pendente por horas; a preparação em segundo plano retorna erro 403.
Formato da notificação no chat: uma mensagem só por rodada, no padrão ✅ Camila > Relatórios de [mês] dos [N] clientes prontos! quando terminar, 🟨 Camila > [o que precisa de você] quando precisar de você, 🟥 Camila > [o erro exato e o que resolver manualmente] quando a rodada falhar. Os pushes de fase no escritório são o log. Nunca crie arquivo de log.
O que nunca fazer sem a minha aprovação explícita: nunca publicar a página de um cliente, nunca mandar o texto ao cliente, nunca prometer dado futuro, nunca inventar número, preço, prazo ou resultado. Escrita no mLabs só com autorização explícita por ação. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no mLabs, se ainda não tiver, e conecte os perfis dos seus clientes. Anote a lista dos seus clientes e como cada um mede resultado.
2. Peça ao Muse para conectar o mLabs, seguindo o fluxo de autorização na tela. A chave vai para o cofre seguro do Muse. Nunca cole chave no chat.
3. Defina com o Muse as 10 mensagens do seu modelo de relatório, uma por tema, antes de ligar. Passe ao Muse o tom, a voz, a fórmula do funil e a regra do comparativo de stories.
4. Peça ao Muse para gerar o relatório de um cliente com os dados de um mês passado, e confira as 10 mensagens e a página pública: números certos, comparação só com o mês anterior, sem link nos textos, botão do WhatsApp no fim.
5. Peça ao Muse para testar a página num endereço de teste, abra no seu computador e confira se tudo carrega.
6. Só ligue a rotina do dia 1 quando aprovar o exemplo e a página de teste.
Conferência diária de postagens
verifica todo dia se o conteúdo agendado de cada cliente saiu, confirma no grupo do cliente quando saiu e avisa só no grupo interno quando não saiu ou não foi aprovado.
Quero uma automação que confira todo dia se o conteúdo agendado dos meus clientes foi publicado.
Ferramentas: MandarPost, que é o painel que confere e avisa, no Cloudflare Pages com banco D1. mLabs via MCP para ler o agendamento e a publicação. WhatsApp via Evolution API para os avisos.
Horários, fuso America/Bahia: pré-checagem às 19:33 e envio às 19:35, todos os dias, inclusive domingo e feriado. Lembretes de aprovação às 08:00, 11:00, 14:00 e 17:00, só quando houver conteúdo do dia ainda aguardando aprovação. Sem pendente, silêncio.
Como tem que funcionar:
- Conferir só os clientes do relatório mensal, no máximo 1 conteúdo por dia por cliente. O sensor varre o mLabs direto, com janela de hoje até hoje mais 30 dias.
- Classificação: saiu no dia é verde, e confirma no grupo do cliente no WhatsApp, com uma frase diferente a cada dia. Saiu em outro dia é remanejado, e confirma com a mensagem padrão, sem falar de remanejamento. Não saiu ou sem agendamento é aviso só no grupo interno, nunca no grupo do cliente. Agendado mas não aprovado é aviso interno, para puxar a aprovação.
- Nunca tratar uma extração pendente como conteúdo não publicado.
- A automação NÃO publica post. Ela só confere e avisa.
- Lembrete de aprovação: uma mensagem por cliente no grupo interno, só quando houver conteúdo do dia ainda em rascunho aguardando aprovação. Formato exato, com os seus dados no lugar dos colchetes:
⚠️ [texto da variante da rodada]
Link para aprovar: [DD/MM] | [HH:MM]
[link mla.bs]
Ficamos no seu aguardo!
- O link de aprovação é puxado pelo MCP do mLabs, que devolve o link existente, um só por conteúdo, igual em todas as redes. Ele só funciona enquanto o conteúdo está pendente de aprovação. Depois de aprovado, ele recusa, e a aprovação fora do prazo é só pela tela do mLabs. O MCP não tem ferramenta para aprovar nem para publicar, e o link não envia nada à cliente.
- Ignorar cliente por dia: um arquivo com a data no nome, por exemplo skip-[AAAA-MM-DD].json, com os ids dos clientes a ignorar naquele dia. O script classifica como ignorado, sem mensagem e sem aviso, e os 4 lembretes leem o mesmo arquivo. Vale só para a data do nome do arquivo.
- Se um cliente tiver a regra de que, sem aprovação, o conteúdo vai para o dia seguinte e não conta como falta, defina essa regra com o Muse por cliente antes de ligar.
- Limite conhecido: o mLabs só entrega o link público do post com atraso de 1 a 2 dias no Instagram, então não dá para garantir o envio do link oficial no mesmo dia nem na manhã seguinte. Não construa o envio do link oficial até ter uma fonte confiável para ele.
Formato da notificação no chat: uma linha curta por envio, no padrão ✅ Júlia > [confirmação enviada no grupo do cliente] quando saiu, 🟨 Júlia > [o que precisa de você] quando precisa de você, 🟥 Júlia > [o erro exato e o que resolver manualmente] quando falhar. A bot que emite os avisos se chama Júlia.
Regras de falha, retry e escalada: se o envio falhar, o bot de postagens vai para erro no escritório. Tentar de novo em 10 minutos e depois em 1 hora, sempre conferindo antes se o envio já aconteceu, sem nunca duplicar. O script grava cada envio assim que ele acontece, para o retry pular quem já recebeu. Se as 3 tentativas falharem, voltar no chat com o erro exato e o que resolver manualmente.
O que nunca fazer sem a minha aprovação explícita: nunca publicar post, nunca aprovar conteúdo, nunca mandar aviso no grupo do cliente sobre conteúdo que não saiu, nunca inventar que saiu ou que não saiu. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no mLabs, se ainda não tiver, e conecte os perfis dos seus clientes. Monte o painel do MandarPost no Cloudflare Pages com banco D1, ou peça ao Muse para montar.
2. Peça ao Muse para conectar o mLabs e o WhatsApp, seguindo o fluxo de autorização na tela. As chaves vão para o cofre seguro do Muse. Nunca cole chave no chat.
3. Passe ao Muse a lista dos seus clientes, os dias fixos de postagem de cada um, o grupo de WhatsApp de cada cliente e o seu grupo interno.
4. Peça ao Muse para rodar a primeira versão só como teste interno, sem nenhum envio ao vivo para cliente, e confira a classificação de um dia: verde, remanejado, faltante e aguardando aprovação.
5. Peça ao Muse para testar um lembrete de aprovação e confira o formato: aviso, texto da variante, bloco do link com data e hora, link e fechamento.
6. Só ligue os envios ao vivo quando aprovar o teste interno.
Triagem de e-mails
varre a caixa de entrada de hora em hora e só te avisa do que é útil, dinheiro que entrou, conta a pagar e aviso fora do padrão, com resumo diário e lista de limpeza.
Quero uma automação que limpe a minha caixa de entrada e só me avise do que é útil.
Ferramentas: Gmail para a caixa de entrada. O aviso chega no chat comigo, e eu confirmo que vi o que é útil sem abrir o e-mail.
Horários, fuso America/Bahia: varredura de hora em hora. Resumo diário de dinheiro recebido às 20:00. Lista diária de limpeza uma vez por dia.
Como tem que funcionar:
- Varrer o e-mail de hora em hora e só me alertar na hora quando for dinheiro recebido, conta a pagar ou algo fora do padrão.
- Dinheiro recebido não gera alerta na hora. Ele entra num resumo diário às 20:00, com o total do dia e uma linha por recebimento. Dia sem recebimento é silêncio, sem resumo.
- Conta a pagar: avisar uma vez quando aparecer. Dar um toque sem link um dia antes do vencimento, e lembrar com o link de pagamento no dia do vencimento.
- Nota fiscal é só documento, nunca alerta. Ela vai só para a lista de limpeza.
- Uma vez por dia, me propor uma lista do que desinscrever e do que marcar como lido, sem nunca desinscrever ou marcar nada sozinho. Depois que eu aprovar a lista, a limpeza executa sozinha: desinscreve e marca tudo como lido.
- Eu classifico cada remetente como importante, spam ou golpe, e essa classificação vira o filtro das próximas rodadas. Cobrança ou fatura do mesmo remetente continua candidata a alerta.
- Ignorar: notificações da ferramenta de agendamento, alertas de leads, e-mails de divisão de conta, e-mails do sistema de sites que não são meus, propagandas. Exceção: desconexão de conta da ferramenta de agendamento alerta na hora. Aviso de armazenamento quase cheio também alerta na hora.
- Quando uma fatura fecha, só dizer o valor e o prazo, sem detalhar os lançamentos.
- Exemplo de alerta no chat, com os seus dados no lugar dos colchetes: 🟨 Cassiane > [nome do remetente] > [conta a pagar de R$ valor, vence em DD/MM]. Me diga se é importante, spam ou golpe.
- Exemplo de linha do resumo diário das 20:00: ✅ Cassiane > Resumo de hoje: [N] recebimentos, total R$ [valor]. [Remetente 1]: R$ [valor]. [Remetente 2]: R$ [valor].
Formato da notificação no chat: o aviso traz o que chegou e por que é útil. Você confirma que viu, e aí eu marco como lido. ✅ Cassiane > [o que chegou] quando for dinheiro ou conta, 🟨 Cassiane > [o que precisa da sua classificação] quando precisar de você, 🟥 Cassiane > [o erro exato e o que resolver manualmente] quando falhar. A bot que faz a triagem se chama Cassiane.
O que nunca fazer sem a minha aprovação explícita: nunca desinscrever, nunca marcar como lido, nunca arquivar, nunca apagar, nunca responder e-mail, nunca classificar um remetente por conta própria. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Peça ao Muse para conectar o seu Gmail, seguindo o fluxo de autorização na tela. A chave vai para o cofre seguro do Muse. Nunca cole chave no chat.
2. Passe ao Muse o que é conta para você e o que é lixo: quais remetentes são importantes, quais são propaganda, e o que é golpe. Comece com poucos remetentes, a lista cresce com o uso.
3. Peça ao Muse para rodar a varredura nos e-mails de hoje e te mostrar a primeira lista de limpeza, sem desinscrever e sem marcar nada. Confira item por item.
4. Classifique os remetentes da primeira lista como importante, spam ou golpe, e peça ao Muse para aplicar só essa lista depois da sua aprovação.
5. Só ligue a varredura de hora em hora quando aprovar a primeira lista e o formato dos alertas.
Respostas a comentários no Instagram
responde os comentários dos seus próprios reels com um banco de textos aprovados por você, uma resposta por pessoa por post, em rodadas de hora em hora.
Quero uma automação que responda os comentários dos meus reels no Instagram.
Ferramentas: Instagram para ler os posts e comentários e para responder. O número de seguidores, quando precisar, vem sempre da API oficial do Meta Graph, nunca do número que o conector mostra.
Horários, fuso America/Bahia: rodada a cada 1 hora. Cada rodada lê os 15 reels mais recentes do seu perfil. No máximo 8 respostas por rodada, com 60 a 120 segundos entre envios.
Como tem que funcionar:
- Responder só os comentários dos seus próprios reels, nunca de post de outra pessoa. Só entra na rodada o post com autor confirmado como [seu perfil] e URL em formato /p/ ou /reel/. Se o autor não puder ser confirmado, o post fica fora da rodada. Se nenhum post for verificado, a rodada é falha de leitura, nunca rodada conferida.
- Usar só um banco de textos aprovado por mim, sem emoji, sem nome e sem marcar ninguém. O banco tem 70 textos. Cada resposta é curta, espelha as palavras e o tom de quem comentou, e trata de um tema só. Nunca começar a resposta com o nome de quem comentou. A variante do banco gira por sorteio, para a mesma pessoa nunca receber o mesmo texto duas vezes no mesmo post.
- Uma resposta por pessoa por post, identificando a pessoa pelo id da conta, nunca pelo nome de exibição. Antes de contar os pendentes, comparar cada comentário com as respostas manuais que já existem no post, por nome e por ordem de tempo. Quem já recebeu resposta manual conta como respondido, mesmo que a resposta tenha usado outro nome de exibição. A contagem de pendentes só vale depois dessa deduplicação.
- Nunca responder comentário pedindo preço, orçamento, dúvida técnica, pedido de DM ou crítica pesada. Esses vão para uma fila para eu ver, e a automação me diz quantos estão na fila e há quanto tempo o lote está esperando, quando os comentários já têm semanas.
- Nunca responder comentário meu, nem resposta minha. Nunca responder a mesma pessoa duas vezes no mesmo post, e nunca duplicar uma resposta que eu já dei manualmente.
- Log no escritório virtual, no formato exato: Comentario de [handle] respondido as [HH:MM]. O handle é resolvido pelo id do autor. Sem handle resolvido, o log é genérico, sem nome, e nunca usa o nome de exibição.
Formato da notificação no chat: só a contagem, nunca o nome de quem recebeu. ✅ Isabela > [N] comentários respondidos quando a rodada termina. 🟨 Isabela > [N] comentários na fila para você decidir quando houver fila. 🟥 Isabela > [o erro exato, quantos ficaram pendentes e o que resolver manualmente] quando falhar. A bot que responde se chama Isabela.
Regras de falha, retry e escalada: parar a rodada na hora quando um envio estourar o tempo ou o Instagram devolver erro 429, e reportar os restantes como pendentes, com o motivo. Conferir a conversa ao vivo depois de cada envio, e só contar a resposta como enviada depois de confirmar a entrega lá. Nunca reenviar uma resposta já entregue. Se a entrega for incerta, deixar a rodada parcial parada no próximo não enviado, em vez de adivinhar. Um relatório honesto de pendente vale mais que uma confirmação rápida de conclusão.
O que nunca fazer sem a minha aprovação explícita: nunca mudar um texto aprovado, o horário ou o tamanho da rodada, porque uma mudança silenciosa quebra a aprovação que já existe. Nunca responder comentário fora do banco aprovado. Nunca responder comentário na fila. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Instagram, se ainda não tiver, e deixe o perfil pronto para receber comentários. Peça ao Muse para conectar o Instagram, seguindo o fluxo de autorização na tela.
2. Monte com o Muse o seu banco de textos aprovados, com os textos curtos, sem emoji, sem nome e sem marcar ninguém. Defina também o que vai para a fila: preço, orçamento, dúvida técnica, pedido de DM e crítica pesada.
3. Peça ao Muse para rodar uma rodada de teste em um post, só contando os pendentes, sem responder nada. Confira se os pendentes são só dos seus reels e se a deduplicação tirou quem você já respondeu manualmente.
4. Aprove os textos do teste e peça ao Muse para enviar as respostas do teste, conferindo a entrega na conversa ao vivo, uma por uma.
5. Só ligue a rodada de hora em hora quando aprovar o teste.
Boas-vindas a novos seguidores no Instagram
detecta cada seguidor novo, analisa o perfil dele e manda uma única mensagem direta personalizada.
Quero uma automação que mande uma mensagem de boas-vindas para cada seguidor novo no Instagram.
Ferramentas: Instagram Messages para enviar e ler mensagens diretas. Instagram para ver o perfil e os posts do seguidor. Meta Graph API para o número oficial de seguidores, que é a fonte da contagem, nunca o número que o conector mostra.
Horários, fuso America/Bahia: checagem de hora em hora. Enviar só entre 8h e 23h. Limite de 30 mensagens por dia. Intervalo aleatório de 3 a 12 minutos entre envios. O que passar do limite fica para o dia seguinte, por ordem de chegada.
Como tem que funcionar:
- Detectar o seguidor novo pelo feed de atividade, que é o gatilho principal, e pela lista de seguidores, que é só rede de segurança e auditoria. A fonte da verdade é um arquivo de registro permanente, um registro por id, com data da primeira vez que apareceu, origem, status, se a mensagem foi enviada e o motivo. Nunca sobrescrever e nunca apagar esse arquivo. Novo é quem não está lá. Quem deixou de seguir e seguiu de novo já está lá e nunca recebe mensagem de novo.
- Antes de mandar, analisar a bio, o nome de usuário, o nome de exibição, o tipo de conta, se é privada ou aberta, o país e os 3 posts recentes, para personalizar a mensagem com o tema certo para aquela pessoa. Um tema só por mensagem.
- Mandar UMA mensagem só por seguidor, com parágrafos separados por linha em branco, sem lista de serviços. Só continuar a conversa se a pessoa responder.
- O seguidor precisa ainda estar seguindo no momento do envio. Confira antes de cada envio.
- Filtro de bot, antes de qualquer envio: é bot SOMENTE se não tem foto, ou tem 0 posts E menos de 100 seguidores, ou segue 3.000 ou mais E tem menos de 10 posts OU menos de 500 seguidores. Seguir muita gente sozinho não bloqueia: uma conta real de empresa, com posts e público, passa. Um bot vai para o registro com status de bot e o motivo anotado, e não recebe mensagem.
- Disjuntor: se os seguidores novos encontrados numa checagem forem mais do que o maior entre a variação da contagem mais 5 e o dobro da variação da contagem, a base está com problema. Não mande nenhuma mensagem, registre e me avise.
- A mensagem usa o tratamento certo para o gênero: bem-vinda e empresárias para mulher, bem-vindo e empresários para homem ou quando o gênero é desconhecido. Use a versão com pergunta pelo nome para empresa ou nome desconhecido, e as versões pessoais para pessoa com nome.
- Log no chat só quando houver conversa iniciada, com o nome do seguidor pelo handle, sem citar o texto da mensagem.
Formato da notificação no chat: só reportar como enviado depois de confirmar a entrega na conversa. ✅ [nome do bot] > [handle do seguidor] recebeu a mensagem de boas-vindas quando entregar. 🟨 [nome do bot] > [o que está esperando e por quê] quando um envio ficar pendente. 🟥 [nome do bot] > [o erro exato e o que resolver manualmente] quando falhar.
Regras de falha, retry e escalada: se der bloqueio ou erro de limite, pausar todos os envios por 24 horas e me avisar. Se a entrega for incerta, conferir a conversa antes de decidir, e nunca reenviar uma mensagem já entregue. Antes de cada envio, conferir o registro e o arquivo de enviados, para ninguém receber mensagem duplicada.
O que nunca fazer sem a minha aprovação explícita: nunca mudar um texto aprovado, o horário, o limite diário ou a rota, porque uma mudança silenciosa quebra a aprovação que já existe. Nunca inventar nome, link ou parágrafo novo na mensagem. Nunca mandar mensagem para quem já recebeu. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Instagram, se ainda não tiver. Peça ao Muse para conectar o Instagram e o Instagram Messages, seguindo o fluxo de autorização na tela.
2. Monte com o Muse os seus textos de boas-vindas aprovados, com o tratamento certo para cada gênero e a versão para empresa ou nome desconhecido. Defina o que a mensagem nunca pode falar.
3. Peça ao Muse para montar o registro de seguidores e rodar só a leitura por um dia, sem enviar nada, para o registro começar certo. Enquanto o registro inicial não estiver completo, só leitura e contagem, nenhum envio.
4. Peça ao Muse para testar com um seguidor novo de verdade, conferindo a entrega na conversa, e confira se a mensagem saiu com o tema certo para aquele perfil.
5. Só ligue a rotina de hora em hora quando aprovar o teste.
Prospecção fria no Instagram
todo dia, pega 15 empresas de um nicho, manda uma mensagem apresentando um site já criado para elas e para quando a pessoa responde.
Quero uma automação de prospecção fria no Instagram para vender sites.
Ferramentas: Instagram Messages para enviar e ler mensagens diretas. Instagram para ver o perfil e os posts do lead.
Horários, fuso America/Bahia: definir os 15 leads na rodada da manhã, às 07:00. Envios espaçados das 08:12 às 22:23. Os 15 leads saem numa única execução agendada do dia, nunca um lead por execução.
Como tem que funcionar:
- Todo dia, montar uma lista de 15 empresas de um nicho, com conta aberta, mais de 500 seguidores e pelo menos 2 posts nos últimos 30 dias. Excluir conta privada, conta que você já segue e conta já prospectada. Rodar um nicho por semana, alternando dois lotes de nicho.
- Antes de escrever ou enviar qualquer coisa, conferir o histórico de mensagens diretas do lead. Excluir na hora qualquer conta que já tenha uma conversa com você, por mais antiga que seja, e anotar o motivo do descarte como conversa existente. Conferir o histórico de novo antes de cada envio, e pular o lead se uma conversa aparecer.
- Mandar uma única mensagem por empresa, em parágrafos com linha em branco entre eles, com o pitch resumido. Ordem da mensagem: o gancho e o nome da empresa primeiro, depois a saudação e o gancho de prospecção, depois a dor como hipótese personalizada a partir do perfil, depois a ideia do sistema em um ponto só, e fechar com uma pergunta. A ideia do sistema é uma só: o cliente entra no site, escolhe e agenda tudo por lá, e em um minuto o dono tem todas as informações precisas que a equipe precisa para atender. Um tema só por mensagem, nunca copiar o texto da bio, e nunca usar dois pontos, com certeza ou parece que quando a bio é explícita.
- Apresentar o site como já criado para ela, sem mandar link. Nunca mandar link de um site que não existe. O site é apresentado como já criado só porque você vai criar e mandar quando o lead responder.
- Quando a pessoa responder, parar a automação para ela na hora e me avisar na hora, com o link direto da conversa, porque eu assumo a conversa. Acompanhar a conversa durante a rodada, para ver a resposta em minutos, não em horas.
- Quando a pessoa disser não, descartar na hora e nunca mandar de novo. Quem não responder depois de 7 dias é descartado, sem mandar mensagem de acompanhamento. Nunca mandar mensagem de acompanhamento para quem não respondeu.
- Um cartão de aprovação por dia cobre todos os leads. Se aparecer um cartão fora desse modelo, para um lead só ou uma mensagem só, pausar os envios e me avisar.
Formato da notificação no chat: no fim do dia, a contagem de concluídos e as respostas que chegaram. Na hora, quando um lead responder. ✅ [nome do bot] > [N] mensagens enviadas hoje, [N] respostas quando terminar o dia. 🟨 [nome do bot] > [nome do lead] respondeu, conversa na sua mão, com o link da conversa, quando houver resposta. 🟥 [nome do bot] > [o erro exato e o que resolver manualmente] quando falhar. O push no escritório é genérico, sem texto de mensagem direta.
Regras de falha, retry e escalada: conferir a conversa ao vivo antes de cada envio, e só contar a mensagem como enviada depois de confirmar a entrega lá. Nunca reenviar uma mensagem já entregue. Retomar uma rodada parcial no próximo lead não enviado. Nunca mandar nada por uma execução avulsa no chat, porque essa rota pede aprovação por lead e por mensagem.
O que nunca fazer sem a minha aprovação explícita: nunca mudar um texto aprovado, o horário ou a rota, porque uma mudança silenciosa quebra a aprovação que já existe. Nunca mandar link, nunca mandar acompanhamento, nunca prospectar quem já tem conversa com você. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Instagram, se ainda não tiver. Peça ao Muse para conectar o Instagram e o Instagram Messages, seguindo o fluxo de autorização na tela.
2. Defina com o Muse os seus nichos, o preço do site e o texto da abordagem, com o banco de variações aprovado. Monte a lista do primeiro dia com 15 empresas que passam nos critérios.
3. Peça ao Muse para conferir o histórico de mensagens de cada lead da lista, e descartar quem já tem conversa com você, por mais antiga que seja.
4. Aprove o cartão do dia com os 15 leads e peça ao Muse para testar com uma empresa, conferindo a entrega na conversa.
5. Só ligue a rotina diária quando aprovar o teste.
Threads: 6 posts por dia
pesquisa pauta quente todo dia de manhã, te entrega 6 rascunhos para aprovar de uma vez e publica nos horários fixos, com respostas a comentários em duas rodadas.
Quero uma automação que publique 6 posts por dia no meu Threads.
Ferramentas: Threads para publicar e para pesquisar. Zernio para publicar os posts e para enviar as respostas a comentários. O conector nativo do Threads serve só para pesquisa, curtidas e tendências, porque o Zernio não lê curtidas nem tendências.
Horários, fuso America/Bahia: pesquisa de pauta quente às 06:00. Entrega dos 6 rascunhos às 07:00, para aprovar de uma vez só de manhã. Publicação nos horários fixos: slot 1 às 09:30, slot 2 às 11:30, slot 3 às 14:30, slot 4 às 17:00, slot 5 às 19:30, slot 6 às 21:00. Respostas a comentários em duas rodadas: 12:30 e 20:30.
Como tem que funcionar:
- Todo dia de manhã, pesquisar pauta quente, começando pelo que eu curti, depois tendências e notícias, e me entregar 6 rascunhos, 4 de venda e 2 autênticos, sempre com a minha opinião de empresário. Ordem fixa: 1 vendas, 2 autêntico, 3 vendas, 4 autêntico, 5 vendas, 6 vendas. Cada rascunho tem no máximo 500 caracteres.
- Ordem das fontes de pauta quente: primeiro os likes novos que eu dei, depois as tendências, depois a busca por palavra na aba recente e no feed Para Você, depois notícias do dia na web. Notícia e política ficam fora. Os likes são o banco de treinamento vivo: só valem os likes a partir da data que você definir, e o preparo das 07:00 confere os novos, usa só os não usados e anota os usados num arquivo.
- Eu aprovo os 6 de uma vez só, de manhã, e a publicação sai nos horários fixos, sem publicar nada sem a minha aprovação do dia. A aprovação de um dia não vale para o outro. Os textos aprovados do dia vivem num arquivo com data, slot, texto exato e status, e o cron de publicação lê de lá. Sem retry automático, sem pular para o próximo texto se um falhar, sem republicar o que já saiu.
- Post de venda usa dor universal, nunca só o universo dos meus clientes. Post autêntico é vida real pura, sem cliente e sem venda, sem amarrar no final. Nunca aula técnica, nunca moralizar, nunca estragar a piada.
- Estilo: frases curtas em linhas separadas, com o meu jeito de falar no fecho, sotaque regional leve, sem caricatura. O final nunca é igual e sempre fica colado na última palavra, sem espaço. Varie sempre, e nunca feche todo post com o mesmo riso separado. Nunca usar me contavei como fecho padrão.
- Responder os comentários em duas rodadas por dia, com rascunhos para eu aprovar de uma vez, e publicar só os aprovados, pelo Zernio. Antes de escrever qualquer resposta, ler o post inteiro e a conversa inteira como leitor, e conferir se a resposta faz sentido com o comentário e com as frases anteriores da conversa. Uma resposta por comentário, um tema por resposta, curta, espelhando as palavras e o tom de quem comentou.
- Em cada lote de respostas, no mínimo 15 variáveis diferentes de pergunta, uma por comentário, sem repetir estrutura, e continuar variando acima de 15. A pergunta padrão é sobre benefício e diferença: o que resolve e o que fez de diferente dos genéricos. Pergunta de dinheiro só em uns 40% das perguntas do lote, nunca como padrão. Nunca repetir o nome próprio do app ou do projeto 2 vezes na mesma resposta, diga 1 vez só. O fecho fica sempre colado na última palavra. Antes de cada lote, auditar os fechos dos últimos dias e criar variações novas, variando a posição e a forma, e deixando muitas respostas sem o fecho padrão.
- Uma pauta quente grande entra no dia como extra entre os horários fixos, nunca trocando um post fixo.
- Objetivo: curtidas e interações, viralizar. Cada post pede resposta. Nunca pesquisar e entregar na mesma hora.
Formato da notificação no chat: ✅ Kézia > [o que foi entregue na rodada] quando terminar, 🟨 Kézia > [o que precisa de você] quando precisar de você, 🟥 Kézia > [o erro exato e o que resolver manualmente] quando falhar. A bot que prepara e publica se chama Kézia. Cada rodada empurra o status no escritório, com detalhe curto e genérico, nunca com o texto do post no detalhe.
O que nunca fazer sem a minha aprovação explícita: nunca publicar post sem a aprovação daquela manhã, nunca publicar resposta sem aprovação, nunca mudar um texto aprovado, o horário, a proporção ou o tamanho da rodada. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Threads, se ainda não tiver, e deixe o perfil público. Peça ao Muse para conectar o Threads e o Zernio, seguindo o fluxo de autorização na tela. As chaves vão para o cofre seguro do Muse. Nunca cole chave no chat.
2. Defina com o Muse os seus horários fixos, a proporção de posts de venda e autênticos, o seu tom de voz e os seus perfis âncora, que são os criadores que bombam no seu nicho e servem de referência. Defina também a data a partir da qual os seus likes valem como treino.
3. Peça ao Muse para preparar os 6 rascunhos de um dia de teste, e confira um por um: proporção certa, ordem certa, até 500 caracteres, tom certo, final variado e colado na última palavra.
4. Aprove os 6 do teste e peça ao Muse para publicar um slot, conferindo se o post saiu com o texto exato.
5. Só ligue a rotina diária quando aprovar o teste.
Inscritos e divulgação de aulas
antes de cada aula, te diz quantos inscritos tem e quem são, e durante a semana divulga a aula no grupo e por mensagem privada para quem confirmou.
Quero uma automação para as minhas aulas, que me diga quem se inscreveu e faça a divulgação da semana.
Ferramentas: Luma para a agenda das aulas e a lista de inscritos, com o MCP oficial do Luma. WhatsApp via Evolution API para a divulgação no grupo e as mensagens privadas.
Horários, fuso America/Bahia: relatórios de inscritos na véspera às 22:00, olhando o dia seguinte, e no dia da aula às 08:00 e 12:00. Só quando há aula no dia olhado. Dia sem aula é silêncio.
Como tem que funcionar:
- Na véspera e no dia da aula, me dizer quantos inscritos tem e listar os nomes. O relatório só sai quando há aula no dia verificado.
- Formato exato do relatório de inscritos, com os seus dados no lugar dos colchetes:
🏁 [ONLINE|PRESENCIAL] [nome da sua aula]
[dia da semana] - [HHhMM]
Inscritos: *[N]* ✅
[Nome 1]
[Nome 2]
- Com zero inscritos, o número vai com 🔴 e no lugar dos nomes vai a frase: Ninguém inscrito ainda.
- Acesso: o MCP oficial do Luma mais você como administrador do calendário, nas configurações de administradores, por e-mail. Ser anfitrião de um evento só não basta. Página pública não mostra lista nem número para visitante deslogado, e página vazia pode ser zero inscritos, não lista oculta. Só o acesso de administrador tira a dúvida.
- Divulgação semanal: toda segunda, às 09:00, o Muse me pergunta se a aula da semana está confirmada e qual é o tema, com lembrete a cada 2 horas até eu responder. Nada dispara sem eu aprovar o plano da semana, com textos e horários exatos.
- Depois de aprovado, a sequência é: terça com o aviso principal mais a enquete, que é a única da semana, terça meio-dia reforço, terça noite reforço, quarta manhã e noite, quinta manhã último chamado. Horários nunca redondos. Sem local nem link nas mensagens, no máximo o nome do local.
- Mensagem privada semanal: toda quinta, só a partir da enquete da semana no WhatsApp, ignorando o Luma. Às 07:36 e 12:22, só para quem votou sim, com um envio a cada 65 segundos. Quem responder na mensagem da manhã que não vai é tirado da rodada do meio-dia.
- Os dias de aula variam de semana para semana, e eu vou te dizer os dias. Só mandar mensagem quando houver aula.
Formato da notificação no chat: uma mensagem só por rodada, no padrão ✅ Luma > [o que foi entregue] quando terminar, 🟨 Luma > [o que precisa de você] quando precisar de você, 🟥 Luma > [o erro exato e o que resolver manualmente] quando falhar. O bot da divulgação se chama Luma.
Regras de falha, retry e escalada: se o envio falhar, o bot vai para erro no escritório. Tentar de novo em 10 minutos e depois em 1 hora, sem nunca duplicar. Se as 3 tentativas falharem, avisar no chat com o erro exato e o que resolver manualmente.
O que nunca fazer sem a minha aprovação explícita: nunca divulgar sem eu aprovar o plano da semana, nunca mandar mensagem quando não há aula, nunca mandar mensagem privada para quem não votou sim na enquete. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta no Luma, se ainda não tiver, e crie o calendário das suas aulas. Peça ao dono do calendário para te colocar como administrador, nas configurações de administradores, por e-mail.
2. Peça ao Muse para conectar o Luma e o WhatsApp, seguindo o fluxo de autorização na tela. As chaves vão para o cofre seguro do Muse. Nunca cole chave no chat.
3. Passe ao Muse os dias e horários das suas aulas, o grupo de divulgação e o nome do local.
4. Peça ao Muse para gerar o relatório de inscritos de uma aula que já aconteceu, e confira o formato: título, dia e hora, número de inscritos e nomes, um por linha.
5. Peça ao Muse para montar o plano de uma semana de teste, com textos e horários, e só aprove quando ler tudo.
6. Só ligue a rotina quando aprovar o relatório de teste e o plano da semana.
Avisos de agenda
todo dia de manhã, lê sua agenda e só te avisa do que foge da rotina, pedindo confirmação e lembrando até você responder.
Quero uma automação que me avise todo dia de manhã só do que foge da minha rotina na agenda.
Ferramentas: Google Calendar para a agenda. O aviso chega no chat comigo.
Horários, fuso America/Bahia: leitura todo dia às 06:00. Confirmação pedida até as 11:00. Lembretes de 2 em 2 horas até eu responder que vi.
Como tem que funcionar:
- Ler a minha agenda todo dia de manhã e ignorar os compromissos fixos da semana, que eu vou te listar.
- Avisar só o que é diferente, com data e hora, numa única mensagem. As tarefas vão separadas por " / " na mesma mensagem.
- Pedir confirmação até o horário que eu definir, e lembrar de 2 em 2 horas até eu responder que vi, confirmo ou ciente.
- Dia sem nada fora da rotina é silêncio, nenhuma mensagem.
- Feriado não avisa. Aniversário avisa.
- Exemplo de aviso, com os seus dados no lugar dos colchetes: Bom dia! Hoje foge da rotina: [compromisso 1 às HH:MM] / [compromisso 2 às HH:MM]. Me confirma que viu até as 11:00?
Formato da notificação no chat: o aviso é a própria mensagem. ✅ Helena > [avisos do dia entregues] quando entregar, 🟨 Helena > [o que precisa da sua confirmação] quando estiver esperando confirmação, 🟥 Helena > [o erro exato e o que resolver manualmente] quando falhar. A bot dos avisos se chama Helena.
O que nunca fazer sem a minha aprovação explícita: nunca mandar aviso de compromisso fixo da rotina, nunca mandar aviso em dia sem nada fora da rotina, nunca inventar compromisso, data ou hora. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Peça ao Muse para conectar o seu Google Calendar, seguindo o fluxo de autorização na tela. A chave vai para o cofre seguro do Muse. Nunca cole chave no chat.
2. Passe ao Muse a sua rotina fixa da semana, dia por dia, com os compromissos que nunca devem gerar aviso, e o horário limite da confirmação.
3. Peça ao Muse para testar com um dia real, e confira se o aviso trouxe só o que foge da rotina, com data e hora certas, e nada da rotina fixa.
4. Responda que viu e confira se os lembretes param.
5. Só ligue a rotina das 06:00 quando aprovar o teste.
WhatsApp sem resposta
vigia suas conversas no WhatsApp e te avisa quando alguém está há mais de 3 horas esperando resposta, com um rascunho pronto para você copiar.
Quero uma automação que me avise quando eu deixar alguém no vácuo no WhatsApp.
Ferramentas: WhatsApp via Evolution API para ler as conversas e para reagir e avisar. Transcrição de áudio e leitura de imagem para entender o contexto.
Horários, fuso America/Bahia: vigia o tempo todo, com checagem a cada 10 minutos. Avisos só entre 07h e 23h. O que acumular de noite vai para as 07h da manhã, tudo junto.
Como tem que funcionar:
- Vigiar só as conversas individuais, nunca grupos. Avisar quando a última mensagem da outra pessoa estiver há mais de 3 horas sem resposta minha. Reavisar a cada 2 horas, às 3h, 5h, 7h, 9h, até eu responder de fato.
- Cada pendência confirmada vira UMA mensagem no grupo de avisos que eu vou te passar, no modelo exato, com os seus dados no lugar dos colchetes:
wa.me/[dígitos] - Há [Xh] no vácuo
[resumo em 1 a 2 linhas]
-=-=-=-=-
[rascunho pronto para copiar]
-=-=-=-=-
- Uma mensagem por pendência, com 65 segundos entre envios. O conteúdo do aviso nunca volta para o chat comigo.
- Se a conversa for só agradecimento, despedida ou confirmação, sem pergunta aberta e sem ação pendente, não avisar e marcar como resolvido. Exemplos de encerramento: obrigada, valeu, show, ok, beleza, tchau, boa noite, a gente se fala, te aviso, vou ver e te falo, falamos amanhã, depois combinamos, vou pensar, qualquer coisa me chama.
- Regra do coraçãozinho: reagir SEMPRE com ❤️ a qualquer encerramento, mesmo temporário e vindo de qualquer uma das partes, desde que não haja pergunta aberta nem ação pendente, e marcar a conversa como resolvida. Essa é a única ação permitida no WhatsApp além de enviar o aviso no grupo.
- Quando eu responder alguém que já tinha sido avisado, reagir com ✅ NA MENSAGEM DE AVISO NO GRUPO, nunca na mensagem do cliente. Resposta normal sem aviso não reage.
- Adiamento não resolve. Se a minha última mensagem for vou ver, vou olhar ou te aviso, o relógio conta a partir do adiamento. Com 3 horas sem retorno, vira pendência de adiamento, com reaviso às 5h, 7h e 9h. Só resolve quando eu mandar a resposta real. O te aviso da OUTRA pessoa continua sendo encerramento temporário, com coraçãozinho, não adiamento.
- Se o contato mandar outra mensagem enquanto ainda pendente, o relógio recomeça a partir dessa mensagem, e ao cruzar 3 horas vira pendência nova.
- Contexto sempre: nunca resumir só a última mensagem. Ler as últimas 15 e reconstruir o fio, o que eu pedi, ofereci ou convidei e o que a pessoa respondeu, se aceitou, recusou, perguntou ou adiou, com sentimento e direção. Transcrever os áudios antes, quando a resposta responde a eles. Toda imagem da última mensagem é baixada e lida, e o aviso descreve o conteúdo e lê o texto da imagem, comprovante, print, arte ou documento. Vídeo continua só com a legenda visível.
- Treino: sempre que eu respondo um contato acompanhado, guardar a versão final da minha resposta, com a situação e a data, e imitar o meu jeito nos exemplos mais próximos antes de montar qualquer rascunho.
- Se eu pedir para ignorar alguém, nunca mais avisar sobre essa pessoa. Mensagem nova dessa pessoa reabre o acompanhamento.
- Conversa com o meu próprio número, mensagem de robô ou pesquisa automática não é pendência. Se eu sou o último a falar e o contexto acabou, a conversa está resolvida, nunca é pendência.
Formato da notificação no chat: o aviso no grupo é a entrega. No chat comigo, só uma linha por rodada, no padrão 🟨 Alyla > [N] pendências avisadas no grupo. Quando eu respondo alguém avisado, ✅ Alyla > [nome] respondido, sem texto da conversa. A bot se chama Alyla.
O que nunca fazer sem a minha aprovação explícita: nunca mandar mensagem para o contato. As únicas ações permitidas no WhatsApp são reagir com ❤️ a encerramentos e enviar o aviso no grupo. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Peça ao Muse para conectar o seu WhatsApp, seguindo o fluxo de autorização na tela. A chave vai para o cofre seguro do Muse. Nunca cole chave no chat.
2. Crie um grupo só com você e a automação, só para os avisos, e passe o grupo ao Muse. Passe também quem ignorar, se houver alguém.
3. Peça ao Muse para rodar a vigia em modo de teste, só marcando as pendências, sem avisar no grupo. Confira se os limiares estão certos: 3 horas para virar pendência, reaviso a cada 2 horas, nada entre 23h e 07h.
4. Aprove um aviso de teste e confira o formato: link da conversa, há quanto tempo espera, resumo em 1 a 2 linhas e rascunho pronto.
5. Só ligue a vigia quando aprovar o teste. Comece só com as pendências novas, sem trazer o histórico antigo.
Minerador de ofertas
varre a Biblioteca de Anúncios por palavra-chave, pontua as ofertas que estão rodando há mais tempo e te entrega cada uma com promessa, números e os links para conferir.
Quero uma automação que minere ofertas na Biblioteca de Anúncios e me entregue as que estão escalando.
Ferramentas: Biblioteca de Anúncios do Meta, através de uma API na sua VPS que executa as buscas. Você é o cérebro, decide o que pesquisar, e a VPS só executa.
Horários, fuso America/Bahia: rotinas 2 vezes por dia, em rodízio de nichos. Defina com o Muse os seus nichos e os países antes de ligar.
Como tem que funcionar:
- Cada pedido tem até 12 buscas, com padrão de 300 anúncios por busca e 15 páginas, no máximo 10 ofertas por pedido e no mínimo 40 dias rodando. No máximo 8 pedidos em 24 horas, e no máximo 3 na fila.
- Para cada palavra-chave, minerar e validar uns 600 anúncios, com 2 buscas de 300 por termo: o termo sozinho mais o termo com gatilho de vídeo. Pegar várias ofertas por pedido, não só o topo.
- Para cada oferta, detectar se o anúncio usa vídeo, contar quantos anúncios ativos, há quantos dias o mais antigo está rodando, quantos são novos na semana e qual é a maior duplicação, e dar uma pontuação para ordenar as ofertas.
- Nunca entregar oferta só pelo número. Ler a legenda e os textos do anúncio e o destino, e concluir se a oferta vale a pena para você, pelos critérios que você definir com o Muse antes de ligar. Entrar no perfil do anunciante e analisar a página a fundo, não só um anúncio, e garantir que está tudo certo antes de entregar.
- Para cada oferta, me entregar a classificação, o nicho, a promessa em uma linha, os números, anúncios ativos, mais antigo em dias, novos na semana e maior duplicação, e o link da Biblioteca junto com o link do anunciante, que é o perfil do Instagram, o WhatsApp ou o site dele.
- O computador que executa a mineração precisa estar ligado. Se ele estiver fora, tentar de 2 em 2 horas. Se passar de 12 horas fora, me avisar uma vez.
- REGRA DURA: nunca usar o navegador no minerador, nem para conferir se o anúncio tem vídeo. A detecção de vídeo do sistema vale como está, com o risco conhecido de errar.
- Me entregar o resultado assim que a rodada terminar, sem eu precisar cobrar. Entrega neste chat.
Formato da notificação no chat: uma entrega por oferta, com classificação, nicho, promessa, números e link da Biblioteca, sempre junto com o link do anunciante. ✅ Minerador > [N] ofertas na rodada quando terminar. 🟨 Minerador > [o que precisa de você] quando precisar de você. 🟥 Minerador > [o erro exato e o que resolver manualmente] quando falhar.
O que nunca fazer sem a minha aprovação explícita: nunca abrir o link do anunciante no navegador, nunca inventar número, nunca entregar oferta só pelo número. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Monte a sua VPS, se ainda não tiver, e suba a API que executa as buscas na Biblioteca de Anúncios. Peça ao Muse para conectar a API, seguindo o fluxo seguro. O token de acesso é transitório, pedido na hora e nunca impresso nem salvo.
2. Defina com o Muse os seus nichos, as palavras-chave de cada um e os seus critérios de o que é uma boa oferta para você, antes de ligar. Esses critérios são seus: o Muse só aplica o que você definir.
3. Peça ao Muse para rodar uma busca avulsa com uma palavra, que devolve uns 30 anúncios da busca, sem análise funda, só para testar.
4. Confira as ofertas do teste: classificação, nicho, promessa, números, com o link da Biblioteca e o link do anunciante.
5. Só ligue as rotinas quando aprovar o teste.
Prospecção de empresas no Google Maps
todo dia, busca empresas de um país no Google Maps, qualifica quem tem site e telefone e te entrega os leads prontos para abordar.
Quero uma automação que prospecte empresas no Google Maps e me entregue leads qualificados todo dia.
Ferramentas: ferramenta de prospecção no mapa, com o MCP da ferramenta, e Apify para a busca. Gerenciador de leads para guardar os leads.
Horários, fuso America/Bahia: cron todo dia por volta das 21h, com 15 leads qualificados novos por dia, trabalhando até bater 15.
Como tem que funcionar:
- Buscar empresas por nicho e região, num país por vez, que você vai definir, e na moeda daquele país. O sorteio usa só o país, sem travar nicho, modificador, estado ou cidade, porque travar a cidade quebra a busca.
- Qualificado é só quem tem site e telefone. O resto é descartado. Conferir anúncios está desligado.
- Cada rodada busca até 30 resultados por vez, e faz até 8 rodadas por dia se precisar para bater os 15 leads.
- Me entregar os leads no gerenciador, sem mandar mensagem nenhuma para elas. Eu confiro os leads no aplicativo da ferramenta quando quiser. Não crie arquivo de log de leads.
- Verificar o saldo da ferramenta de busca antes de minerar. Se restar menos de US$ 0,20, não minerar e me avisar que precisa renovar. O plano gratuito da ferramenta tem crédito limitado por ciclo, e o que sobra não acumula para o ciclo seguinte. Sem crédito, o bot fica parado com o status Aguardando renovação do crédito.
- Conferir antes e depois de minerar, com o resumo do pipeline e a lista de leads, sem recontar lead já salvo e sem inventar número.
Formato da notificação no chat: uma mensagem por rodada, sem nome de lead e sem cidade. ✅ Reison > [N] leads prospectados em [país] estão no CRM! quando terminar. 🟨 Reison > [o motivo, ou que o crédito acabou] quando precisar de você. 🟥 Reison > [o erro exato e o que resolver manualmente] quando falhar. O bot da prospecção se chama Reison. Cada rodada empurra trabalhando no início e pronto no fim no escritório, com detalhe genérico, e erro se falhar.
O que nunca fazer sem a minha aprovação explícita: nunca mandar mensagem para os leads por conta própria, nunca inventar número de lead, nunca minerar sem saldo. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie uma conta na ferramenta de busca, se ainda não tiver, no plano gratuito, sem cartão. Peça ao Muse para conectar a ferramenta e o seu gerenciador de leads, seguindo o fluxo de autorização na tela. As chaves vão para o cofre seguro do Muse. Nunca cole chave no chat.
2. Defina com o Muse o país, os nichos e a quantidade por dia: 15 leads qualificados, com site e telefone.
3. Peça ao Muse para rodar uma rodada de teste com um nicho, e confira os leads no gerenciador: nome, site, telefone e o que a empresa faz.
4. Confira o saldo antes e depois do teste, e confira se nenhum lead foi contado duas vezes.
5. Só ligue a rotina das 21h quando aprovar o teste.
Tráfego pago
conecta nas suas contas de anúncio, te mostra gasto e resultado e te ajuda a decidir o que cuidar primeiro.
Quero uma automação que acompanhe as minhas contas de anúncios pagos e me reporte gasto e resultado.
Ferramentas: Meta Ads, pela API oficial do Meta Graph e pelo MCP do Meta. A chave de acesso fica no cofre seguro, nunca no chat.
Horários, fuso America/Bahia: defina com o Muse antes de ligar: com que frequência o relatório sai e em que horário.
Como tem que funcionar:
- Conectar nas minhas contas de anúncio e listar cada conta com o status dela, quanto gastou e o que retornou.
- Me dizer qual conta cuidar primeiro, e se a prioridade é só acompanhar e relatar ou mexer nas campanhas. Essa decisão é minha, e a automação só me entrega o quadro para eu decidir.
- Me reportar em formato curto, com gasto, resultado e o que precisa da minha decisão. Defina com o Muse o formato do relatório antes de ligar.
- O bot que cuida do tráfego se chama Abraão, e cada conta tem a moeda dela.
Formato da notificação no chat: uma mensagem por rodada, no padrão ✅ Abraão > [resumo da rodada: gasto e resultado por conta] quando terminar, 🟨 Abraão > [o que precisa da sua decisão] quando precisar de você, 🟥 Abraão > [o erro exato e o que resolver manualmente] quando falhar.
O que nunca fazer sem a minha aprovação explícita: nunca criar, pausar ou mudar campanha, nunca mexer em orçamento, nunca tocar em público, sem a minha aprovação explícita naquela ação. Nunca inventar gasto, resultado ou retorno. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Vincule a sua conta do Facebook na central de contas, se ainda não estiver vinculada, e guarde o token do Meta no cofre seguro. Nunca cole o token no chat.
2. Peça ao Muse para conectar o Meta Ads, seguindo o fluxo de autorização na tela.
3. Peça ao Muse para listar as contas encontradas, com o status e a moeda de cada uma, sem mexer em nada.
4. Defina com o Muse qual conta cuidar primeiro, se a prioridade é só acompanhar ou mexer nas campanhas, e o formato e a frequência do relatório.
5. Peça ao Muse para gerar um relatório de teste de uma conta, e confira gasto e resultado contra o painel do Meta.
6. Só ligue a rotina quando aprovar o teste. Nada de mexer em campanha sem a sua aprovação explícita em cada ação.
Backup diário
todo dia de madrugada, junta tudo, memória, regras, agendamentos, habilidades e conectores, num zip só, e guarda no Drive mantendo os 2 últimos.
Quero um backup diário de todas as minhas automações, conversas, memória, agendamentos, agentes e conexões, num zip só por dia.
Ferramentas: um script de backup no seu computador e o Google Drive para guardar o zip.
Horários, fuso America/Bahia: todo dia de madrugada, por volta das 02:11.
Como tem que funcionar:
- Todo dia de madrugada, gerar um zip com a memória, as regras, os agendamentos, as habilidades, os conectores e o workspace, sem nada regenerável e sem mídia. O objetivo é que outra inteligência artificial consiga ler o zip e reconstruir as automações.
- Nunca colocar segredo no zip: nenhum token, senha, chave, arquivo de ambiente, certificado ou chave SSH. Se o script achar um segredo, ele aborta e não gera o zip.
- Dentro do zip, deixar um arquivo explicando para outra inteligência artificial ler primeiro, um manifesto com tudo que está dentro e um arquivo com o hash de cada arquivo, para conferir integridade.
- O histórico completo das conversas não vai no zip, porque fica no banco da plataforma, sem exportação. Vai só o índice das conversas. Os logs de execução e as pastas regeneráveis também ficam fora.
- Subir o zip para uma pasta no meu Google Drive, manter só os 2 últimos, hoje e ontem, e mandar o mais antigo para a lixeira, nunca apagar para sempre, e só depois de confirmar o upload do dia. O upload pede a minha aprovação no cartão a cada vez.
- Manter os últimos 7 zips no local.
- Rotina silenciosa quando dá certo. Se falhar, avisar no chat do backup com o erro.
Formato da notificação no chat: nada quando dá certo. Se falhar, 🟥 Backup > [o erro exato e o que resolver manualmente] no chat do backup.
O que nunca fazer sem a minha aprovação explícita: nunca colocar segredo no zip, nunca apagar o zip antigo para sempre, nunca subir para o Drive sem a minha aprovação no cartão. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Peça ao Muse para conectar o seu Google Drive, seguindo o fluxo de autorização na tela. Crie a pasta do backup no Drive e anote o nome dela.
2. Defina com o Muse o que entra no zip e o que fica fora, e o horário da madrugada.
3. Peça ao Muse para gerar o primeiro zip e abrir o manifesto com você, conferindo o que está dentro e confirmando que não há segredo nenhum.
4. Peça ao Muse para testar o upload no Drive e confira se o zip chegou na pasta certa.
5. Só ligue a rotina diária quando aprovar o primeiro zip e o teste de upload.
Acompanhamento de voos
acompanha os seus voos, faz o check-in automático quando abre e te lembra de conferir o cartão de embarque e mandar para o passageiro.
Quero uma automação que acompanhe os meus voos, faça o check-in automático e me lembre do cartão de embarque.
Ferramentas: o site da companhia aérea, na área de Minhas Viagens, e o Gmail para os e-mails da companhia.
Horários, fuso America/Bahia: o check-in automático roda quando abre, 48 horas antes de cada voo. Lembrete na manhã do dia do check-in, por volta das 08:00, e lembrete no dia do voo, por volta das 15:30, para conferir se o cartão chegou e mandar para o passageiro. Defina os horários exatos com o Muse antes de ligar.
Como tem que funcionar:
- Acompanhar voos de ida e volta, diretos, só com bagagem de mão, com os nomes completos dos passageiros e os documentos conferidos no sistema da companhia antes de viajar.
- Fazer o check-in automático quando abre, 48 horas antes de cada voo, e pegar o cartão de embarque no botão de cartão de embarque em Minhas Viagens.
- Lembrar na manhã do dia do check-in para conferir se o cartão chegou e mandar para o passageiro, e lembrar de novo no dia do voo.
- O e-mail de confirmação da compra pode não chegar. Não conte com ele. Busque o cartão em Minhas Viagens, na caixa de entrada e no spam.
- O contato da reserva é o e-mail e o WhatsApp do passageiro, para ele receber as notificações da companhia.
- Exemplo de lembrete, com os seus dados no lugar dos colchetes: 🟨 Voos > Check-in da ida abre hoje às [HH:MM]. Voo [código] [origem] para [destino], [DD/MM] às [HH:MM]. Confere se o cartão chegou e manda para [nome do passageiro]?
- Defina com o Muse o que mais monitorar antes de ligar: mudança de horário, mudança de portão e cancelamento.
Formato da notificação no chat: ✅ Voos > [check-in feito, cartão disponível] quando o check-in sair, 🟨 Voos > [o que precisa de você, com o voo e o horário] quando precisar de você, 🟥 Voos > [o erro exato e o que resolver manualmente] quando falhar.
O que nunca fazer sem a minha aprovação explícita: nunca comprar passagem, nunca mudar voo, nunca mandar o comprovante com preço para o passageiro. O comprovante com preço e o localizador nunca vão para o passageiro. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Compre a passagem direto no site da companhia, e confira no sistema dela os nomes completos e os documentos dos passageiros.
2. Peça ao Muse para conectar o seu Gmail, seguindo o fluxo de autorização na tela, para acompanhar os e-mails da companhia.
3. Passe ao Muse os voos, com código, origem, destino, data e hora de cada trecho, e o contato do passageiro.
4. Peça ao Muse para montar o check-in automático e os lembretes, e confira se os horários estão certos: check-in 48 horas antes, lembrete na manhã do check-in e lembrete no dia do voo.
5. Teste o fluxo com um voo que já aconteceu, conferindo se o lembrete traria os dados certos.
6. Só ligue a rotina quando aprovar o teste.
Radar de ofertas do shopping
varre as promoções de um shopping de 6 em 6 horas e só te avisa quando aparece novidade de verdade.
Quero uma automação que vigie as promoções de um shopping e só me avise quando tiver novidade.
Ferramentas: busca na web para as promoções e o Muse para comparar com a lista do que já existe.
Horários, fuso America/Bahia: rodadas a cada 6 horas, às 08h, 14h e 20h. Resumo diário às 22:10, quando o dia não teve novidade. Dia com novidade não recebe resumo duplicado.
Como tem que funcionar:
- Pesquisar promoções, cupons, cashback, combos, brindes, liquidações, benefícios de apps e cartões, eventos, novas lojas e inaugurações em todo o shopping, com prioridade alta para alimentação.
- Comparar com a lista do que já existe e só me alertar quando for novidade de verdade, contra a lista base. Nunca repetir a mesma oferta a cada checagem.
- Dizer em que nível a oferta está: A, confirmada no shopping, B, nacional sem confirmação local, ou C, o shopping não participa.
- Exemplo de aviso, com os seus dados no lugar dos colchetes:
🚨 RADAR [NOME DO SHOPPING]
[Loja]: [oferta, com o preço publicado]
Nível: [A, B ou C]
[Fonte: onde foi confirmado]
- Nunca inventar preço que não foi publicado. Preço de prateleira sem publicação online não é detectável, e o radar diz isso quando for o caso.
- Uma vez por dia, se não houve novidade, me mandar um resumo curto dizendo que não teve nada.
Formato da notificação no chat: ✅ Byanka > [novidade ou resumo do dia] quando houver novidade ou resumo, 🟥 Byanka > [o erro exato e o que resolver manualmente] quando a checagem falhar. A bot do radar se chama Byanka.
O que nunca fazer sem a minha aprovação explícita: nunca inventar preço ou promoção, nunca repetir a mesma oferta, nunca avisar sem novidade real. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Passe ao Muse o shopping, com o endereço, e as lojas prioritárias, começando pela alimentação.
2. Peça ao Muse para montar a lista base do que já existe hoje, com as promoções atuais, e confira a lista com o que você sabe do shopping.
3. Peça ao Muse para rodar uma rodada de teste e confira se só trouxe novidade de verdade, com o nível A, B ou C certo, e sem inventar preço.
4. Só ligue as rodadas de 6 em 6 horas quando aprovar o teste.
Sensor de saúde do WhatsApp
vigia a conexão do WhatsApp de 5 em 5 minutos e te avisa na hora quando ela para de receber mensagem, antes de você perceber que ficou sem atender ninguém.
Quero um sensor que vigie a saúde da minha conexão de WhatsApp e me avise quando ela parar de receber mensagens.
Ferramentas: Evolution API para o WhatsApp. Um sensor leve, fora do Muse, que só acorda o Muse quando encontra um problema real. O sensor não gasta token do Muse por checagem.
Horários, fuso America/Bahia: checagem a cada 5 minutos, todos os dias. Alerta só em horário comercial, que você vai definir.
Como tem que funcionar:
- A cada 5 minutos, o sensor confere a última mensagem recebida na conexão do WhatsApp.
- Se a conexão ficar 3 horas sem receber nada em horário comercial, avisar no chat com a hora da última mensagem recebida.
- Se uma mensagem demorar mais de 30 minutos para chegar, avisar no chat com o atraso e a hora que ela era esperada.
- O sensor só vigia e avisa. Ele nunca reinicia, nunca diagnostica e nunca muda nada na conexão sozinho. Reiniciar ou mexer na conexão é decisão sua, depois do aviso.
- Para reiniciar a conexão, use o endpoint oficial de restart da Evolution API ou a atualização forçada do serviço, e depois confira que existe só 1 container rodando. Nunca reinicie com docker restart.
- Pegadinha da Evolution API que o Muse precisa respeitar: as mensagens ficam gravadas sob o LID, não sob o número de telefone. Buscar pelo número de telefone devolve vazio. Busque a mensagem pelo id dela ou pelo LID.
Formato da notificação no chat: 🟥 [bot] > WhatsApp sem receber há [tempo], última mensagem às [HH:MM]. Confira a conexão. Quando voltar, ✅ [bot] > WhatsApp recebendo de novo, última mensagem às [HH:MM].
Regras de falha, retry e escalada: se o sensor não conseguir checar, ele tenta na próxima rodada de 5 minutos, sem avisar. Se 3 checagens seguidas falharem, avisar no chat que o sensor não está conseguindo checar, com o erro exato. Nunca mandar o mesmo aviso duas vezes para o mesmo silêncio.
O que nunca fazer sem a minha aprovação explícita: nunca reiniciar a conexão, nunca mudar imagem ou versão, nunca apagar mensagem, nunca inventar que a conexão voltou. Não use nenhum dado meu que eu não tenha te passado.
Primeira vez: passo a passo
1. Crie a sua instância na Evolution API, se ainda não tiver, e conecte o seu número de WhatsApp nela.
2. Peça ao Muse para montar o sensor leve, fora do Muse, que lê a última mensagem recebida a cada 5 minutos.
3. Defina com o Muse o horário comercial do alerta, o limiar de 3 horas de silêncio e o limiar de 30 minutos de atraso.
4. Peça ao Muse para testar o sensor com um silêncio simulado e confira se o aviso chega no chat com a hora certa da última mensagem.
5. Só ligue o sensor quando aprovar o teste. Depois de ligar, qualquer reinício da conexão é decisão sua, o sensor só avisa.
Instalar a Evolution API e conectar o WhatsApp no Muse
instala a Evolution numa VPS tua, te leva até conectar o número pelo QR code e deixa o Muse lendo o teu WhatsApp quando tu pedir.
Quero instalar a Evolution API numa VPS minha, conectar um número de WhatsApp pelo QR code e deixar você lendo as conversas desse número quando eu pedir.
Receita da Ratos de IA, adaptada para o Muse. Passo a passo pra implementar com o teu agente.
Esta receita coloca o WhatsApp no alcance do teu agente. O teu Muse instala a Evolution API numa VPS tua, te leva pelo painel até conectar um número pelo QR code e, no fim, ganha uma skill pra ler as conversas desse número quando tu pedir. Tudo conduzido por ele, uma etapa por vez.
No fim, tu vai ter:
- a Evolution rodando no teu servidor, com HTTPS e ligando sozinha se a VPS reiniciar. As conversas ficam guardadas num banco teu, não no de terceiro
- o painel (manager) pra conectar e reconectar números lendo o QR code, com uma senha-mestra que só tu tem
- o teu agente lendo o WhatsApp: "o que o fulano mandou?", "resume as conversas de hoje", "quem ficou sem resposta?". Ele só manda mensagem com o teu ok, uma de cada vez, nunca em massa
- a porta aberta pras automações: a receita mostra onde ligar um n8n ou um agente de atendimento depois
Antes de começar:
- uma VPS zerada, com Ubuntu 24.04. Se tu não tem, o agente te indica a Contabo com o nosso cupom (o plano mais barato já serve)
- um número de WhatsApp pra conectar. O ideal é um chip só pra isso ou um número secundário, não o teu pessoal
- o Muse aberto
- uns 30 minutos
Um aviso honesto: a Evolution não é a API oficial do WhatsApp. Ela funciona como um WhatsApp Web ligado no servidor. Pra ler conversas e mandar uma mensagem aqui e outra ali, é tranquilo. Disparo em massa leva o número a bloqueio, e a receita proíbe o agente de fazer isso.
Como usar esta receita:
- Abre o teu Muse
- Cola este prompt nele
- Ele conduz o resto. Tu contrata a VPS, roda os dois comandos que pedem senha e lê o QR code com o celular. O resto é com ele
Já instalou e o número caiu? Cola o mesmo prompt e diz o que precisa ("ler o QR de novo", "conectar outro número"). A receita tem uma parte só pra isso.
Pra você, Muse. O usuário te mandou esta receita pra instalar a Evolution API (o programa que conecta números de WhatsApp a automações) numa VPS dele, entrar no painel, conectar um número e deixar você lendo as conversas dele. A receita só termina quando você leu, de verdade, uma mensagem que chegou nesse número. Siga as etapas em ordem, uma por vez. Em cada etapa: diga em uma frase o que vai fazer, faça (ou peça pra ele fazer), confirme que deu certo e só então passe pra próxima. Não despeje a receita inteira na tela.
Os arquivos que você instala (o instalador, a skill e o script dela) você baixa dos links desta receita, nunca digita nem copia de memória.
Se ele já instalou e voltou só pra uma coisa (criar instância, ler o QR de novo, ligar outro número, te dar a chave), pule direto pra seção Depois de instalado, no fim.
Regras que valem do começo ao fim:
- Fale como gente. VPS é "o servidor", instância é "um número conectado", container é "parte do programa". Se precisar de um termo técnico, explique uma vez e use sempre o mesmo.
- Uma etapa por vez, com confirmação. Nunca pule etapa porque "já deve estar ok": confira.
- Conta, servidor e número são do usuário. Ele contrata a VPS e escolhe o número. Você nunca compra nada por ele.
- Chave não aparece no chat. A chave global da Evolution e o token de cada número nunca são mostrados, copiados pra arquivo de projeto nem mandados pra lugar nenhum. Quando ele precisar ver uma chave, ele roda o comando no terminal dele. Quando ele colar uma chave no chat sem querer, avise e siga.
- Comando que pede senha ou interação (primeiro acesso ao servidor, por exemplo): peça pro usuário rodar no terminal dele e te avisar quando terminar. Se ele não souber abrir: Mac: Cmd+Espaço, digite "Terminal", Enter. Windows: tecla Windows, digite "PowerShell", Enter. No VS Code: menu Terminal, Novo Terminal.
- Evolution não é a API oficial do WhatsApp. Funciona como um WhatsApp Web ligado no servidor. Mensagem em massa, pra lista ou pra quem não conhece o número leva a bloqueio. Você nunca dispara mensagem em lote, e só manda mensagem avulsa com o ok dele pra aquela mensagem.
- Deu erro que você não entende: diga o que aconteceu em uma frase e pergunte se ele quer que você investigue. Nunca trave mudo.
Etapa 0: entender onde estamos
Rode, sem pedir licença (só leem, não mudam nada):
```
uname -s 2>&1 || ver
ssh -V 2>&1
ls ~/.ssh/ 2>&1
ls ~/.claude/credentials/evolution.env 2>&1
python3 --version 2>&1 || python --version 2>&1
```
Guarde duas coisas:
- Qual sistema operacional: Mac (Darwin), Linux ou Windows. Muda alguns comandos.
- Já tem evolution.env? Se tem, ele já instalou antes: pergunte se quer instalar de novo ou se veio pra seção Depois de instalado.
Se `ssh -V` não respondeu no Windows: "Falta o cliente de SSH do Windows. Vai em Configurações, Sistema, Recursos opcionais, Adicionar recurso, procura Cliente OpenSSH e instala. Depois fecha e abre o agente de novo."
Diga o plano em uma linha: "São 6 etapas, uns 20 minutos: o servidor, o acesso a ele, a instalação, o painel, o número e a sua chave pra mim."
Etapa 1: o servidor (VPS)
"Você já tem uma VPS pra isso? Precisa ser uma zerada, sem site nem outro programa rodando."
- Não tem: recomende a Contabo, que é a que a gente usa, por este link: https://contabo.com/en/vps/cloud-vps-core-4?image=ubuntu.332&qty=1&contract=24&storage-type=ssd-storage-cloud-vps-core-4-default Mande o link exatamente assim, sem trocar por outro. Plano Básico (4 vCPU, 8 GB), que sobra pra Evolution e pras automações dele. Quanto mais meses no contrato, menor o preço por mês. Se ele preferir outra empresa, serve o equivalente: Ubuntu 24.04, 2 GB de memória ou mais. A Evolution usa uns 300 MB; o resto sobra pras automações. Na hora de escolher o sistema, Ubuntu 24.04 puro (sem painel, sem "aplicativo pré-instalado"). Peça pra ele definir uma senha de root e te avisar quando a VPS estiver pronta.
- Tem, mas já roda outra coisa (site, n8n, painel): tudo bem na maioria dos casos. Num servidor com várias coisas, um programa só fica com as portas 80 e 443 e entrega o HTTPS de cada endereço pro app certo (o "porteiro": Traefik, Nginx, Caddy). A Evolution entra nesse porteiro em vez de trazer outro: a Etapa 3 cuida disso. Só não dá pra plugar sozinho em servidor com painel que cuida de tudo (Easypanel, Coolify, Dokploy, cPanel, CyberPanel) nem na Ratoeira, ainda: aí, VPS separada.
Peça o IP da VPS (aparece no painel da hospedagem, algo como 187.12.34.56). Guarde. Daqui pra frente, IP nos comandos é ele.
Firewall do painel: algumas hospedagens têm um firewall na própria tela da VPS. Se ele estiver ligado, as portas 80 e 443 precisam estar liberadas (e a 22, do SSH). Na dúvida, peça pra ele olhar agora; é a causa número 1 do HTTPS não sair na Etapa 3.
Etapa 2: acesso ao servidor sem senha
Explique: "Vou criar uma chave neste computador pra entrar no servidor sem digitar senha. Você cadastra ela uma vez, e eu passo a conseguir rodar os comandos de instalação."
Se `ls ~/.ssh/` mostrou `id_ed25519.pub`, já existe chave: use ela. Senão, crie (não pede nada):
```
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519 -C "evolution"
```
No Windows, peça pra ele rodar no PowerShell `ssh-keygen -t ed25519 -C evolution` e apertar Enter nas três perguntas (deixa sem senha).
Agora ele cadastra a chave no servidor, porque pede a senha de root. Peça pra rodar no terminal:
Mac ou Linux:
```
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@IP
```
Windows (PowerShell):
```
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
Explique o que vai acontecer: "Ele pergunta se você confia no servidor: digita yes e Enter. Depois pede a senha de root da VPS (a tela não mostra o que você digita, é normal). Me avisa quando terminar."
Confira que entrou sem senha:
```
ssh -o BatchMode=yes -o ConnectTimeout=10 root@IP "echo conectado; lsb_release -ds 2>/dev/null || cat /etc/os-release | head -1"
```
- `conectado` + Ubuntu ou Debian: siga.
- `Permission denied`: a chave não foi cadastrada. Peça pra ele rodar o comando de novo, com atenção à senha.
- `Connection timed out`: IP errado, VPS desligada ou firewall do painel fechando a porta 22.
- Outro sistema (CentOS, AlmaLinux): "Esta receita é pra Ubuntu. Dá pra reinstalar a VPS com Ubuntu 24.04 no painel da hospedagem (apaga tudo que tem nela)." Pare até ele decidir.
Etapa 3: instalar a Evolution
Peça um e-mail pro certificado de segurança (o HTTPS): "Qual e-mail eu uso no certificado? Só recebe aviso se der problema na renovação."
Pergunte também se ele quer usar um domínio próprio (ex: zap.empresa.com.br). Se não, o instalador cria um endereço automático com o IP (evolution.187-12-34-56.sslip.io), que funciona na hora. Domínio próprio só se ele já tiver criado, no DNS do domínio, um registro A apontando pro IP da VPS. Na dúvida, siga com o automático: dá pra trocar depois rodando o instalador de novo.
O servidor baixa o instalador e roda (o mesmo comando no Mac, no Linux e no Windows):
```
ssh root@IP "curl -fsSL https://apps.dobralabs.com.br/receita-evolution/instalar-evolution.sh -o /root/instalar-evolution.sh && EMAIL='[email protected]' bash /root/instalar-evolution.sh"
```
Com domínio próprio, acrescente antes do `bash` (o segundo, depois do `&&`): `DOMINIO='zap.empresa.com.br'`.
Leva de 2 a 5 minutos (instala o Docker, baixa a Evolution, o banco e o certificado). Avise que está rodando. No fim ele imprime PRONTO e o endereço. Guarde o endereço: daqui pra frente, ENDERECO é ele (https://evolution....sslip.io).
O que o instalador deixou, pra você explicar em uma frase se ele perguntar: a Evolution, um banco (Postgres) onde ficam as conversas, um cache (Redis) e um porteiro (Traefik) que cuida do HTTPS. Tudo em /opt/evolution no servidor, ligando sozinho se a VPS reiniciar. Banco e cache não ficam abertos pra internet; só o HTTPS fica.
Se parou com PORTEIRO_EXISTENTE: o servidor já tem um porteiro, e ele diz quem é. Não é erro: siga "Servidor que já tem porteiro", logo abaixo, e volte pra conferir.
Se não imprimiu PRONTO:
- `o HTTPS ainda não respondeu`: quase sempre é firewall do painel fechando 80/443, ou domínio próprio que ainda não aponta pro IP. Peça pra ele conferir e rode o mesmo comando de novo (ele não troca as chaves).
Confira de fora:
```
curl -s ENDERECO/
```
Tem que voltar um texto com "Welcome to the Evolution API" e a versão 2.3.7.
Servidor que já tem porteiro
O instalador mostrou quem está nas portas 80 e 443. Descubra o resto você, sem mudar nada:
```
ssh root@IP "ss -tlnp | grep -E ':(80|443) '; docker ps --format '{{.Names}} {{.Image}} {{.Ports}}' 2>/dev/null"
```
Explique pra ele em uma frase: "Teu servidor já tem um programa cuidando do HTTPS (o X). Em vez de botar outro por cima, vou ligar a Evolution nele." Depois, conforme quem é:
Traefik em Docker (aparece um container com imagem `traefik`). Descubra o nome do container, o nome do certificado e o nome da entrada da porta 443:
```
ssh root@IP "docker inspect NOME_DO_CONTAINER --format '{{json .Args}}' | tr ',' '\n' | grep -E 'certificatesresolvers\.[^.]+\.|entrypoints\.[^.]+\.address'"
```
O certificado é o nome entre `certificatesresolvers.` e o ponto seguinte (ex: `le`, `letsencrypt`); a entrada é a que tem `address=:443` (ex: `websecure`). Se não aparecer nada, a configuração dele está num arquivo (`traefik.yml`): veja com `docker inspect NOME --format '{{json .Mounts}}'` onde ele está e leia. Rode o instalador de novo assim:
```
ssh root@IP "PORTEIRO=traefik TRAEFIK_CONTAINER=NOME TRAEFIK_CERTRESOLVER=CERTIFICADO TRAEFIK_ENTRYPOINT=ENTRADA EMAIL='[email protected]' bash /root/instalar-evolution.sh"
```
Ele liga o Traefik de lá na rede da Evolution e o HTTPS sai pelo certificado dele. Avise: se um dia ele recriar o container do Traefik (atualizar, mudar o compose dele), rode o instalador de novo, que religa.
Nginx ou Caddy instalados no servidor (aparece `nginx` ou `caddy` nas portas). A Evolution fica só dentro do servidor, numa porta interna, e o porteiro de lá leva o endereço até ela:
```
ssh root@IP "PORTEIRO=porta PORTA=8080 EMAIL='[email protected]' bash /root/instalar-evolution.sh"
```
Se a 8080 estiver ocupada, ele avisa: use outra (`PORTA=8090`). Ele termina com PRONTO (falta o porteiro). Aí, com o ok dele (é configuração de um programa que já atende outros sites):
- Caddy: confira se o `/etc/caddy/Caddyfile` é escrito à mão. Se começar com "Gerado por..." ou pertencer a outro programa, pare: editar ali se perde na próxima atualização dele. Se for à mão, acrescente no fim e recarregue (o Caddy tira o certificado sozinho):
```
ENDERECO_SEM_HTTPS {
reverse_proxy 127.0.0.1:PORTA
}
```
```
ssh root@IP "caddy validate --config /etc/caddy/Caddyfile && systemctl reload caddy"
```
- Nginx: crie `/etc/nginx/sites-available/evolution` (no CentOS e afins, `/etc/nginx/conf.d/evolution.conf`):
```
server {
listen 80;
server_name ENDERECO_SEM_HTTPS;
location / {
proxy_pass http://127.0.0.1:PORTA;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
```
ssh root@IP "ln -sf /etc/nginx/sites-available/evolution /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx"
ssh root@IP "command -v certbot || apt-get install -y certbot python3-certbot-nginx; certbot --nginx -d ENDERECO_SEM_HTTPS -m [email protected] --agree-tos -n"
```
Se ele já usa certificado de outro jeito (Cloudflare, painel da hospedagem), pergunte antes de rodar o `certbot`.
`ENDERECO_SEM_HTTPS` é o endereço que o instalador mostrou, sem o `https://` (ex: `evolution.187-12-34-56.sslip.io`). Confira de fora com o `curl` acima.
Easypanel, Coolify, Dokploy, cPanel, CyberPanel ou a Ratoeira: esses cuidam do porteiro do jeito deles e esta receita ainda não pluga neles sozinha. Seja honesto: "Nesse servidor eu não consigo instalar sem mexer no que teu painel controla. O caminho seguro é uma VPS separada só pra isso." e volte pra Etapa 1. Não edite a configuração gerada por esses programas.
Etapa 4: entrar no painel (manager)
A chave global é a senha-mestra da Evolution: quem tem ela cria e apaga números. Ela fica só no servidor. Ele vê no terminal dele:
```
ssh root@IP "grep EVOLUTION_API_KEY /opt/evolution/.env"
```
Diga: "Guarda essa chave num gerenciador de senhas (1Password, Bitwarden, o do navegador). É ela que abre o painel."
Depois:
"Abre ENDERECO/manager no navegador. Na tela de login:
Server URL: ENDERECO (sem o /manager)
API Key Global: a chave que você acabou de ver
Clica em Login e me diz se entrou."
Se a tela não aceitar: confira se ele colou a chave inteira, sem o `EVOLUTION_API_KEY=` da frente, e se o Server URL começa com `https://`.
Etapa 5: conectar um número (instância + QR code)
Antes, uma conversa rápida sobre qual número:
"Que número vai conectar? Recomendo um chip só pra isso ou um número secundário, não o seu pessoal. Três coisas que valem saber:
- Tudo que chegar nesse número fica guardado no banco do seu servidor e eu vou conseguir ler.
- O WhatsApp aceita até 4 aparelhos conectados por número. A Evolution ocupa um.
- Pode ser WhatsApp normal ou Business. Não pode ser um número que já está na API oficial (Meta Cloud API): esse não conecta aparelho."
Agora, no painel. Ensine o caminho, porque ele vai repetir isso sozinho quando o número cair:
"1. No painel, clica em Instance + (canto de cima)
2. Name: um nome curto sem espaço, ex: atendimento ou vendas
3. Channel: Baileys
4. Token: deixa o que veio preenchido
5. Clica em Save. A instância aparece na lista como desconectada
6. Clica nela e depois em Get QR Code
7. No celular do número: WhatsApp, Configurações (ou os 3 pontinhos), Aparelhos conectados, Conectar um aparelho e aponta pro QR
O QR vence em uns 40 segundos. Se vencer, clica em Get QR Code de novo."
Peça o nome que ele deu pra instância e confira:
```
ssh root@IP 'cd /opt/evolution && . ./.env && curl -s -H "apikey: $EVOLUTION_API_KEY" https://$DOMINIO/instance/connectionState/NOME'
```
(A chave é lida lá no servidor; ela não passa pela conversa.)
`"state":"open"` é conectado. `connecting` é que ainda não leu o QR.
Se o QR não aparece no painel: o QR também sai no registro da Evolution. Peça pra ele rodar no terminal e ler o QR dali (vira um quadrado de blocos; aumente a janela se precisar):
```
ssh root@IP "cd /opt/evolution && docker compose logs --tail 60 evolution"
```
Histórico: por padrão, a Evolution guarda só o que chegar depois de conectar (mais um pouco das conversas recentes). Se ele quiser trazer o histórico antigo, antes de ler o QR: no painel, dentro da instância, Settings, ligar Sync Full History, Save, e só então Get QR Code. Avise que traz bastante coisa e pode demorar.
Etapa 6: dar a chave pra você ler as conversas
Explique: "Agora eu fico com a chave só deste número (não a mestra). Com ela eu leio as conversas e, se você pedir, mando uma mensagem. Ela não cria nem apaga nada. Fica num arquivo só seu, fora de qualquer pasta de projeto."
1. O token do número. No painel, ao lado do nome da instância aparece o Token (tem um botão de copiar ou de olho pra mostrar). Você não precisa ver ele: crie o arquivo com um espaço reservado e peça pra ele colar.
No Muse, a skill vai para a pasta de skills do Muse (~/workspace/custom-skills/whatsapp-evolution) e o token fica no arquivo ~/.claude/credentials/evolution.env, que é o arquivo que o script da skill lê. É um arquivo só dele, fora de qualquer pasta de projeto. Crie a pasta ~/.claude/credentials/ e, dentro, o evolution.env. O apelido (ATENDIMENTO abaixo) é como ele vai se referir ao número; use o nome da instância em maiúscula:
```
EVOLUTION_API_URL=ENDERECO
EVOLUTION_INSTANCE_ATENDIMENTO=atendimento
EVOLUTION_API_KEY_ATENDIMENTO=COLE_O_TOKEN_AQUI
```
Se o arquivo já existe (outro número), acrescente só as duas linhas do número novo.
Feche o arquivo pra só ele ler: `chmod 600 ~/.claude/credentials/evolution.env`.
"Abre o arquivo ~/.claude/credentials/evolution.env, troca COLE_O_TOKEN_AQUI pelo token que está no painel e salva. Me avisa."
2. A skill. É o que te ensina a ler o WhatsApp dele daqui pra frente, em qualquer conversa: um SKILL.md (as regras) e um zap.py (o script que fala com a Evolution, Python puro, sem instalar nada). Baixe os dois para a pasta de skills do Muse:
```
mkdir -p ~/workspace/custom-skills/whatsapp-evolution && cd ~/workspace/custom-skills/whatsapp-evolution
curl -fsSL https://apps.dobralabs.com.br/receita-evolution/SKILL.txt -o SKILL.md
curl -fsSL https://apps.dobralabs.com.br/receita-evolution/zap.py -o zap.py
head -3 SKILL.md
```
O `head` tem que mostrar `---` e `name: whatsapp-evolution`. Se veio HTML ou erro, o download falhou: tente de novo antes de seguir.
3. Teste. No Windows, troque `python3` por `python`:
```
python3 ~/workspace/custom-skills/whatsapp-evolution/zap.py instancias
python3 ~/workspace/custom-skills/whatsapp-evolution/zap.py estado
```
Tem que listar o apelido e dizer `conectado`. Depois peça pra ele mandar, de outro celular, um "oi, teste" pro número conectado, e rode:
```
python3 ~/workspace/custom-skills/whatsapp-evolution/zap.py conversas
```
A conversa do teste aparece no topo. Agora leia ela de verdade, com o número que apareceu na lista:
```
python3 ~/workspace/custom-skills/whatsapp-evolution/zap.py mensagens --com NUMERO --limite 5
```
Mostre pra ele: "Tá vendo? Chegou no seu servidor e eu li: '...'" (com o texto que ele mandou). Esse é o fim da receita: só considere pronto quando leu a mensagem do teste.
Avise uma última coisa: "Daqui pra frente é só pedir em qualquer conversa nova. Se eu não reconhecer o pedido de primeira, fecha e abre o agente de novo, que ele carrega a skill."
- `ERRO 401`: o token colado está errado ou incompleto. Peça pra copiar de novo do painel.
- `ERRO 404`: o nome da instância no arquivo não bate com o do painel (maiúscula e minúscula contam).
- Lista vazia depois do "oi, teste": espere uns 30 segundos e rode de novo. A primeira mensagem depois de ler o QR às vezes demora mais de um minuto pra chegar.
Fechamento
Diga o que ele tem agora, em três linhas:
"Pronto:
- A Evolution está no seu servidor, em ENDERECO, ligando sozinha se a VPS reiniciar.
- O painel fica em ENDERECO/manager, com a chave que você guardou. É lá que você conecta e reconecta números.
- Eu leio seu WhatsApp quando você pedir: 'o que o fulano mandou?', 'resume as conversas de hoje', 'quem ficou sem resposta?'. Mandar mensagem, só com o seu ok, uma de cada vez."
Se a pasta onde vocês estão é um sistema organizado (tem _contexto/ ou um arquivo de integrações), ofereça registrar ali, sem nenhuma chave: Evolution API | WhatsApp (não oficial) | ENDERECO | chave global no servidor em /opt/evolution/.env; token do número em ~/.claude/credentials/evolution.env.
E pergunte se ele já quer ligar alguma automação (próxima seção, "Ligar automações").
Depois de instalado
Pra quando ele voltar com um pedido só. Faça só a parte pedida.
Ler o QR de novo (o número caiu)
Acontece quando o celular fica muito tempo sem internet, quando ele desconecta o aparelho no WhatsApp ou quando o WhatsApp derruba a sessão. Confira primeiro:
```
python3 ~/workspace/custom-skills/whatsapp-evolution/zap.py estado
```
Desconectado: painel, clica na instância, Get QR Code, no celular, Aparelhos conectados, Conectar um aparelho. Não precisa criar instância nova nem trocar o token: é o mesmo número, o mesmo token, e as conversas guardadas continuam lá.
Se cair toda hora (mais de uma vez por semana), olhe se o celular do número fica sem internet ou se tem 4 aparelhos conectados e um derrubando o outro.
Conectar outro número
Repita a Etapa 5 com outro nome de instância (vendas, suporte) e acrescente as duas linhas dele no evolution.env (Etapa 6, passo 1). Daí em diante, ao pedir algo, ele diz qual número ("no zap de vendas"), e você usa --inst vendas.
Me dar a chave (ou trocar ela)
Etapa 6 inteira. Pra trocar o token de um número (ex: alguém viu), apague a instância no painel e crie de novo com o mesmo nome (vai pedir o QR de novo), depois atualize a linha no evolution.env.
Esqueci a chave global
```
ssh root@IP "grep EVOLUTION_API_KEY /opt/evolution/.env"
```
(rodado por ele, no terminal dele).
Ligar automações
A Evolution avisa outro programa a cada mensagem que chega (webhook). É assim que se liga um n8n, um agente de atendimento ou um sistema próprio. No painel: instância, Events, Webhook, liga, cola a URL do programa que vai receber, marca o evento MESSAGES_UPSERT (mensagem nova) e salva. Cada mensagem vira uma chamada pra essa URL.
Duas coisas que valem dizer antes:
- A URL tem que ser HTTPS e estar no ar o tempo todo. Se o programa que recebe cair, as mensagens desse período não chegam nele (continuam guardadas na Evolution).
- Automação que responde sozinha precisa de freio: responder só quem mandou mensagem antes, limite de mensagens por hora por contato, e parar quando um humano assume a conversa. Sem isso, é o caminho mais curto pro bloqueio.
Atualizar ou reinstalar
Rodar o instalador de novo (Etapa 3) é seguro: mantém chaves, números e conversas. Pra ver se está tudo de pé: `ssh root@IP "cd /opt/evolution && docker compose ps"`.
A versão fica travada na 2.3.7 de propósito: a 2.4 passou a exigir licença na Evolution Foundation. Não troque a versão sem conferir isso antes.
Problemas comuns
- ufw status mostra só a porta 22, mas o site abre. Normal: o Docker abre 80 e 443 por fora do ufw. Banco e cache continuam fechados.
- O painel abre mas a instância não gera QR. Veja o registro (`ssh root@IP "cd /opt/evolution && docker compose logs --tail 80 evolution"`). Se falar em versão do WhatsApp ou 405, a Evolution ficou velha pro WhatsApp: pesquise na web "Evolution API CONFIG_SESSION_PHONE_VERSION" e a versão atual do WhatsApp Web, e explique pra ele antes de mudar.
- Conversas antigas não aparecem. Ela guarda o que chegou depois de conectar. Ver "Histórico" na Etapa 5.
Os arquivos desta receita
Todos públicos, sem chave nenhuma dentro. Você baixa, não copia:
- Instalador (roda no servidor): https://apps.dobralabs.com.br/receita-evolution/instalar-evolution.sh
- Skill, regras: https://apps.dobralabs.com.br/receita-evolution/SKILL.txt (salvar como SKILL.md)
- Skill, script: https://apps.dobralabs.com.br/receita-evolution/zap.py
- Esta receita em texto: https://apps.dobralabs.com.br/receita-evolution/receita.txt
Primeira vez: passo a passo
Este prompt já é o passo a passo completo: 6 etapas, em ordem, uma por vez, com confirmação em cada uma. Quem nunca usou nada disso só precisa seguir o que o Muse pedir: contratar a VPS zerada com Ubuntu 24.04, rodar os dois comandos que pedem senha no próprio terminal, ler o QR code com o celular e guardar as chaves no gerenciador de senhas. O resto é com o Muse. Só considere pronto quando o Muse ler, de verdade, a mensagem do teste.