stamatios
← Voltar ao blog
Um funil recebe e-mails e alertas e solta um jornal dobrado em um foguete, resumindo o pipeline do Em 3 min.
Stamatios Stamou JrPor Stamatios Stamou Jr·

Como o Em 3 min é feito

Todo dia útil, dezenas de notícias de tech e IA viram uma edição que se lê em 3 minutos. Ninguém toca em nada: um pipeline faz o trabalho inteiro, do email ao envio da newsletter. Este post é o raio-X de como ele funciona.

1. Tudo começa no email

As fontes chegam como newsletters na minha caixa de entrada. Um script em Python lê os emails do dia via IMAP, limpa o HTML e junta as edições num texto só. Um arquivo de estado guarda o que já foi processado - rodar duas vezes não duplica nada.

2. Uma chamada consolida o dia

As newsletters se repetem muito: a mesma notícia aparece em três edições com títulos diferentes. Em vez de processar uma por uma, o texto consolidado vai para o modelo numa chamada só, que remove duplicatas, escolhe o que importa e devolve a lista de matérias do dia, já em ordem de relevância. Cada matéria vira um card com título, gancho e fonte.

3. Cada card busca a própria fonte

O card nasce do resumo da newsletter, mas o texto de 3 minutos sai da fonte original. O pipeline baixa o artigo de cada link; quando o site bloqueia (paywall, anti-bot), entra um extrator - Jina ou Firecrawl. Se nada funciona (um post do X, por exemplo), o card fica só com o resumo curto. Sem inventar.

4. Um JSON faz três coisas

Do texto bruto do artigo, uma única chamada ao modelo devolve um JSON com o resumo de ~3 min, o gancho ("por que você deveria ler") e o prompt da imagem. O mesmo JSON também devolve entidades, temas e story_key - os metadados que, na etapa 6, conectam as notícias entre si.

5. Imagem, site e newsletter

Do prompt sai a ilustração line-art do card. O card é gravado no formato Seed, o build gera o site estático e sobe para o servidor. O mesmo conteúdo alimenta a newsletter: quem assina recebe a edição no email, sem precisar lembrar de visitar o site.

6. Dos cards nasce um grafo

Cada card classificado vira um nó, e os metadados viram arestas: mesma história, mesma entidade, mesmo tema. O resultado é um mapa com mais de 700 matérias e 2.800 conexões - é ele que monta o bloco "Relacionados" no fim de cada texto, e é ele que dá para explorar visualmente no Grafo das notícias: cada ponto é uma matéria, cada linha uma conexão, e clicar num ponto abre a leitura. O bastidor disso - vetores, rerank, o SQLite que segura tudo - está no post do grafo.

Os detalhes que sustentam o hábito

Os modelos variam, o critério não. MiniMax, Qwen, DeepSeek - troco conforme custo e qualidade, via OpenRouter. O que não muda: uma edição por dia útil, em português, para ler em cerca de 3 minutos.

Falha não para o dia. O pipeline roda em etapas (texto, artigos, imagens, relacionados, deploy, campanha). Se uma etapa falha, as outras continuam e o log conta o que aconteceu. No dia seguinte, o que faltou é retomado.

Nada em produção além do HTML. Toda a conta - LLM, embeddings, imagens - acontece no build. O site publicado é estático: se tudo cair, as páginas continuam no ar.

Ler o Em 3 min