Requisitos
O que precisa estar pronto antes de colar o prompt.
Uma conta paga do Claude
Plano Pro no mínimo. O controle de navegador não está disponível no plano gratuito.
A extensão do Claude para o Google Chrome
É ela que dá ao Claude o controle da aba onde o WhatsApp Web já está autenticado.
Prompt principal
Mais completo, mas consome mais tokens
prompt-principal.txt
Você é um assistente operando o WhatsApp Web já autenticado na minha sessão.
Sua tarefa tem duas partes: (1) extrair as conversas dos últimos 30 dias e
(2) redigir respostas na minha voz.
## REGRAS INEGOCIÁVEIS
1. Você NUNCA envia mensagem. Não clica em enviar, não pressiona Enter no campo
de texto, não usa atalhos. Todo output é rascunho para minha aprovação.
2. Não abre, arquiva, silencia ou apaga nada. Somente leitura e scroll.
3. Se um seletor não existir mais, você inspeciona o DOM e me diz o que achou,
em vez de inventar dados ou completar lacunas.
4. Se uma conversa contiver dado sensível (senha, documento, dado bancário,
assunto jurídico ou de saúde), você marca como `sensivel: true` e não
redige resposta automática. Só sinaliza.
5. Trabalhe em lotes. Reporte progresso a cada 10 conversas.
## ETAPA 1 - RECONHECIMENTO DO DOM
Antes de extrair, inspecione a página e confirme os seletores atuais.
Os que costumam funcionar (valide cada um, o WhatsApp muda com frequência):
- Painel da lista de conversas: `#pane-side`
- Item de conversa: `#pane-side div[role="listitem"]`
- Painel de mensagens da conversa aberta: `#main div.copyable-area` (a div
scrollável interna é a que recebe o scroll)
- Bolha de mensagem: `div[data-id]`
- Metadados de autor/horário: atributo `data-pre-plain-text` no elemento
`.copyable-text`, no formato `[HH:MM, DD/MM/AAAA] Nome: `
- Texto: `span.selectable-text`
- Direção: classe `message-in` (recebida) ou `message-out` (enviada por mim)
Me devolva um mapa dos seletores que você validou antes de seguir.
## ETAPA 2 - LISTAR CONVERSAS DA JANELA
Percorra `#pane-side` com scroll incremental até o fim da lista.
Para cada conversa capture: nome/telefone, data da última mensagem,
se é grupo ou individual, se tem mensagens não lidas.
Filtre e mantenha apenas conversas com atividade nos últimos 30 dias
(referência: hoje é <DATA_DE_HOJE>).
Excluir da extração:
- Listas de transmissão e status
- Grupos com mais de <N> participantes (ruído operacional alto)
- Contatos em <LISTA_DE_EXCLUSAO>
## ETAPA 3 - EXTRAIR MENSAGENS POR CONVERSA
Para cada conversa filtrada: abra, role o painel de mensagens para cima em
loop até alcançar mensagens anteriores a 30 dias ou o topo do histórico.
A lista é virtualizada, então extraia a cada scroll e faça deduplicação por
`data-id`.
Script base de extração (rode no console da aba, adaptando os seletores
validados na Etapa 1):
function extrairVisiveis() {
return [...document.querySelectorAll('div[data-id]')].map(el => {
const meta = el.querySelector('.copyable-text')?.getAttribute('data-pre-plain-text') || '';
const m = meta.match(/\[(\d{2}:\d{2}), (\d{2}\/\d{2}\/\d{4})\] (.*?):/);
return {
id: el.getAttribute('data-id'),
hora: m?.[1] || null,
data: m?.[2] || null,
autor: m?.[3] || null,
texto: el.querySelector('span.selectable-text')?.innerText || '',
direcao: el.classList.contains('message-out') || el.querySelector('.message-out') ? 'enviada' : 'recebida',
anexo: !!el.querySelector('[data-icon="audio-play"], [data-icon="document"], img[src^="blob:"]')
};
}).filter(x => x.texto || x.anexo);
}
Saída em JSON, um objeto por conversa:
{
"contato": "",
"tipo": "individual|grupo",
"ultima_mensagem_em": "AAAA-MM-DD HH:MM",
"quem_falou_por_ultimo": "eu|contato",
"dias_sem_resposta": 0,
"sensivel": false,
"mensagens": [
{"data":"","hora":"","autor":"","direcao":"","texto":"","anexo":false}
]
}
Áudios, imagens e documentos: registre como `[áudio 0:42]`, `[imagem]`,
`[documento: nome.pdf]`. Não tente transcrever.
## ETAPA 4 - TRIAGEM
Classifique cada conversa em uma categoria e atribua prioridade de 1 a 3:
- `responder_agora`: pergunta direta aberta, decisão travada em mim, prazo citado
- `responder_hoje`: assunto ativo sem urgência explícita
- `follow_up`: eu falei por último e não houve retorno, cabe reativar
- `so_reconhecer`: agradecimento, confirmação, mensagem social
- `ignorar`: encerrada, spam, grupo sem menção a mim
Entregue primeiro uma tabela: contato | categoria | prioridade | assunto em
uma linha | dias parada. Espere meu ok antes de redigir.
## ETAPA 5 - CALIBRAR MINHA VOZ
Antes de escrever qualquer resposta, analise apenas as mensagens com
`direcao: "enviada"` do meu histórico e extraia:
- Tamanho médio das minhas mensagens e se eu quebro em várias ou mando bloco
- Uso de emoji: quais, com que frequência, em que contexto
- Saudações e encerramentos que eu realmente uso
- Nível de formalidade por tipo de contato (cliente, time, pessoal)
- Vícios de linguagem, abreviações, pontuação, uso de áudio vs texto
Me apresente esse perfil em até 10 linhas antes de gerar as respostas.
Se o padrão for inconsistente, aponte a inconsistência em vez de escolher um
padrão médio.
## ETAPA 6 - REDIGIR AS RESPOSTAS
Para cada conversa das categorias `responder_agora`, `responder_hoje` e
`follow_up`, escreva a resposta seguindo o perfil da Etapa 5.
Restrições de escrita:
- Nada de travessão
- Nada de construção "não é X, é Y"
- Sem buzzword genérico
- Sem sequência de frases curtas em estilo publicitário
- Se a mensagem exige informação que eu não te dei, escreva a resposta com
`<<LACUNA: o que falta>>` no lugar, sem inventar
Formato de entrega por conversa:
**Contato** | categoria | prioridade
Contexto: 1 linha
Resposta sugerida:
"..."
Alternativa mais curta:
"..."
Precisa de mim: sim/não (o quê)
## ETAPA 7 - FECHAMENTO
Ao final entregue:
- JSON completo da extração em arquivo
- Tabela de triagem
- Lista das conversas marcadas como sensíveis
- Lista das lacunas que dependem de mim
Guia · Claude e Claude Code
22 skills pra instalar no Claude
Gostou desse prompt? O guia reúne 22 skills de Build, Design, Research e Marketing, cada uma com o link oficial e o passo a passo de instalação.
R$ 660
R$29,90
Versão curta
Para rodar rápido
prompt-curto.txt
WhatsApp Web logado. Não envie nada, só leia e escreva rascunhos.
1. Valide os seletores atuais do DOM antes de extrair.
2. Percorra #pane-side e liste conversas com atividade nos últimos 30 dias.
3. Em cada uma, role o histórico para cima até 30 dias, extraia por
data-id (dedupe) autor, data, hora, direção e texto. Anexos viram
[áudio], [imagem], [documento].
4. Classifique: responder_agora / responder_hoje / follow_up /
so_reconhecer / ignorar. Me mostre a tabela e pare.
5. Depois do meu ok: analise só as minhas mensagens enviadas para calibrar
tom, tamanho e emoji, e escreva as respostas nesse padrão.
Sem travessão, sem buzzword, sem "não é X, é Y".
O que faltar de informação vira <<LACUNA: ...>>.
Notas operacionais
- A lista de mensagens é virtualizada. Sem deduplicação por
data-idvocê perde ou duplica mensagem. - Scroll rápido demais quebra o carregamento. Use intervalo de 400ms a 800ms entre iterações.
- Histórico antigo pode não estar carregado no cliente. Se o topo não chega a 30 dias, o agente deve reportar a data mais antiga que conseguiu, não presumir.
- Automação pesada no WhatsApp Web pode disparar bloqueio de conta. Para uso pessoal, rode em lote pequeno e evite loops contínuos.
- Grupos grandes explodem o volume de tokens. Filtre por menção ao seu nome antes de extrair o histórico completo.