構造化データ(JSON-LD)を実装すると、Google検索でFAQが直接表示される「リッチリザルト」が獲得でき、CTRが平均20〜30%向上するだけでなく、AI Overview(AI生成回答)で引用される確率が1.4倍高まるというSEOClarityの調査データがあります。
「構造化データ」という言葉は難しく聞こえますが、実際にはHTMLファイルに数行のJSONコードを追加するだけです。本記事では、プログラミング初心者でも理解できるよう、構造化データの基礎から4種類のテンプレート、WordPress・Next.jsでの実装方法まで、ステップバイステップで解説します。
構造化データの基礎知識
そもそも構造化データとは?
Webページには2種類の情報があります。
| 情報の種類 | 対象読者 | 例 |
|---|---|---|
| HTMLコンテンツ | 人間が読む | 見出し・本文・画像など |
| 構造化データ | 機械(Google・AI)が読む | 「これはFAQページです」「著者は〇〇です」 |
Googleのクローラーや生成AIは、Webページのテキストを「意味」まで完全に理解することが難しい場合があります。構造化データを追加することで、「このページが何を提供しているか」を機械語で直接伝えられるのです。
構造化データを実装するとどうなるか
| 実装するSchema | Google検索での変化 | AI検索での変化 |
|---|---|---|
| FAQPage | FAQ質問がSERP上に展開表示(アコーディオン) | FAQがAI Overviewの回答に引用されやすい |
| Article | 著者情報・公開日・更新日が表示される | 記事の信頼性が高まりAI引用率向上 |
| LocalBusiness | ビジネス情報がナレッジパネルに反映 | ローカルAI検索での言及率向上 |
| HowTo | 手順がステップ形式でSERP表示 | 手順系クエリへのAI引用増加 |
JSON-LDとは?なぜ推奨されるのか
構造化データの記述形式には3種類ありますが、Googleが最も推奨するのはJSON-LD形式です。
| 形式 | 特徴 | Google推奨 | 難易度 |
|---|---|---|---|
| JSON-LD | scriptタグ内に独立して記述 | 最推奨 | 低(既存HTMLに影響しない) |
| Microdata | HTMLタグの属性として記述 | 対応 | 中(既存HTMLの修正が必要) |
| RDFa | HTMLタグの属性として記述 | 対応 | 中〜高 |
JSON-LDが推奨される理由は**「既存のHTMLコードを変更せずに追加できる」**からです。scriptタグを1つ追加するだけで実装できるため、CMSやフレームワークを問わず導入しやすいです。
JSON-LDの基本構造
共通の書き方
すべてのJSON-LDスキーマに共通する基本構造は以下の通りです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "スキーマのタイプ名",
"プロパティ名": "値"
}
</script>
| 要素 | 意味 | 必須 |
|---|---|---|
@context | スキーマの仕様書URL(常にhttps://schema.org) | 必須 |
@type | ページの種類(FAQPage・Article等) | 必須 |
| 各プロパティ | ページの具体的な情報 | タイプによって必須・任意が異なる |
4種類のJSON-LDテンプレート
テンプレート1: FAQPage(最優先で実装)
FAQページやFAQセクションに実装するスキーマです。Google検索でアコーディオン形式のリッチリザルトが表示され、AI Overviewでも引用されやすくなります。
必須プロパティ:
| プロパティ | 説明 |
|---|---|
@type: "FAQPage" | FAQページであることを宣言 |
mainEntity | FAQ項目の配列 |
@type: "Question" | 質問項目であることを宣言 |
name | 質問文 |
acceptedAnswer | 回答のオブジェクト |
text | 回答文 |
FAQPageのテンプレートコード:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "質問文1をここに記入",
"acceptedAnswer": {
"@type": "Answer",
"text": "回答文1をここに記入。100〜200文字程度が理想的です。"
}
},
{
"@type": "Question",
"name": "質問文2をここに記入",
"acceptedAnswer": {
"@type": "Answer",
"text": "回答文2をここに記入。"
}
}
]
}
</script>
注意点: FAQ項目は最低2問(推奨3〜10問)。同じページに複数のFAQPageスキーマを実装しないこと。
テンプレート2: Article(ブログ・コンテンツページ)
ブログ記事・コラム・ニュース記事に実装するスキーマです。著者情報・公開日・更新日をGoogleに正確に伝えられ、E-E-A-Tの評価向上に寄与します。
Articleの主要プロパティ:
| プロパティ | 説明 | 必須 |
|---|---|---|
@type | "Article"または"BlogPosting" | 必須 |
headline | 記事タイトル(110文字以内) | 必須 |
image | アイキャッチ画像URL | 必須 |
author | 著者情報(nameは必須) | 必須 |
publisher | 発行者情報 | 必須 |
datePublished | 公開日(ISO 8601形式) | 推奨 |
dateModified | 更新日(ISO 8601形式) | 推奨 |
ArticleのテンプレートコードとISO 8601形式(YYYY-MM-DD):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "記事タイトルをここに入力(110文字以内)",
"image": "https://example.com/images/article-image.jpg",
"author": {
"@type": "Person",
"name": "著者名",
"url": "https://example.com/author/"
},
"publisher": {
"@type": "Organization",
"name": "会社名・メディア名",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-04-04",
"dateModified": "2026-04-04",
"description": "記事の説明文を160文字以内で記入"
}
</script>
テンプレート3: LocalBusiness(店舗・地域ビジネス)
実店舗を持つビジネス(飲食店・美容室・士業・クリニック等)に必須のスキーマです。Googleマップとの連携でローカル検索の上位表示に貢献します。
LocalBusinessの主要プロパティ:
| プロパティ | 説明 | 必須 |
|---|---|---|
@type | ビジネスタイプ("Restaurant"、"BeautySalon"等) | 必須 |
name | ビジネス名 | 必須 |
address | 住所(PostalAddressオブジェクト) | 必須 |
telephone | 電話番号(国際形式推奨) | 推奨 |
openingHours | 営業時間(Mo-Su HH:MM-HH:MM形式) | 推奨 |
url | 公式サイトURL | 推奨 |
image | 店舗写真URL | 推奨 |
geo | 緯度・経度 | 推奨 |
LocalBusinessのテンプレートコード:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "店舗名",
"image": "https://example.com/shop-image.jpg",
"url": "https://example.com/",
"telephone": "+81-3-1234-5678",
"address": {
"@type": "PostalAddress",
"streetAddress": "〇〇町1-2-3",
"addressLocality": "渋谷区",
"addressRegion": "東京都",
"postalCode": "150-0001",
"addressCountry": "JP"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 35.6580,
"longitude": 139.7016
},
"openingHours": ["Mo-Fr 11:00-22:00", "Sa-Su 10:00-23:00"],
"priceRange": "¥¥"
}
</script>
@typeの主なビジネスタイプ一覧:
| ビジネスタイプ | @type値 |
|---|---|
| 飲食店・レストラン | Restaurant |
| カフェ | CafeOrCoffeeShop |
| 美容院・理容院 | BeautySalon / HairSalon |
| 歯科医院 | Dentist |
| 整体・カイロプラクティック | MedicalBusiness |
| 弁護士・法律事務所 | LegalService |
| 会計士・税理士 | AccountingService |
| 一般会社・事務所 | LocalBusiness |
テンプレート4: HowTo(手順・ハウツーコンテンツ)
手順を説明するハウツー記事に実装するスキーマです。Google検索でステップリストが表示され、音声検索・AI検索での引用率も高まります。
HowToの主要プロパティ:
| プロパティ | 説明 | 必須 |
|---|---|---|
@type: "HowTo" | ハウツーコンテンツを宣言 | 必須 |
name | ハウツーのタイトル | 必須 |
step | 手順の配列 | 必須 |
HowToStep.name | 各ステップの名前 | 必須 |
HowToStep.text | 各ステップの説明 | 必須 |
totalTime | 所要時間(ISO 8601 duration形式) | 推奨 |
HowToのテンプレートコード:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "〇〇の方法(タイトル)",
"description": "このハウツーの概要説明",
"totalTime": "PT30M",
"step": [
{
"@type": "HowToStep",
"name": "ステップ1のタイトル",
"text": "ステップ1の詳細な説明をここに記入。"
},
{
"@type": "HowToStep",
"name": "ステップ2のタイトル",
"text": "ステップ2の詳細な説明をここに記入。"
},
{
"@type": "HowToStep",
"name": "ステップ3のタイトル",
"text": "ステップ3の詳細な説明をここに記入。"
}
]
}
</script>
WordPressでの実装方法
プラグインを使った実装(推奨)
プログラミング知識がない場合は、プラグインを使うのが最も簡単です。
| プラグイン名 | 対応スキーマ | 料金 | おすすめ度 |
|---|---|---|---|
| Yoast SEO(Premium) | Article・FAQ・HowTo等 | 有料(約9,900円/年) | ★★★★★ |
| Rank Math(Pro) | 28種類以上のスキーマ | 有料(約7,000円/年) | ★★★★★ |
| Schema Pro | 20種類以上 | 有料(約10,000円/年) | ★★★★☆ |
| WP Schema Markup Light | 基本的なスキーマのみ | 無料 | ★★★☆☆ |
Yoast SEOでFAQPageを実装する手順:
| ステップ | 操作 |
|---|---|
| 1 | 記事編集画面でYoast SEOブロックを追加 |
| 2 | 「FAQ」ブロックを選択 |
| 3 | 質問文と回答文を入力 |
| 4 | 保存・公開するとJSON-LDが自動生成される |
手動でコードを追加する方法
テーマのfunctions.phpまたはheadタグ内に直接コードを追加する方法です。
functions.phpに追加する場合(ページ別に切り替え):
function add_schema_markup() {
if ( is_page('faq') ) {
echo '<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [...]
}
</script>';
}
}
add_action( 'wp_head', 'add_schema_markup' );
Next.jsでの実装方法
App RouterでのJSON-LD実装
Next.js 14(App Router)では、各ページのレイアウトまたはページコンポーネント内でJSON-LDを実装します。
ページコンポーネントへの実装例(page.tsx):
export default function FaqPage() {
const faqSchema = {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "質問文1",
"acceptedAnswer": {
"@type": "Answer",
"text": "回答文1"
}
}
]
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(faqSchema) }}
/>
{/* ページのコンテンツ */}
</>
);
}
MDXブログ記事でのArticleスキーマ実装(layout.tsx):
export default function BlogLayout({ children, params }) {
const articleSchema = {
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "記事タイトル",
"datePublished": "2026-04-04",
"author": {
"@type": "Organization",
"name": "会社名"
}
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema) }}
/>
<article>{children}</article>
</>
);
}
実装後の確認・テスト方法
Googleのリッチリザルトテストの使い方
| ステップ | 操作 | URL |
|---|---|---|
| 1 | ブラウザで「リッチリザルトテスト」にアクセス | search.google.com/test/rich-results |
| 2 | テストしたいURLを入力してテスト実行 | — |
| 3 | エラー・警告の確認 | — |
| 4 | 「有効なリザルト」が表示されれば実装成功 | — |
よくあるエラーと修正方法
| エラーメッセージ | 原因 | 修正方法 |
|---|---|---|
| 必須プロパティ「mainEntity」がありません | FAQPageにmainEntityなし | mainEntity配列を追加 |
| 値の型が正しくありません(日付) | 日付のフォーマットが誤り | YYYY-MM-DD形式に修正 |
| 画像のURL形式が無効 | httpsで始まらないURLを指定 | https://から始まる絶対URLに修正 |
| @contextが見つかりません | @contextの記述漏れ | "https://schema.org"を追加 |
構造化データ実装の優先順位
どのページに何のスキーマを実装すべきか、優先順位をまとめます。
| 優先度 | スキーマタイプ | 実装すべきページ | 期待効果 |
|---|---|---|---|
| 最優先 | FAQPage | FAQ集・サービスページ・ブログ記事(FAQセクション) | CTR+20〜30%・AI引用率向上 |
| 最優先 | LocalBusiness | トップページ・会社概要・店舗情報ページ | ローカル検索・Googleマップ対策 |
| 高 | Article/BlogPosting | ブログ記事全ページ | E-E-A-T向上・著者情報表示 |
| 高 | HowTo | 手順説明・ガイド系コンテンツ | ハウツー検索でのリッチリザルト |
| 中 | BreadcrumbList | 全ページ(パンくずリスト) | サイト構造の明確化 |
| 中 | Organization | トップページ | 企業情報のナレッジパネル |
まとめ
構造化データ(JSON-LD)は、「コンテンツを書く労力に比べて、実装コストが非常に低く、SEO効果が高い」 という特徴があります。
今日から実施できる3ステップ:
| ステップ | 内容 | 目安時間 |
|---|---|---|
| 1 | トップページにLocalBusinessスキーマを追加 | 30分 |
| 2 | FAQページまたは記事のFAQセクションにFAQPageスキーマを追加 | 30分 |
| 3 | Googleリッチリザルトテストでエラーがないか確認 | 10分 |
まずこの3ステップを実施し、その後Article・HowToを順次追加していくことを推奨します。
関連記事
AIO対策・構造化データ実装をプロに依頼したいですか?
構造化データの設計・実装から、AI Overview引用率を高めるコンテンツ設計まで、AIO対策をワンストップで支援。AIO診断100,000円〜、月次スタンダード150,000円〜。AIO対策サービスの詳細はこちら →
