geo-review について
geo-reviewは、ウェブサイトのコンテンツがAI検索・回答エンジンに発見され、引用されるかを評価するワークフロー型スキルです。コンテンツと技術面の検査にブラウザーでの引用テストを組み合わせ、所見、修正案、YAML回帰テストを作成します。
主な機能
- 01引用されやすさの評価
- 02AI検索向けコンテンツ構造の確認
- 03権威性と信頼性のシグナル確認
- 04AIからの技術的な発見可能性の監査
- 05ブランドと製品情報の明確化
- 06AI検索エンジンでの引用テスト
活用シーン
- 01製品ページのAI可視性の評価
- 02回答エンジン向けドキュメントの改善
- 03競合が引用される理由の調査
- 04公開前のAI発見可能性の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ shiplightai/ agent-skills --skill geo-reviewインストール後、Claude Code で/geo-reviewを入力して読み込まれたか確認します。
詳細
GEO レビュー
アプリケーションやコンテンツが、AI を活用した検索エンジンや回答エンジン(ChatGPT、Perplexity、Google AI Overviews、Claude、その他、ウェブの情報源を引用する生成 AI システム)向けにどの程度最適化されているかを評価します。従来の SEO ではリンク一覧での上位表示を目指しますが、GEO ではAI が生成した回答で引用されることを目指します。
使用する場面
次のような場合に /geo-review を使用してください。
- AI アシスタント経由で製品が見つかる(開発者向けツール、SaaS、API)
- Google AI Overviews に表示されたい
- AI に「Y に最適な X は?」と尋ねて、ユーザーに製品を見つけてもらいたい
- ドキュメント、ガイド、教育コンテンツを公開している
- 競合他社は AI の回答に表示されるのに、自社は表示されない
- AI に参照してもらうソートリーダーシップコンテンツを作成している
- AI を活用した発見が重要な新製品をローンチする
GEO が今重要な理由
- Z 世代の 40% が、検索に Google ではなく TikTok や AI チャットボットを利用しています(Adobe 2024)
- Google AI Overviews は検索クエリの約 30% に表示されるようになり、従来の検索結果をスクロールしないと見えない位置に押し下げています
- Perplexity は毎月 1 億件以上のクエリを処理し、すべての回答でウェブの情報源を引用しています
- ブラウジング機能と検索機能を備えた ChatGPT が、主要なリサーチツールになりつつあります
- AI システムはリンクを順位付けするのではなく、従来の SEO とは異なるシグナルに基づいて情報源を選び、引用します
- AI が引用する情報源になることは、新たな「1 位」の獲得です
参照する標準規格とフレームワーク
- GEO 研究(Georgia Tech/Princeton/IIT Delhi、2024)—「GEO: Generative Engine Optimization」
- Google E-E-A-T — 経験、専門性、権威性、信頼性
- Schema.org — エンティティの理解に役立つ構造化データ
- llms.txt — AI クローラー向けの指示に関する新たな標準(LLM 向けの robots.txt に相当)
- Retrieval-Augmented Generation (RAG) — AI システムがコンテンツを取得し、引用する仕組み
フェーズの概要
Phase 1: EDUCATE → How AI search works differently from traditional search
Phase 2: SCOPE → Identify content types, target queries, AI visibility goals
Phase 3: ANALYZE → Content analysis + browser-based AI search validation
Phase 4: REPORT → Findings with citation gap analysis and confidence scores
Phase 5: REMEDIATE → Fix guidance + YAML regression tests
フェーズ 1:理解する
AI 検索の違い: 従来の検索エンジンは、関連性を示すシグナル(被リンク、キーワード、権威性)に基づいてページをクロール、インデックス登録し、順位付けします。AI 回答エンジンは根本的に異なる処理を行います。コンテンツを取得して意味的に理解し、引用する価値が最も高い情報源を選んで回答をまとめます。選ばれるには、コンテンツが明確で、具体的かつ権威性があり、直接回答できる内容である必要があります。
重要なポイント: AI システムは、裏付けとなる証拠を伴う具体的で検証可能な主張を含むコンテンツを優先します。曖昧なマーケティング文は無視されます。データや比較を含み、構成が明確な具体的な記述は引用されやすくなります。
フェーズ 2:範囲を定める
コンテキストを収集する
-
コードベース/コンテンツから自動検出する:
- コンテンツページ(ドキュメント、ブログ、ランディングページ、会社概要、料金、FAQ)
- 既存の構造化データ(JSON-LD、Schema.org)
- コンテンツ管理方式(静的、CMS、MDX など)
- llms.txt の有無
- サイトマップとコンテンツの構成
- 著者/専門性を示すシグナル
- 公開日と鮮度を示すシグナル
-
ユーザーに一度に 1 つずつ質問する:
- 製品の種類:製品/サイトでは何ができますか?(AI 検索のコンテキストを理解するために必要です)
- 対象 URL:コンテンツはどこで公開されていますか?
- 対象となる AI クエリ:コンテンツを使って AI にどのような質問に答えてほしいですか?(例:「スタートアップに最適な CI/CD ツール」、「Node.js で OAuth を実装する方法」)
- 競合他社:AI がこれらのクエリに回答する際、ほかにどの企業が表示されますか?(任意ですが、有益です)
- コンテンツの目標:ドキュメントですか? ソートリーダーシップですか? 製品の発見ですか? それともすべてですか?
-
コンテンツの全体像を整理する:
- 主要なコンテンツページとその目的
- 各ページが満たすべき対象クエリ
- 現在の AI 引用状況(ChatGPT/Perplexity でいくつかのクエリを試す)
- 競合他社と比較したコンテンツの不足点
フェーズ 3:分析する
record_evidence: true を指定して new_session でブラウザーセッションを開始します。該当するすべてのチェックカテゴリを実行します。
カテゴリー A:引用に値するコンテンツ(CITE)
| チェック ID | チェック項目 | 原則 | 方法 |
|---|---|---|---|
| CITE-01 | コンテンツに具体的で検証可能な主張が含まれている | GEO リサーチ | ページを確認し、データや数値を含む具体的な記述を探します |
| CITE-02 | 統計情報や独自のデータが含まれている | GEO リサーチ | 独自の数値、ベンチマーク、調査結果を確認します |
| CITE-03 | コンテンツが対象の質問に直接回答している | RAG 検索 | コンテンツと対象の質問を照合し、直接的な回答が含まれているか確認します |
| CITE-04 | 主張に裏付けとなる証拠や引用がある | E-E-A-T | 出典への言及、リンク、データの帰属を確認します |
| CITE-05 | コンテンツが具体的である(一般的・曖昧ではない) | GEO リサーチ | コンテンツの具体性と、実質を伴わないマーケティング文句を分析します |
| CITE-06 | 比較コンテンツ(代替案との比較)がある | AI の選好 | AI が引用できる「X と Y の比較」や比較表があるか確認します |
| CITE-07 | 明確で引用しやすい要約文がある | 引用形式 | 重要な段落が引用可能な主張から始まっているか確認します |
| CITE-08 | 独自の視点やデータがある(既存情報の焼き直しではない) | E-E-A-T | 独創性を評価します。AI がすでに生成できる内容に、新たな価値を加えているか確認します |
| CITE-09 | コンテンツが実体験を示している | E-E-A-T(経験) | ケーススタディ、個人的な経験、実例があるか確認します |
| CITE-10 | 技術的な正確さと深さがある | E-E-A-T(専門性) | コンテンツが表面的な説明にとどまっていないか評価します |
ブラウザーでの検証: コンテンツページにアクセスします。テキストを抽出し、主張の密度、統計情報、引用しやすい記述を分析します。対象の質問と照らし合わせ、直接的な回答があるか確認します。
カテゴリー B:AI 検索に適したコンテンツ構造(STRUCT)
| チェック ID | チェック項目 | 原則 | 方法 |
|---|---|---|---|
| STRUCT-01 | 明確な見出し階層が質問に対応している | RAG のチャンク化 | H2/H3 見出しが質問形式になっているか、トピックが明確か確認します |
| STRUCT-02 | 直接的な Q&A 形式の FAQ セクションがある | AI の選好 | FAQ セクションや質問と回答の組み合わせがあるか確認します |
| STRUCT-03 | 定義や説明の段落が回答から始まっている | 検索 | 段落の冒頭に重要な主張が配置されているか(逆ピラミッド型)確認します |
| STRUCT-04 | 表や構造化された比較がある | AI の選好 | 明確な見出しを備えた HTML 表があるか確認します |
| STRUCT-05 | コンテンツが読みやすい長さのセクション(300~500 語)に分割されている | RAG のチャンク化 | 見出し間のセクションの長さを測定します |
| STRUCT-06 | 複数のポイントを伝える際にリストを使用している | AI の選好 | 複数の手順や項目を含むコンテンツで、番号付きリストまたは箇条書きを使用しているか確認します |
| STRUCT-07 | コード例が完全で実行可能である(技術コンテンツの場合) | 開発者体験 | コードブロックが完全で、言語タグが付いているか確認します |
| STRUCT-08 | 長いコンテンツの冒頭に TL;DR または要約がある | 検索 | エグゼクティブサマリーまたは重要なポイントのセクションがあるか確認します |
ブラウザーでの検証: 見出し構造を抽出し、FAQ のパターンを数え、セクションの長さを測定します。DOM を調べ、表とリストがあるか確認します。
カテゴリ C:権威性と信頼性を示すシグナル(AUTH)
| チェック ID | チェック項目 | 原則 | 方法 |
|---|---|---|---|
| AUTH-01 | 著者情報(名前、略歴、資格)が掲載されている | E-E-A-T | 著者名の記載や概要セクションを確認する |
| AUTH-02 | 組織/ブランドのアイデンティティが明確である | エンティティ認識 | 会社概要ページや一貫したブランディングを確認する |
| AUTH-03 | 公開日と更新日が表示されている | 情報の鮮度 | コンテンツページの日付メタデータを確認する |
| AUTH-04 | 情報源と参考資料が引用されている | E-E-A-T | 権威ある情報源への外部リンクを確認する |
| AUTH-05 | お客様の声/ソーシャルプルーフが掲載されている | 信頼性 | 顧客のコメント、ロゴ、導入事例を確認する |
| AUTH-06 | 専門的な連絡先情報を確認できる | 信頼性 | お問い合わせページ、所在地、サポート窓口を確認する |
| AUTH-07 | コンテンツが新しい(過去 12 か月以内に更新) | 情報の鮮度 | 公開日/更新日を確認する |
| AUTH-08 | ドメインの権威性を示す指標がある(運営実績のあるサイト) | E-E-A-T | サイトの運営年数、会社概要ページの充実度、チームページを確認する |
ブラウザーでの検証: コンテンツページ、会社概要ページ、著者ページに移動します。日付、著者情報、引用リンクを抽出します。
カテゴリ D:AI による技術的な発見可能性(TECH)
| チェック ID | チェック項目 | 原則 | 方法 |
|---|---|---|---|
| TECH-01 | サイトルートに llms.txt がある | AI クローラーの標準 | /llms.txt を取得し、形式と内容を確認する |
| TECH-02 | 詳細なコンテンツを含む llms-full.txt がある(該当する場合) | AI クローラーの標準 | /llms-full.txt を取得する |
| TECH-03 | エンティティ情報が充実した JSON-LD 構造化データがある | Schema.org | Organization、Product、Article、FAQ のスキーマを確認する |
| TECH-04 | JavaScript がなくてもコンテンツにアクセスできる | RAG クロール | JS を無効にし、コンテンツが表示されるか確認する |
| TECH-05 | クリーンでセマンティックな HTML を使用している(フレームワーク由来の不要なコードがない) | クロール可能性 | 意味のあるタグと、div に偏った DOM を確認する |
| TECH-06 | robots.txt が AI クローラーを許可している | 発見可能性 | GPTBot、ClaudeBot、PerplexityBot、Bingbot のルールを確認する |
| TECH-07 | サイトマップに lastmod 付きでコンテンツページが含まれている | 発見可能性 | サイトマップにコンテンツページと日付が含まれているか確認する |
| TECH-08 | Open Graph タグが AI によるコンテンツ理解に役立つ | ソーシャル+AI | コンテンツを正確に説明する OG タグを確認する |
| TECH-09 | API ドキュメントが機械可読である(該当する場合) | 開発者向け GEO | OpenAPI 仕様と API リファレンスの形式を確認する |
| TECH-10 | コンテンツが認証の壁の向こうに隠されていない | RAG アクセス | 重要なコンテンツに一般公開でアクセスできることを確認する |
ブラウザーでの検証: llms.txt を取得し、robots.txt の AI ボット向けルールを確認し、SSR コンテンツを検証して、構造化データを調べます。
カテゴリ E:エンティティとブランドの明確さ(ENTITY)
| チェック ID | チェック項目 | 原則 | 方法 |
|---|---|---|---|
| ENTITY-01 | 製品/ブランド名が一貫して使用されている | エンティティ認識 | ページ間で名称が一貫しているか確認する |
| ENTITY-02 | 製品カテゴリが明確に示されている | AI 分類 | コンテンツ内で「X は[カテゴリ]です」と明示されているか確認する |
| ENTITY-03 | 主な機能/差別化要素が明確に示されている | AI 比較 | 機能一覧や独自の価値提案を確認する |
| ENTITY-04 | ユースケースの説明が具体的である | AI 推薦 | 「[具体的なユースケース]に最適」といったパターンを確認する |
| ENTITY-05 | 価格/プラン情報が構造化されている | AI 推薦 | 価格ページに明確で構造化されたプランがあるか確認する |
| ENTITY-06 | 連携/互換性に関する情報がある | AI 推薦 | 「X と連携」や連携ページを確認する |
| ENTITY-07 | 競合との差別化が事実に基づいている | AI 比較 | 比較コンテンツの主張が事実に基づいているか確認する(マーケティング上の主張だけでないこと) |
| ENTITY-08 | 対象とする業界/職種が明示されている | AI 分類 | 特定の業界や職種を対象としているか確認する |
ブラウザーでの検証: 主要なページに移動し、製品の位置付け、機能一覧、ユースケース、価格体系を抽出します。エンティティが明確に示されているか確認します。
カテゴリ F:AI 引用テスト(TEST)
このカテゴリは GEO に特有のもので、実際の AI での可視性をテストします。
| Check ID | チェック項目 | 方法 |
|---|---|---|
| TEST-01 | Perplexity で対象クエリをテストする | perplexity.ai にアクセスし、対象クエリを検索して、サイトが引用されているか確認します |
| TEST-02 | ChatGPT で対象クエリをテストする(ブラウジングが利用可能な場合) | ChatGPT で検索し、引用を確認します |
| TEST-03 | Google で対象クエリをテストする(AI による概要を確認) | Google で検索し、AI による概要がコンテンツを引用しているか確認します |
| TEST-04 | 競合他社と引用頻度を比較する | クエリ全体で、自社と主要な競合他社の引用数を数えます |
| TEST-05 | 引用されているコンテンツ(競合他社のもの)を分析する | 引用されたコンテンツの形式、構成、主張を調べます |
ブラウザーでの検証: new_session を使用して Perplexity と Google にアクセスします。対象クエリを検索し、検索結果のスクリーンショットを撮ります。ユーザーのドメインへの引用があるか確認します。これにより、現在の AI での可視性について実環境の証拠が得られます。
重要: TEST カテゴリの結果が実態を示します。ほかのカテゴリの結果にかかわらず、コンテンツが実際に引用されているかどうかを確認できます。
フェーズ 4:レポート
次の場所に構造化レポートを生成します:shiplight/reports/geo-review-{date}.md
# GEO Review Report
**Date:** {date}
**URL:** {url}
**Product type:** {description}
**Target AI queries tested:** {list}
## Overall GEO Score: {X}/10 | Confidence: {X}%
## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Citation-Worthiness (CITE) | 5/10 | 2 high, 2 medium |
| Content Structure (STRUCT) | 6/10 | 1 high, 2 medium |
| Authority Signals (AUTH) | 7/10 | 1 medium |
| Technical Discoverability (TECH) | 4/10 | 1 critical, 2 high |
| Entity Clarity (ENTITY) | 5/10 | 2 high |
| AI Citation Testing (TEST) | 3/10 | Not cited in 4/5 target queries |
## AI Citation Status
| Target Query | Perplexity | Google AI Overview | Cited? | Competitor Cited? |
|-------------|------------|-------------------|--------|------------------|
| "best X for Y" | Not cited | Not in overview | ❌ | CompetitorA: ✅ |
| "how to do Z" | Cited (#3 source) | Cited | ✅ | CompetitorB: ✅ |
| ... | | | | |
## Citation Gap Analysis
What competitors' cited content has that yours doesn't:
- Specific performance benchmarks (CompetitorA cites "40% faster than...")
- Comparison tables (CompetitorB has detailed feature matrices)
- Direct answer paragraphs (CompetitorA leads sections with the conclusion)
## Findings
(structured findings with evidence and priority)
信頼度スコア
- 90-100%:ライブ AI 検索で検証済み — コンテンツが引用されている/いない(TEST カテゴリ)
- 70-89%:構造上の有力な根拠あり — コンテンツに引用に値するパターンがある/ない
- 50-69%:コンテンツ品質のシグナルに基づくヒューリスティックな評価
- 50% 未満:報告しない
フェーズ 5:修正
1. 修正ガイダンス(例)
#### CITE-01: Landing page lacks specific, verifiable claims
**Impact:** AI systems skip vague marketing copy — your landing page is invisible to AI answers
**Current:** "We're the fastest platform for modern teams"
**Fix:** Add specific, citable claims:
- "Deploys complete in 47 seconds on average (based on 10,000 deployments in Q4 2025)"
- "Used by 2,300 companies including [notable names]"
- "Reduces CI/CD pipeline time by 62% compared to Jenkins (internal benchmark, Jan 2026)"
**Principle:** AI cites facts, not adjectives. Every claim should be verifiable.
#### TECH-01: No llms.txt present
**Impact:** AI crawlers have no guidance on how to understand your site
**Fix:** Create /llms.txt at site root:
# [Your Product Name]
> One-sentence description of what your product does.
## Docs
- [Getting Started](/docs/getting-started): How to set up and configure [Product]
- [API Reference](/docs/api): Complete API documentation
- [Guides](/docs/guides): Step-by-step tutorials
## Key Pages
- [Pricing](/pricing): Plans and pricing
- [Changelog](/changelog): Recent updates and releases
- [About](/about): Company and team information
Also create /llms-full.txt with expanded content for deeper AI understanding.
2. YAML 回帰テスト
- name: tech-01-llms-txt-present
description: Verify llms.txt exists and is properly formatted
severity: high
standard: llms-txt-standard
steps:
- URL: /llms.txt
- VERIFY: The page loads successfully and contains structured information about the site
- description: Assert llms.txt is present and uses markdown headings
js: |
const content = await page.textContent('body');
if (!content || content.trim().length < 50) {
throw new Error('llms.txt is missing or too short');
}
if (!content.includes('#')) {
throw new Error('llms.txt should use markdown heading structure');
}
console.log(`llms.txt found (${content.length} chars)`);
- name: tech-06-ai-crawlers-allowed
description: Verify robots.txt allows AI search crawlers
severity: high
standard: AI-Discoverability
steps:
- URL: /robots.txt
- description: Assert robots.txt does not block AI crawlers
js: |
const content = await page.textContent('body');
const blockedBots = ['GPTBot', 'ClaudeBot', 'PerplexityBot', 'Google-Extended'];
const blocked = blockedBots.filter(bot => {
const pattern = new RegExp(`User-agent:\\s*${bot}[\\s\\S]*?Disallow:\\s*/`, 'i');
return pattern.test(content);
});
if (blocked.length > 0) {
throw new Error(`AI crawlers blocked in robots.txt: ${blocked.join(', ')}`);
}
console.log('All major AI crawlers are allowed');
- VERIFY: robots.txt does not block major AI search engine crawlers
- name: cite-01-specific-claims-present
description: Verify key pages contain specific, citable claims with data
severity: high
standard: GEO-Citation-Worthiness
steps:
- URL: /
- description: Assert the landing page has citable statistics
js: |
const text = await page.textContent('main') || await page.textContent('body');
// Check for specific numbers/statistics
const hasNumbers = /\d+[%xX]|\$[\d,.]+|\d{1,3}(,\d{3})+|\d+\s*(users|customers|companies|teams|downloads)/i.test(text);
if (!hasNumbers) {
throw new Error('Landing page lacks specific statistics or data points that AI can cite');
}
console.log('Found specific, citable claims with data');
- VERIFY: Landing page contains specific statistics, benchmarks, or verifiable data points
すべての YAML テストを shiplight/tests/geo-review.test.yaml に保存します。
詳細レベル
--quick:llms.txt の確認 + robots.txt の AI クローラー確認 + ランディングページの主張分析。約 2 分。- デフォルト:すべてのコンテンツカテゴリ + Perplexity で対象クエリを 3 件テスト。約 10~15 分。
--thorough:すべてのカテゴリ + 複数の検索エンジンでの AI 引用テスト全般 + 競合他社の引用分析 + コンテンツのギャップに関する提案。約 25~40 分。
ヒント
- TEST カテゴリ(ライブ AI 検索テスト)が最も有用です。理論ではなく、実態を確認できます。
- Perplexity は常に引用を表示するため、テストに最適です。
- llms.txt は普及し始めており、採用も増えています。手間は少なく、得られるシグナルは大きいです。
- AI システムによってナレッジが更新される速度は異なります。変更が引用に反映されるまで数週間かかる場合があります。
- ブランド認知度を高めるコンテンツではなく、具体的な質問に答えるコンテンツに注力してください。
- GEO の最重要原則:AI が引用するのは事実であり、形容詞ではありません。曖昧な主張はすべて、具体的な主張に置き換えてください。
close_sessionでセッションを終了し、証拠にはgenerate_html_reportを使用してください。