Visão geral do SEO do Discourse (sitemap / robots.txt)

O Discourse possui muitos recursos de SEO que funcionam imediatamente após a instalação. Usando nossas configurações padrão sensatas, os gerentes de comunidade podem se concentrar em cultivar uma comunidade e não devem se sentir distraídos pela otimização para mecanismos de busca. Dito isso, há algumas coisas que você pode alterar, algumas coisas que você deve saber e algumas dicas e truques gerais abaixo.

Visualização estática para mecanismos de busca

O Discourse possui uma visualização HTML estática sem JavaScript para ajudar os rastreadores da web a indexar seu site mais rapidamente. O conteúdo entre a visualização dinâmica e a estática é idêntico e nada será omitido ou removido quando o site for rastreado pelos mecanismos de busca.

Aqui está uma comparação do que um usuário vê e do que um mecanismo de busca vê:

Lista de tópicos:

Tópico:

Visualização prévia do rastreador

Você pode inspecionar o que o Discourse serve aos rastreadores sem desativar o JavaScript de duas maneiras:

  1. Parâmetro de URL ?print — Adicione ?print a qualquer URL do Discourse (por exemplo, https://seuforum.com/t/algum-topico/123?print). Isso força o layout do rastreador para qualquer navegador, independentemente do user-agent. É a maneira mais simples de auditar o que os mecanismos de busca veem.

  2. Cabeçalho de solicitação Discourse-Render: crawler — Envie este cabeçalho HTTP com qualquer solicitação para forçar o layout do rastreador. Útil para auditoria programática ou teste com curl:

    curl -H "Discourse-Render: crawler" https://seuforum.com/t/algum-topico/123
    

Tags meta

No Discourse, as tags meta genéricas essenciais para SEO são geradas automaticamente com base no conteúdo presente na página. A tag de título, por exemplo, é derivada do título do site ou do tópico, e a descrição é gerada a partir do conteúdo da primeira postagem. No entanto, a personalização em nível de página para metadados é limitada. Para alterar esses valores, você precisa ajustar as configurações ou os campos de conteúdo dos quais eles são gerados.

  • As configurações do site Título, Descrição e Descrição curta do site
  • Os nomes das categorias
  • Os títulos e o conteúdo das postagens
  • E assim por diante :technologist:

Tags meta de redes sociais

O Discourse gera automaticamente tags meta Open Graph e Twitter (X) Card para compartilhamento social rico:

Tags Open Graph

  • og:site_name, og:type, og:url, og:title, og:description
  • og:image - Configurável via configuração opengraph_image
  • og:article:section - Trilha de navegação da categoria
  • og:article:tag - Tags do tópico

Tags de cartão do X (antigo Twitter)

  • twitter:card - “summary” ou “summary_large_image”
  • twitter:title, twitter:description, twitter:image
  • twitter:label1/data1 - Estimativa de tempo de leitura
  • twitter:label2/data2 - Contagem de curtidas

Configurações

  • opengraph_image - Imagem OG padrão para compartilhamento social
  • x_summary_large_image - Imagem de cartão grande do X (antigo Twitter)

Estrutura e codificação de URLs

Caracteres não latinos e URLs

Por padrão, o Discourse remove caracteres não latinos das URLs dos tópicos quando o locale está definido como EN. Para evitar isso, você pode alterar o locale para o idioma principal não latino ou alterar a configuração método de geração de slug de ASCII para encoded.

SEO internacional e tags hreflang

Para comunidades multilíngues, o Discourse suporta tags hreflang, ajudando os mecanismos de busca a fornecer a versão correta do idioma aos usuários. Para habilitar isso, você deve configurar estas três configurações (Admin → Configurações → Localização):

  1. content_localization_enabled: Habilita o sistema de localização de conteúdo.
  2. content_localization_supported_locales: Define os códigos de locale suportados (por exemplo, en|es|fr).
  3. content_localization_crawler_param: Obrigatório para gerar tags <link rel="alternate" hreflang="..."> e reescrever links internos para rastreadores com o parâmetro de locale tl (por exemplo, /t/topico-exemplo/123?tl=es).

Com essas configurações habilitadas, o Discourse gera links alternativos para cada idioma suportado, ajudando o Google e outros mecanismos de busca a fornecer a versão correta do idioma aos usuários.

Configuração de subpastas vs. subdomínios

O Discourse tende a preferir subdomínios em vez de subpastas devido à sua simplicidade técnica. O Google realmente não tem preferência entre os dois[1], mas o Discourse recomenda fortemente evitar configurações de subpastas, a menos que você tenha um profundo entendimento técnico.

Se você executar o Discourse em uma subpasta (por exemplo, exemplo.com/forum/), seu robots.txt de nível raiz é gerenciado pelo seu servidor web principal, não pelo Discourse. Para ajudar a configurá-lo corretamente, o Discourse expõe um endpoint JSON em /robots-builder.json que retorna as regras de proibição exatas que o Discourse geraria, escopadas ao caminho da sua subpasta. Você pode usar isso como entrada para um script que escreva seu robots.txt de nível de servidor.

Canonicalização

O Google está ansioso para indexar versões canônicas de páginas. No Discourse, para um tópico com várias respostas, o link canônico (a primeira postagem) é entregue ao Google, que então faz a chamada sobre a indexação. Tópicos com mais de 20 postagens serão paginados, cada página sendo um link canônico contendo até 20 postagens.

Por exemplo, a tag canônica para a última resposta em este tópico será https://meta.discourse.org/t/try-out-the-new-sidebar-and-notification-menus/238821?page=12.

Configuração allow_indexing_non_canonical_urls

A configuração oculta do site allow_indexing_non_canonical_urls (padrão: true) controla se variantes de URL não canônicas recebem um cabeçalho X-Robots-Tag: noindex. Quando definido como false, qualquer solicitação para uma URL que difira da URL canônica (por exemplo, um link direto de postagem como /t/slug/123/45 quando o canônico é /t/slug/123?page=3) será servida com um cabeçalho noindex.

Tópicos incorporados

Quando os tópicos são incorporados em sites externos, você pode usar a configuração embed_set_canonical_url para apontar a URL canônica para a localização original de incorporação. Isso evita problemas de conteúdo duplicado quando o mesmo tópico aparece tanto no seu fórum quanto no site de incorporação.

Marcação Schema

O Discourse usa marcação schema.org extensiva para ajudar os mecanismos de busca a entender seu conteúdo. Cada tipo de conteúdo inclui dados estruturados ricos que aparecem nos resultados de busca e ajudam na descoberta.

Tópicos

Use o esquema DiscussionForumPosting para representar o thread principal de discussão e inclui:

  • headline - O título do tópico
  • datePublished - Quando o tópico foi criado
  • articleSection - O nome da categoria
  • keywords - Todas as tags do tópico
  • publisher - Informações do seu site/organização
  • author - Informações do autor original

Postagens e respostas

Postagens individuais dentro de tópicos usam o esquema Comment, incluindo:

  • author - Autor da postagem com nome e link do perfil
  • text - O conteúdo da postagem
  • datePublished e dateModified - Carimbos de data/hora de criação e edição
  • interactionStatistic - Contagens de curtidas usando InteractionCounter com tipo LikeAction

Trilha de navegação (Breadcrumbs)

A navegação por categorias usa o esquema BreadcrumbList que aparece nos resultados de busca, mostrando o caminho da hierarquia de categorias. Cada item da trilha inclui:

  • itemListElement - Links individuais de categorias
  • position - Ordem na hierarquia
  • Cores de categoria para distinção visual

Categorias e listas de tópicos

Páginas de categorias e visualizações de lista de tópicos usam o esquema ItemList:

  • Ordenado com ItemListOrderDescending para classificação cronológica
  • Inclui metadados de posição para cada item
  • Ajuda os mecanismos de busca a entender a estrutura e hierarquia do conteúdo

Página inicial

A página inicial do site inclui dados estruturados JSON-LD para WebSite com SearchAction, o que permite que a caixa de pesquisa do Google apareça diretamente nos resultados de busca para seu site.

Página Sobre

Sua página Sobre usa o esquema de página About com informações de Organization, ajudando os mecanismos de busca a entender a identidade e o propósito de sua comunidade.

Sitemap

O Discourse incorpora um índice de sitemap localizado em /sitemap.xml, que é habilitado por padrão via a configuração enable sitemap. Isso facilita uma melhor indexação pelos mecanismos de busca. Existem outros sitemaps também:

  1. Sitemap Recente (/sitemap_recent.xml) - Tópicos atualizados nos últimos 3 dias (em cache por 1 hora)
  2. Sitemap de Notícias (/news.xml) - Tópicos atualizados nas últimas 72 horas em formato Google News (em cache por 5 minutos), útil para comunidades orientadas a notícias
  3. Sitemaps Paginados - Catálogo completo de tópicos dividido em páginas (em cache por 24 horas)

Os sitemaps são regenerados automaticamente a cada hora por um trabalho agendado e incluem carimbos de data/hora de última modificação. Você pode configurar o número de tópicos por página de sitemap via a configuração sitemap_page_size (padrão: 10.000).

Rastreadores da web

Rastreadores da web, também conhecidos como robôs ou bots, são essenciais para indexar páginas da web e tornar seu conteúdo descobrível. O Discourse usa detecção sofisticada de rastreadores para servir conteúdo otimizado e gerenciar o tráfego de bots efetivamente.

Detecção de rastreadores

O Discourse detecta e lida automaticamente com vários tipos de rastreadores, incluindo:

  • Mecanismos de busca: Googlebot, Bingbot, DuckDuckBot, e outros
  • Redes sociais: Facebookbot, Twitterbot, LinkedInBot, Discordbot
  • Rastreadores de IA: GPTBot, ClaudeBot, Anthropic-AI, BrightBot
  • Serviços de arquivo: Wayback Machine, Archive.org
  • Serviços de monitoramento: Lighthouse, Ferramenta de Inspeção do Google

Quando um rastreador é detectado, o Discourse serve conteúdo otimizado e adiciona cabeçalhos de resposta especiais:

  • X-Discourse-Crawler-View: true - Indica conteúdo otimizado para rastreadores
  • Cabeçalhos Last-Modified - Habilita re-rastreamento eficiente

Gerenciamento de tráfego de rastreadores

Alguns rastreadores podem ser excessivamente entusiastas, atingindo seu fórum com muitas solicitações. O Discourse fornece várias configurações para gerenciar o comportamento do rastreador:

  • blocked_crawler_user_agents - Bloqueia completamente rastreadores específicos (lista de bloqueio padrão inclui: mauibot, semrushbot, ahrefsbot, blexbot, seo spider)
  • slow_down_crawler_user_agents - Limita a taxa de rastreadores em vez de bloqueá-los (padrão inclui rastreadores de IA como GPTBot, ClaudeBot)
  • allowed_crawler_user_agents - :warning: Perigo: definir isso bloqueará TODOS os rastreadores não listados explicitamente, incluindo o Googlebot. Use isso apenas se você pretende restringir o rastreamento a um conjunto específico de bots. Ele tem precedência total sobre blocked_crawler_user_agents. Deixe em branco, a menos que tenha um motivo específico para usá-lo.

Cabeçalhos noindex automáticos

Além da configuração global allow_index_in_robots_txt, o Discourse adiciona automaticamente cabeçalhos de resposta X-Robots-Tag: noindex a vários tipos de página:

  • Páginas de busca — sempre noindexed (resultados de busca não são úteis como páginas indexadas)
  • Páginas de distintivos — sempre noindexed
  • Páginas de grupos — sempre noindexed
  • Páginas de perfil de usuário — sempre noindexed
  • Páginas de filtro/interseção de tags — noindexed (páginas de índice e exibição de tags são isentas)
  • Feeds RSS/Atom — sempre noindexed

Estes são aplicados no nível do controlador e não são configuráveis. Eles garantem que páginas efêmeras, de baixo valor ou de conteúdo duplicado não poluam os índices dos mecanismos de busca.

Análise de rastreadores

Os administradores podem monitorar a atividade dos rastreadores em Admin → Relatórios → Rastreadores da Web para ver quais bots estão acessando seu site e com que frequência.

Recursos adicionais de SEO

Orientação de rastreadores de IA através de llms.txt

O Discourse suporta a convenção llms.txt, que fornece uma maneira padrão de orientar rastreadores baseados em LLM (como aqueles usados por assistentes de IA) sobre o conteúdo e a estrutura do seu site.

Para habilitá-lo:

  1. Prepare um arquivo .txt ou .md (máximo 512 KB) descrevendo seu site para rastreadores de LLM
  2. Faça o upload via a configuração do site llms_txt (Admin → Configurações → Segurança)
  3. Ele será servido em https://seuforum.com/llms.txt

:information_source: O llms.txt é distinto do robots.txt e é projetado especificamente para orientar rastreadores baseados em LLM. Em vez de fornecer regras de acesso, ele fornece contexto semântico…descrevendo o que é seu site, que conteúdo ele contém e como um assistente de IA deve entender e usá-lo. Pense no robots.txt como dizendo aos bots ‘para onde eles podem ir’, e no llms.txt como dizendo à IA ‘o que ela está vendo e por que isso importa’.

Integração OpenSearch

O Discourse fornece uma descrição OpenSearch em /opensearch.xml, habilitando a integração de busca do navegador. Os usuários podem adicionar seu fórum diretamente à lista de mecanismos de busca do navegador.

Feeds RSS

Cada tópico tem um feed RSS disponível em /t/{slug}/{id}.rss, que inclui:

  • Título e descrição do tópico
  • Todas as postagens/respostas com informações do autor
  • Datas de publicação e horários de última atualização
  • Categorias e tags

:warning: Nota: Os caminhos dos feeds RSS (/t/*/*.rss, /c/*.rss) são proibidos no robots.txt para o agente curinga geral * para evitar a indexação de conteúdo duplicado pela maioria dos rastreadores. O Googlebot é explicitamente isento desta restrição e pode acessar feeds RSS.

Verificação de site do Google

Use a configuração google_site_verification_token para adicionar tags meta de verificação do Google Search Console sem editar modelos de tema.

Aplicativo web progressivo (PWA)

O Discourse gera um Manifesto de Aplicativo Web em /manifest.json para descoberta de aplicativos móveis e prompts de instalação.

Migrações e redirecionamentos de URL

O recurso de permalink é usado para redirecionar URLs antigas, visando preservar o SEO, prevenir erros “Página Não Encontrada” e auxiliar os mecanismos de busca com os metadados corretos para indexação mais fácil.

Se o site da sua comunidade for migrado para o Discourse por nossa equipe, os redirecionamentos de URL estão incluídos, a menos que haja motivos válidos para não o fazer.

Se você estiver usando um dos scripts de importação existentes, você deve garantir que o script lide com isso[2]. Você pode adicionar permalinks manualmente do seu painel de administrador, em PersonalizarPermalinks.

Métodos de desindexação

Para remover páginas do índice do Google, você pode remover o conteúdo ou bloquear o acesso a uma página. Dependendo de suas necessidades, você pode tornar todo o seu site privado[3]. Você pode excluir tópicos ou colocá-los em categorias restritas. Tópicos ocultos não são indexados por padrão, mas podem ser se houver um link público em algum lugar que redirecione para ele.

Para uma remoção permanente, usar a ferramenta de Remoções no Google Search Console é a solução para manter as páginas fora dos resultados de busca. Saiba mais em Remove information on your website from Google - Search Console Help


  1. ↩︎

  2. Procurar a string de permalink no script de importação deve fornecer essas informações. ↩︎

  3. Procure pela configuração de login obrigatório. ↩︎

21 curtidas