OpenAEO について
OpenAEOは、AI回答エンジンがページを取得・引用できるか調べる、開発者やサイト運営者向けの監査CLI、ライブラリ、MCPサーバーです。取得性やコンテンツの要素を評価し、優先順位付きの修正案と適用・検証ツールを提供します。
主な機能
- 01HTML、ボットアクセス、構造化データ、更新状況の監査
- 02スコア評価と修正優先順位の提示
- 03robots.txt、llms.txt、JSON-LDの生成
- 04クローラーのアクセスログをローカルで解析
- 05MCP経由で修正を適用・検証
活用シーン
- 01AIクローラーがサイトにアクセスできるか確認
- 02AI引用に向けたサイトコンテンツの整備
- 03CIでスコアのしきい値を設定
- 04サーバーログでクローラーのリクエストを確認
MCP 対応
MCPサーバーは、ドメインやHTMLの監査、サイト修正の生成・適用、結果の検証、クローラーログの確認に使うツールを公開します。引用テスト、履歴、変化検出、競合チェック用のホスト型ツールもあり、利用にはAPIキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y openaeo-auditOPENAEO_API_KEYシークレットOptional. Unlocks the hosted tools (crawler intelligence, citation testing, history, drift, competitors). The six local tools work without it. Create one at https://openaeo.dev/dashboardローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
15掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| domain | string | はい | ドメインまたは完全な URL。例:example.com |
詳細
OpenAEO Audit
ターミナルから1つのコマンドを実行するだけで、ChatGPT、Claude、Gemini、Perplexity などの AI 回答エンジンがあなたのウェブサイトを取得し、引用できるか確認できます。
npx openaeo-audit yoursite.com
インストールも登録も依存関係も不要です。AI クローラーと同じ方法でページを取得し、100点満点で評価して、スコアを上げるための具体的な修正点を提示します。
AEO(回答エンジン最適化)と GEO(生成エンジン最適化)は、新しい SEO です。お客様は10件の青いリンクをスクロールする代わりに、アシスタントに質問するようになってきています。勝者となるのは、AI が読み取り、信頼し、推奨できるサイトです。このツールで、あなたのサイトの現状を把握できます。
クイックスタート
# pretty report
npx openaeo-audit example.com
# machine-readable JSON (for CI, dashboards, scripts)
npx openaeo-audit example.com --json
出力例:
example.com
54/100 · AI-ready
AI-ready, not yet cited.
Retrievable, but thin on quotable specifics and structured data. Fixable without a redesign.
✓ Content readable in raw HTML — 1,240 visible words
✗ robots.txt allows GPTBot, ClaudeBot, PerplexityBot — robots.txt disallows gptbot
✗ llms.txt index present — missing
⚠ Organization + WebSite JSON-LD — Organization
⚠ Product / Offer schema with price — no priced Offer
⚠ Answer + a number in the first 100 words — vague / no title or meta
✗ FAQPage schema present — missing
✓ Freshness (dateModified) present — dateModified set
6 fixes to raise your score:
1. Unblock AI crawlers in robots.txt
Why: A single inherited Disallow line can hide you from ChatGPT and Perplexity entirely.
How: Explicitly Allow GPTBot, OAI-SearchBot, ClaudeBot, ... and link your sitemap.
...
チェック項目
この監査では、AI アシスタントがあなたのサイトを引用できるかどうかを左右する、特に重要な項目をチェックします。
| チェック項目 | 重要な理由 |
|---|---|
| 生の HTML でコンテンツを読み取れる | クローラーによってレンダリングへの対応状況は異なります。Googlebot は JavaScript を実行しますが、GPTBot、ClaudeBot、PerplexityBot は実行しません。ハイドレーション後にしか表示されないコンテンツは、レンダリングしないクローラーには空のページとして見えます。 |
| robots.txt で AI ボットが許可されている | 受け継がれた Disallow の1行だけで、ChatGPT や Perplexity から完全に見えなくなる可能性があります。 |
| ボットごとのエッジ到達性 | robots.txt はリクエストであり、CDN はそれを強制するものです。GPTBot、OAI-SearchBot、ClaudeBot、Claude-SearchBot、PerplexityBot、Googlebot、Bingbot、Applebot としてアクセスし、それぞれに返されるステータスを記録します。Google-Extended は、その背後にクローラーのいない robots.txt のトークンなので、アクセスせずに内容を読み取ります。 |
| llms.txt のインデックスがある | アシスタントに、サイトの明快で引用しやすい要約を提供する新しい慣習です。 |
| Organization と WebSite の JSON-LD | 構造化された情報によって、アシスタントはあなたが誰なのかを把握できます。 |
| 価格を含む Product/Offer スキーマ | 「X の価格はいくらですか」という質問に、実際の金額で回答できるようになります。 |
| 最初の100語以内に回答と数値がある | アシスタントは、最初に出てくる具体的で明確な文を引用します。形容詞は引用されませんが、数値は引用されます。 |
| FAQPage スキーマ | ユーザーがアシスタントに入力する、質問形式のクエリに直接対応します。 |
| 鮮度(dateModified) | アシスタントは、最新であることを示す情報源を優先します。 |
スコアの算出
各チェックを pass(1.0)、warn(0.4)、fail(0.0)で採点し、その平均を0~100点のスコアに換算したうえで、次のいずれかに分類します。
| スコア | 分類 |
|---|---|
| 0–25 | 取得不可 |
| 26–45 | 部分的 |
| 46–64 | AI 対応 |
| 65–82 | AI 競争力あり |
| 83–100 | 完全に読み取り可能 |
一部の失敗項目は、ほかのチェックに合格していてもスコアに上限を設けます。取得を完全に妨げるためです。
- JavaScript なしではコンテンツが表示されない → 25点が上限
- エッジでボットがブロックされている(4xx/403)→ 25点が上限
- robots.txt で AI ボットが許可されていない → 40点が上限
実際の問題を隠す見かけのよいスコアより、改善に活かせる正直な低スコアのほうが役立ちます。
ライブラリとして使う
const { audit, remediationPlan } = require("openaeo-audit");
const result = await audit("example.com");
console.log(result.score, result.band); // 54 "AI-ready"
const fixes = remediationPlan(result); // ordered, highest-leverage first
fixes.forEach(f => console.log(f.title));
audit(url) の戻り値:
{
"domain": "example.com",
"score": 54,
"band": "AI-ready",
"verdict": "AI-ready, not yet cited.",
"sub": "Retrievable, but thin on quotable specifics ...",
"fixCount": 2,
"edgeOk": true,
"bots": [ { "name": "GPTBot", "surface": "ChatGPT", "kind": "fetched", "status": 200, "ok": true }, ... ],
"checks": [ { "label": "...", "status": "pass|warn|fail", "detail": "..." }, ... ]
}
CI での使用
スコアがしきい値を下回った場合に、ビルドを失敗させます。
score=$(npx openaeo-audit yoursite.com --json | node -e "process.stdin.on('data',d=>console.log(JSON.parse(d).score))")
[ "$score" -ge 65 ] || { echo "AEO score $score below 65"; exit 1; }
Cursor または Claude Code から使う(MCP)
OpenAEO には MCP サーバーが付属しているため、AI コーディングエージェントがサイトを監査し、実際のファイルに修正を適用できます。変更内容はすべてあなたが確認できます。アップロードは一切行われず、アカウントも不要で、本番環境に触れることもありません。
Cursor — ~/.cursor/mcp.json(またはプロジェクト内の .cursor/mcp.json)に追加します。
{
"mcpServers": {
"openaeo": { "command": "npx", "args": ["-y", "openaeo-audit", "mcp"] }
}
}
Claude Code/Claude Cowork — プロジェクト内で次を実行します。
claude mcp add openaeo -- npx -y openaeo-audit mcp
…または examples/.mcp.json をプロジェクトのルートにコピーします。
ワークフローを繰り返し実行するには、examples/aeo-fix-pass/ を .claude/skills/ に追加します。すると /aeo-fix-pass で、ガードレール(robots.txt は上書きせずに統合する、プレースホルダーの数値を決して捏造しない)を含めた監査・修正・検証の一連の処理を実行できます。
あとは、次のように依頼するだけです。
「example.com を監査して、サイトを修正してください。」
エージェントは監査を実行し、robots.txt と llms.txt を作成して、JSON-LD を <head> に挿入し、作業内容を再確認します。
開発者ではない方へ。必要なのはウェブアドレスだけです。
サイトがSquarespace、Wix、Webflow、WordPress、Shopify、Framer、Ghost、Carrdのいずれかにある場合、編集できるファイルはありません。代わりに、次のように依頼してください。
「私のウェブサイトは remyfilm.co です。AI 検索で見つけてもらえるようにしてください。」
OpenAEO は利用中のプラットフォームを検出し、ご利用の管理画面でクリックする順番に沿った手順(「Settings → Advanced → Code Injection → これを Header に貼り付け」など)と、コピーする正確なテキストを返します。また、プラットフォームでできないことがある場合は、その旨も正直に伝えるため、存在しない設定を探し回る必要はありません。
提供するツール
| ツール | 機能 |
|---|---|
aeo_fix_my_site | 一度で完了し、コードベースは不要です。 サイトを監査してプラットフォームを検出し、そのプラットフォームの管理画面で貼り付ける場所と手順を返します |
aeo_audit | 公開中のドメインを監査し、スコア、評価区分、各チェック項目、優先順位付きの修正を返します |
aeo_fix_files | そのまま貼り付けられる robots.txt、llms.txt、JSON-LD、冒頭の段落を生成します |
aeo_fix_html | ページの HTML を受け取り、<title>、メタディスクリプション、JSON-LD を挿入した状態で返します — 不足しているものだけを追加し、コンテンツを書き換えることはありません |
aeo_check_html | HTML を変更せずにスコアを算出し、編集が機能したことを確認します |
aeo_read_log | サーバーのアクセスログを読み取り、クローラーが実際に取得した内容を報告します。到着したクローラー、ステータス、アクセスしたパス、各リクエストが申告どおりの運営元から実際に送られたかを確認します。解析はお使いのマシン上で行われ、ログが外部に送信されることはありません |
aeo_verify_crawler | 1 つの IP を、運営元が公開している IP 範囲と照合します。検証済み、なりすまし、検証不能のいずれかを判定し、肯定的な証拠なしになりすましと判定することはありません |
ホステッドツール。 これら 5 つのツールは openaeo.dev を呼び出すため、OPENAEO_API_KEY が必要です。ローカルでは実行できません。引用のテストには 6 つのアシスタントのプロバイダーキーが必要であり、クローラーインテリジェンスは、実行されたすべての監査を通じて収集されたコーパスを参照するためです。キーがない場合は、エラーになる代わりに必要なものを説明します。上記の 8 つのツールには影響しません。
2 つのリストの境界は、商業上の事情によるものではなく、それぞれのツールに必要なものの違いです。自分のサイトと公開データだけで利用できるものは、クローラーの検証やログの読み取りも含め、すべてお使いのマシン上で実行されます。他者のドメインが必要なものや、今日の状況を昨日と比較する必要があるものには、継続的に監視しているサーバーが必要です。
| ツール | 機能 |
|---|---|
aeo_crawler_intel | このサイトの CDN が AI クローラーを拒否し始めたか、またその変更がいつ起きたかを確認します |
aeo_citations | アシスタントに購入者の質問をし、自社の名前が挙がったかを記録します |
aeo_history | スコアが時間とともにどのように変化したかを確認します |
aeo_drift | 以前は合格していたのに、現在は合格しなくなった項目を確認します |
aeo_competitors | 自社の代わりに名前が挙がるドメインを確認します |
サーバーログを読む
監査では、このマシンから各クローラーのユーザーエージェントを使ってページを取得します。これは判断材料にはなりますが、証明にはなりません。本物のクローラーは運営者自身のネットワークからアクセスします。アドレスを確認するファイアウォールが、こちらを拒否しながら本物を許可することも、その逆もあります。
それを確定できるのはアクセスログです。
npx openaeo-audit log /var/log/nginx/access.log
Googlebot refused 2 requests, 2 paths
403 x2
2 confirmed from the operator's own network
/docs x1 /pricing x1
GPTBot impostor-only 1 request, 1 path
200 x1
1 request claimed to be GPTBot from outside its published range: 45.83.12.9
この方法で分かることが2つあります。1つ目は、こちらの読み取りが単に間違っていた場合です。ログを確認すれば訂正できます。2つ目は、ログにある「GPTBot」は身元の証明ではなく、自己申告にすぎないということです。誰でもそのユーザーエージェントを送信でき、実際にそうする人も大勢います。サイトがそれを許可しているからです。まさにこの目的のためにOpenAI、Anthropic、Google、Microsoft、Perplexity、Appleが公開しているアドレス範囲と照合し、すべてのリクエストを確認します。
クローラーを偽物と判断するのは、肯定的な証拠がある場合に限られます。運営者が何も公開していない場合や、フィードの読み込みに失敗した場合、答えは「検証不能」であり、「偽物」ではありません。誤って告発することで、必要なトラフィックまでブロックしてしまうからです。
ログはディスクから読み込まれ、プロセス内で解析された後、破棄されます。ネットワークへの呼び出しは、公開アドレス範囲の取得だけです。ログの内容がアップロードされることはありません。これこそ、この機能をログイン必須のサービスではなくパッケージ内に置いている理由です。
要件
- Node.js 18+(組み込みの
fetchを使用) - npm 依存関係ゼロ
これは何か — そして何ではないか
このリポジトリに含まれるもの。 監査エンジンです。5つの取得ゲート、8つの主要チェック、そして8種類の名前付きAIクローラーとしてサイトを取得し、それぞれに返されるHTTPステータスを記録するボット別エッジマトリクスを備えています。さらに、robots.txt、llms.txt、JSON-LDの生成機能、CLI、MCP サーバーも含まれます。永久に無料で、MITライセンス、アカウント不要、テレメトリーなしです。openaeo.devの無料プランを支えるものと同じエンジンです。
含まれないもの。 ホステッドサービスです。時間の経過とともに追跡する、49項目の加重評価基準、6種類のアシスタントサーフェスを対象とする週次の引用テスト、変化のアラート、競合とのシェア・オブ・ボイス比較、監査履歴を利用できます。これはお客様の環境ではなく、私たちのインフラストラクチャ上で動作します。
この分け方は、良い部分を出し惜しみするためではありません。サイトの修正は大半が一度きりの作業であり、そのために必要なものはすべてここにあります。アシスタントがあなたの名前を挙げるかどうかは毎週変わります。その変化は、誰かが見ているかどうかにかかわらず、継続的に追跡する必要があります。利用許可ではなく、サービスを提供するのです。
CLIが役に立ったなら、次のステップはホステッド版です。どちらも事実を伝えます。ホステッド版は、それを長期にわたって伝え続けます。
コントリビュート
IssueやPRを歓迎します。特に、新しいチェック、より優れた検出ヒューリスティック、フレームワークのレンダリングに関するエッジケースの修正を歓迎します。エンジンは依存関係なしに保ってください。
ライセンス
MIT © OpenAEO。自由に利用、フォーク、拡張してください。
商標
「OpenAEO」とOpenAEOのロゴはOpenAEOの商標であり、MITライセンスの対象ではありません。フォークや派生物では、このコードを自由に使用できます。ただし、OpenAEOの名称やロゴを、OpenAEOの推奨や提携を示唆したり、公式のOpenAEO製品またはサービスであると示唆したりする形で使用してはなりません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。