構造化データ(JSON-LD)完全入門 — Google に正しく情報を伝える方法
構造化データとは
構造化データは、ページの内容を検索エンジンに「機械が読める形」で伝えるための仕組みです。HTML はページの見た目を定義しますが、構造化データはページの「意味」を定義します。
HTML: 「このテキストは記事のタイトルです」 → 人間が読んで理解
JSON-LD: 「このページは BlogPosting で、タイトルは〇〇、著者は△△」 → 検索エンジンが理解
なぜ重要なのか
構造化データを正しく実装すると、以下のメリットがあります。
- リッチリザルト: 検索結果にパンくずリスト、著者情報、日付などが表示される
- 検索エンジンの理解: ページの内容・関係性をGoogleに正確に伝えられる
- AI検索への対応: ChatGPT や Google AI Overview がコンテンツを引用しやすくなる
JSON-LD の基本構文
構造化データのフォーマットは3種類ありますが、Google が推奨しているのは JSON-LD です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "スキーマの種類",
"プロパティ名": "値"
}
</script>
<head> または <body> 内のどこにでも配置できます。ページの表示には影響しません。
実践: よく使うスキーマ6選
1. WebSite(トップページ)
サイト全体の情報を定義します。トップページに1つだけ配置します。
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "サイト名",
"url": "https://example.com/",
"description": "サイトの説明",
"publisher": {
"@type": "Organization",
"name": "運営組織名"
}
}
2. Organization(About ページ)
運営組織の情報を定義します。E-E-A-T の信頼性を高めます。
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "組織名",
"url": "https://example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
},
"description": "組織の説明"
}
3. BlogPosting(記事ページ)
ブログ記事の情報を定義します。リッチリザルトに影響する重要なスキーマです。
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "記事タイトル",
"description": "記事の説明",
"datePublished": "2026-03-24T00:00:00Z",
"dateModified": "2026-03-24T00:00:00Z",
"image": ["https://example.com/image.png"],
"author": {
"@type": "Organization",
"name": "著者名"
},
"publisher": {
"@type": "Organization",
"name": "発行者名",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}
imageプロパティは必須です。未設定だとリッチリザルトの対象外になります。
4. BreadcrumbList(パンくずリスト)
ページの階層構造を定義します。検索結果にパンくずが表示されます。
{
"@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/posts/slug/"
}
]
}
5. Service(サービスページ)
提供するサービスの情報を定義します。
{
"@context": "https://schema.org",
"@type": "Service",
"name": "サービス名",
"description": "サービスの説明",
"provider": {
"@type": "Organization",
"name": "提供者名",
"url": "https://example.com/"
}
}
6. ProfessionalService(サービス一覧)
複数のサービスをまとめて定義する場合に使います。
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "組織名",
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "サービス一覧",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "サービス1"
}
}
]
}
}
使ってはいけないスキーマ
以下のスキーマは、Google が制限またはサポートを終了しているため、使用を避けてください。
| スキーマ | 状態 |
|---|---|
HowTo | 2023年にリッチリザルト非対応化。使っても効果なし |
FAQPage | 政府・医療サイト以外ではリッチリザルト非対応 |
Astro での実装方法
Astro では、フロントマター(--- ブロック)で JSON-LD オブジェクトを定義し、テンプレートで <script> タグとして出力します。
---
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: 'タイトル',
datePublished: '2026-03-24',
};
---
<script
type="application/ld+json"
set:html={JSON.stringify(jsonLd)}
/>
set:html ディレクティブを使うことで、Astro がエスケープせずに JSON をそのまま出力します。
検証方法
実装した構造化データは、以下のツールで検証できます。
- リッチリザルトテスト — Google 公式。リッチリザルトの対象かどうかを判定
- Schema Markup Validator — Schema.org 公式。構文エラーを検出
まとめ
構造化データは「検索エンジンに正しく情報を伝える」ための仕組みです。
- フォーマット: JSON-LD が推奨(Google 公式)
- 必須スキーマ: WebSite(トップ)、BlogPosting(記事)、BreadcrumbList(全ページ)
- 効果: リッチリザルト表示、検索エンジンの理解向上、AI検索での引用率向上
- 検証: リッチリザルトテストで必ず確認
正しく実装すれば、同じコンテンツでも検索結果での見え方が変わり、クリック率の向上につながります。