Exporte metadados de paginas para CSV

O que é e por que usar

Exportar metadados de páginas para CSV é o processo de extrair informações estruturadas de uma URL — título, meta description, canonical, Open Graph, headings, status HTTP, tempo de resposta — e consolidá-las em uma planilha legível por qualquer ferramenta. Na prática, isso substitui o trabalho manual de abrir dezenas (ou milhares) de páginas em abas do navegador e copiar campos para o Excel.

O uso mais comum está em auditorias de SEO, migrações de site e monitoramento de conteúdo. Quando você precisa responder perguntas como “quantas páginas do blog estão sem meta description?” ou “quais URLs do e-commerce perderam a tag canonical após o deploy?”, a resposta está nos metadados — mas só se eles estiverem organizados em uma tabela. Um CSV com 500 linhas e 12 colunas permite filtrar, ordenar e cruzar dados em segundos, algo inviável com inspeção visual.

Além de SEO, times de conteúdo usam metadados em CSV para planejar calendários editoriais (title + data de publicação + autor), times de produto monitoram status HTTP e redirecionamentos após releases, e times de compliance verificam se páginas institucionais têm as tags obrigatórias. O denominador comum é sempre o mesmo: transformar HTML disperso em dado tabular consultável.

black flat screen computer monitor

Pré-requisitos

  • n8n instalado (self-hosted ou cloud) em versão 1.x ou superior
  • Conhecimento básico de HTTP: entender o que é status code, headers e body
  • Uma lista de URLs para processar — pode ser um CSV, uma planilha Google ou uma sitemap XML
  • Noções de HTML: saber o que são tags <meta>, <title> e <link rel="canonical">
  • Acesso a um editor de planilha (Excel, Google Sheets, LibreOffice) para validar a saída

Exemplo Prático: auditoria de metadados em 340 páginas de um portal jurídico

Um escritório de advocacia com portal de conteúdo mantém 340 artigos publicados entre 2019 e 2024. Após uma migração de CMS, o time de marketing suspeita que várias páginas perderam meta description e canonical. Fazer a verificação manual levaria dois dias; com n8n, o processo leva menos de 15 minutos.

O que será automatizado: o workflow lê uma lista de 340 URLs de um arquivo CSV, faz requisição HTTP em cada uma, extrai título, meta description, canonical, tag robots, status HTTP e tempo de resposta, e consolida tudo em um único CSV final com uma linha por página.

Resultado esperado: um arquivo auditoria-metadados-2024-11.csv com 340 linhas e 8 colunas. A partir dele, o time filtra as páginas com meta_description vazia (estimativa: 40 a 60 URLs) e as que retornam status 404 ou 301 inesperado (estimativa: 10 a 15 URLs), priorizando correções.

Configuração Passo a Passo

1. Preparar a lista de URLs

Crie um arquivo urls.csv com uma coluna url. Se você tem uma sitemap, pode extraí-la antes com um nó HTTP Request + XML, mas para este exemplo vamos assumir o CSV pronto:

url
https://exemplo-juridico.com.br/artigos/direito-trabalhista-home-office
https://exemplo-juridico.com.br/artigos/contratos-digitais
https://exemplo-juridico.com.br/artigos/lgpd-escritorios
...

2. Nó “Read Binary File” (ou Google Sheets)

  • Tipo: Read Binary File
  • File Path: /data/urls.csv
  • Property Name: data

Se preferir Google Sheets, use o nó Google Sheets → Read Rows apontando para a planilha. A lógica seguinte é idêntica.

3. Nó “Spreadsheet File” (parse do CSV)

  • Tipo: Spreadsheet File
  • Operation: Read From File
  • File Format: CSV
  • Header Row: ativado

Saída: um item JSON por linha, no formato {"url": "https://..."}.

4. Nó “Split In Batches”

  • Batch Size: 10

Processar 340 URLs de uma vez sobrecarrega o servidor de destino e pode disparar rate limiting. Lotes de 10 com pausa entre eles são seguros para a maioria dos sites.

5. Nó “HTTP Request” (fetch da página)

  • Method: GET
  • URL: {{ $json.url }}
  • Response Format: String
  • Options → Redirect: desabilitado (queremos ver o status original)
  • Options → Timeout: 15000 ms
  • Options → Ignore SSL Issues: desabilitado
  • Options → Never Error: ativado (para capturar 404 sem quebrar o workflow)

6. Nó “Code” (extração de metadados)

Aqui usamos expressões regulares simples para não depender de bibliotecas externas:

const html = $input.first().json.data || "";
const url = $input.first().json.url;

function match(re) {
  const m = html.match(re);
  return m ? m[1].trim() : "";
}

