更新情報新機能

ChatGPTがページをどこまで読むかスコアで確認できます

API
POST /v1/geo-score のチップが付いた GEO Score と、OLIVE YOUNG の日焼け止めページの結果:GEO Score 29、ChatGPT が直接開いたとき29、AI Rendering 適用時100、減点が大きい問題2つ

ページの URL を GEO Score に送ると、ChatGPT 検索がそのページの内容をどれだけ持っているか、ChatGPT が直接開いたときに何を受け取るか、取りこぼした内容ごとの理由と直し方を受け取れます。

得られる結果

  • POST /v1/geo-score:1つのタスクが1ページのスコアを出します。ページの url と、読む人の country(US または KR)を送ります。
  • score:人がページで読む内容(画像内の文字を含む)のうち、ChatGPT 検索が持っている割合で、0〜100です。direct は ChatGPT がページを直接開いたときに受け取る内容で同じ割合を出します。
  • reading.items:ページのピースごとに、ある場所と ChatGPT 検索が取りこぼした理由(blocked、javascript_only、structured_data_only、image_only)が入ります。
  • analysis:減点の大きい順に問題を並べ、問題ごとに原因と直し方を付けます。potential は確認された問題を直した後のスコアです。
  • markdown と screenshot:人が見るページで、取りこぼしたピースにはその場所に印が付きます。rendering は AI エージェント向けにレンダリングしたコピーが持つ割合です。
  • ダッシュボードでは Playground の GEO Score タブで、人が見る画面とボットが受け取る内容を並べて見られます。

仕組み

GEO Score は OAI-SearchBot、ChatGPT-User、GPTBot に対する robots.txt を読み、それぞれのエージェントとブラウザでページを取得します。country のブラウザがページを描画して最後までスクロールし、大きな画像内の文字を読みます。ページの主題に関する行がピースになり、メニュー、フッター、ほかの商品、レビュー、ボタン、広告はスコアに含めません。

ChatGPT 検索のコピーは、米国のアドレスから OAI-SearchBot として描画したページです。HTML の文字と、スクリプトがその HTML から描く文字が入り、画像内の文字とページが開いた後に読み込む内容は入りません。direct は ChatGPT-User が受け取る HTML を ChatGPT のリーダーと同じように読み、運用中の ChatGPT にページを開くよう2回頼んで開けるかを確かめます。

ピースごとにコードが判定するため、変わっていないページは同じスコアになります。15ページを3回ずつ測った結果、10ページは3点以内の変動でした。

活用例

  • 公開前に商品ページやランディングページのスコアを出し、スクリプトで読み込む価格や画像だけに書いた仕様など、ChatGPT が見られない内容を直します。
  • 自社分野の質問で ChatGPT が引用する競合ページと、自社ページのスコアを並べて比べます。
  • analysis の直し方を Web チームに渡し、反映後に同じページのスコアをもう一度出します。
  • サイトが ChatGPT を拒んでいないか確かめます。access.verdict と blockedBy が、ページを開けない原因を示します。

リクエストを送る

API キーを Authorization ヘッダーに入れてリクエストを送ります。

curl -X POST https://api.querying.ai/v1/geo-score \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://global.oliveyoung.com/product/detail?prdtNo=GA240322874",
    "country": "US"
  }'

リクエストのフィールド

urlstring必須
スコアを出すページ。公開ホストと既定ポートの http または https の URL で、最大2,048文字です。
countrystring
読む人がいる国。US(既定値)または KR で、その国のアドレスから、その国の言語とタイムゾーンでページを開きます。
webhook.urlstring
サーバーの HTTPS アドレス。タスクが完了した瞬間に結果をここへ送ります。
idempotencyKeystring
リクエストに付ける独自の ID。1つのキーはアカウント内で1つのタスクを作るため、再送してもタスクは1つのままです。

レスポンス

完了したタスクはこの形で届きます。長さを抑えて抜粋しています。

