ブログ一覧に戻る
技術實作2026年4月24日·12 分で読めます

「FAQ Schemaの作り方:AIにそのまま答えを持っていってもらう」

Organization スキーマは AI に「あなたが誰か」を伝える。FAQPage は AI に「ユーザーが X と聞いたら、答えは Y」と伝える。私たちが B2B サービスページを AI が引用したくなる構造に作り直した方法を、Next.js の完全な実装例で紹介します。

阿育

前回の記事「AEOのためにまずやるべき3つのこと」では JSON-LD の Organization まで——AI にあなたが誰かを伝えるところで止まっていました。今回はもう1段階深く進みます——FAQPage、つまり「誰かが X と聞いたら、答えは Y」と AI に伝える方法です。正しく実装すれば、ChatGPT はあなたの FAQ を言い換えではなくそのまま引用するようになります。

なぜ FAQPage が AEO にとって重要なのか

AI がページを要約する時、2つのことをしています。

  1. そのページが何についてかを理解する
  2. ユーザーの質問に最も関連する箇所を抜き出す

プレーンテキストはラベルのないスープのようなもので、AI はどの文が質問で、どれが答えで、どれが結論で、どれが前置きかを推測しなければなりません。推測が外れれば、間違った引用、あるいは引用なしになります。

FAQPage スキーマは「質問→回答」のペアを AI に直接渡します。

{
  "@type": "Question",
  "name": "How long does a custom system typically take to launch?",
  "acceptedAnswer": {
    "@type": "Answer",
    "text": "A typical B2B internal system launches as MVP in 3–6 months..."
  }
}

AI がこの構造を見ると、抽出コストはゼロになります——推測も推論もせず、そのまま持っていくだけです。B2B では特に価値があります。B2B の意思決定者は文字通り「どのくらいかかるか」「連携費用はいくらか」「既存のERPと連携できるか」といった質問をするからです。

コードを書く前に決めるべき3つのこと

自社サイトで FAQPage を実装してみて、事前に決めるべきことが3つありました。

1. どのページに FAQPage を付けるか

すべてのページではありません。私たちのルール:

  • 付ける:サービスページ、製品ページ、ランディングページ、価格ページ
  • 付けない:会社概要、チーム紹介、ブログ一覧ページ
  • 場合による:個別のブログ記事。構造が Q&A 形式なら付ける、長文のエッセイなら無理に Q&A に押し込むとコンテンツが歪む。

理由:FAQPage は具体的な質問を持つ読者のためのものです。サービスページには合いますが、ブログ記事には通常合いません。

2. 質問は会社側の説明の仕方ではなく、ユーザーが実際に聞く言い方で書く

悪い例:

Q: What is included in our custom software development service offering?

これは企業的な言い回しです。ユーザーはこんな言い方をしません。

良い例:

Q: How long does a custom system typically take to launch?
Q: What's the budget range for an ERP integration project?
Q: Do you maintain the system after launch, or do we?

これらはユーザーが実際に ChatGPT に打ち込む文です。

思いつかない場合の安価なテクニック:ChatGPT に「〇〇サービスを探しています」と打ち込み、自動でサジェストされるフォローアップの質問を見てみましょう。それがあなたが答えるべき質問です。

3. すべての回答の最初の一文=結論。その後に補足の詳細。

AI は通常、最初の1〜2文を抜き出します。そのため:

A: A typical B2B internal system launches as MVP in 3–6 months.
   Complex integrations (cross-ERP / CRM / multi-region) usually run 6–9 months.
   Actual timeline depends on requirements clarity, existing tech debt, data migration scope.

1文目:30語以内に具体的な数字。2文目:条件。3文目:変動要因。AI はおそらく1文目だけを抜き出します——それで構いません、1文目だけで質問に答えられているからです。

直感に反する点:従来のビジネス文書は前置きを好み、結論を最後に取っておきます。AEO ではそれは逆効果です——AI は最初の2文を抜き出して次に進みます。最後に取っておいた重要な結論は、決して抜き出されません。

B2Bサービスページの実装:完全な例

私たち自身の「カスタムソフトウェア開発」サービスページを使います。Next.js App Router + TypeScript。

ステップ1:FAQデータを定義する

src/lib/faqs/custom-software.ts

export interface FAQ {
    question: string;
    answer: string;
}

export const customSoftwareFAQs: FAQ[] = [
    {
        question: 'How long does a custom system typically take to launch?',
        answer: 'A typical B2B internal system launches as MVP in 3–6 months; complex integrations take 6–9 months. Actual timeline depends on requirements clarity, existing tech debt, and data migration scope.',
    },
    {
        question: 'What\'s the budget range for an ERP integration project?',
        answer: 'Mid-sized B2B ERP integration projects typically run US$25K–100K. Below $25K is usually a single-point connection; above $100K usually means building a custom ERP or deeply integrating multiple systems. We offer free scope assessment.',
    },
    {
        question: 'Do you maintain the system after launch, or do we?',
        answer: 'Either works. Most clients pick a three-month handover — we maintain for the first three months, then hand off to the internal team; some prefer a long-term retainer. Handover includes full technical documentation and a handover session.',
    },
    {
        question: 'Can you integrate with our existing ERP / CRM?',
        answer: 'We\'ve integrated the major ERPs (SAP, Oracle, Dingxin, Chenghang, Odoo) and CRMs (Salesforce, HubSpot, Zoho). For legacy systems with strict API limits, we use DATA-BEE as a data-layer bridge.',
    },
];

ステップ2:スキーマジェネレーター

src/lib/schema.ts(前回の記事から続く):

