Automação de extração de leads do Brokers MKTLab (brokers.mktlab.app) via Playwright headless browser.
Desenvolvido por V4 Ferraz Piai & Co.
- Faz login automático na plataforma
- Navega até "Meus Leads"
- Clica no botão "Exportar" e baixa o CSV
- Filtra os campos: Nome da Empresa, CNPJ, Faturamento, Segmento
- Salva JSON processado + envia para webhook n8n (opcional)
| Campo | Fonte no CSV | Observação |
|---|---|---|
| nome_empresa | Empresa | Sempre preenchido |
| cnpj | Documento da empresa | Pode estar vazio |
| faturamento | Faturamento | Ex: "De 71 mil à 100 mil" |
| segmento | Segmento | Ex: "Serviço", "Outro" |
- Suba este repo para o GitHub (privado)
- No Easypanel, crie um novo App > GitHub
- Conecte o repositório
- Easypanel detecta o
Dockerfileautomaticamente - Em Environment Variables, adicione:
BROKER_EMAIL= seu emailBROKER_PASSWORD= sua senhaWEBHOOK_URL= URL do webhook n8n
- Em Advanced > Restart Policy: selecione
no(execução única) - Para agendar execução periódica, use um dos métodos abaixo
docker build -t brokers-scraper .
docker run --env-file .env -v ./exports:/app/exports brokers-scraperCrie um workflow n8n:
- Cron Trigger → a cada 6h (ou o intervalo desejado)
- HTTP Request →
POSTpara a API do Easypanel para restart do container - Webhook (nó separado) → recebe os leads do scraper
No docker-compose.yml, descomente a linha entrypoint para rodar a cada 6h:
entrypoint: ["sh", "-c", "while true; do node scraper.js; sleep 21600; done"]Configure um Cron Job no Easypanel apontando para o container.
| Variável | Obrigatória | Descrição |
|---|---|---|
BROKER_EMAIL |
✅ | Email de login na plataforma |
BROKER_PASSWORD |
✅ | Senha de login |
BROKER_URL |
Não | URL base (default: brokers.mktlab.app) |
WEBHOOK_URL |
Não | Webhook n8n para receber os dados |
HEADLESS |
Não | true (default) ou false para debug |
TIMEOUT_MS |
Não | Timeout de operações (default: 60000) |
RETRY_ATTEMPTS |
Não | Tentativas em caso de erro (default: 3) |
/app/exports/
├── leads_2026-03-18T10-30-00.csv # CSV original da plataforma
├── leads_2026-03-18T10-30-00.json # JSON processado
└── error_2026-03-18T10-30-00.png # Screenshot em caso de erro
[
{
"nome_empresa": "Clif",
"cnpj": "",
"faturamento": "De 401 mil à 1 milhão",
"segmento": "Serviço",
"responsavel": "Sabrina",
"telefone": "+5521999535825",
"email": "sapresman@gmail.com",
"valor": "R$ 676,00",
"data_compra": "18/03/2026 - 09:15 AM"
}
]- Erro de login: Verifique credenciais. A plataforma pode ter mudado o layout — ajuste os seletores em
scraper.js - Download não inicia: O botão "Exportar" pode ter mudado de texto/posição. Verifique o seletor
- Timeout: Aumente
TIMEOUT_MS. Conexões lentas podem precisar de 90000+ - Screenshots de erro: Sempre salvas em
/app/exports/error_*.pngpara diagnóstico