Corrigindo a Indexação do Google em um Projeto Next.js: Experiência com o Brasília Afora
O Brasília Afora é um site de bolsas, olimpíadas e programas para estudantes brasileiros, construído com Next.js. Recentemente, enfrentamos um problema de indexação do Google, onde as páginas de oportunidades não eram indexadas corretamente. Aqui está uma análise detalhada sobre como resolvemos o problema.

O Problema
O Googlebot estava capturando um HTML muito simples, com apenas 40 palavras e um texto 'Carregando oportunidade…'. Isso levou a uma situação onde as páginas de oportunidades não eram indexadas corretamente, e muitas eram rastreadas, mas não indexadas. O problema era que o HTML inicial era um esqueleto vazio, sem conteúdo relevante para o Google.
A Solução
Para resolver esse problema, nós decidimos ler o registro do servidor e entregar o resultado para o React Query como initialData, sem reescrever a página. Isso foi feito transformando a página de um componente client para um server component. Além disso, adicionamos um parâmetro ao hook que a página já usava. Com essas alterações, o HTML gerado pelo servidor agora contém mais conteúdo e o Google pode indexar as páginas de maneira mais eficaz.
Ajustes na Configuração do Servidor
O servidor agora lê o registro diretamente do banco de dados e entrega o resultado para o React Query. Isso garante que o objeto que a página recebe no servidor seja exatamente o que o client buscaria depois, evitando diferenças de hidratação e lógica duplicada.
Melhorando a Hidratação e os Títulos de Busca
Adicionamos a função notFound() para páginas que não encontram o registro, e alteramos os títulos de busca para o formato de busca, <nome>: inscrições, prazo e requisitos, em vez de só o nome. Essas mudanças ajudaram a melhorar a consistência dos títulos de busca.
Duas Perguntas Restantes
Ainda temos duas questões pendentes. Primeiro, as URLs ainda são UUIDs, e não sabemos se é melhor migrá-las para slugs agora. Segundo, algumas bolsas têm duas páginas (uma curada e uma do banco), e não sabemos como configurar o canonical para essas páginas.