import type { FAQ } from './faqs/custom-software';

export function getFAQPageSchema(faqs: FAQ[]) {
    return {
        '@context': 'https://schema.org',
        '@type': 'FAQPage',
        mainEntity: faqs.map((faq) => ({
            '@type': 'Question',
            name: faq.question,
            acceptedAnswer: {
                '@type': 'Answer',
                text: faq.answer,
            },
        })),
    };
}

ステップ3:サービスページで使う

src/app/services/custom-software/page.tsx

import { JsonLd } from '@/components/JsonLd';
import { getFAQPageSchema } from '@/lib/schema';
import { customSoftwareFAQs } from '@/lib/faqs/custom-software';

export default function CustomSoftwarePage() {
    return (
        <>
            <JsonLd data={getFAQPageSchema(customSoftwareFAQs)} />

            {/* main service page content */}

            <section className="py-20">
                <h2 className="text-3xl font-bold mb-10">Frequently Asked Questions</h2>
                <div className="space-y-4">
                    {customSoftwareFAQs.map((faq) => (
                        <details key={faq.question} className="group border-b pb-4">
                            <summary className="text-lg font-medium cursor-pointer">
                                {faq.question}
                            </summary>
                            <p className="mt-3 text-neutral-600 leading-relaxed">
                                {faq.answer}
                            </p>
                        </details>
                    ))}
                </div>
            </section>
        </>
    );
}

注意すべき2つの罠:

  • JSON-LD の内容と表示されているFAQは一致させる必要があります。スキーマ内の質問はページ上に視覚的に表示されていなければなりません。スキーマには10個のQがあるのにページには3個しか表示されない、というのはクローキングであり、Google からペナルティを受ける可能性があります。1つの customSoftwareFAQs をデータソースとして共有すれば、これを回避できます。
  • デフォルトで折りたたまれた <details> は問題ありません。AI クローラーは視覚的な折りたたみ状態に関係なく、完全にレンダリングされたDOMを見ています。折りたたみはUXにのみ影響し、スキーマの有効性には影響しません。

ステップ4:検証する

デプロイ後、サービスページのURLを Rich Results Test に通します。FAQPage が検出され、各 Q&A がリストされているはずです。一部が欠けている場合、通常は JSON とページ表示テキストの不一致が原因です——データソースを確認してください。

FAQスキーマをテストする方法

デプロイ後に誰もがスキップするステップですが、これが実際にスキーマが AEO のために機能しているかの証明になります。

1. スキーマが SSR の HTML に含まれているか確認する

最もよくある罠:スキーマがクライアントサイドでレンダリングされているが、AI クローラーは SSR の HTML しか見ていない。

curl -s https://your-site.com/contact | grep -c FAQPage

1以上であるべきです。0であれば、JSON-LD が初期HTMLに含まれていません——サーバーコンポーネントかレイアウトに移動してください。

2. Google Rich Results Test に通す

URLを Rich Results Test に入力します。すべての Q&A がリストされるはずです。

⚠️ 注意:Google は2023年8月に一般サイト向けのFAQリッチリザルトを廃止しました——政府機関や権威ある医療系サイトのみが検索結果にFAQブロックを表示できます。一般的なB2Bサイトでは、このステップはスキーマの構造を検証するだけで、Googleの検索結果にFAQブロックが表示されることを意味しません。構造的な有効性こそが、AIクローラーにとって重要です。

3. 1〜2週間後、AIエンジンでファクトチェックする

AI クローラー(GPTBot、ClaudeBot、PerplexityBot)は独自のサイクルで再クロールします——即座の結果を期待しないでください。1〜2週間後、ChatGPT と Perplexity に FAQ のトピックに関連する質問をしてみます(必ずしも一言一句同じでなくても良い)。

  • 回答は FAQ の具体的な内容を反映しているか?
  • AI はあなたのドメインを出典として引用しているか?

両方とも Yes なら——スキーマは AEO のために機能しています。AI はあなたを回答ソースとして扱うようになりました。

早急に失敗だと判断しないこと:新しいドメインは AI が引用し始めるまで1〜3ヶ月かかることがあります。このステップの核となる成果物は「HTMLに実際に有効なFAQPageスキーマがある」ことであり、AI の引用は時間の問題です。

B2Bにおけるスキーマの優先順位

すべてのスキーマをやる価値があるわけではありません。私たちが検証したB2Bの優先順位:

スキーマ 優先度 理由
Organization 必須 「あなたが誰か」の基本
FAQPage 主要な推進力 AI が最も好む形式、最高のCTR
Service 推奨 サービスページへの強化、FAQPageより小規模
BreadcrumbList 推奨 SEOには良いが、AEOには限定的
Product 場合による SKU/価格がある場合のみ
Article 場合による ブログ記事に使えるが、B2Bのリード獲得効果は限定的

OrganizationFAQPage を正しく実装すれば、AEO スキーマの効果の70%を獲得できます。

おわりに

FAQPage は「入れたら終わり」のスキーマではありません——どの質問を選ぶか、回答をどう構成するか、視覚UIとどう同期させるか、すべてエンジニアリング的な判断が必要です。しかし複利効果は大きいです——1つの設計で2つのトラフィック源(AEO引用+SEOリッチリザルト)を得られ、広告費もリンクビルディングも不要です。

貴社のプロジェクトにも導入したいですか?

課題の整理からプロセス設計、実装まで——Heiso のコンサルタントチームが対応します

相談を予約 →
AEOJSON-LDFAQPageNext.jsSchema.org
他の記事
シェア:

関連記事