emanujaff Links BR
Automação de ponta a ponta que lê promoções, gera link de afiliado e publica em três canais sozinha.
- ~95%
- ofertas com link de afiliado
- 3
- lojas integradas
- 15min
- site republicado sozinho
Contexto
O desafio
Operar um negócio de ofertas de afiliado na mão é inviável em escala: as melhores promoções aparecem em dezenas de canais diferentes, a qualquer hora, e cada oferta precisa ter o link convertido para afiliado — sendo que cada loja usa um método distinto (cookie logado, API oficial, encurtador).
Além disso, precisa ser publicada rápido (promoção boa acaba em minutos) e em vários lugares ao mesmo tempo, sem republicar duplicado, filtrando o que não presta e sem cair silenciosamente.
A primeira versão do sistema rodava de forma frágil, com processos soltos em segundo plano, sem visibilidade e sem controle. A reformulação nasceu para resolver isso.
Tecnologia
Stack
- Leitor de Telegram
- Python 3, Telethon (conta de usuário via MTProto)
- Painel / Orquestrador
- Node.js, Express
- Baileys (WhatsApp Web multi-device)
- Envio no Telegram
- Telegram Bot API
- Link de afiliado
- n8n — Amazon (cookie/SiteStripe), Mercado Livre (cookie/CSRF), Shopee (API oficial + HMAC)
- Banco de dados
- PostgreSQL (workflows do n8n + armazenamento de cookies)
- Site
- Gerador estático próprio (HTML/CSS), dark mode, responsivo
- Hospedagem
- Cloudflare Pages (deploy via Wrangler CLI)
Princípio central: o painel orquestra tudo. Diferente da primeira versão (que usava um gerenciador de processos externo e deixava o dono “sem saber como desligar”), aqui o painel é o cérebro — inicia, para, reinicia e monitora todas as peças, e expõe uma interface web única de controle. Nada de processos fantasmas.
Estrutura
Arquitetura
Canais de origem no Telegram → userbot.py (Telethon) extrai o link, classifica e resolve o produto canônico → n8n gera o link de afiliado (cookie ou API) → o userbot publica na hora no Telegram e registra no painel → o painel envia pro WhatsApp (Baileys) e regenera o site estático, publicado na Cloudflare Pages a cada 15 minutos.
Latência: os grupos recebem a oferta em segundos; o site reflete em até 15 minutos — por ser estático, é uma otimização deliberada de custo e deploy.
Escopo
Funcionalidades
/Núcleo
- Monitoramento multicanal via conta de usuário do Telegram
- Extração inteligente de links: URL visível, links mascarados e botões inline (muitos canais escondem o link real atrás de “Comprar aqui”)
- Mercado Livre: resolve meli.la e páginas /social/, identifica o produto canônico por pontuação de similaridade de título — e bloqueia quando não há confiança suficiente
- Shopee: normaliza /product/, SEO (i.<shop>.<item>) e deep links; usa a API oficial com assinatura HMAC
- Amazon: extrai o ASIN e monta o link com a tag de afiliado
- Regra “afiliado obrigatório”: sem link de afiliado, a oferta é bloqueada para revisão em vez de publicada sem comissão
/Inteligência de conteúdo
- Classificação oferta × cupom — o bot distingue uma oferta de produto de uma divulgação de cupom e trata cada uma de forma diferente
- Extração de cupons: código, desconto, valor mínimo e limite; afilia o link de resgate quando existe
- Anti-duplicado: não republica o mesmo produto dentro de uma janela configurável (padrão 48h), mesmo vindo de canais diferentes
/Confiabilidade (opera sem supervisão)
- Watchdog: se o userbot ou o n8n travar, o painel reinicia automaticamente, com limite anti-loop
- Reconexão de WhatsApp: trata os códigos de queda do Baileys (428/515/loggedOut) com backoff progressivo e regeneração de QR
- Alertas no Telegram quando algo cai ou quando um cookie de afiliado parece ter expirado
- Detecção de cookie expirado com tela para colar o cookie novo — grava direto no banco, sem SQL na mão
/Site público (hub de crescimento)
- Dark mode responsivo, com marca e logo próprios
- Cada oferta com foto, preço, preço antigo, % de desconto calculado e cupom
- Seção de cupons do dia com botão “copiar código” + página completa de cupons
- Aviso de afiliado, sitemap.xml e robots.txt para SEO
- Deploy automático: o painel regenera e publica o site a cada 15 minutos
Engenharia
Destaques técnicos
Resolução de produto com confiança medida
O Mercado Livre esconde o produto atrás de encurtadores e páginas sociais. Implementei pontuação por similaridade de título para achar o produto canônico — e, crucialmente, um limiar: abaixo dele o sistema bloqueia em vez de arriscar publicar o produto errado.
Cookies que expiram como modo de falha esperado
Amazon e Mercado Livre geram link por cookie de sessão. Em vez de tratar a expiração como bug, o painel detecta a sequência de bloqueios, alerta no Telegram e oferece a tela de troca do cookie.
Impacto
Resultados
- ~95% das ofertas com link de afiliado confirmado (só ~5% bloqueadas para revisão), numa janela típica de 500 ofertas
- Cobertura das 3 maiores lojas do e-commerce brasileiro (Mercado Livre, Shopee, Amazon)
- Publicação em 3 canais simultâneos a partir de uma única fonte
- Uptime de dias sem intervenção, graças ao watchdog e à auto-recuperação
- Consumo mínimo (~1 GB de RAM para toda a stack), viável até em hardware modesto
Retrospectiva
O que esse projeto me ensinou
Orquestração explícita vence “mágica automática”: um único ponto de controle com estado claro é mais confiável — e mais fácil de operar — do que várias camadas que se auto-gerenciam.
Heurística honesta: sistemas que leem texto humano bagunçado precisam ser tunáveis e transparentes sobre o que erram, e ter um caminho de correção.
Estático é subestimado: site estático + CDN entrega performance, SEO e custo zero, e casa perfeitamente com um gerador alimentado por dados.
Confiabilidade é feature: para algo que roda sem supervisão, “avisar quando cai” e “voltar sozinho” valem mais que qualquer recurso novo.