Pipeline de Coleta e Geração de Conteúdo com n8n
n8n

Pipeline de Coleta e Geração de Conteúdo com n8n

Automação diária em n8n que coleta notícias de portais de games, anime e tecnologia, filtra os temas relevantes e gera rascunhos de posts no meu blog através de uma cadeia de agentes de IA. Rodando em produção todas as manhãs, com revisão humana antes da publicação.

Pontos principais

  • Automação construída em n8n para manter o fluxo editorial do NerdOpina ativo sem trabalho manual diário.
  • Coleta: schedule trigger dispara toda manhã e consulta em paralelo os feeds RSS de IGN, Adrenaline, Anime News Network, IntoxAnime, Universo Nintendo, PlayStation Blog e Xbox Wire.
  • O feed do Jovem Nerd quebrava o node padrão de RSS, então resolvi por fora: requisição HTTP direta ao endpoint e um parser próprio em JavaScript que limpa BOM e sujeira antes da declaração XML, extrai os títulos por regex com fallback entre CDATA e tag simples, descarta o título do canal e filtra entradas curtas que não são matérias. Retorna a lista normalizada no mesmo formato das demais fontes, o que mantém todo o resto do fluxo agnóstico à origem.
  • Consolidação: todos os retornos passam por um merge em modo append e por nodes Code que normalizam os campos, removem duplicatas entre fontes e descartam itens fora dos critérios definidos.
  • Cadeia de agentes: os temas aprovados seguem por quatro estágios encadeados na API do Gemini, cada um com prompt e responsabilidade própria. Curadoria seleciona e ordena os temas, redação produz o texto base, aprofundamento expande o conteúdo e o finalizador ajusta tom e estrutura. Entre os estágios existem nodes de limpeza que validam e reparam o JSON retornado, e nodes de wait para respeitar o rate limit da camada gratuita da API.

Stack Tecnologica

n8n JavaScript RSS API Gemini Laravel Automação
Projeto privado (NDA)

Galeria

Clique para ampliar

Detalhes da implemetação

Automação construída em n8n para manter o fluxo editorial do NerdOpina ativo sem trabalho manual diário. Coleta: schedule trigger dispara toda manhã e consulta em paralelo os feeds RSS de IGN, Adrenaline, Anime News Network, IntoxAnime, Universo Nintendo, PlayStation Blog e Xbox Wire. O feed do Jovem Nerd quebrava o node padrão de RSS, então resolvi por fora: requisição HTTP direta ao endpoint e um parser próprio em JavaScript que limpa BOM e sujeira antes da declaração XML, extrai os títulos por regex com fallback entre CDATA e tag simples, descarta o título do canal e filtra entradas curtas que não são matérias. Retorna a lista normalizada no mesmo formato das demais fontes, o que mantém todo o resto do fluxo agnóstico à origem. Consolidação: todos os retornos passam por um merge em modo append e por nodes Code que normalizam os campos, removem duplicatas entre fontes e descartam itens fora dos critérios definidos. Cadeia de agentes: os temas aprovados seguem por quatro estágios encadeados na API do Gemini, cada um com prompt e responsabilidade própria. Curadoria seleciona e ordena os temas, redação produz o texto base, aprofundamento expande o conteúdo e o finalizador ajusta tom e estrutura. Entre os estágios existem nodes de limpeza que validam e reparam o JSON retornado, e nodes de wait para respeitar o rate limit da camada gratuita da API. Saída: o post final passa por sanitização de HTML, recebe uma imagem de capa buscada na API do Unsplash e é enviado via POST para uma rota autenticada da API do blog, onde entra como rascunho. Revisão humana: nada é publicado automaticamente. O rascunho fica no painel administrativo para leitura, edição e aprovação antes de ir ao ar. Pontos técnicos que resolvi no caminho: parser próprio para fonte com feed malformado, tratamento de retorno inconsistente do modelo, controle de rate limit com waits calibrados, deduplicação entre fontes que republicam a mesma notícia e autenticação por token na rota de ingestão.

Preview

Galeria