AEOAEO総研日本初・AI検索対策専門シンクタンク
ツール活用

構造化データ完全ガイド — AI検索に引用されるJSON-LDの書き方

AI検索エンジンへの引用率を高めるために最も効果的な「構造化データ」の実装方法を、コードサンプル付きで解説します。FAQPage・Article・Organizationスキーマを中心に。

AEO総研技術チーム · フロントエンドエンジニア・AEOスペシャリスト2025-06-1012分で読める

構造化データが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は存在する場合のみ追加
}

チェックツール

構造化データの実装後は以下のツールで検証してください:

  1. **Google リッチリザルトテスト** — https://search.google.com/test/rich-results
  2. **Schema.org バリデーター** — https://validator.schema.org
  3. **AEOチェッカー** — https://aeochecker.jp (42項目のうち構造化データ関連を自動チェック)

AEO総研技術チームが監修しました。実装で詰まった点はお気軽にお問い合わせください。

#構造化データ#JSON-LD#Schema.org#FAQPage#技術実装

自社サイトのAEOスコアを無料診断

URLを入力するだけ。42項目を約30秒で自動チェック。

無料診断してみる

Related Articles

構造化データ完全ガイド — AI検索に引用されるJSON-LDの書き方|AEO総研