⬇️ PROMPT.md ⬇️
É esse arquivo. Preenche, cola no Codex, pronto.
O que é · Como funciona · Como usar · Setup · Regras
Um agente de IA que prospecta pelo Instagram sozinho: acha o lead, qualifica, escreve a primeira mensagem, entende a resposta, conduz a conversa, encaminha pro WhatsApp e aprende com o que converteu — ajustando público, texto, horário e cadência sem ninguém mandar.
Roda 100% local. Seu banco, sua sessão, sua chave.
Observar → Decidir → Agir → Medir → Aprender → Adaptar
Aqui não tem código pronto. Tem o prompt que constrói o código. Você troca os {{PLACEHOLDERS}} pelo seu negócio, cola no Codex, e sai um sistema seu — não uma cópia do meu.
flowchart LR
A["🔎 Descoberta<br/>perfis do ICP"] --> B["🧠 Qualificação<br/>score + prioridade"]
B --> C["💬 1ª DM<br/>seu Chrome real"]
C --> D{"Respondeu?"}
D -- não --> E["⏰ Follow-up<br/>agendado"]
E --> D
D -- sim --> F["📡 Webhook Meta<br/>handoff de canal"]
F --> G["🤖 Conversa<br/>API oficial + OpenAI"]
G --> H["📱 WhatsApp<br/>ou grupo de afiliados"]
H --> I["📊 Métricas<br/>o que converteu?"]
I -.retroalimenta.-> A
style A fill:#1f2937,stroke:#E1306C,color:#fff
style C fill:#1f2937,stroke:#FFB000,color:#fff
style G fill:#1f2937,stroke:#412991,color:#fff
style H fill:#1f2937,stroke:#25D366,color:#fff
style I fill:#1f2937,stroke:#00C853,color:#fff
| Etapa | Canal | Motivo |
|---|---|---|
| Primeiro contato | Seu Chrome, sua sessão | A API oficial da Meta não abre conversa com quem nunca te respondeu |
| Depois da resposta | API oficial + webhook | É o caminho suportado, auditável e estável |
Uma trava de canal garante que os dois nunca escrevam no mesmo fio. Depois do handoff, o navegador está proibido de responder.
Abre o PROMPT.md. No topo tem um bloco CONFIGURAÇÃO com uns 15 campos. Troca cada {{PLACEHOLDER}} pelo seu: nome, empresa, site, @ do Instagram, WhatsApp, oferta e quem é seu cliente ideal.
Dois campos merecem atenção:
VERIFIED_CLAIMS— só o que você consegue provar hoje. É a única coisa que a IA pode afirmar pro lead.UNVERIFIED_CLAIMS— o que você quer dizer mas ainda não comprovou. Fica bloqueado até virar prova.
Copia o arquivo inteiro, do começo ao fim, e cola numa task do Codex.
💡 Codex cloud roda em container — ele escreve toda a camada de navegador e testa contra páginas simuladas, mas não alcança o seu Chrome. O prompt já diz isso pra ele, então ele entrega tudo e deixa o teste real documentado pra você rodar local.
Clona o que ele gerou, faz o setup abaixo, e sobe:
pnpm install && pnpm dev🔑 Chave da OpenAI
- https://platform.openai.com/api-keys → login.
- Settings → Billing: adiciona crédito. Sem crédito, dá
429 insufficient_quota. - Settings → Limits: define um hard limit mensal (ex.
USD 50). Esse é o freio real se o agente entrar em loop. - Create new secret key → projeto separado (não usa o
Default) → permissãoRestricted, sóModel capabilities: Write. - Copia a chave agora, ela só aparece uma vez.
cp .env.example .env
# cola em OPENAI_API_KEY=sk-proj-...O .env já está no .gitignore. Nunca commita, nunca aparece em print ou vídeo.
Vazou? Revoga em platform.openai.com/api-keys e gera outra. Revogar resolve — reescrever o histórico do Git é secundário.
🌐 Sessão do Instagram no seu Chrome
Perfil dedicado, separado do seu pessoal. Isso resolve três coisas de uma vez: o agente nunca vê suas abas, seu Chrome normal continua livre, e o Chrome 136+ recusa debug no perfil padrão de qualquer jeito.
macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir="$PWD/.chrome-profile"Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$PWD/.chrome-profile"Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--remote-debugging-port=9222 `
--user-data-dir="$PWD\.chrome-profile"Nessa janela que abriu, entra no instagram.com, loga normal, resolve o 2FA. A sessão fica salva e sobrevive a reinício.
Testa:
curl -s http://127.0.0.1:9222/json/version
⚠️ Segurança: essa porta dá controle total sobre a sessão logada nesse perfil. Mantém em127.0.0.1, nunca0.0.0.0, e não roda em máquina compartilhada. O.chrome-profile/guarda seus cookies do Instagram — já está no.gitignoree não sai da sua máquina.
Como o agente não queima a conta
| Controle | Padrão |
|---|---|
| DMs por dia | 30, com aquecimento gradual |
| Intervalo entre DMs | 90–240s aleatório |
| Janela de operação | 09:00–20:00, fuso configurável |
| Circuit breaker | Pausa tudo em erro anormal, restrição ou opt-out em alta |
Ritmo humano existe por saúde da conta — mesma disciplina de um SDR de verdade. Não tem fingerprint forjado, API privada nem tentativa de burlar bloqueio.
Como o agente não mente
A IA só pode afirmar o que está em VERIFIED_CLAIMS. Qualquer coisa em UNVERIFIED_CLAIMS fica bloqueada até virar prova.
Ela nunca inventa taxa, condição, garantia ou superlativo, nunca promete aprovação de conta, e nunca finge ser cliente pra arrancar resposta.
Como o agente respeita quem não quer
Pedido de parar é atendido na hora. O perfil entra em do_not_contact — permanente, sem follow-up, sem reentrada por outra campanha, por nenhum canal.
Como o custo não explode
Toda chamada à OpenAI grava tokens e custo. Ao bater OPENAI_MONTHLY_BUDGET_USD, o sistema pausa sozinho.
O painel mostra custo por lead e custo por cliente ativo — sem isso não dá pra saber se a automação dá lucro.
Este repositório é público de propósito.
Pega o PROMPT.md, troca os {{PLACEHOLDERS}}, e constrói o seu.
⭐ Se isso te ajudou, deixa uma estrela e acompanha a jornada.