「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つのことをしています。
- そのページが何についてかを理解する
- ユーザーの質問に最も関連する箇所を抜き出す
プレーンテキストはラベルのないスープのようなもので、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のリード獲得効果は限定的 |
Organization と FAQPage を正しく実装すれば、AEO スキーマの効果の70%を獲得できます。
おわりに
FAQPage は「入れたら終わり」のスキーマではありません——どの質問を選ぶか、回答をどう構成するか、視覚UIとどう同期させるか、すべてエンジニアリング的な判断が必要です。しかし複利効果は大きいです——1つの設計で2つのトラフィック源(AEO引用+SEOリッチリザルト)を得られ、広告費もリンクビルディングも不要です。
貴社のプロジェクトにも導入したいですか?
課題の整理からプロセス設計、実装まで——Heiso のコンサルタントチームが対応します