構造化データ完全ガイド|JSON-LDの書き方とSEO・GEO・AIO効果を徹底解説
構造化データとは
構造化データとは、Webページの内容を検索エンジンやAIが機械的に理解できるよう、標準化された形式で記述したデータのことです。構造化データをHTMLに追加することで、コンテンツが「何を言っているか」だけでなく「何を意味しているか」を機械に正確に伝えることができます。
最も広く使われている形式はJSON-LD(JavaScript Object Notation for Linked Data)で、Googleが推奨する形式でもあります。HTMLの <script> タグ内に埋め込む形で記述し、ユーザーがページ上で目にする内容には影響しません。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "構造化データ完全ガイド",
"datePublished": "2026-03-15"
}
</script>
なぜ構造化データが重要なのか
構造化データは、現在の検索環境において3つの重要な目的を果たします。
SEOへの効果: Google検索でのリッチリザルト(星評価、FAQドロップダウン、レシピカード、イベント一覧など)を可能にします。リッチリザルトを表示するページは、一貫してより高いクリック率を達成しています。
GEOへの効果: AI検索エンジンは構造化データを使って、コンテンツの文脈、著者情報、意味をより深く理解します。これにより、AI生成の回答の中であなたのコンテンツが正確に引用される可能性が高まります。
AIOへの効果: Google AI Overviewは、FAQページ、ハウツーガイド、製品レビューなどのコンテンツタイプを識別するために構造化データに依存しています。適切なスキーママークアップにより、AI Overviewに掲載される可能性が高まります。
構造化データの3つの記述形式
構造化データの記述形式には、JSON-LD、Microdata、RDFaの3種類があります。JSON-LDが最も推奨される理由を以下の表で説明します。
| 形式 | 実装方法 | Googleの推奨度 | メンテナンスのしやすさ |
|---|---|---|---|
| JSON-LD | 独立したscriptブロック | 最も推奨 | 容易 |
| Microdata | HTML要素にインライン属性として記述 | 対応 | 中程度 |
| RDFa | HTML要素にインライン属性として記述 | 対応 | 中程度 |
JSON-LDは構造化データをHTMLマークアップから分離して管理できるため、テンプレート構造に触れることなく追加・編集・デバッグが可能です。この記事ではJSON-LD形式に絞って解説します。
JSON-LDの基本構文
JSON-LDは、HTMLの<script type="application/ld+json">タグ内にJSON形式で記述します。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "スキーマタイプ",
"プロパティ名": "値"
}
</script>
@context:使用する語彙を指定します。通常はhttps://schema.orgを指定@type:コンテンツの種類を指定します(Article、Product、FAQPageなど)- その他のプロパティ:スキーマタイプごとに定義されたプロパティを記述
主要スキーマタイプと実装例
Article(記事)
Articleスキーマはブログ記事、ニュース記事、編集コンテンツに不可欠な基本スキーマタイプです。記事の見出し、著者、公開日などの情報を検索エンジンに伝えます。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "構造化データ完全ガイド",
"description": "JSON-LDの書き方とSEO・AIO効果を解説",
"image": "https://example.com/images/structured-data-guide.png",
"author": {
"@type": "Person",
"name": "山田太郎",
"url": "https://example.com/authors/yamada",
"jobTitle": "シニアSEOスペシャリスト"
},
"publisher": {
"@type": "Organization",
"name": "サイト名",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-03-15",
"dateModified": "2026-03-15",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/structured-data-guide"
}
}
</script>
重要なフィールド: headline、author、datePublished、dateModifiedは常に含めてください。特に著者情報はE-E-A-Tシグナルとして重要です。
FAQPage(よくある質問)
FAQPageスキーマは、GoogleでのFAQリッチリザルト表示を可能にし、AIシステムが質問と回答のペアを抽出しやすくなります。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "構造化データとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "構造化データとは、Webページの内容を検索エンジンやAIが機械的に理解できるよう、標準化された形式で記述したデータのことです。最も一般的な形式はJSON-LDで、Googleが推奨しています。"
}
},
{
"@type": "Question",
"name": "構造化データはSEOに効果がありますか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "構造化データ自体は直接的にランキングを上げるものではありませんが、クリック率を向上させるリッチリザルトを可能にし、検索エンジンのコンテンツ理解を助けます。"
}
}
]
}
</script>
ベストプラクティス: FAQPageスキーマはページ上に実際に表示されている本物のFAQにのみ使用してください。スキーマ内の質問は、ユーザーが見えるコンテンツと一致している必要があります。
HowTo(手順・ハウツー)
HowToスキーマは、順序立てた手順を含む説明型コンテンツに最適です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Webサイトに構造化データを追加する方法",
"description": "JSON-LD形式の構造化データをステップバイステップで実装するガイド",
"totalTime": "PT30M",
"step": [
{
"@type": "HowToStep",
"name": "スキーマタイプを選択する",
"text": "コンテンツに合ったスキーマタイプを決定します。ブログ記事にはArticle、FAQ形式のコンテンツにはFAQPage、商品ページにはProductなどを選びます。",
"url": "https://example.com/guide#step-1"
},
{
"@type": "HowToStep",
"name": "JSON-LDマークアップを記述する",
"text": "選択したスキーマタイプに対応するプロパティを使ってJSON-LDのscriptブロックを作成します。schema.orgのドキュメントを参考にしてください。",
"url": "https://example.com/guide#step-2"
},
{
"@type": "HowToStep",
"name": "ページに追加する",
"text": "scriptブロックをHTMLページのheadまたはbodyに挿入します。JSON-LDはドキュメント内のどこにでも配置できます。",
"url": "https://example.com/guide#step-3"
},
{
"@type": "HowToStep",
"name": "テストと検証を行う",
"text": "Googleのリッチリザルトテストツールを使ってマークアップを検証し、エラーがないか確認します。",
"url": "https://example.com/guide#step-4"
}
]
}
</script>
Organization(組織)
Organizationスキーマはブランドアイデンティティを確立し、Googleのナレッジパネルに表示されるための重要な要素です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "会社名",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"description": "組織の簡潔な説明",
"sameAs": [
"https://twitter.com/yourcompany",
"https://linkedin.com/company/yourcompany",
"https://github.com/yourcompany"
],
"contactPoint": {
"@type": "ContactPoint",
"email": "info@example.com",
"contactType": "customer service"
}
}
</script>
BreadcrumbList(パンくずリスト)
パンくずリストの構造化データは、サイト階層を検索エンジンに伝え、検索結果にパンくず表示を出せるようにします。ほとんどのサイトで実装すべき基本的なスキーマです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "ホーム",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "ブログ",
"item": "https://example.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "構造化データ完全ガイド",
"item": "https://example.com/blog/structured-data-guide/"
}
]
}
</script>
WebSite(サイト検索ボックス)
サイト全体の情報と、Googleの検索結果上にサイト内検索ボックスを表示するための構造化データです。トップページに設置します。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "サイト名",
"url": "https://example.com",
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
Next.jsでの実装方法
Next.js(App Router)で構造化データを実装する場合、ページコンポーネント内でscriptタグを直接出力するのが最もシンプルな方法です。この方法により、構造化データを動的にし、実際のコンテンツと連動させることができます。
export default function BlogPost({ post }) {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: post.title,
datePublished: post.date,
author: {
'@type': 'Person',
name: post.author,
},
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<article>
<h1>{post.title}</h1>
{/* 記事本文 */}
</article>
</>
);
}
構造化データの検証方法
構造化データを実装したら、デプロイ前に必ず検証を行いましょう。
Googleリッチリザルトテスト(https://search.google.com/test/rich-results):マークアップが有効で、Googleのリッチリザルト対象かどうかを確認できます。
Schema.orgバリデーター(https://validator.schema.org/):Schema.orgの完全な語彙に対してマークアップを検証します。
Google Search Console:「拡張」セクションで、サイト全体の構造化データのエラーと警告を確認できます。
よくある検証エラーには以下のようなものがあります。
- 必須フィールドの欠落(
nameやheadlineなど) - 日付形式の不正(ISO 8601形式
2026-03-15を使用すること) - 解決できないURLやエラーを返すURL
- スキーマの内容とページ上の表示コンテンツの不一致
ベストプラクティス
- スキーマはページの表示内容と一致させる:構造化データのすべてのデータは、ユーザーがページ上で実際に見える内容を反映している必要があります。Googleは誤解を招くマークアップにペナルティを課します。
- 最も具体的なタイプを使用する:ニュース記事には
ArticleではなくNewsArticleを、レシピにはHowToではなくRecipeを使いましょう。 - 推奨プロパティも含める:必須フィールドだけでなく、推奨プロパティも追加して検索エンジンにより多くのコンテキストを提供しましょう。
- 常に最新の状態を保つ:コンテンツを更新したら
dateModifiedも更新してください。古い日付は信頼性のシグナルを低下させます。 - タイプを重複させない:1ページにFAQPageスキーマは1つ、Articleスキーマは記事1本につき1つです。
- 変更のたびにテストする:テンプレートの更新や新しいスキーマタイプの追加時には、必ずマークアップを再検証しましょう。
構造化データのSEO・AIO・GEO効果
SEOへの効果
構造化データ自体は直接的な検索ランキング要因ではないとGoogleは明言しています。しかし、以下の間接的な効果が期待できます。
- リッチスニペットの表示:検索結果にFAQ、評価、手順などのリッチスニペットが表示され、クリック率が向上する
- コンテンツ理解の促進:検索エンジンがページの内容をより正確に理解できるようになる
- ナレッジグラフへの反映:Organization等のスキーマがGoogleのナレッジグラフに反映される場合がある
AIO(AI Overview)への効果
構造化データはGoogle AI Overviewにおいても重要な役割を果たします。
- FAQPageスキーマにより、AI Overviewが質問と回答のペアを正確に把握できる
- HowToスキーマにより、手順の情報がAI Overviewで引用されやすくなる
- Articleスキーマの著者情報により、E-E-A-Tの評価が向上する
GEO(AI検索全般)への効果
ChatGPTやPerplexityなどのAI検索エンジンも、構造化データを参考にしてコンテンツの種類や信頼性を判断しています。適切なスキーママークアップが施されたページは、より正確に解釈され引用される可能性が高くなります。構造化データの実装は、SEO・AIO・GEOすべてに横断的に効果があると言えます。
よくあるエラーと対処法
エラー1:必須プロパティの欠落
Googleが定義する必須プロパティが不足している場合にエラーが表示されます。
エラー例: Article タイプに "headline" プロパティがありません
対処法: 必須プロパティを追加する
エラー2:プロパティ値の形式が不正
日付やURLなどのプロパティ値が正しい形式でない場合に発生します。
// NG: 日付の形式が不正
"datePublished": "2026年3月15日"
// OK: ISO 8601形式
"datePublished": "2026-03-15"
エラー3:ページ内容と構造化データの不一致
構造化データに記述した情報がページの実際のコンテンツと一致しない場合、Googleのガイドライン違反となります。たとえば、実際にはないレビューや評価を構造化データに記述するような行為は、手動対策の対象となる可能性があります。構造化データはページに表示されている内容を正確に反映してください。
IndexReadyでの構造化データチェック
当サイトのスコアリングツール「IndexReady」では、構造化データの有無やスキーマタイプの充実度をチェックできます。URLを入力するだけで、構造化データの実装状況を含むSEO・GEO対策の総合診断が可能です。まだ構造化データを実装していない方は、まずIndexReadyで現状を把握してみてください。
まとめ
構造化データは、検索エンジンとAIの両方にコンテンツの意味を正確に伝えるための重要な仕組みです。JSON-LD形式を使って、Article、FAQPage、HowTo、Organization、BreadcrumbListなどの主要スキーマタイプを実装することで、SEO、AIO、GEOのすべてに効果を発揮します。
まずは自サイトのArticleスキーマとBreadcrumbListから実装を始め、コンテンツの種類に応じてFAQPageやHowToなどのスキーマを追加していくのがおすすめです。実装後は必ずGoogleリッチリザルトテストで検証を行い、変更のたびに再検証する習慣をつけましょう。
よくある質問(FAQ)
構造化データを実装するだけで検索順位は上がりますか?
構造化データ単体で検索順位が直接上がるわけではありません。しかし、リッチリザルトの表示によるクリック率の向上や、検索エンジンとAIシステムのコンテンツ理解の促進により、間接的に検索での露出が改善される可能性があります。
構造化データは1ページに複数設置できますか?
はい、1ページに複数の構造化データを設置できます。たとえば、ブログ記事であればArticle + FAQPage + BreadcrumbListのように、コンテンツの内容に合わせて複数のスキーマタイプを組み合わせることが推奨されています。それぞれ個別のJSON-LDスクリプトブロックに記述するか、@graphを使って1つのブロックにまとめることも可能です。
構造化データのエラーを放置するとペナルティを受けますか?
無効な構造化データは検索エンジンに単に無視されます。ランキングに悪影響を与えることはありませんが、リッチリザルトやその他のメリットを享受できなくなります。ただし、ページ内容と一致しない虚偽の構造化データ(実際にはないレビューを記述するなど)を設置した場合は、手動対策の対象となる可能性があります。バリデーションツールを使ってエラーを検出し修正しましょう。
構造化データはAI検索での表示に必須ですか?
厳密には必須ではありませんが、大きな助けになります。AIシステムはコンテンツを理解するための多くのシグナルの一つとして構造化データを使用しています。適切なスキーママークアップが施されたページは、より正確に解釈され引用される可能性が高くなります。
すべてのページに構造化データを追加すべきですか?
構造化データが明確な価値を提供するページを優先しましょう。記事ページ、商品ページ、FAQセクション、ハウツーガイドなどが対象です。プライバシーポリシーやお問い合わせページのようなシンプルなページでは、基本的なOrganizationやWebPageタイプ以上のスキーママークアップは通常不要です。
WordPressで構造化データを実装する方法はありますか?
Yoast SEO、Rank Mathなどのプラグインを使えば、コードを書かずに構造化データを実装できます。より細かいカスタマイズが必要な場合は、テーマのテンプレートファイルにJSON-LDを直接記述することも可能です。