Dados estruturados de fórum de discussão (DiscussionForumPosting)

Ilustração do recurso de discussões e fóruns

A marcação de fórum de discussão foi projetada para qualquer site no estilo de fórum em que as pessoas compartilhem perspectivas em primeira mão. Quando os sites de fóruns adicionam essa marcação, a Pesquisa Google pode identificar melhor as discussões on-line na Web e usar essa marcação em recursos como Discussões e fóruns e Perspectivas.

Como usar o DiscussionForumPosting em um fórum

Em geral, recomendamos aninhar os comentários na postagem a que eles se referem. Se o fórum tiver uma estrutura de sequência própria, use uma árvore de comentários para representar a estrutura:

{
  "@context": "https://schema.org",
  "@type": "DiscussionForumPosting",
  "headline": "Very Popular Thread",
  ...
  "comment": [{
    "@type": "Comment",
    "text": "This should not be this popular",
    ...
    "comment": [{
      "@type": "Comment",
      "text": "Yes it should",
      ...
    }]
  }]
}

Se a natureza for mais linear, por exemplo, uma postagem original seguida por uma série de respostas, aninhe todas elas na postagem original como comentários. O ideal é que as páginas posteriores de conteúdo em fóruns de várias páginas incluam a postagem original com o URL da página principal:

{
  // JSON-LD on non-threaded forum at https://example.com/post/very-popular-thread/14
  "@context": "https://schema.org",
  "@type": "DiscussionForumPosting",
  "headline": "Very Popular Thread", // Only the headline/topic is explicitly present
  "url": "https://example.com/post/very-popular-thread",
  ...
  "comment": [{
    "@type": "Comment",
    "text": "First Post on this Page",
    ...
  },{
    "@type": "Comment",
    "text": "Second Post on this Page",
    ...
  }]
}

Se o URL for principalmente sobre uma única postagem, use mainEntity (ou mainEntityOfPage) para identificar o DiscussionForumPosting principal:

{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "url": "https://example.com/post/very-popular-thread",
  "mainEntity": {
    "@type": "DiscussionForumPosting"
    ...
  }
}

Para páginas da Web que têm uma lista de postagens (por exemplo, em uma página de perfil, tópico ou categoria), é comum que elas não tenham todas as informações presentes na mesma página e exijam que o usuário clique para acessar mais informações (como respostas). Você decide se quer incluir apenas as informações que estão presentes na página e incluir o URL da postagem específica à discussão.

Não marque uma postagem como entidade principal se ela não for uma página de discussão da postagem. Para mostrar que as páginas são um conjunto de postagens relacionadas, pode ser útil anexar todas elas a um Collection ou ItemList.

Como adicionar dados estruturados

Os dados estruturados são um formato padronizado para fornecer informações sobre uma página e classificar o conteúdo dela. Caso você não saiba muito sobre o assunto, veja como os dados estruturados funcionam.

Esta é uma visão geral de como criar, testar e lançar dados estruturados.

  1. Adicione as propriedades obrigatórias. Com base no formato que você está usando, saiba onde inserir dados estruturados na página.
  2. Siga as diretrizes.
  3. Valide o código com o Teste de pesquisa aprimorada e corrija os erros críticos. Corrija também os problemas não críticos que possam ser sinalizados na ferramenta, porque eles podem melhorar a qualidade dos dados estruturados, mas isso não é necessário para se qualificar para pesquisas aprimoradas.
  4. Implante algumas páginas que incluam os dados estruturados e use a Ferramenta de inspeção de URL para testar como o Google vê a página. Verifique se a página está acessível ao Google e se não está bloqueada por um arquivo robots.txt, pela tag noindex ou por requisitos de login. Se estiver tudo certo, peça ao Google para rastrear novamente seus URLs.
  5. Para informar o Google sobre mudanças futuras, recomendamos que você envie um sitemap. É possível automatizar isso com a API Search Console Sitemap.

Exemplos

