FAQ構造化データ(FAQPage)の実装ガイド|JSON-LDコード付きで徹底解説
FAQPage構造化データとは
FAQPage構造化データは、ページ内のよくある質問(FAQ)セクションを検索エンジンやAIに正確に伝えるためのSchema.orgマークアップです。正しく実装すると、Google検索結果にFAQリッチリザルトとして質問と回答が直接表示される可能性があります。
また、AI検索(Google AI OverviewやChatGPTなど)がページ内容を理解する際にも、構造化されたQ&Aデータは引用されやすい形式です。SEOとGEO/AIO対策の両方に効果がある、費用対効果の高い施策といえます。
FAQリッチリザルトの表示条件
Googleは以下の条件を満たすFAQPage構造化データをリッチリザルトとして表示する可能性があります。
- ページの内容がFAQ形式(質問と回答のペア)であること
- 質問と回答がページ上に実際に表示されていること(隠しコンテンツはNG)
- 1つの質問に対して1つの回答が対応していること
- 広告やプロモーション目的のコンテンツでないこと
注意: 2023年8月以降、GoogleはFAQリッチリザルトの表示を大幅に制限しました。政府機関や医療機関のサイトでは引き続き表示されますが、一般サイトでは表示頻度が下がっています。ただし、構造化データ自体はAI検索やBingでの活用が続いているため、実装する価値は十分にあります。
JSON-LDによるFAQPage実装コード
基本的な実装例
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "SEOとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "SEO(Search Engine Optimization)とは、検索エンジンの検索結果でWebサイトをより上位に表示させるための施策の総称です。キーワード最適化、コンテンツの質の向上、技術的な改善などが含まれます。"
}
},
{
"@type": "Question",
"name": "GEOとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "GEO(Generative Engine Optimization)とは、AIによる検索結果や回答生成で自サイトのコンテンツが引用・参照されるよう最適化する施策です。構造化データの実装やE-E-A-Tの強化などが有効です。"
}
}
]
}
</script>
構造のポイント
| プロパティ | 役割 | 必須 |
|---|---|---|
@type: "FAQPage" | ページ全体がFAQであることを宣言 | はい |
mainEntity | 質問の配列 | はい |
@type: "Question" | 各質問を定義 | はい |
name | 質問文 | はい |
acceptedAnswer | 回答オブジェクト | はい |
@type: "Answer" | 回答であることを宣言 | はい |
text | 回答文(HTMLタグ使用可) | はい |
Next.js / Reactでの実装方法
Next.jsのApp RouterでFAQ構造化データを実装する例です。
export default function FaqPage() {
const faqs = [
{
question: "SEOスコアはどのように計算されますか?",
answer: "15項目の技術的SEO要素を分析し、各項目を配点に応じて採点します。"
},
{
question: "無料で利用できますか?",
answer: "はい、すべての機能を無料でご利用いただけます。"
}
];
const faqJsonLd = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map((faq) => ({
"@type": "Question",
name: faq.question,
acceptedAnswer: {
"@type": "Answer",
text: faq.answer,
},
})),
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(faqJsonLd) }}
/>
{/* FAQ表示コンポーネント */}
</>
);
}
ポイント: 構造化データの内容と、ページ上に実際に表示されるQ&Aテキストは必ず一致させてください。不一致があるとGoogleのスパムポリシーに抵触する可能性があります。
WordPressでの実装方法
WordPressサイトでは、プラグインを使う方法とテーマに直接記述する方法があります。
プラグインを使う場合
- Yoast SEO:FAQ構造化データブロックを提供
- Rank Math:FAQ Schema機能を内蔵
- Schema Pro:GUI操作でFAQマークアップを設定可能
テーマに直接記述する場合
functions.phpにJSON-LDを出力するコードを追加するか、テンプレートファイルに<script>タグを配置します。
よくあるエラーと対処法
1. mainEntityが配列でない
// NG: オブジェクトが直接入っている
"mainEntity": { "@type": "Question", ... }
// OK: 質問が1つでも配列にする
"mainEntity": [{ "@type": "Question", ... }]
2. acceptedAnswerにtextがない
// NG: textプロパティが欠落
"acceptedAnswer": { "@type": "Answer" }
// OK: text を必ず含める
"acceptedAnswer": { "@type": "Answer", "text": "回答内容" }
3. ページ上の表示と構造化データの内容が不一致
構造化データに記述したQ&Aは、必ずページ上にもテキストとして表示してください。表示されていない質問を構造化データに含めると、Googleのリッチリザルトガイドライン違反になります。
実装後の検証方法
実装した構造化データは、以下のツールで検証できます。
- Google リッチリザルトテスト — FAQリッチリザルトの表示可否を確認
- Schema.org Validator — JSON-LDの文法エラーをチェック
- Google Search Console — 「拡張」セクションでFAQの検出状況を確認
また、IndexReadyの分析ツールでも構造化データの有無と妥当性をチェックできます。URLを入力するだけで、FAQPageを含む構造化データの実装状況を確認可能です。
AI検索時代のFAQ構造化データの価値
GoogleがFAQリッチリザルトの表示を制限した2023年以降も、FAQ構造化データの実装には以下の価値があります。
- AI Overview:質問と回答が明確に構造化されていると、AI Overviewの回答ソースとして引用されやすい
- Bing検索:BingはFAQリッチリザルトを引き続き表示
- ChatGPT / Perplexity:構造化データを参考にコンテンツを理解する可能性がある
- 音声検索:Q&A形式は音声アシスタントの回答に最適
SEO効果だけでなく、GEO/AIO対策としてもFAQ構造化データは有効な施策です。
よくある質問
FAQPageとQAPageの違いは何ですか?
FAQPageは「サイト運営者が用意した質問と回答」のマークアップです。一方、QAPageは「ユーザーが投稿した質問に複数の回答がつく」形式(Yahoo!知恵袋のような)に使います。自社サイトのFAQセクションにはFAQPageを使用してください。
1ページに何個まで質問を入れられますか?
技術的な上限はありませんが、Googleは多すぎるFAQを好みません。実用的には5〜10個程度が推奨です。それ以上ある場合はカテゴリ別にページを分けることを検討してください。
FAQリッチリザルトが表示されないのはなぜですか?
2023年8月以降、Googleは一般サイトでのFAQリッチリザルト表示を大幅に制限しました。構造化データが正しくてもリッチリザルトが表示されないことがあります。ただし、Bingや AI検索では引き続き活用されるため、実装を取り除く必要はありません。
回答にHTMLリンクを含めても大丈夫ですか?
はい、textプロパティ内で<a>タグなどのHTMLを使用できます。ただし、過度な広告リンクはスパムとみなされる可能性があるため注意してください。