const title = match(/<title[^>]*>([\s\S]*?)<\/title>/i);
const description = match(/<meta[^>]+name=["']description["'][^>]+content=["']([^"']*)["']/i);
const canonical = match(/<link[^>]+rel=["']canonical["'][^>]+href=["']([^"']*)["']/i);
const robots = match(/<meta[^>]+name=["']robots["'][^>]+content=["']([^"']*)["']/i);
const ogTitle = match(/<meta[^>]+property=["']og:title["'][^>]+content=["']([^"']*)["']/i);

return [{
  json: {
    url,
    status_http: $input.first().json.statusCode || null,
    title: title.substring(0, 200),
    meta_description: description,
    canonical,
    robots,
    og_title: ogTitle,
    tem_meta_description: description.length > 0
  }
}];

7. Nó “Merge” (juntar lotes)

  • Mode: Append
  • Input 1: saída do Code node
  • Input 2: saída do Split In Batches (loop de retorno)

8. Nó “Spreadsheet File” (escrita do CSV)

  • Operation: Write to File
  • File Format: CSV
  • File Name: auditoria-metadados-{{ $now.format('yyyy-MM-dd') }}.csv
  • Options → Delimiter: ,
  • Options → Include Header Row: ativado

9. Nó “Write Binary File”

  • File Path: /data/output/auditoria-metadados.csv

10. Teste com 3 URLs antes do lote completo

Antes de rodar as 340 URLs, edite o CSV de entrada com apenas 3 linhas. Confirme que o CSV de saída tem 3 linhas e 8 colunas, e que os valores extraídos batem com o que você vê no navegador ao inspecionar as páginas.

Dicas e Variações

  • Adicione o User-Agent no HTTP Request (Mozilla/5.0 (compatible; n8n-audit/1.0)). Muitos sites bloqueiam requisições sem User-Agent identificável ou retornam HTML diferente para bots.
  • Inclua h1 e contagem de h2 no Code node se o objetivo for auditoria editorial. Basta um segundo regex contando ocorrências.
  • Salve em Google Sheets em vez de CSV quando o time for colaborar. Troque o passo 8 por Google Sheets → Append; a estrutura de dados é a mesma.
  • Envie o CSV por e-mail ao final com o nó Send Email anexando o binário. Útil para relatórios semanais automatizados.
  • Adicione um nó IF antes do Merge para separar páginas com erro (status ≥ 400) em um CSV próprio, facilitando a priorização.
Colorful stacked shipping containers at Hamburg port, showcasing global trade and logistics.

Erros Comuns e Como Evitá-los

1. Regex quebrado por aspas simples em atributos. Muitos sites usam content='...' em vez de content="...". Sempre inclua ambas as formas no padrão: ["']([^"']*)["'].

2. HTML minificado em uma única linha. O regex de <title> funciona, mas se você tentar extrair blocos maiores (como o conteúdo do <body>), o .* pode consumir tudo. Use regex não ganancioso ([\s\S]*?) ou considere o nó HTML Extract do n8n, que é mais robusto para estruturas complexas.

3. Rate limiting silencioso. Sem pausa entre lotes, o site de destino pode retornar 429 e você captura páginas vazias. Configure Wait de 500 ms a 1 s entre batches no Split In Batches.

4. Encoding errado no CSV final. Páginas em português trazem acentos; se o Excel abrir o CSV com caracteres estranhos, salve com BOM UTF-8. No nó Spreadsheet File, ative Options → Encoding: utf8-bom.

5. Confundir status do redirect com status final. Se você deixou Follow Redirect ativado, o status capturado é o da página de destino. Para auditoria de redirecionamentos, mantenha desabilitado.

Próximos Passos

Com o workflow rodando, o próximo passo concreto é transformar o CSV em ação. Sugestão de sequência para esta semana:

  1. Rode o workflow com as 340 URLs do portal jurídico e abra o CSV no Google Sheets.
  2. Crie uma coluna calculada prioridade com a fórmula =SE(OU(B2="";E2="");"alta";"baixa") para destacar páginas sem description ou canonical.
  3. Agende o workflow para rodar toda segunda-feira às 7h com o nó Schedule Trigger, comparando com a semana anterior para detectar regressões.
  4. Estenda o Code node para capturar também og:image e twitter:card, úteis para auditoria de compartilhamento social.

Se você quiser ir além, o mesmo padrão serve para monitorar concorrentes (troque a lista de URLs pelas páginas do concorrente) ou auditar um sitemap inteiro (adicione um nó XML antes do Split In Batches). A estrutura — ler lista, iterar, extrair, consolidar em CSV — é reutilizável em qualquer cenário que envolva metadados de páginas.

Gostou do conteúdo? Inscreva-se para receber as novidades:

CATEGORIES:

rotinas

Tags:

Comments are closed