O exemplo de marcação a seguir mostra uma página de fórum linear e sem formato de conversa:

JSON-LD

<html>
  <head>
    <title>I went to the concert!</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "DiscussionForumPosting",
      "mainEntityOfPage": "https://example.com/post/very-popular-thread",
      "headline": "I went to the concert!",
      "text": "Look at how cool this concert was!",
      "video": {
        "@type": "VideoObject",
        "contentUrl": "https://example.com/media/super-cool-concert.mp4",
        "name": "Video of concert",
        "uploadDate": "2024-03-01T06:34:34+02:00",
        "thumbnailUrl": "https://example.com/media/super-cool-concert-snap.jpg"
      },
      "url": "https://example.com/post/very-popular-thread",
      "author": {
        "@type": "Person",
        "name": "Katie Pope",
        "url": "https://example.com/user/katie-pope",
        "agentInteractionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": "https://schema.org/WriteAction",
          "userInteractionCount": 8
        }
      },
      "datePublished": "2024-03-01T08:34:34+02:00",
      "interactionStatistic": {
        "@type": "InteractionCounter",
        "interactionType": "https://schema.org/LikeAction",
        "userInteractionCount": 27
      },
      "comment": [{
        "@type": "Comment",
        "text": "Who's the person you're with?",
        "author": {
          "@type": "Person",
          "name": "Saul Douglas",
          "url": "https://example.com/user/saul-douglas",
          "agentInteractionStatistic": {
            "@type": "InteractionCounter",
            "interactionType": "https://schema.org/WriteAction",
            "userInteractionCount": 167
          }
        },
        "datePublished": "2024-03-01T09:46:02+02:00"
      },{
        "@type": "Comment",
        "text": "That's my mom, isn't she cool?",
        "author": {
          "@type": "Person",
          "name": "Katie Pope",
          "url": "https://example.com/user/katie-pope",
          "agentInteractionStatistic": {
            "@type": "InteractionCounter",
            "interactionType": "https://schema.org/WriteAction",
            "userInteractionCount": 8
          }
        },
        "datePublished": "2024-03-01T09:50:25+02:00",
        "interactionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": "https://schema.org/LikeAction",
          "userInteractionCount": 7
        }
      }]
    }
  </script>
</head>
<body>
</body>
</html>
Microdados

<html>
    <body>
      <div id="main-post" itemtype="https://schema.org/DiscussionForumPosting" itemscope>
        <meta itemprop="mainEntityOfPage" content="https://example.com/post/very-popular-thread" />
        <meta itemprop="url" content="https://example.com/post/very-popular-thread" />
        <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
          <div><a href="https://example.com/user/katie-pope" itemprop="url"><span itemprop="name">Katie Pope</span></a></div>
          <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
            <span itemprop="userInteractionCount">8</span>
            <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
          </div>
        </div>
        <div itemprop="datePublished" content="2024-03-01T08:34:34+02:00">March 1</div>
        <div itemprop="headline">I went to the concert!</div>
        <div>
          <div itemprop="video" itemtype="https://schema.org/VideoObject" itemscope>
            <meta itemprop="name" content="Video of concert" />
            <meta itemprop="contentUrl" content="https://example.com/media/super-cool-concert.mp4" />
            <meta itemprop="uploadDate" content="2024-03-01T06:34:34+02:00" />
            <meta itemprop="thumbnailUrl" content="https://example.com/media/super-cool-concert-snap.jpg" />
          </div>
          <span itemprop="text">Look at how cool this concert was!</span>
        </div>
        <div itemprop="interactionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
          <span itemprop="userInteractionCount">27</span>
          <span itemprop="interactionType" content="https://schema.org/LikeAction">likes</span>
        </div>
        <div id="comment-1" itemprop="comment" itemtype="https://schema.org/Comment" itemscope>
          <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
            <div><a href="https://example.com/user/saul-douglas" itemprop="url"><span itemprop="name">Saul Douglas</span></a></div>
            <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
              <span itemprop="userInteractionCount">167</span>
              <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
            </div>
          </div>
          <div itemprop="datePublished" content="2024-03-01T09:46:02+02:00">March 1</div>
          <div>
            <span itemprop="text">Who's the person you're with?</span>
          </div>
        </div>
        <div id="comment-2" itemprop="comment" itemtype="https://schema.org/Comment" itemscope>
          <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
            <div><a href="https://example.com/user/katie-pope" itemprop="url"><span itemprop="name">Katie Pope</span></a></div>
            <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
              <span itemprop="userInteractionCount">8</span>
              <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
            </div>
          </div>
          <div itemprop="datePublished" content="2024-03-01T09:50:25+02:00">March 1</div>
          <div>
            <span itemprop="text">That's my mom, isn't she cool?</span>
          </div>
          <div itemprop="interactionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
            <span itemprop="userInteractionCount">7</span>
            <span itemprop="interactionType" content="https://schema.org/LikeAction">likes</span>
          </div>
        </div>
      </div>
    </body>
