RAF Radar de Afiliados
Modo demonstração ativo — os dados são sintéticos. Cadastre uma conexão com credenciais reais para coletar de verdade.
Sem ANTHROPIC_API_KEY: os anúncios saem pelo template determinístico, não pelo LLM. A esteira continua funcionando.

Publicar põe na fila, não envia na hora. Ao publicar você escolhe em quais grupos e canais o produto sai — os das coleções dele já vêm marcados — e ele sai no ritmo da fila: horário da coleção, intervalo e limite do canal, rodízio dos números. Publicar cinquenta produtos não manda cinquenta mensagens. Produto já publicado num grupo só volta lá com queda de preço. O Status do WhatsApp (a aba Atualizações) aparece na mesma lista, desmarcado: o que vai para ele aparece para todos os contatos que têm o número salvo. Story para mim é outra coisa: manda a foto e a legenda para a conversa "Você" do chip admin do canal, na hora, para você compartilhar no status do canal pelo celular. Não conta como publicação e não tem limite.

Pesquisar no catálogo

A pesquisa acontece aqui: o RAF chama o painel de afiliados com a sessão sincronizada pela extensão, guarda o resultado e mostra abaixo. Marque o que presta e clique em Adicionar ao radar — só o que você escolher passa a ter histórico de preço e comissão.

nenhum item selecionado

Nova coleção

A coleção é o grupo de ofertas — "Sapatos", "Promoção esmalte". Ela não pertence a uma plataforma: recebe produto da Shopee e do Mercado Livre, e cada produto guarda de onde veio. Os canais escolhem a coleção que recebem; em Horários você diz quando as mensagens dela podem sair.

O texto da mensagem não é configurado aqui: cada coleção tem o seu na aba Modelos, e quem não tem usa o padrão do sistema.

Modelo da mensagem por coleção

A caixa já vem com o modelo em uso: o da coleção, se ela tiver um, ou o padrão do sistema — que é literalmente o texto que sai no grupo hoje. Edite por cima e salve. Serve para dar a uma coleção específica um texto de promoção sem mexer em nenhuma outra, na Shopee e no Mercado Livre.

O modelo controla onde cada coisa fica; os valores continuam vindo do banco. São dois porque o Telegram renderiza HTML (<b>) e o WhatsApp usa marcação própria (*negrito*). Linha cujos marcadores vierem todos vazios desaparece inteira — é o que faz o mesmo modelo servir para produto com e sem desconto.

Telegram: WhatsApp:

Quem tem modelo próprio

O que fazer nesta tela Conecte o WhatsApp ou o Telegram onde estão os grupos que o RAF vai usar. Você não precisa conectar os dois. Escolha o aplicativo que já usa para divulgar.

Qual aplicativo você usa para divulgar?

Conecte WhatsApp ou Telegram. Para começar, você precisa de apenas um deles.

Números que divulgam

Cada mensagem sai por um número, em rodízio. Cada número espera um tempo sorteado entre o mínimo e o máximo dele, e só publica em grupo onde é dono ou admin — conferido no WhatsApp a cada 30 minutos.

Status do WhatsApp Verificando…

Dicas importantes anti-bloqueio (segurança do WhatsApp)

  1. Número de uso diário (aquecido): use um número que você já conversa normalmente. Evite chip novo, comprado hoje, sem histórico de conversas.
  2. Ritmo de pessoa, não de robô: cada número espera um tempo sorteado entre a espera mínima e a máxima dele, e cada grupo tem o seu intervalo. Mais de um número divide a carga — nenhum chip precisa falar sozinho o dia todo.
  3. Grupos próprios: divulgue apenas em grupos ou canais onde você é dono/administrador e os membros entraram por vontade própria.
  4. Limite diário baixo: o WhatsApp não tem API oficial para este uso. Deixe o volume com o Telegram e use o Máx. por dia do canal.

Novo canal de transmissão

Um canal atende uma categoria — é assim que o grupo de skincare só recebe skincare. No Telegram, use o chat_id do canal (ex.: -1001234567890) com o bot como administrador. No WhatsApp, o chatId do WAHA (ex.: 1203…@newsletter).

No WhatsApp, o intervalo é o do grupo: o tempo mínimo entre duas mensagens ali, qualquer que seja o número. O ritmo de cada chip é do número, na aba WhatsApp e Telegram. Em Números, escolha por quais números o grupo pode sair — só publica o que estiver como admin ou dono.

