Pular para o conteúdo
emanujaff
Todos os projetos
Em produção2026

emanujaff Links BR

Automação de ponta a ponta que lê promoções, gera link de afiliado e publica em três canais sozinha.

Node.jsPythonTelethonExpressBaileysn8nPostgreSQLCloudflare Pages
~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
WhatsApp
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.