ツール活用
構造化データ完全ガイド — AI検索に引用されるJSON-LDの書き方
AI検索エンジンへの引用率を高めるために最も効果的な「構造化データ」の実装方法を、コードサンプル付きで解説します。FAQPage・Article・Organizationスキーマを中心に。
AEO総研技術チーム · フロントエンドエンジニア・AEOスペシャリスト2025-06-10約12分で読める
構造化データがAEOに重要な理由
ChatGPT・Gemini・Perplexityなどのアンサーエンジンは、Webページを読む際にHTMLのセマンティクスを重視します。構造化データ(JSON-LD)は「このページはFAQです」「著者はXXです」「公開日は〇〇です」といった文脈情報を、機械が確実に読める形式でAIに伝える最も直接的な方法です。
AEO総研の調査では、構造化データを適切に実装しているページは、していないページと比べてAI検索での引用率が平均2.3倍高い傾向が見られました。
優先度別:実装すべきスキーマ
優先度1: FAQPage(最重要)
質問と回答のペアを定義するスキーマ。AIは「誰かの質問に答える」という行動をするため、FAQ形式のコンテンツは最も引用されやすいです。
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "AEOとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "AEO(Answer Engine Optimization)とは、ChatGPTやGeminiなどのAIアンサーエンジンに自社コンテンツを引用・参照してもらうための最適化手法です。"
}
},
{
"@type": "Question",
"name": "AEOとSEOの違いは?",
"acceptedAnswer": {
"@type": "Answer",
"text": "SEOはGoogleの検索結果での上位表示を目指すのに対し、AEOはAIが回答生成時に自社コンテンツを選択・引用されることを目指します。"
}
}
]
}優先度2: Article / NewsArticle
記事・ブログ投稿に必須。著者情報・公開日・更新日をAIに正確に伝えます。
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "AEOとは何か — AI検索時代の新しいSEO戦略",
"datePublished": "2025-06-01T09:00:00+09:00",
"dateModified": "2025-06-10T12:00:00+09:00",
"author": {
"@type": "Organization",
"name": "AEO総研",
"url": "https://aeosoken.jp"
},
"publisher": {
"@type": "Organization",
"name": "AEO総研",
"logo": {
"@type": "ImageObject",
"url": "https://aeosoken.jp/logo.png"
}
},
"description": "ChatGPT・Gemini・PerplexityなどAIアンサーエンジンへの最適化手法「AEO」を体系的に解説。"
}優先度3: Organization(ドメイン全体の信頼性)
サイト全体の運営者情報を定義。AIはOrganizationスキーマを使ってドメインの権威性を評価します。
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "AEO総研",
"url": "https://aeosoken.jp",
"description": "AI検索最適化(AEO)の調査・研究・情報発信を行う専門メディア",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "info@aeosoken.jp",
"availableLanguage": "Japanese"
},
"sameAs": [
"https://twitter.com/aeosoken",
"https://www.linkedin.com/company/aeosoken"
]
}優先度4: BreadcrumbList
パンくずリストの構造化データ。AIはサイトの階層構造を理解し、専門性の深さを評価します。
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "ホーム",
"item": "https://aeosoken.jp"
},
{
"@type": "ListItem",
"position": 2,
"name": "解説コラム",
"item": "https://aeosoken.jp/column"
},
{
"@type": "ListItem",
"position": 3,
"name": "構造化データ完全ガイド",
"item": "https://aeosoken.jp/column/structured-data"
}
]
}Next.jsでの実装方法
app/layout.tsxにOrganizationスキーマを追加
// app/layout.tsx
export default function RootLayout({ children }) {
const jsonLd = {
"@context": "https://schema.org",
"@type": "Organization",
"name": "AEO総研",
"url": "https://aeosoken.jp",
};
return (
<html lang="ja">
<body>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
{children}
</body>
</html>
);
}記事ページに動的にArticleスキーマを生成
// app/articles/[slug]/page.tsx
export default function ArticlePage({ params }) {
const article = getArticleBySlug(params.slug);
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
"headline": article.title,
"datePublished": article.date,
"author": {
"@type": "Person",
"name": article.author,
},
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
{/* 記事本文 */}
</>
);
}よくある実装ミスと対策
NG: JavaScriptで後から挿入する
// ❌ クローラーが読めない可能性がある
document.head.appendChild(script);OK: HTMLに直接埋め込む
<!-- ✅ クローラーが確実に読める -->
<script type="application/ld+json">
{ ... }
</script>NG: 空のフィールドを含める
{
"author": "", // ❌ 空文字は無効
"datePublished": null // ❌ nullは無効
}OK: 値がある場合のみ含める
{
"author": { "@type": "Person", "name": "田中太郎" }
// datePublishedは存在する場合のみ追加
}チェックツール
構造化データの実装後は以下のツールで検証してください:
- **Google リッチリザルトテスト** — https://search.google.com/test/rich-results
- **Schema.org バリデーター** — https://validator.schema.org
- **AEOチェッカー** — https://aeochecker.jp (42項目のうち構造化データ関連を自動チェック)
AEO総研技術チームが監修しました。実装で詰まった点はお気軽にお問い合わせください。
#構造化データ#JSON-LD#Schema.org#FAQPage#技術実装
Related Articles