ディスカッション フォーラム(DiscussionForumPosting)の構造化データ

ディスカッションとフォーラムの機能のイラスト

ディスカッション フォーラムのマークアップは、人々が集まり個人の見解を共有するフォーラム形式のサイト向けに設計されています。フォーラム サイトがこのマークアップを追加すると、Google 検索はウェブ上のオンライン ディスカッションをよりよく識別できるようになり、ディスカッションとフォーラムなどの機能で、このマークアップを利用できるようになります。

フォーラムにおける DiscussionForumPosting の使い方

基本的に、コメントは関連する投稿の下にネストすることをおすすめします。 フォーラムが独自のスレッド構造を持っている場合は、その構造を表すためにコメントツリーを使用します。

{
  "@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",
      ...
    }]
  }]
}

たとえば、元の投稿の後に一連の返信が続くなど、より直線的な性質のものであれば、それらをすべてコメントとして元の投稿の下にネストします。複数ページあるフォーラムでは、コンテンツの後の方のページに、メインページの URL と元の投稿が含まれているのが理想です。

{
  // 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",
    ...
  }]
}

URL が単一の投稿に関するものである場合は、mainEntity(または mainEntityOfPage)を使用して、その DiscussionForumPosting が主要な要素であることを識別できるようにします。

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

たとえば、プロフィール、トピック、カテゴリページなど、さまざまな投稿が掲載されているウェブページでは、一般的に、同じページにすべての情報が掲載されているわけではなく、ユーザーがクリックして、返信などの追加情報を取得する必要があります。ページに存在する情報のみを含めるかどうか(ディスカッション専用の投稿への URL も追加する)は、自由に選択できます。

対象ページが投稿のディスカッション用のページでない場合、その投稿をメインのコンテンツとしてマークしないようにしてください。ページが関連する投稿の集合であることを示すために、それらを Collection または ItemList にまとめると便利です。

構造化データを追加する方法

構造化データは、ページに関する情報を提供し、ページ コンテンツを分類するための標準化されたデータ形式です。構造化データを初めて使用する場合は、構造化データの仕組みについてをご覧ください。

構造化データの作成、テスト、リリースの概要は次のとおりです。

  1. 必須プロパティを追加します。使用している形式に基づいて、ページ上の構造化データを挿入する場所をご確認ください。
  2. ガイドラインに従います。
  3. リッチリザルト テストでコードを検証し、重大なエラーを修正します。ツールで報告される重大ではない問題の修正も検討してください。構造化データの品質向上に役立ちます(ただし、リッチリザルトの対象となるために必ずしも必要というわけではありません)。
  4. 構造化データが含まれているページを数ページ導入し、URL 検査ツールを使用して、Google でページがどのように表示されるかをテストします。Google がページにアクセスでき、robots.txt ファイル、noindex タグ、ログイン要件によってページがブロックされていないことを確認します。ページが正常に表示されたら、Google に URL の再クロールを依頼できます。
  5. 今後の変更について Google に継続して情報を提供するために、サイトマップを送信することをおすすめします。これは、Search Console Sitemap API で自動化できます。

以下のマークアップの例は、スレッド形式ではない、直線的なフォーラムのページを示しています。

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>
microdata

<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>

ガイドライン

ディスカッション フォーラムの構造化データを Google 検索で使用するためには、下記のガイドラインに準拠する必要があります。

コンテンツ ガイドライン

  • DiscussionForumPosting のマークアップは、ウェブサイトでユーザーが作成した投稿を記述する場合にのみ使用してください。このマークアップは、ウェブサイトのパブリッシャーやその代理人が作成したコンテンツには使用しないでください。
  • サイトが一般的なソーシャル メディア プラットフォームに近い場合は、DiscussionForumPosting の親タイプで要件が同じである SocialMediaPosting を使用できます。
  • コメントや著者情報、インタラクションの統計など、よく似たマークアップを使用できる、他の有効なマークアップ(ArticleImageObjectVideoObject など)の利用を推奨しますが、それらに DiscussionForumPosting のマークアップは使用しないようにしてください。次に例を示します。

    使用できる場合の例:

    • ユーザーが特定のゲームについて話すことができるコミュニティ フォーラムのページ
    • さまざまなサブフォーラム コンテンツをホストする一般的なフォーラムのプラットフォーム
    • ユーザーが投稿し、コメントやメディアに返信できるソーシャル メディア プラットフォーム

    使用できない場合の例:

    • ウェブサイトのために代理人が直接書いた記事やブログ(コメント付きのものも含む)
    • 製品に関するユーザーのレビュー
  • Google のほとんどのユースケースでは、Q&A ページはディスカッション フォーラムのページの特別なケースとみなされます。フォーラムのウェブサイトの構造が主に質問と回答である場合は、代わりに Q&A マークアップを使用することをおすすめします。構造がより一般的で、質問と回答というコンテンツでない場合は、DiscussionForumPosting の使用をおすすめします。
  • DiscussionForumPosting に投稿のテキスト全体が含まれるようにし、また回答がそのページに存在する場合は、各 Comment に回答のテキスト全体が含まれるようにします。