Nova tarefa agendada

Aqui mora a periodicidade que antes ficaria no n8n. Publicação escolhe os melhores produtos da coleção, gera o anúncio e enfileira. A janela de horário é opcional e vale no fuso configurado em RAF_TZ.

A coleta agendada saiu em 13/09/2026. Os produtos entram pela extensão, escolhidos a dedo no site da loja — que é onde os filtros prestam. Como consequência, preço e comissão não se atualizam sozinhos: um produto importado guarda o que foi lido no dia. Para atualizar, capture-o de novo pela extensão e importe na mesma coleção.

Transmissão

A fila é uma tabela no Postgres consumida com FOR UPDATE SKIP LOCKED. Falha volta com backoff exponencial; depois do limite de tentativas, para em falha e espera você.

No WhatsApp, o horário agendado é uma previsão: a mensagem só sai quando há um número livre que seja admin do grupo e o grupo já cumpriu o intervalo dele. A coluna Por mostra o número que enviou; num pendente vencido, ela diz o que ele está esperando.

Anúncios gerados

Cupom roda em worker próprio, a cada RAF_INTERVALO_CUPONS_MIN minutos, e fura a fila: ignora o intervalo mínimo e o limite diário do canal, porque a validade é medida em horas. No WhatsApp, furar a fila é sair na frente dos anúncios — o cupom ainda espera um número livre. Cupom de feed sem categoria não é publicado — ajuste o termo de busca da categoria para ele passar a casar.

Nova conexão de API

As credenciais são cifradas antes de ir para o banco e nunca voltam em texto puro para esta tela.

Coleta por sessão do navegador. A API pública do Mercado Livre devolve 403 PolicyAgent em todo o catálogo, então esta plataforma coleta reproduzindo as chamadas do próprio painel de afiliados, autenticadas pela sua sessão.
  • Instale a extensão em extensao/ (Chrome → Extensões → Modo do desenvolvedor → Carregar sem compactação).
  • Abra o painel de afiliados logado e clique em Sincronizar sessão.
  • Navegue no site normalmente e marque os produtos com Shift + clique, ou varra a busca inteira pelo painel lateral da extensão.
Os cookies dão acesso à conta, não só ao painel. Ficam cifrados neste Postgres, que só escuta em localhost. A sessão expira: quando o teste disser que expirou, é só sincronizar de novo.

Coletas

Quem pôs produto no radar, quando e quantos — pela extensão ou pela aba Buscar. Detalhar abre o lote produto a produto, com a coleção em que entrou e o motivo de cada recusa. O resumo em cima é o total por usuário no período.

Coletas agendadas por alvo

Eventos dos workers

Novo usuário

Cada usuário tem um perfil, e o perfil diz o que ele pode ver e editar. Trocar a senha ou desativar derruba as sessões abertas dele — no painel e na extensão.

Perfis de acesso

"Editar" inclui ver. Sem nenhuma das duas, a aba some para quem tem este perfil.

O kit (foto + legenda do anúncio) chega na conversa "Você" do chip marcado, agora. No celular dele, compartilhe no status do canal. Só chips verificados como admin do canal aparecem; o kit de cada produto vai aos canais das coleções dele.

Os grupos e canais das coleções dos produtos marcados já vêm ligados. Cada canal usa o modelo de mensagem da sua coleção. Sai na fila, no ritmo de cada um.

O usuário captura produtos para as coleções destes canais, publica só neles e vê o que foi transmitido neles. Números, ritmo, horários e agenda continuam sendo da administração.

As mensagens desta coleção só saem dentro das faixas, no fuso do RAF. Fora delas, esperam na fila e saem quando a faixa abre — cupom inclusive. Sem nenhuma faixa, saem a qualquer hora. O fim é exclusivo; use 24:00 para "até o fim do dia".

Opcional. A coleta agendada está desligada desde 13/09/2026 — os produtos entram pela extensão. Um alvo diz o que buscar numa plataforma para esta coleção, para quando a coleta voltar ou para uma coleta manual.

Marque os números que podem enviar para este grupo. Número marcado só publica se estiver ativo, conectado e for admin ou dono do grupo — isso é conferido no WhatsApp, não aqui. A mensagem teste sai de verdade no grupo.