extrator-noticia

Extrai titulo, conteudo e metadados de paginas de noticia usando cascata JSON-LD schema.org e Mozilla Readability

Package Information

Released: 1 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.0
Author: Adriel Ferreira

Documentation

n8n-nodes-extrator-noticia

Community node do n8n que extrai título, conteúdo e metadados de páginas de
notícia a partir do HTML, combinando JSON-LD schema.org e Mozilla Readability.

Por que existe

Portais sem feed RSS, ou com RSS truncado, exigem baixar a página e extrair o
conteúdo. Nenhuma técnica isolada cobre todos os casos:

  • Uns poucos portais expõem articleBody completo no JSON-LD (mais confiável)
  • A maioria só entrega o conteúdo no HTML (Readability resolve)
  • Alguns renderizam por JavaScript (nenhuma das duas resolve)

Este node tenta as duas, escolhe o melhor resultado, e sinaliza o terceiro
caso em vez de devolver lixo silenciosamente.

Instalação

Settings → Community Nodes → Install → n8n-nodes-extrator-noticia

Ou, em Docker sem npm publish, veja a seção "Deploy em Docker Swarm" abaixo.

Uso

Schedule Trigger → HTTP Request (a URL da matéria) → Extrator de Notícia

No campo HTML, aponte para o corpo da resposta do HTTP Request
(normalmente {{ $json.data }}). Preencha URL de Origem sempre que possível:
o Readability usa ela para resolver links e imagens relativas.

Saída

Campo Descrição
sucesso false quando nenhum método achou conteúdo
metodo json-ld, readability ou nenhum
titulo Título da matéria
texto Corpo em texto puro
html Corpo em HTML (só se a opção estiver ligada)
resumo Excerpt ou description
autor Assinatura, quando disponível
publicadoEm Data de publicação, quando disponível
site Nome do veículo
idioma Idioma declarado
caracteres Tamanho do texto extraído
suspeita true quando o texto veio curto demais
motivo Explicação de falha ou suspeita
tempoMs Tempo de processamento

O campo suspeita

É o mais útil na prática. Quando true, a extração tecnicamente funcionou, mas
devolveu pouco texto. Quase sempre significa que o conteúdo é renderizado por
JavaScript e não está no HTML entregue pelo servidor.

Use um IF node depois:

Extrator → IF (suspeita = true) → fallback Puppeteer
                     (false)     → segue o fluxo normal

Ao Falhar

  • Marcar e Continuar (padrão): emite o item com sucesso: false. Recomendado
    para lotes, porque uma matéria problemática não derruba as outras.
  • Descartar Item: não emite o item.
  • Lançar Erro: interrompe a execução.

Deploy em Docker Swarm sem publicar no npm

Todos os serviços n8n precisam do pacote, não só o editor. Com os serviços
fixados em node.role == manager, um bind mount no manager resolve:

# no manager
mkdir -p /opt/n8n-custom/node_modules
cd /opt/n8n-custom/node_modules
# copie a pasta buildada do pacote para cá

E no stack, em todos os serviços n8n (editor, webhook, worker, mcp):

    volumes:
      - /opt/rss-data:/data/rss:ro
      - /opt/n8n-custom:/home/node/.n8n/custom

Alternativa mais limpa a médio prazo: publicar num registry npm privado e usar
o mecanismo normal de community nodes.

Nota sobre task runners

Community nodes rodam no processo do n8n, não no sandbox do task runner.
Isso significa que este node funciona sem NODE_FUNCTION_ALLOW_EXTERNAL, sem
imagem customizada do n8nio/runners e sem mexer no n8n-task-runners.json.

O contrapartida é que ele roda com o mesmo acesso do n8n, incluindo credenciais.
O código são ~250 linhas sem chamadas de rede próprias, auditáveis em minutos.

Licença

MIT

Discussion