ディスカッション フォーラム(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
にまとめると便利です。
構造化データを追加する方法
構造化データは、ページに関する情報を提供し、ページ コンテンツを分類するための標準化されたデータ形式です。構造化データを初めて使用する場合は、構造化データの仕組みについてをご覧ください。
構造化データの作成、テスト、リリースの概要は次のとおりです。ウェブページに構造化データを追加するための手順ガイドについては、構造化データの Codelab をご覧ください。
- 必須プロパティを追加します。使用している形式に基づいて、ページ上の構造化データを挿入する場所をご確認ください。
- ガイドラインに従います。
- リッチリザルト テストでコードを検証し、重大なエラーを修正します。ツールで報告される重大ではない問題の修正も検討してください。構造化データの品質向上に役立ちます(ただし、リッチリザルトの対象となるために必ずしも必要というわけではありません)。
- 構造化データが含まれているページを数ページ導入し、URL 検査ツールを使用して、Google でページがどのように表示されるかをテストします。Google がページにアクセスでき、robots.txt ファイル、
noindex
タグ、ログイン要件によってページがブロックされていないことを確認します。ページが正常に表示されたら、Google に URL の再クロールを依頼できます。 - 今後の変更について Google に継続して情報を提供するために、サイトマップを送信することをおすすめします。これは、Search Console Sitemap API で自動化できます。
例
以下のマークアップの例は、スレッド形式ではない、直線的なフォーラムのページを示しています。
<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>
<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
を使用できます。 - コメントや著者情報、インタラクションの統計など、よく似たマークアップを使用できる、他の有効なマークアップ(
Article
、ImageObject
、VideoObject
など)の利用を推奨しますが、それらにDiscussionForumPosting
のマークアップは使用しないようにしてください。次に例を示します。使用できる場合の例:
- ユーザーが特定のゲームについて話すことができるコミュニティ フォーラムのページ
- さまざまなサブフォーラム コンテンツをホストする一般的なフォーラムのプラットフォーム
- ユーザーが投稿し、コメントやメディアに返信できるソーシャル メディア プラットフォーム
使用できない場合の例:
- ウェブサイトのために代理人が直接書いた記事やブログ(コメント付きのものも含む)
- 製品に関するユーザーのレビュー
- Google のほとんどのユースケースでは、Q&A ページはディスカッション フォーラムのページの特別なケースとみなされます。フォーラムのウェブサイトの構造が主に質問と回答である場合は、代わりに Q&A マークアップを使用することをおすすめします。構造がより一般的で、質問と回答というコンテンツでない場合は、
DiscussionForumPosting
の使用をおすすめします。 - 各
DiscussionForumPosting
に投稿のテキスト全体が含まれるようにし、また回答がそのページに存在する場合は、各Comment
に回答のテキスト全体が含まれるようにします。
技術に関するガイドライン
- 構造化データの一般的な推奨事項とは異なり、可能であれば、
DiscussionForumPosting
のマークアップに Microdata や RDFa を使用することをおすすめします。これにより、マークアップ内で大きなテキスト ブロックを重複して記述する必要がなくなります。これはあくまで推奨事項であり、現在も JSON-LD はサポートされています。
構造化データタイプの定義
このセクションでは、DiscussionForumPosting
に関連する構造化データタイプについて説明します。
コンテンツが Google 検索で使用されるようにするには、必須プロパティを含める必要があります。また、推奨プロパティを使用すると、ディスカッション フォーラムのページについて、さらに詳しい情報を追加できるため、ユーザー エクスペリエンスの向上につながります。
DiscussionForumPosting
(または SocialMediaPosting
)
DiscussionForumPosting
は、ディスカッションのトピックである投稿を定義します。通常、このタイプの投稿はテキストで構成されていますが、メディア コンテンツのみで構成された投稿の場合もあります。
必須プロパティ | |
---|---|
|
Person または Organization 投稿の作成者に関する情報。さまざまな記事の作成者を Google が正確に認識できるように、作成者のマークアップのベスト プラクティスを実践することをおすすめします。 記事とプロフィール ページの構造化データでサポートされているプロパティを参考にして、作成者に適したプロパティをできるだけ多く含めます。 |
|
Text
投稿の作成者の名前。 |
|
投稿が作成された日時(ISO 8601 形式)。 |
text 、image 、video のいずれか |
投稿の内容を示すために、次のプロパティのいずれかを含める必要があります。 ただし、フォーラムの後の方のページやカテゴリページなど、別ページの投稿(外部 |
推奨プロパティ | |
---|---|
|
投稿の作成者を一意に識別するウェブページへのリンク。フォーラムのプロフィール ページなどが該当します。プロフィール ページの構造化データを使用してそのページをマークアップすることをおすすめします。 |
comment |
投稿に関するコメントまたは応答(該当する場合)。ページに表示される順番でコメントをマークアップします。 |
creativeWorkStatus |
投稿が削除されたが、コンテキストやスレッドのために残っている場合、このプロパティを |
dateModified |
投稿が編集された日時(ISO 8601 形式)(該当する場合)。変更がない場合は、公開日を重複して記述する必要はありません。 |
|
Text
投稿のタイトル。タイトルがない場合、テキストを複製したり、見出し用に短くしたりすることは避けてください。これは |
image |
投稿内のインライン画像(該当する場合)。画像がない場合は、この項目にデフォルト画像やアイコン画像、プレースホルダ画像を含めないでください。 |
interactionStatistic |
メインの投稿に関するユーザーの統計情報(該当する場合)。 Google は次の
|
isPartOf |
投稿がウェブサイトの特定の箇所で作成された場合、その投稿の主たる情報源(該当する場合)。たとえば、ウェブサイト上のサブフォーラムやグループなど。 |
|
CreativeWork
投稿内の主要な共有コンテンツ(該当する場合)。最も一般的な使い方は、 投稿内でリンクが共有されていることを示す方法の一例は、以下のとおりです。 ... "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" } ... |
text |
投稿内のテキスト(該当する場合)。指定することが一般的ですが、投稿に他のメディアがある場合は省略も可能です。 |
|
URL
ディスカッションの正規 URL。複数ページにわたるスレッドでは、このプロパティを最初のページの URL に設定します。単一のディスカッションの場合は通常、現在の URL を指します。 |
video |
投稿内のインライン動画(該当する場合)。 |
Comment
Comment
は、CreativeWork
に対するコメントを定義します。今回の場合、DiscussionForumPosting
を指します。これには、DiscussionForumPosting
に関するガイドラインと同じプロパティが多くあります。
必須プロパティ | |
---|---|
|
Person または Organization コメントの作成者に関する情報。さまざまな記事の作成者を Google が正確に認識できるように、作成者のマークアップのベスト プラクティスを実践することをおすすめします。 記事とプロフィール ページの構造化データでサポートされているプロパティを参考にして、作成者に適したプロパティをできるだけ多く含めます。 |
|
コメントが作成された日時(ISO 8601 形式)。変更がない場合は、公開日を重複して記述する必要はありません。 |
text 、image 、video のいずれか |
コメントの内容を示すために、次のプロパティのいずれかを含める必要があります。 |
推奨プロパティ | |
---|---|
|
コメントの作成者を一意に識別するウェブページへのリンク。フォーラムのプロフィール ページなどが該当します。プロフィール ページの構造化データを使用してそのページをマークアップすることをおすすめします。 |
comment |
コメントに関するコメントまたは応答(該当する場合)。ページに表示される順番でコメントをマークアップします。 |
creativeWorkStatus |
コメントが削除されたが、コンテキストやスレッドのために残っている場合、このプロパティを |
dateModified |
コメントが最後に編集された日時(ISO 8601 形式)(該当する場合)。 |
image |
コメント内のインライン画像(該当する場合)。画像がない場合は、この項目にデフォルト画像、アイコン画像、プレースホルダ画像を含めないでください。 |
interactionStatistic |
コメントに関するユーザーの統計情報(該当する場合)。 Google は次の
|
|
CreativeWork
コメント内の主要な共有コンテンツ(該当する場合)。最も一般的な使い方は、 コメント内でリンクが共有されていることを示す方法の一例は、以下のとおりです。 ... "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" } ... |
|
URL
ページ内の特定コメントへの URL(該当する場合)。元の投稿にアクセスするための URL の場合は、このプロパティを含めないでください。 |
video |
コメント内のインライン動画(該当する場合)。 |
InteractionCounter
InteractionCounter
を使用すると、特定のタイプのインタラクションに数値を関連付けることができます。これは、author
プロパティに加え、両方のコンテンツ(DiscussionForumPosting
および Comment
)のプロパティでも使用できます。
必須プロパティ | |
---|---|
|
Integer
このインタラクションが実行された回数。 |
|
このプロパティに対する有効な |
Search Console でリッチリザルトを監視する
Search Console は、Google 検索におけるページのパフォーマンスを監視できるツールです。Search Console に登録していなくても Google 検索結果に表示されますが、登録することにより、Google がサイトをどのように認識しているかを把握して改善できるようになります。次の場合は Search Console を確認することをおすすめします。
構造化データを初めてデプロイした後
ページがインデックスに登録されたら、関連するリッチリザルトのステータス レポートを使用して、問題がないかどうかを確認します。有効な項目が増え、無効な項目が増えていない状態が理想的です。構造化データに問題が見つかった場合の手順は次のとおりです。
- 無効な項目を修正します。
- 一般公開 URL の検査を行い、問題が解決したかどうかを確認します。
- ステータス レポートを使用して検証をリクエストします。
新しいテンプレートをリリースした後やコードを更新した後
ウェブサイトに大幅な変更を加えた場合は、構造化データの無効な項目が増加しないかどうか監視します。- 無効な項目が増加した場合は、新しく公開したテンプレートが正常に機能していないか、既存のテンプレートの新しい操作方法に問題があると考えられます。
- 有効な項目が減少している(無効な項目の増加と一致しない)場合は、ページに構造化データが埋め込まれていない可能性があります。URL 検査ツールを使用して問題の原因を特定します。
トラフィックを定期的に分析する場合
パフォーマンス レポートを使用して Google 検索のトラフィックを分析します。このデータから、検索でページがリッチリザルトとして表示される頻度、ユーザーがページをクリックする頻度、検索結果におけるページの平均掲載順位がわかります。この結果は、Search Console API を使用して自動的に取得することもできます。トラブルシューティング
構造化データの実装またはデバッグで問題が発生した場合は、以下のリソースが参考になります。
- コンテンツ管理システム(CMS)を使用している場合や、サイトが他者によって管理されている場合は、それに応じて支援を依頼してください。その際は、問題の詳細を含む Search Console のメッセージを必ず転送してください。
- 構造化データを使用するコンテンツが必ず検索結果に表示されるとは限りません。コンテンツがリッチリザルトに表示されないときのよくある原因については、構造化データに関する一般的なガイドラインをご覧ください。
- 構造化データにエラーがある可能性があります。構造化データエラーの一覧を確認してください。
- 構造化データへの手動による対策をページに対して実施すると、ページ上の構造化データが無視されるようになります(ただし、Google 検索結果にはページは引き続き表示されます)。構造化データの問題を修正するには、手動による対策レポートを使用します。
- ガイドラインを再度確認し、コンテンツがガイドラインを遵守していないことを確認します。スパム コンテンツまたはスパム マークアップの使用が原因で、問題が発生する場合がありますが、これは構文の問題ではない可能性があり、リッチリザルト テストでは特定できません。
- リッチリザルトが見つからない場合またはリッチリザルトの合計数が不足している場合のトラブルシューティングをご覧ください。
- 再クロールとインデックスの再登録に要する時間を考慮してください。ページを公開した後、Google が対象のページを検出してクロールするまでに数日を要する場合があることに留意してください。クロールとインデックス登録に関する一般的な質問については、Google 検索のクロールとインデックス登録に関するよくある質問をご覧ください。
- Google 検索セントラル フォーラムでもご質問をお受けしています。