</html>

Diretrizes

Siga estas diretrizes para que os dados estruturados do fórum de discussão se qualifiquem para uso na Pesquisa Google:

Diretrizes de conteúdo

  • Use a marcação DiscussionForumPosting somente para descrever uma postagem gerada pelo usuário em um fórum de site. Não use essa marcação para conteúdo de autoria principal dos editores do site ou dos agentes deles.
  • Encorajamos marcações válidas de outros tipos (Article, SocialMediaPosting, VideoObject) que podem usar marcações muito semelhantes com comentários, informações do autor e estatísticas de interação, mas elas não devem usar DiscussionForumPosting. Veja alguns exemplos:

    :

    • Uma página de fórum da comunidade onde os usuários podem falar sobre um determinado jogo
    • Plataforma de fóruns genérica que hospeda uma ampla variedade de conteúdo de subfórum

    :

    • Um artigo ou blog escrito diretamente por um agente para o site (mesmo com comentários)
    • Avaliações de usuários sobre um produto
  • Na maioria dos casos de uso do Google, uma página de perguntas e respostas é considerada um caso especial de uma página de fórum de discussão. Se a estrutura do site do fórum for composta principalmente de perguntas com respostas, recomendamos o uso da marcação de perguntas e respostas. Caso estrutura seja mais geral e não costuma ter conteúdo de perguntas e respostas, DiscussionForumPosting é uma opção melhor.
  • Confira se cada DiscussionForumPosting inclui todo o texto da postagem e se cada Comment inclui todo o texto da resposta, se ela for encontrada nessa página.

Diretrizes técnicas

  • Diferentemente da nossa preferência geral de dados estruturados, recomendamos que você forneça a marcação DiscussionForumPosting em microdados (ou RDFa), se possível. Isso evita que você precise duplicar blocos de texto grandes dentro da marcação. No entanto, isso é apenas uma recomendação, e JSON-LD ainda é totalmente compatível.

Definições de tipos de dados estruturados

Esta seção descreve os tipos de dados estruturados relacionados a DiscussionForumPosting.

É necessário incluir as propriedades obrigatórias para que o conteúdo seja qualificado para uso na Pesquisa Google. Você também pode incluir as propriedades recomendadas para adicionar mais informações sobre suas páginas de fórum de discussão, o que pode proporcionar uma melhor experiência do usuário.

DiscussionForumPosting

O tipo DiscussionForumPosting define uma postagem original que é o tema da discussão. Embora esse tipo geralmente seja composto de texto, é possível ter uma postagem no fórum que consista apenas em conteúdo de mídia.

Propriedades obrigatórias

author

Person ou Organization

Informações sobre o autor da postagem. Para ajudar o Google a entender melhor a autoria dos vários recursos, recomendamos seguir as práticas recomendadas de marcação de autores.

