この記事の要点
- 構造化データは、ページの内容を機械が誤解しない形で明示するタグ。AI検索対策で最も費用対効果が高い施策です。
- 形式はJSON-LDを使います。MicrodataやRDFaより実装・保守が容易で、Googleも推奨しています。
- 企業サイトの優先順位はOrganization → BreadcrumbList → Service → FAQPage → Articleの順。
- 実装したら必ずリッチリザルトテストとSchema Markup Validatorの両方で検証してください。書いたつもりで動いていない事故が一番多いです。
構造化データがAI検索に効く理由
構造化データは、ページに書かれている内容を、機械が解釈できる形式で明示的に宣言するためのマークアップです。「この文字列は会社名」「この数字は価格」「この部分は質問と回答のペア」といった意味づけを行います。
人間が読めば、ページを見て「これは料金表だな」と分かります。しかしAIは、レイアウトや文脈から推測するしかありません。構造化データは、その推測を確定情報に変えます。誤解の余地が減るほど、AIは安心してその情報を引用できます。
POINT
構造化データはリッチリザルト(検索結果の装飾表示)のためだけの技術と思われがちですが、AI検索対策では「情報を正確に伝える手段」としての価値がより大きくなっています。
JSON-LDを選ぶ理由
構造化データの記法にはMicrodata、RDFa、JSON-LDがあります。実務ではJSON-LDを使ってください。理由は3つです。
- HTMLと分離できる:
<script type="application/ld+json">にまとめて書けるため、デザイン変更で壊れません - 保守しやすい:1か所を見れば全体が把握でき、CMSからの動的出力も容易です
- Googleが推奨している:公式ドキュメントでJSON-LDが推奨形式として明記されています
Organizationが入っていない企業サイトは、AIから見て身元不明の状態です。まずここから実装します。FAQPageは質問と回答のペアという形式が生成AIの回答生成と噛み合うため、最も直接的に効きます。
1. Organization(最優先)
「どんな会社か」をAIに伝える基礎情報です。これが入っていない企業サイトは、AIから見て身元不明の状態です。まずここから実装します。
JSON-LD / Organization
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.co.jp/#organization",
"name": "株式会社サンプル",
"alternateName": "Sample Inc.",
"url": "https://example.co.jp/",
"logo": "https://example.co.jp/img/logo.png",
"description": "東京都渋谷区のホームページ制作会社。AI検索対策を標準工程に含む。",
"foundingDate": "2015-04-01",
"telephone": "+81-3-0000-0000",
"address": {
"@type": "PostalAddress",
"postalCode": "150-0000",
"addressRegion": "東京都",
"addressLocality": "渋谷区",
"streetAddress": "神南1-2-3 サンプルビル5F",
"addressCountry": "JP"
},
"sameAs": [
"https://x.com/sample",
"https://www.facebook.com/sample"
],
"knowsAbout": ["ホームページ制作", "AI検索対策", "構造化データ"]
}
knowsAbout は見落とされがちですが、「この組織が何に詳しいか」を直接宣言できるプロパティです。AI検索対策では有効に働きます。sameAs でSNSや外部プロフィールと紐づけることで、実在性の裏づけも強まります。
2. BreadcrumbList
サイト内での階層位置を示します。AIがページの文脈を理解する手がかりになり、実装コストも低いので早めに入れてください。
JSON-LD / BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1,
"name": "ホーム", "item": "https://example.co.jp/" },
{ "@type": "ListItem", "position": 2,
"name": "サービス", "item": "https://example.co.jp/service/" },
{ "@type": "ListItem", "position": 3,
"name": "AI検索対策" }
]
}
最後の階層(現在ページ)には item を付けないのが正しい書き方です。
3. Service
提供しているサービスの内容と価格帯を明示します。「いくらでできるのか」はAIが最も聞かれる情報のひとつなので、価格を出せる場合は必ず入れてください。
JSON-LD / Service
{
"@context": "https://schema.org",
"@type": "Service",
"name": "AI検索対策付きホームページ制作",
"serviceType": "ホームページ制作・AI検索対策",
"provider": { "@id": "https://example.co.jp/#organization" },
"areaServed": { "@type": "Country", "name": "日本" },
"description": "構造化データ実装、情報構造設計、AI引用状況の月次計測までを一貫提供。",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "JPY",
"lowPrice": "100000",
"highPrice": "2000000",
"offerCount": "3"
}
}
4. FAQPage
AI検索対策でもっとも直接的に効くスキーマです。質問と回答のペアという形式が、生成AIの回答生成プロセスとそのまま噛み合います。
JSON-LD / FAQPage
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "ホームページ制作の費用はいくらですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "10ページ規模のコーポレートサイトで120万円〜が目安です。構造化データ実装とAI検索対策を含みます。"
}
}
]
}
CHECK
回答テキストはそれ単体で意味が通る完結した文にしてください。「上記のとおりです」「詳しくはこちら」といった参照表現は、切り出された時点で意味を失います。
5. Article
記事ページに実装します。AI検索対策の観点では、author と datePublished / dateModified が重要です。誰がいつ書いたかを示せることが、信頼性の判断材料になります。
JSON-LD / Article
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "構造化データ実装ガイド",
"description": "企業サイトで優先すべきスキーマ7種をコード例つきで解説。",
"datePublished": "2026-07-27",
"dateModified": "2026-07-27",
"author": {
"@type": "Person",
"name": "山田 太郎",
"jobTitle": "テクニカルディレクター"
},
"publisher": { "@id": "https://example.co.jp/#organization" },
"inLanguage": "ja"
}
6. LocalBusiness / 7. WebSite
LocalBusiness は、店舗や事業所を持ち地域集客を行う企業向けです。営業時間(openingHoursSpecification)、緯度経度(geo)、対応エリア(areaServed)を含めることで、「◯◯市の△△業者」という質問に対する回答候補になりやすくなります。
WebSite はサイト全体の識別と、サイト内検索の宣言に使います。Organizationと publisher で紐づけておきます。
複数のスキーマを個別のscriptタグで書くと、重複や矛盾が生まれやすくなります。@graph でまとめ、@id で相互参照する形が保守しやすく、CMSからの動的出力にも向いています。
@graphでまとめる書き方
複数のスキーマを個別のscriptタグで書くと、重複や矛盾が生まれやすくなります。実務では @graph でまとめ、@id で相互参照する形が保守しやすいです。
JSON-LD / @graph
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.co.jp/#organization", /* ... */ },
{ "@type": "WebSite", "@id": "https://example.co.jp/#website",
"publisher": { "@id": "https://example.co.jp/#organization" } },
{ "@type": "Service", /* ... */ },
{ "@type": "FAQPage", /* ... */ },
{ "@type": "BreadcrumbList", /* ... */ }
]
}
AI Overviewsとの関係
構造化データは、Google AI Overviewsに対して「このページの内容は確定情報としてこうです」と宣言する手段としても機能します。特にFAQPageは、質問と回答のペアがそのまま切り出せる形になるため、AI Overviews対策で最も費用対効果が高いスキーマです。表示の仕組みはAI Overviews対策で解説しています。
実装したらリッチリザルトテストとSchema Markup Validatorの両方で検証してください。前者はGoogleが認識するか、後者はschema.org仕様に準拠しているかを見ます。片方だけでは不十分です。
この図のどこに自社が当てはまるか判断がつかない場合は、無料のAI検索診断で現状をお調べします。
無料でAI検索診断を依頼する →検証とよくある失敗
実装したら、必ず2つのツールで検証してください。
- Googleのリッチリザルトテスト:Googleが認識するかを確認
- Schema Markup Validator(validator.schema.org):schema.org仕様への準拠を確認
現場で頻発する失敗は次のとおりです。
| 失敗 | 症状 | 対処 |
|---|---|---|
| JSONの構文エラー | まるごと無視される | 末尾カンマ・全角記号を確認。JSONバリデータを通す |
| ページ表示と不一致 | スパム扱いのリスク | 構造化データはページに実際に書かれている内容のみ記述 |
| FAQをページに載せていない | ガイドライン違反 | FAQPageは、実際に表示されているQ&Aに対して使う |
| URLの表記揺れ | @idの参照が切れる | 末尾スラッシュ・httpsの有無を全ページで統一 |
| CMS更新で消える | ある日突然消失 | テーマ本体ではなく、テンプレートに組み込んで自動出力 |
あわせて、llms.txtの設置とAI検索対策の全体像も確認しておくと、優先順位を間違えずに進められます。
よくある質問
Q.構造化データを実装すれば検索順位は上がりますか?
A.構造化データ自体は直接的な順位要因ではありません。ただしリッチリザルトの表示によるクリック率向上と、AIがページ内容を正確に理解することによる引用機会の増加という、間接的な効果が期待できます。
Q.WordPressのプラグインで実装しても問題ありませんか?
A.問題ありません。ただしプラグインが出力する内容は汎用的なため、Serviceの価格帯やOrganizationのknowsAboutといったAI検索対策に効く項目が不足しがちです。プラグインを土台に、必要な項目を手動で追記する形が現実的です。
Q.すべてのページに構造化データが必要ですか?
A.はい、最低限BreadcrumbListとページ種別に応じたスキーマは全ページに入れるべきです。Organizationはサイト共通で1か所に、ArticleやFAQPageは該当ページにのみ実装します。テンプレート化して自動出力する設計にしておくと運用が楽になります。