技術に関するガイドライン

  • 構造化データの一般的な推奨事項とは異なり、可能であれば、DiscussionForumPosting のマークアップに Microdata や RDFa を使用することをおすすめします。これにより、マークアップ内で大きなテキスト ブロックを重複して記述する必要がなくなります。これはあくまで推奨事項であり、現在も JSON-LD はサポートされています。

構造化データタイプの定義

このセクションでは、DiscussionForumPosting に関連する構造化データタイプについて説明します。

コンテンツが Google 検索で使用されるようにするには、必須プロパティを含める必要があります。また、推奨プロパティを使用すると、ディスカッション フォーラムのページについて、さらに詳しい情報を追加できるため、ユーザー エクスペリエンスの向上につながります。

DiscussionForumPosting(または SocialMediaPosting

DiscussionForumPosting は、ディスカッションのトピックである投稿を定義します。通常、このタイプの投稿はテキストで構成されていますが、メディア コンテンツのみで構成された投稿の場合もあります。

必須プロパティ

author

Person または Organization

投稿の作成者に関する情報。さまざまな記事の作成者を Google が正確に認識できるように、作成者のマークアップのベスト プラクティスを実践することをおすすめします。

記事プロフィール ページの構造化データでサポートされているプロパティを参考にして、作成者に適したプロパティをできるだけ多く含めます。

author.name

Text

投稿の作成者の名前。

datePublished

DateTime

投稿が作成された日時(ISO 8601 形式)。

textimagevideo のいずれか

投稿の内容を示すために、次のプロパティのいずれかを含める必要があります。

ただし、フォーラムの後の方のページやカテゴリページなど、別ページの投稿(外部 url あり)である場合は、これらのプロパティを含める必要はありません。

推奨プロパティ

author.url

URL

投稿の作成者を一意に識別するウェブページへのリンク。フォーラムのプロフィール ページなどが該当します。プロフィール ページの構造化データを使用してそのページをマークアップすることをおすすめします。

comment

Comment

投稿に関するコメントまたは応答(該当する場合)。ページに表示される順番でコメントをマークアップします。

creativeWorkStatus

Text

投稿が削除されたが、コンテキストやスレッドのために残っている場合、このプロパティを Deleted に設定します(該当する場合)。

dateModified

DateTime

投稿が編集された日時(ISO 8601 形式)(該当する場合)。変更がない場合は、公開日を重複して記述する必要はありません。

headline

Text

投稿のタイトル。タイトルがない場合、テキストを複製したり、見出し用に短くしたりすることは避けてください。これは SocialMediaPosting には推奨されません。

image

ImageObject または URL

投稿内のインライン画像(該当する場合)。画像がない場合は、この項目にデフォルト画像やアイコン画像、プレースホルダ画像を含めないでください。

interactionStatistic

InteractionCounter

メインの投稿に関するユーザーの統計情報(該当する場合)。

Google は次の interactionTypes をサポートしています。

isPartOf

CreativeWork または URL

投稿がウェブサイトの特定の箇所で作成された場合、その投稿の主たる情報源(該当する場合)。たとえば、ウェブサイト上のサブフォーラムやグループなど。CreativeWorkWebPage のようなもの)を使用する場合は、URL プロパティを使って、その URL を指定します。

sharedContent

CreativeWork

投稿内の主要な共有コンテンツ(該当する場合)。最も一般的な使い方は、WebPages(URL を含む)を特定のトピックに関するディスカッションとして共有することですが、画像や動画でも、特にそれらがコメントの主な内容である場合は、このプロパティを使用できます。

投稿内でリンクが共有されていることを示す方法の一例は、以下のとおりです。

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

Text

投稿内のテキスト(該当する場合)。指定することが一般的ですが、投稿に他のメディアがある場合は省略も可能です。

url

URL

ディスカッションの正規 URL。複数ページにわたるスレッドでは、このプロパティを最初のページの URL に設定します。単一のディスカッションの場合は通常、現在の URL を指します。

video

VideoObject

投稿内のインライン動画(該当する場合)。

Comment

