Seu robô no seu Cloudflare.
O painel e a API ficam juntos no Cloudflare Pages, com um Worker interno e login próprio. O envio pelo WhatsApp é executado pelo programa no computador.
| Arquivo do pacote completo | Como usar |
|---|---|
1-SUBIR-NO-CLOUDFLARE.zip | É o único ZIP enviado ao Cloudflare. Já está compilado. |
2-BANCO-EXCLUSIVO.sql | Instala as tabelas e regras no novo Supabase. |
3-EXECUTOR-WINDOWS.zip | Programa que roda no PC e abre o WhatsApp. |
4-CODIGO-FONTE.zip | Projeto editável, testes e configuração para deploy como Worker separado, se necessário. |
5-DIAGNOSTICO-BANCO.sql | Consulta de leitura para investigar a instalação. |
6-ATUALIZAR-PENDENCIAS.sql | Instala os recursos de revisão e contatos pulados da V1. |
7-ATUALIZAR-TIMER-V2.sql | Instala a faixa de espera, o sorteio e o timer da V2. |
8-OTIMIZAR-CONSULTAS-KENLO.sql | Instala o reaproveitamento de consultas e a espera automática da API. |
9-CONTROLE-DA-FILA.sql | Instala Pular e continuar e Travar/Liberar envio por referência. |
Atualizar da V2.1.2 para a V2.1.3: conferência da referência
- Mantenha o lote pausado e feche o executor.
- Suba só
1-SUBIR-NO-CLOUDFLARE.zipno mesmo Pages e pressione Ctrl+F5. - Com o executor ainda fechado, busque a referência que parou em Fila e clique em Ver mensagem. A prévia não envia WhatsApp. Se a referência e a mensagem forem confirmadas, abra o executor e retome o mesmo lote.
Quem já está na V2.1.2 não precisa repetir SQL, mudar secrets ou reinstalar o executor.
O robô aproveita o cadastro certo quando ele vem junto com outros registros em uma única página, desde que referência, imobiliária e ID coincidam sem duplicidade. Se a identidade não puder ser confirmada, o painel mostra o motivo e mantém a pausa antes do envio.
Atualizar para a V2.1.2: controle da fila
- Deixe o lote pausado e feche o programa do robô após a ação atual terminar.
- No SQL Editor do Supabase exclusivo do robô, execute
9-CONTROLE-DA-FILA.sql. Quem já tem o SQL 8 não precisa repeti-lo. - Suba somente
1-SUBIR-NO-CLOUDFLARE.zipno mesmo Pages, pressione Ctrl+F5 e abra o executor atual.
Na campanha, Pular AP0003 e continuar, por exemplo, registra a referência como pulada só no lote atual e segue para as demais no intervalo configurado. O botão aparece quando a referência voltou para a fila após erro antes da preparação da mensagem. Também funciona em um lote já pausado desse jeito na V2.1.1.
Em Fila, busque a referência e use Travar envio. Ela sai do lote se ainda estiver pendente e fica fora dos próximos até Liberar envio. Travar não retoma um lote pausado. Liberar não envia nada nem repõe a referência no lote que já a pulou. A opção Envios travados filtra os registros da página.
Uma referência em processamento pode ser travada após pausar o lote e aguardar o ponto seguro. Envios incertos continuam exigindo conferência. Os controles preservam os registros de envio e não alteram a Kenlo, o telefone do proprietário, a configuração do PC ou a sessão do WhatsApp.
Atualizar da V2.1.0 para a V2.1.1: consulta direta do imóvel
- Pause o lote e aguarde a ação atual terminar. Feche o programa do PC.
- Faça novo deployment no mesmo Pages com
1-SUBIR-NO-CLOUDFLARE.zipe pressione Ctrl+F5. - Confira Versão 2.1.1 no menu. Abra o programa atual do PC, já no modo de envio, e retome o mesmo lote.
A instalação do SQL 8 da V2.1.0 continua válida. Mantenha os secrets, a sessão do WhatsApp e as configurações atuais.
A preparação de um imóvel passa a usar uma consulta exata por referência, com property_reference, no endereço de produção documentado da Kenlo. Ela não percorre páginas da carteira para localizar cada imóvel. Um filtro não confirmado ou uma resposta vazia interrompe a preparação antes de enviar, sem recorrer a uma varredura completa. Os identificadores do imóvel e da imobiliária continuam sendo conferidos.
A faixa de 65 a 80 segundos, se já escolhida, continua sendo a espera entre mensagens. Os prazos de consultas já registrados são respeitados. Uma cota indisponível na Kenlo ainda pode gerar HTTP 429. A nova versão registra separadamente uma resposta HTTP recebida e uma espera reaproveitada sem nova chamada. O diagnóstico contém o tipo de consulta, o prazo e o identificador de rastreamento, sem chaves nem dados do proprietário.
Atualizar da V2.0 para a V2.1: menos consultas Kenlo
- Pause o lote, aguarde a ação em andamento terminar e feche o programa do robô no PC.
- No Supabase exclusivo do robô, execute somente
8-OTIMIZAR-CONSULTAS-KENLO.sql. Os arquivos 6 e 7 continuam obrigatórios, mas não precisam ser repetidos se já foram aplicados. Não repita o SQL 2. - Faça novo deployment no mesmo Pages com
1-SUBIR-NO-CLOUDFLARE.zipe pressione Ctrl+F5. - Abra novamente o programa do PC. O executor atual continua compatível. Se o lote já estava pausado, clique em Retomar uma vez.
Não há secrets novos. Mantenha o login, o modo de envio, a sessão do WhatsApp e a faixa de segundos já escolhida.
Imóveis conferidos são reaproveitados por até 10 minutos; contatos, por até 30 minutos. Ler esses dados não renova o prazo. Na V2.1.1, cada imóvel sem dados recentes é buscado diretamente pela referência. Dados vencidos exigem nova consulta. O status do cliente não impede o envio; a elegibilidade do imóvel continua sendo conferida.
A atualização geral da carteira aguarda o lote terminar, dando prioridade às consultas da campanha. Se a Kenlo devolver limite de consultas, o robô mantém a referência na fila, mostra uma contagem e retoma automaticamente do ponto salvo. Pausar e Parar continuam disponíveis. Uma pausa manual e um envio incerto nunca são retomados automaticamente.
O botão Conferir contato na Kenlo, para números pulados, consulta novamente mesmo com dados recentes guardados. O histórico passa a mostrar se os dados foram consultados ou reaproveitados, e o diagnóstico inclui o prazo de espera da API. Os bancos dos demais projetos continuam separados. Outros apps que usam a mesma chave ainda podem consumir o limite da Kenlo.
Atualizar para V2: intervalo entre mensagens
- Com o robô parado, abra o SQL Editor do Supabase exclusivo dele e execute
7-ATUALIZAR-TIMER-V2.sql. - Faça novo deployment no mesmo Pages usando
1-SUBIR-NO-CLOUDFLARE.zip. - Abra o painel e pressione Ctrl+F5. Mantenha o programa do PC e as configurações atuais.
Se já estava na 1.0.6 ou 1.0.7, basta o novo SQL 7. Se ainda não instalou os recursos de revisão e contatos pulados, execute o SQL 6 antes dele. Não repita o SQL 2 em um banco já instalado.
Escolher a faixa de espera
Em Intervalo entre mensagens, informe Mínimo: 20 e Máximo: 30, por exemplo. Depois de confirmar cada envio, o robô sorteia uma espera de 20 a 30 segundos: pode sair 22, depois 28, depois 24. Os valores podem se repetir. A contagem fica na própria campanha e a execução segue automaticamente.
A faixa fica salva ao iniciar o lote e vale para todo ele. Para outro lote, você pode escolher outra faixa. Os campos aceitam segundos inteiros; valores iguais criam uma espera fixa, e 0 nos dois campos desliga a espera.
Você pode pausar ou parar durante a contagem. Recarregar a página preserva o tempo restante. O último item encerra o lote imediatamente; se outro lote começar logo em seguida, ele também considera o tempo desde o envio anterior. As consultas e a confirmação do WhatsApp têm seu próprio tempo além da espera sorteada.
Cliente ativo ou inativo continua permitido. O robô confere a elegibilidade do imóvel com dados da Kenlo, respeitando o prazo de reaproveitamento da V2.1. A V2 mantém a confirmação visual e os contatos pulados da V1.
Recurso da 1.0.6: pular contato sem WhatsApp
Para um número sem WhatsApp, use Pular: número sem WhatsApp. O contato sai dos próximos lotes, a ocorrência fica tratada e você segue com os demais. Não precisa mudar nada na Kenlo. O histórico mantém Pulado: sem WhatsApp, separado dos envios realizados.
- Deixe o robô parado, sem um lote enviando.
- No SQL Editor do Supabase exclusivo do robô, execute o novo
6-ATUALIZAR-PENDENCIAS.sqldeste pacote. Ele já inclui a atualização anterior e pode ser repetido se você usou o arquivo 6 da 1.0.5. Não execute o SQL 2 novamente. - Faça novo deployment no mesmo Pages com
1-SUBIR-NO-CLOUDFLARE.zipe pressione Ctrl+F5. Mantenha as variáveis e os secrets.
O executor 1.0.4 continua compatível. Pode manter o programa do PC como está, sem instalar dependências, reconfigurar ou vincular o WhatsApp novamente.
O número pulado permanece fora da fila mesmo depois de reimportar os imóveis. Se futuramente houver outro telefone na Kenlo, use Conferir contato na Kenlo pelo histórico ou no filtro Pulados: sem WhatsApp da fila. A consulta não envia mensagem. Ao encontrar um número diferente que não foi pulado, os imóveis elegíveis do contato voltam à fila.
As demais pendências continuam abrindo automaticamente no fim do lote e permanecem visíveis até serem tratadas. Envios incertos param imediatamente e exigem conferir a conversa. O botão Pular não serve para dispensar um envio incerto. Timeout na consulta antes do envio pausa para Retomar, sem pular o imóvel.
Preparar sem o celular
Na tela Conexões, use Verificar conexões e Conferir Kenlo. O campo confirmado para bairro comercial pode ser cadastrado no Cloudflare como Texto. Atualizar Kenlo importa os imóveis. Ver mensagem e Conferir até 10 sem enviar consultam o cadastro sem criar lote ou enviar mensagens.
1. Suba o painel e o backend
- Abra o painel do Cloudflare e vá a Workers & Pages.
- Crie uma aplicação Pages pela opção de upload de arquivos, também chamada Direct Upload ou Drag and drop.
- Escolha um nome, por exemplo
adonai-robo-proprietarios. - Envie
1-SUBIR-NO-CLOUDFLARE.zip. Se você baixou somente o ZIP de upload, envieadonai-cloudflare-upload-v2.1.3.zipdiretamente. Ambos contêm os mesmos arquivos. - Conclua o deploy. O endereço será informado pelo Cloudflare, normalmente com final
.pages.dev. Você também poderá vincular seu domínio.
Não é necessário instalar Node.js no computador para fazer esse upload. O ZIP contém index.html, config.js, _worker.js e _routes.json na raiz. O backend fica no _worker.js; ele já vem compilado e atende as rotas da aplicação.
2. Defina o login do robô
No projeto Pages, abra Settings > Variables and Secrets > Add, no ambiente Production. Adicione:
| Nome exato | Tipo | Valor |
|---|---|---|
PANEL_USERNAME | Texto | Usuário que você escolher. Sugestão: admin. |
PANEL_PASSWORD | Secret, opção Encrypt | Sua senha, com pelo menos 8 caracteres. Não há senha pronta no pacote. |
SESSION_SECRET | Secret, opção Encrypt | Valor aleatório de pelo menos 32 caracteres. Pode ser gerado no botão abaixo. |
ROBOT_LIVE_ENABLED | Texto | false nesta fase. |
Depois de salvar as variáveis, faça um novo deployment com o mesmo ZIP. Abra a URL do projeto e entre com o usuário e a senha definidos. Sem o banco conectado, o painel entra em simulação, com dados fictícios e sem enviar mensagens.
Este botão funciona localmente, usando o navegador. Copie os valores para os secrets correspondentes. Guarde-os no seu gerenciador de senhas; os valores abaixo não são salvos ao fechar este arquivo.
3. Conecte o banco exclusivo e a Kenlo
- Crie o novo projeto Supabase dedicado a este robô.
- No SQL Editor desse novo projeto, execute
2-BANCO-EXCLUSIVO.sqluma única vez. Depois execute6-ATUALIZAR-PENDENCIAS.sql,7-ATUALIZAR-TIMER-V2.sql,8-OTIMIZAR-CONSULTAS-KENLO.sqle9-CONTROLE-DA-FILA.sql. Use o banco novo, pois a instalação não é uma migração dos seus projetos existentes. - No mesmo ambiente Production do Cloudflare, adicione as variáveis abaixo e faça novo deployment.
| Nome exato | Tipo | Valor |
|---|---|---|
SUPABASE_URL | Texto | URL HTTPS do novo projeto Supabase. |
SUPABASE_SECRET_KEY | Secret | Secret key do novo projeto. Aceita também a chave service_role legada. |
KENLO_API_KEY | Secret | Valor do acesso X-API-Key da Kenlo. |
KENLO_USER_INFO | Secret | Valor completo de x-user-info da integração Kenlo. |
KENLO_COMMERCIAL_NEIGHBORHOOD_FIELD | Texto | Campo do bairro comercial confirmado no retorno real da API. |
EXECUTOR_TOKEN | Secret | Segundo valor do gerador acima. Será usado para vincular o PC. |
ROBOT_SENDER_PHONE | Texto | Número dedicado, formato 55 + DDD + celular, somente dígitos. |
ROBOT_TEST_RECIPIENT | Texto | Outro número seu para receber a mensagem única de teste. |
O mapeamento da Kenlo ainda precisa ser validado com uma resposta real da API, especialmente o bairro comercial e o contato principal. A aplicação interrompe a preparação se os dados essenciais não corresponderem ao formato esperado.
As chaves ficam no backend. Não edite config.js para inserir credenciais. Nesse pacote, frontend e backend usam o mesmo domínio; não é necessário configurar CORS nem informar um endereço separado de API.
4. Instale o executor no Windows
- Instale Node.js 22 ou superior no PC e extraia
3-EXECUTOR-WINDOWS.zipem uma pasta. - Abra
1-Instalar.cmde aguarde a instalação das dependências e do navegador. - Abra
2-Configurar.cmd. Informe a URL HTTPS do seu Pages e o mesmoEXECUTOR_TOKENcadastrado no Cloudflare. Comece pelo modo de conexão, sem envio de campanha. - Abra
3-Iniciar-Robo.cmd. O navegador ficará visível. Vincule a conta WhatsApp dedicada pelo QR Code, disponível também na tela Conexões do painel. - Para o teste, feche o executor normal e abra
4-Testar-WhatsApp.cmd. Ele envia uma única mensagem ao número próprio configurado e não usa a fila de imóveis. Confira o envio no celular da conta remetente e no destinatário.
5. Faça o primeiro lote acompanhado
Depois de validar o banco, os retornos da Kenlo, a mensagem de teste e o número remetente, altere ROBOT_LIVE_ENABLED para true no Cloudflare e faça um novo deployment. Configure o executor para o modo de campanha, reabra-o e deixe-o rodando.
No painel, peça a atualização da Kenlo, revise os imóveis e execute primeiro um lote pequeno. O comando Executar 10 da fila reserva dez imóveis, processa somente esse lote e para. Pausar, retomar e parar ficam disponíveis na mesma tela.
O horário padrão de envio é das 08:00 às 18:00, horário de São Paulo. Para ajustar, configure ROBOT_START_HOUR e ROBOT_END_HOUR no formato HH:MM.
Referências já enviadas ficam registradas. Quando um envio fica incerto, o robô aguarda sua conferência no WhatsApp antes de continuar. As mensagens enviadas usam a conta vinculada e seguem a sincronização normal do WhatsApp com o celular.
Se algo não abrir
- “Falta configurar seu acesso”: confira os nomes, os tamanhos mínimos e o ambiente Production. Faça novo deployment após salvar os secrets.
- O site abre, mas
/api/healthdevolve HTML ou erro: confira se_worker.jsfoi incluído no upload. Use o ZIP de upload completo, com os quatro arquivos na raiz. - O banco foi configurado, mas o painel fica em simulação: confira se o SQL foi executado no mesmo projeto da URL e da chave informadas. Na tela Conexões, clique em Verificar conexões.
- Executar está desabilitado: confira o executor aberto, a conta WhatsApp vinculada e o modo de campanha habilitado após a validação.