B2BサイトがAIに引用されるために、まず3つのことをやる
AEOのやることリストは20項目にもなるが、効果の80%は3つに集約される。私たち自身のB2Bサイトで実際に行った内容を、Next.jsのコード付きで解説します。
前回の記事では AEO とは何かを解説しました(ユーザーが ChatGPT に聞き始めたら、あなたのサイトは見つかりますか?)。今回は実装の話です。ネット上の AEO ガイドはよく20項目のアクションリストを並べますが、実際には効果の80%は3つに集中しています。私たち自身のサイト(Next.js App Router + TypeScript)で実際に行った内容を紹介します。
なぜ3つだけなのか
見つけられる限りの AEO ガイドを丸一日かけて読み比べたところ、ほとんどの項目は2種類に分かれることが分かりました。
- 長期戦:FAQ、被リンク、E-E-A-T シグナル——すべて重要だが、1週間で効果が出るものではない
- わずかな効果:Open Graph の微調整、OG画像、canonical——SEO時代のサイトがもともとやるべきことで、AEO がその重要度を増幅するわけではない
AI があなたを読めるかどうかを実際に決めるのは3つだけです——入ってこられるか、理解できるか、更新をいつ知るか。それぞれ robots.txt、JSON-LD、IndexNow に対応します。
#1:robots.txt で AI ボットを通す
3つの中で最も見落とされがちです。多くの企業が「コンテンツを保護する」ために Googlebot 以外をすべてブロックしており、その結果 ChatGPT、Claude、Perplexity があなたの存在を知らない、という事態になっています。
public/robots.txt:
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-Web
Allow: /
User-agent: anthropic-ai
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: Applebot-Extended
Allow: /
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Sitemap: https://www.heiso.io/sitemap.xml
いくつか補足:
Google-ExtendedはGooglebotではありません——これは Google が Gemini の学習に使えるデータを制御するものです。別途記載してください。Applebot-Extendedは Apple Intelligence 専用で、2024年に導入されたばかりです——古いrobots.txtの多くにはまだ入っていません。
#2:JSON-LD 構造化データ
これがあなたを読めるようにするものです。プレーンテキストのページは AI にとってただの塊です。JSON-LD は主語・動詞・目的語を直接渡します。
最小実装:ルートレイアウトに Organization + WebSite スキーマを置き、すべてのページに反映させます。
src/lib/schema.ts:
export function getOrganizationSchema() {
return {
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'Heiso Digital',
url: 'https://www.heiso.io',
description: 'Heiso Digital provides custom software development, enterprise system integration, and AI Agent deployment.',
sameAs: [
'https://www.linkedin.com/company/heiso',
// other social profiles
],
};
}
src/components/JsonLd.tsx:
export function JsonLd({ data }: { data: object }) {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }}
/>
);
}
ルートレイアウトに組み込みます。
// src/app/layout.tsx
import { JsonLd } from '@/components/JsonLd';
import { getOrganizationSchema } from '@/lib/schema';
export default function RootLayout({ children }) {
return (
<html>
<body>
<JsonLd data={getOrganizationSchema()} />
{children}
</body>
</html>
);
}
トップページを Rich Results Test に通すと、Organization スキーマが検出されるようになります。
さらに進めるなら:サービスページに Service スキーマ、製品ページに SoftwareApplication、FAQ セクションがある場所には FAQPage を追加します。ただ Organization を正しく実装するだけで「AI が自分のことを知らない」問題の60%は解決します。
#3:IndexNow で即時通知
サイトマップは受動的です——クローラーが気が向いた時に来ます。IndexNow は能動的です——公開時に Bing、Yandex、Naver に「今すぐクロールして」と通知します。Google は IndexNow に対応していませんが、ChatGPT は Bing のインデックスに乗っているため、AI検索においては IndexNow が Google Search Console より重要になります。
セットアップ:
- キーを生成(32〜128文字の任意の文字列):例
heiso-indexnow-2026-xyz789 - ファイルとして配置:
public/heiso-indexnow-2026-xyz789.txt、内容はキーそのもの - 通知関数を書く:
// src/lib/indexnow.ts
const KEY = 'heiso-indexnow-2026-xyz789';
const KEY_LOCATION = `https://www.heiso.io/${KEY}.txt`;
export async function notifyIndexNow(urls: string[]) {
await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: 'www.heiso.io',
key: KEY,
keyLocation: KEY_LOCATION,
urlList: urls,
}),
});
}
- 以下のタイミングで呼び出す:
- 新しいブログ記事を公開した時
- サービスページの文章を更新した時
- 新しいランディングページを公開した時
私たち自身の実装は1つのエンドポイントにまとめています:POST /api/indexnow/notify。1回叩くだけで、status: published の全ブログ記事(zh+en)とメインの静的ページを自動収集し、一括で Bing に通知します。URLリストを手動管理する必要はありません。
curl -X POST https://www.heiso.io/api/indexnow/notify
# {"ok":true,"status":202,"urlCount":32}
status: 202 が期待されるレスポンスです(IndexNow は200を返さず、202=受理してキューに入れた、という意味です)。この呼び出しはブログ公開フローの最後のステップに組み込んでいます——記事が status: published に変わった瞬間に通知します。「ドラフト保存」から「ChatGPT があなたの存在を知る」までの時間が数分に短縮されます。
この3つが本当に動いているか確認する方法
デプロイすれば自動的にうまくいくと思い込まず、各ステップごとにテストしましょう。
robots.txt
curl -s https://your-site.com/robots.txt | grep -E "GPTBot|ClaudeBot|PerplexityBot"
User-agent: GPTBot の後に Allow: が続くはずです——Disallow: ではありません。サイト全体の Disallow: / はすべての AI クローラーをブロックします。
JSON-LD
curl -s https://your-site.com/ | grep -c "application/ld+json"
トップページは2以上であるべきです(Organization 1つ+ WebSite 1つ)。または URL を Schema.org Validator に貼り付けて構造を確認します。
IndexNow
Bing Webmaster Tools を確認——URL Submission の下に、公開ごとのタイムスタンプが表示されるはずです。または Bing のインデックス済みページ数のトレンドを見てください——絶対数ではなくトレンドが重要です。
1〜2週間後:AI エンジンでファクトチェック
AI の再クロール周期(GPTBot、ClaudeBot、PerplexityBot)の後、ChatGPT と Perplexity に聞いてみましょう。
- 「[貴社名]は何をしている会社?」
- 「[貴社名]はどんなサービスを提供している?」
AI が具体的なサービスを列挙し、あなたのドメインを引用すれば——この3つが AI への翻訳という役目を果たしたことになります。
新しいドメインの場合、1〜3ヶ月かかることがあります。ここでの成果物は「構造が正しく、AIボットが入ってこられる状態」であり、AI の引用は時間の問題です。
Heiso の現在の状況
同じチェックを私たち自身の heiso.io に適用すると——2つは完了、3つ目はまだバックログです。
✅ robots.txt:14以上のAIボットを明示的に許可
curl -s https://www.heiso.io/robots.txt | grep -E "GPTBot|ClaudeBot|PerplexityBot"
完全なリスト:GPTBot、ChatGPT-User、OAI-SearchBot、ClaudeBot、Claude-Web、anthropic-ai、Google-Extended、Googlebot、PerplexityBot、Perplexity-User、Applebot、Applebot-Extended、Bingbot、BingPreview、CCBot。heiso.io/robots.txt で自分で確認できます。
✅ JSON-LD:トップページに2つのスキーマ
curl -s https://www.heiso.io/ | grep -c "application/ld+json"
# → 2
Organization + WebSite、src/app/layout.tsx から全ページに一度だけ注入。View Source で確認できます。
⏳ IndexNow:まだ未実装(正直に開示します)
curl -I https://www.heiso.io/indexnow-key.txt
# → HTTP 404
この記事ではやり方を解説していますが、私たち自身ではまだデプロイしていません——私たちのブログはまだ最初の数記事を積み上げている段階で、IndexNow の価値は更新頻度の高いサイトで最も大きくなるため、バックログに置いています。誤魔化さずに正直に書くことにしました——「実際の状況=一部完了、一部未着手」の方が、「すべて導入済み、劇的な成果」よりも信頼できます。
2週間後に IndexNow の実装+実際の AI 引用検証を追記する予定です。記事のレトリックではなく、実際のアクションアイテムとして。
おわりに
AEO の実装は深く掘ろうとすればいくらでも掘れますが、最初の一歩はこの3つだけです。難しいのは技術ではありません——robots.txt の3行、JSON-LD の10行、IndexNow の fetch 呼び出し1つ——難しいのはAI にどう自分を理解してもらいたいかを決めることです。その答えを出すには考える時間が必要ですが、答えが出れば実装は1日で終わる仕事です。
貴社のプロジェクトにも導入したいですか?
課題の整理からプロセス設計、実装まで——Heiso のコンサルタントチームが対応します