JSON
{
  "success": true,
  "task": {
    "id": "bcb7e1a2-26eb-422f-9f60-31a5e39ee400",
    "taskType": "GEO_SCORE",
    "status": "COMPLETED",
    "createdAt": "2026-10-23T00:02:42.974Z"
  },
  "credits": { "creditsToCharge": 60, "creditsCharged": 60 },
  "response": {
    "url": "https://global.oliveyoung.com/product/detail?prdtNo=GA240322874",
    "pageType": "product",
    "score": 29,
    "direct": { "score": 29, "read": 16 },
    "rendering": { "score": 100, "read": 55 },
    "access": {
      "verdict": "open",
      "chatgpt": { "opened": true, "lines": 819 }
    },
    "reading": {
      "facts": 55,
      "read": 16,
      "locations": { "html": 16, "rendered_only": 13, "image": 26 },
      "items": [
        {
          "label": "COSRX Vitamin E Vitalizing Sunscreen SPF 50+",
          "where": "html",
          "status": "read"
        },
        {
          "label": "US$16.80",
          "where": "rendered_only",
          "status": "missing",
          "reason": "javascript_only"
        },
        {
          "label": "Key Ingredients",
          "where": "image",
          "status": "missing",
          "reason": "image_only"
        },
        "…"
      ]
    },
    "analysis": {
      "summary": "ChatGPT search keeps 16 of 55 facts of the page. The biggest issue: 26 facts are written only inside an image, among them Strong and effective sun protection; Key Ingredients; Tocopherol (Vitamin E) (47 points). Fixing the confirmed issues could raise the score to about 100.",
      "potential": 100,
      "issues": [
        {
          "code": "image_only",
          "points": 47,
          "title": "26 facts are written only inside an image",
          "fix": "Write this content as text in the page's HTML, next to the image or in place of it …"
        },
        {
          "code": "javascript_only",
          "points": 24,
          "title": "13 facts are loaded only after the page opens",
          "…": "…"
        }
      ]
    },
    "images": { "read": 10, "reused": 0, "unread": 0 },
    "markdown": "…",
    "screenshot": { "status": "ok", "url": "…", "expiresAt": "…" }
  }
}
task.statusstring
QUEUED、PROCESSING を経て、回答付きの COMPLETED か error 付きの FAILED で終わります。
credits.creditsChargedinteger
完了したタスクに請求されたクレジット。失敗したタスクは0です。
response.scorenumber
人がページで読む内容(画像内の文字を含む)のうち、ChatGPT 検索が持つページのコピーに入っている割合。0〜100で、robots.txt やサイトが ChatGPT 検索のクローラーを拒むと0です。
response.directobject
誰かが URL を渡したときのように、ChatGPT がページを直接開いたときに受け取る内容。score と受け取ったピース数 read が入り、ChatGPT がページを開けなかった場合はスコアが0です。
response.renderingobject
AI エージェント向けにレンダリングしたページのコピーが、テキストとして持つピースの割合。コピーはブラウザが描いた HTML からスクリプトを除き、画像内の文字を alt テキストに入れたものです。
response.reading.itemsarray
ページのピースごとに1項目。label、ある場所 where(html、rendered_only、image など)、status(read または missing)、ChatGPT 検索が取りこぼした理由 reason(blocked、javascript_only、structured_data_only、image_only)が入ります。
response.analysisobject
summary、potential(確認された問題を直した後のスコア)、減点の大きい順に並ぶ issues が入ります。問題ごとに原因(detail)、直し方(fix)、影響するピースが付きます。文章は英語です。

結果を受け取る

リクエストすると status が QUEUED のタスクがすぐに返ります。status が COMPLETED か FAILED になるまで GET /v1/async/task/{id} で取得するか、webhook.url を指定して同じ task、credits、response をサーバーで受け取ります。結果はタスクの完了から24時間取得できます。

curl https://api.querying.ai/v1/async/task/$TASK_ID \
  -H "Authorization: Bearer $QUERYING_API_KEY"

エラー

VALIDATION_ERRORHTTP 422
url がない、http または https ではない、あるいはプライベートなホストやポートを指しています。details に該当するフィールドが入ります。
USE_DEDICATED_ENDPOINTHTTP 400
GEO_SCORE を /v1/async/task に送りました。/v1/geo-score に送ってください。
REGION_UNSUPPORTEDHTTP 422
country が US でも KR でもありません。
MISSING_API_KEYHTTP 401
Authorization ヘッダーが欠けているか、キーが誤っている、期限切れ、または無効化済みです。
INSUFFICIENT_CREDITSHTTP 402
残高がページ1件の最大料金である70クレジットを下回っています。クレジットを追加するかプランを上げてから、もう一度送ってください。

料金

完了したスコア1件につき、ページに10クレジット、文字を読んだ画像1枚ごとに5クレジットを使い、画像は最大12枚です。アカウントが過去90日以内に読んだ画像は2クレジットで、読めなかった画像は無料です。送信時にページ1件の最大料金である70クレジットを確保し、完了時に使った分だけを請求します。

失敗したタスクは請求されません。どのブラウザもページを表示できない場合、タスクは理由とともに PAGE_UNAVAILABLE で終わります。

ほかの更新

最新情報を受け取る

製品の更新をメールでお届けします。

RSS フィード