Inclua o máximo de propriedades coerentes do autor, usando as propriedades compatíveis dos dados estruturados do artigo e da página de perfil como guia.

author.name

Text

O nome do autor da postagem.

datePublished

DateTime

A data e a hora em que a postagem foi feita, no formato ISO 8601.

text, image ou video

Para representar o conteúdo da postagem, inclua uma das seguintes propriedades:

Isso não é necessário se você estiver representando uma postagem em outra página (com um url externo), como nas páginas posteriores de fóruns ou de categoria do fórum.

Propriedades recomendadas

author.url

URL

É um link para uma página da Web que identifica exclusivamente o autor da postagem, provavelmente uma página de perfil do fórum. Recomendamos marcar essa página usando dados estruturados da página de perfil.

comment

Comment

Um comentário ou uma resposta à postagem, se aplicável. Marque os comentários na ordem em que eles aparecem na página.

creativeWorkStatus

Text

Se a postagem tiver sido excluída, mas permanecer para contexto ou sequência da conversa, defina essa propriedade como Deleted.

dateModified

DateTime

É a data e a hora em que a postagem foi editada no formato ISO 8601, se aplicável. Se não houve mudanças, não é necessário duplicar a data de publicação.

headline

Text

O título da postagem. Se não houver um título separado, não duplique nem trunque o texto em um título.

image

ImageObject ou URL

Imagens in-line na postagem, se aplicável. Se não houver imagens, não inclua imagens padrão, de ícone ou de marcador de posição neste campo.

interactionStatistic

InteractionCounter

Estatísticas do usuário aplicadas à postagem principal, se aplicável.

O Google aceita os seguintes interactionTypes:

isPartOf

CreativeWork ou URL

A origem principal da postagem, se ela ocorrer em uma parte específica do site geral, se aplicável. Por exemplo, um subfórum ou grupo dentro do site mais amplo. Se um CreativeWork (como WebPage) for usado, use a propriedade URL para especificar o URL.

sharedContent

CreativeWork

O conteúdo compartilhado principal na postagem, se aplicável. A maneira mais comum de usar isso é compartilhar WebPages (com URLs) como uma discussão sobre um tema, mas imagens ou vídeos também podem ser usados com essa propriedade, especialmente se forem o conteúdo principal do comentário.

Confira um exemplo de como adicionar um link compartilhado na postagem:

  ...
  "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" }
  ...
text

Text

Qualquer texto na postagem, se aplicável. Isso é muito comum, mas em alguns casos pode ser deixado de fora se houver outras mídias na postagem.

url

URL

É o URL canônico da discussão. Em conversas de várias páginas, defina essa propriedade como o URL da primeira página. Para uma única discussão, esse normalmente é o URL atual.

video

VideoObject

Vídeos in-line na postagem, se aplicável

Comment

O tipo Comment define um comentário em um CreativeWork original. Nesse caso, é um DiscussionForumPosting. Ele tem muitas das mesmas propriedades que nossas diretrizes de DiscussionForumPosting.

Propriedades obrigatórias

author

Person ou Organization

Informações sobre o autor do comentário. Para ajudar o Google a entender melhor a autoria dos vários recursos, recomendamos seguir as práticas recomendadas de marcação de autores.

Inclua o máximo de propriedades coerentes do autor, usando as propriedades compatíveis dos dados estruturados do artigo e da página de perfil como guia.

datePublished

DateTime

A data e a hora em que o comentário foi feito, no formato ISO 8601. Se não houve mudanças, não é necessário duplicar a data de publicação.

text

Text

É o texto principal do comentário. O ideal é que esse campo corresponda ao texto presente na página no comentário.

Propriedades recomendadas

author.url

URL

É um link para uma página da Web que identifica exclusivamente o autor do comentário, provavelmente uma página de perfil do fórum. Recomendamos marcar essa página usando dados estruturados da página de perfil.

comment

Comment

