heliofilho.devNewsletter
← Projetos
Ideia

O Jornal Tech

Pausado por enquanto: não estava rendendo o esforço de manter atualizado a cada 2h. Foco voltou pro site principal.

Tipo
Produto
Ano
2026
Stack
.NET 8 · Claude API · Next.js · Supabase

O problema

Acompanhar IA virou trabalho de tempo integral: dezenas de fontes em inglês, muito ruído e pouca curadoria em português. Eu gastava a manhã lendo e ainda perdia o que importava.

A solução

Um coletor em .NET roda a cada duas horas, lê 9 feeds RSS e manda cada notícia nova para o Claude, que traduz, resume, classifica e diz se aquilo é notícia de verdade. Quando fontes diferentes falam da mesma coisa, a notícia fica em alta. O site só lê a lista pronta.

Arquitetura

RSS · 9 fontes→Coletor .NET (cron 2h)→Claude: resumo e prioridade→Supabase Postgres→jornal.heliofilho.dev

Decisões técnicas

Mesmo Supabase deste site, em tabelas separadas: um banco só pra manter.
Worker simples em vez de Clean Architecture: não é um domínio complexo.
Uma chamada ao Claude por notícia, com saída JSON validada.
O que não é notícia fica gravado como oculto, pra não pagar a classificação de novo.
Matéria completa e foto usam um modelo melhor, só pra prioridade alta/em alta: não compensa o custo em toda notícia que entra
Charge e pergunta do dia ficam numa tabela separada (jornal_extras), uma linha por dia: zero acoplamento com a tabela de notícias

Trade-offs

Em alta por termos em comum erra quando as manchetes são muito diferentes.
Feed RSS muda sem aviso e precisa de monitoramento.
Atualiza a cada duas horas, não em tempo real.
Charge é feita e subida à mão, não gerada por IA: decisão consciente pra manter o traço e o humor do próprio Hélio
README

Como funciona

  1. Coleta. 9 feeds RSS (OpenAI, Google DeepMind, The Verge, Ars Technica, MIT Technology Review, Simon Willison, GitHub Blog, Tecnoblog e arXiv), olhando as últimas 48 horas. Oferta e cupom são descartados antes de chegar no modelo.
  2. Sem repetição. Link que já está no banco não é classificado de novo.
  3. Classificação. O Claude devolve título e resumo em português, categoria, prioridade e se aquilo deve ser descartado.
  4. Matéria completa. Só pra prioridade alta ou em alta: um modelo melhor lê a fonte inteira, escreve o texto completo e extrai a foto de capa (og:image) da página original, quando ela existe.
  5. Em alta. Notícias de fontes diferentes que compartilham termos relevantes em até 36 horas.
  6. Site. Next.js lê do Supabase e se atualiza a cada 10 minutos.

Charge e pergunta do dia

Uma segunda tabela (jornal_extras) guarda a charge do dia e uma pergunta de múltipla escolha sobre a edição, uma linha por dia. A charge eu desenho e subo manualmente; a pergunta eu escrevo com a resposta certa e de 1 a 3 erradas. Cadastro pelo mesmo painel /admin, em /admin/jornal.

Onde está o código

Dentro do repositório deste site, na pasta jornal/: collector/ (o robô em .NET), web/ (o jornal) e supabase/ (as tabelas).

Próximos passos

  • Juntar a mesma notícia vinda de várias fontes num registro só.
  • Ranking semanal da pergunta do dia - falta decidir como identificar o mesmo leitor entre visitas sem exigir login.