Comment は、CreativeWork に対するコメントを定義します。今回の場合、DiscussionForumPosting を指します。これには、DiscussionForumPosting に関するガイドラインと同じプロパティが多くあります。

必須プロパティ

author

Person または Organization

コメントの作成者に関する情報。さまざまな記事の作成者を Google が正確に認識できるように、作成者のマークアップのベスト プラクティスを実践することをおすすめします。

記事プロフィール ページの構造化データでサポートされているプロパティを参考にして、作成者に適したプロパティをできるだけ多く含めます。

datePublished

DateTime

コメントが作成された日時(ISO 8601 形式)。変更がない場合は、公開日を重複して記述する必要はありません。

textimagevideo のいずれか

コメントの内容を示すために、次のプロパティのいずれかを含める必要があります。

推奨プロパティ

author.url

URL

コメントの作成者を一意に識別するウェブページへのリンク。フォーラムのプロフィール ページなどが該当します。プロフィール ページの構造化データを使用してそのページをマークアップすることをおすすめします。

comment

Comment

コメントに関するコメントまたは応答(該当する場合)。ページに表示される順番でコメントをマークアップします。

creativeWorkStatus

Text

コメントが削除されたが、コンテキストやスレッドのために残っている場合、このプロパティを Deleted に設定します(該当する場合)。

dateModified

DateTime

コメントが最後に編集された日時(ISO 8601 形式)(該当する場合)。

image

ImageObject または URL

コメント内のインライン画像(該当する場合)。画像がない場合は、この項目にデフォルト画像、アイコン画像、プレースホルダ画像を含めないでください。

interactionStatistic

InteractionCounter

コメントに関するユーザーの統計情報(該当する場合)。

Google は次の interactionTypes をサポートしています。

sharedContent

CreativeWork

コメント内の主要な共有コンテンツ(該当する場合)。最も一般的な使い方は、WebPages(URL を含む)を特定のトピックに関するディスカッションとして共有することですが、画像や動画でも、特にそれらがコメントの主な内容である場合は、このプロパティを使用できます。

コメント内でリンクが共有されていることを示す方法の一例は、以下のとおりです。

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

url

URL

ページ内の特定コメントへの URL(該当する場合)。元の投稿にアクセスするための URL の場合は、このプロパティを含めないでください。

video

VideoObject

コメント内のインライン動画(該当する場合)。

InteractionCounter

InteractionCounter を使用すると、特定のタイプのインタラクションに数値を関連付けることができます。これは、author プロパティに加え、両方のコンテンツ(DiscussionForumPosting および Comment)のプロパティでも使用できます。

必須プロパティ

userInteractionCount

Integer

このインタラクションが実行された回数。

interactionType

Action サブタイプ

このプロパティに対する有効な Action サブタイプの一覧については、InteractionCounter を使用しているプロパティ(interactionStatistic など)をご確認ください。

使用 Search Console 监控富媒体搜索结果

Search Console 是一款工具,可帮助您监控网页在 Google 搜索结果中的显示效果。即使没有注册 Search Console,您的网页也可能会显示在 Google 搜索结果中,但注册 Search Console 能够帮助您了解 Google 如何查看您的网站并做出相应的改进。建议您在以下情况下查看 Search Console:

  1. 首次部署结构化数据后
  2. 发布新模板或更新代码后
  3. 定期分析流量时

首次部署结构化数据后

等 Google 将网页编入索引后,请在相关的富媒体搜索结果状态报告中查看是否存在问题。 理想情况下,有效项目数量会增加,而无效项目数量不会增加。如果您发现结构化数据存在问题,请执行以下操作:

  1. 修正无效项目
  2. 检查实际网址,核实问题是否仍然存在。
  3. 使用状态报告请求验证

发布新模板或更新代码后

如果对网站进行重大更改,请监控结构化数据无效项目的增幅。
  • 如果您发现无效项目增多了,可能是因为您推出的某个新模板无法正常工作,或者您的网站以一种新的错误方式与现有模板交互。
  • 如果您发现有效项目减少了(但无效项目的增加情况并不对应),可能是因为您的网页中未再嵌入结构化数据。请通过网址检查工具了解导致此问题的原因。

定期分析流量时

请使用效果报告分析您的 Google 搜索流量。数据将显示您的网页在 Google 搜索结果中显示为富媒体搜索结果的频率、用户点击该网页的频率以及网页在搜索结果中的平均排名。您还可以使用 Search Console API 自动提取这些结果。

トラブルシューティング

構造化データの実装またはデバッグで問題が発生した場合は、以下のリソースが参考になります。