Outro comentário sobre ou em resposta ao comentário, se aplicável. Marque os comentários na ordem em que aparecem na página.

creativeWorkStatus

Text

Se o comentário foi excluído, mas permanece para contexto ou sequência da conversa, defina essa propriedade como Deleted, se aplicável.

dateModified

DateTime

É a data e a hora em que o comentário foi editado pela última vez no formato ISO 8601, se aplicável.

image

ImageObject ou URL

Imagens in-line no comentário, se aplicável. Se não houver imagens, não inclua imagens padrão, de ícone ou de marcador de posição neste campo.

interactionStatistic

InteractionCounter

Estatísticas do usuário aplicadas ao comentário, se aplicável.

O Google aceita os seguintes interactionTypes:

sharedContent

CreativeWork

O conteúdo compartilhado principal no comentário, se aplicável. A maneira mais comum de usar isso é compartilhar WebPages (com URLs) como uma discussão sobre um tema. No entanto, imagens ou vídeos também podem ser usados com essa propriedade, especialmente se forem o conteúdo principal do comentário.

Confira um exemplo de como adicionar um link compartilhado no comentário:

  ...
  "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" }
  ...

url

URL

O URL para este comentário específico na página, se aplicável. Não inclua essa propriedade se for apenas o URL da postagem original.

video

VideoObject

Vídeos in-line no comentário, se aplicável.

InteractionCounter

O InteractionCounter permite que uma contagem seja associada a um determinado tipo de interação. Isso pode ser usado nas propriedades de conteúdo (DiscussionForumPosting e Comment) e nas propriedades author.

Propriedades obrigatórias

userInteractionCount

Integer

É o número de vezes que esta interação foi realizada.

interactionType

Subtipo de Action

Para conferir uma lista de subtipos de Action válidos para essa propriedade, verifique a propriedade que está usando InteractionCounter (por exemplo, interactionStatistic).

Monitorar pesquisas aprimoradas com o Search Console

O Search Console é uma ferramenta que ajuda você a monitorar o desempenho das suas páginas na Pesquisa Google. Não é preciso se inscrever na plataforma para ser incluído nos resultados da Pesquisa Google, mas isso pode ajudar você a entender e melhorar como vemos seu site. Recomendamos verificar o Search Console nos seguintes casos:

  1. Depois de implantar os dados estruturados pela primeira vez
  2. Depois de lançar novos modelos ou atualizar o código
  3. Análise periódica do tráfego

Depois de implantar os dados estruturados pela primeira vez

Depois que o Google indexar as páginas, procure problemas com o relatório de status da pesquisa aprimorada relevante. Em condições ideais, vai haver um aumento de itens válidos e nenhum aumento de itens inválidos. Se você encontrar problemas nos dados estruturados, faça o seguinte:

  1. Corrija os itens inválidos.
  2. Inspecione um URL ativo para verificar se o problema persiste.
  3. Solicite a validação com o relatório de status.

Depois de lançar novos modelos ou atualizar o código

Ao fazer mudanças significativas no site, monitore aumentos nos itens inválidos de dados estruturados.
  • Caso você perceba um aumento nos itens inválidos, talvez tenha lançado um novo modelo que não funcione ou o site esteja interagindo com o modelo existente de uma maneira nova e incorreta.
  • Caso você veja uma diminuição nos itens válidos (não correspondidos por um aumento nos itens inválidos), talvez não esteja mais incorporando os dados estruturados às páginas. Use a Ferramenta de inspeção de URL para saber o que está causando o problema.

Análise periódica do tráfego

Analise o tráfego da Pesquisa Google com o Relatório de desempenho. Os dados vão mostrar com que frequência sua página aparece como aprimorada na Pesquisa, com que frequência os usuários clicam nela e qual é a posição média dela nos resultados. Também é possível extrair automaticamente esses resultados com a API Search Console.

Solução de problemas

Se você tiver problemas para implementar ou depurar dados estruturados, veja alguns recursos que podem ajudar.