構造化データ完全ガイド|JSON-LDの書き方とSEO・AIO効果を徹底解説
構造化データとは
構造化データとは、Webページの内容を検索エンジンやAIが機械的に理解できるよう、決められた形式で記述したデータのことです。たとえば「このページはブログ記事である」「著者は山田太郎である」「公開日は2026年3月15日である」といった情報を、人間だけでなく機械も正確に読み取れる形で提供します。
構造化データの語彙(ボキャブラリー)として最も広く使われているのがSchema.orgです。Google、Microsoft(Bing)、Yahoo!が共同で策定した標準仕様であり、数百種類のスキーマタイプが定義されています。
構造化データの3つの記述形式
構造化データの記述形式には、JSON-LD、Microdata、RDFaの3種類があります。
| 形式 | 特徴 | Googleの推奨度 |
|---|---|---|
| JSON-LD | scriptタグ内にJSONで記述。HTMLと分離できる | 最も推奨 |
| Microdata | HTML要素に属性として直接記述 | 対応 |
| RDFa | HTML要素に属性として記述(Microdataとは異なる属性名) | 対応 |
Googleは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(記事)
ブログ記事やニュース記事に使用する最も基本的なスキーマタイプです。
<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"
},
"publisher": {
"@type": "Organization",
"name": "サイト名",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-03-15",
"dateModified": "2026-03-15"
}
</script>
FAQPage(よくある質問)
FAQ形式のコンテンツに使用します。Google検索結果にFAQリッチスニペットとして表示される可能性があるほか、AI Overviewでも引用されやすくなります。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "構造化データとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "構造化データとは、Webページの内容を検索エンジンやAIが機械的に理解できるよう、決められた形式で記述したデータのことです。"
}
},
{
"@type": "Question",
"name": "構造化データはSEOに効果がありますか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "構造化データ自体は直接的なランキング要因ではありませんが、リッチスニペットの表示によるクリック率の向上や、検索エンジンのコンテンツ理解の促進に効果があります。"
}
}
]
}
</script>
HowTo(手順)
何かの手順を解説するコンテンツに使用します。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Next.jsで構造化データを実装する方法",
"description": "Next.jsアプリケーションにJSON-LD構造化データを実装する手順",
"step": [
{
"@type": "HowToStep",
"name": "JSON-LDデータを定義する",
"text": "ページコンポーネント内で構造化データのオブジェクトを定義します"
},
{
"@type": "HowToStep",
"name": "scriptタグで出力する",
"text": "定義したオブジェクトをJSON.stringifyでscriptタグに出力します"
},
{
"@type": "HowToStep",
"name": "リッチリザルトテストで検証する",
"text": "Googleのリッチリザルトテストツールでエラーがないか確認します"
}
]
}
</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(サイト検索ボックス)
サイト全体の情報と、検索ボックスの構造化データです。トップページに設置します。
<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タグを直接出力するのが最もシンプルな方法です。
// app/blog/[slug]/page.tsx
export default function BlogPost({ params }: { params: { slug: string } }) {
const post = getPostBySlug(params.slug);
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: post.title,
description: post.description,
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>
</>
);
}
構造化データのSEO・AIO効果
SEOへの効果
構造化データ自体は直接的な検索ランキング要因ではないとGoogleは明言しています。しかし、以下の間接的な効果が期待できます。
- リッチスニペットの表示:検索結果にFAQ、評価、手順などのリッチスニペットが表示され、クリック率が向上する
- コンテンツ理解の促進:検索エンジンがページの内容をより正確に理解できるようになる
- ナレッジグラフへの反映:Organization等のスキーマがGoogleのナレッジグラフに反映される場合がある
AIO(AI Overview)への効果
構造化データは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のガイドライン違反となります。構造化データはページに表示されている内容を正確に反映してください。
構造化データの検証方法
実装した構造化データが正しいかどうかは、以下のツールで検証できます。
- Googleリッチリザルトテスト:Googleが提供する検証ツール。リッチスニペットとして表示可能かどうかを確認できる
- Schema.orgバリデーター:Schema.orgの仕様に準拠しているかを確認できる
- Google Search Console:実際にインデックスされた構造化データのステータスを確認できる
当サイトのスコアリングツールでも、構造化データの有無やスキーマタイプの充実度をチェックできます。
まとめ
構造化データは、検索エンジンとAIの両方にコンテンツの意味を正確に伝えるための重要な仕組みです。JSON-LD形式を使って、Article、FAQPage、HowTo、BreadcrumbListなどの主要スキーマタイプを実装することで、SEO、AIO、GEOのすべてに効果を発揮します。
まずは自サイトのArticleスキーマとBreadcrumbListから実装を始め、コンテンツの種類に応じてFAQPageやHowToなどのスキーマを追加していくのがおすすめです。
よくある質問(FAQ)
構造化データを実装するだけで検索順位は上がりますか?
構造化データ単体で検索順位が上がるわけではありません。しかし、リッチスニペットの表示によるクリック率の向上や、検索エンジンのコンテンツ理解の促進により、間接的にSEO効果が期待できます。
構造化データは1ページに複数設置できますか?
はい、1ページに複数の構造化データを設置できます。たとえば、Article + FAQPage + BreadcrumbListのように、コンテンツの内容に合わせて複数のスキーマタイプを組み合わせることが推奨されています。
WordPressで構造化データを実装する方法はありますか?
Yoast SEO、Rank Mathなどのプラグインを使えば、コードを書かずに構造化データを実装できます。より細かいカスタマイズが必要な場合は、テーマのテンプレートファイルにJSON-LDを直接記述することも可能です。
構造化データのエラーを放置するとペナルティを受けますか?
構造化データのエラー自体がペナルティの直接的な原因になることはありません。ただし、ページ内容と一致しない虚偽の構造化データ(実際にはないレビューを記述するなど)を設置した場合は、手動対策の対象となる可能性があります。正確な情報のみを記述しましょう。