direct は、誰かが URL を渡したときのように
ChatGPT がページを直接開いたときに受け取る割合です。ChatGPT 検索が逃す断片ごとに原因が付き、analysis が原因を
修正方法にまとめます。
ページを採点する
GET /v1/async/task/{id} で読むか、リクエストに webhook.url を入れてタスク完了時に受け取ります。ほとんどの
ページは 1〜3 分かかるため、10〜15 秒ごとにポーリングします。ほかの非同期タスクと同じように
動作し、結果は response に入ります。リクエストのスキーマは API リファレンスにあります。
リクエストのフィールド
ほかのフィールドは
400 VALIDATION_ERROR になります。
採点の仕組み
- アクセス。 OAI-SearchBot、ChatGPT-User、GPTBot ごとに robots.txt を判定します。ChatGPT-User がページを取得する 米国のアドレスから、各エージェントとブラウザとしてページを取得します。
- 人が読む内容。
countryのブラウザがページをレンダリングして最後までスクロールし、大きな画像内の文字を 1 行ずつ読みます。ページ固有の主題に関する行が断片になります。メニュー、フッター、他の商品、顧客レビュー、 ボタン、広告はスコアから外します。 - ChatGPT 検索が保持する内容。 米国のアドレスのブラウザが、ChatGPT 検索を支えるクローラー OAI-SearchBot として ページをレンダリングし、データのリクエストは外に出しません。コピーは、サーバーが送る HTML のテキストと、ページの スクリプトがその HTML から描くテキストで、非表示テキストと画像の alt テキストを含みます。画像内の文字と、ページが 開いた後に読み込む内容は、ChatGPT 検索にないのと同じくこのコピーにもありません。
- ChatGPT がページを開いたときに受け取る内容。 ChatGPT-User が受け取る HTML を ChatGPT のリーダーと同じように
読みます。本文テキスト、非表示テキスト、画像の alt テキストを読み、スクリプトは実行しません。画像は ChatGPT が
開いて読めるときだけ数えます。HTML がその画像を
imgの src として渡し、形式が JPEG、PNG、WebP で、文字が読める 大きさである必要があります。 - ChatGPT がページを開くか。 本番の ChatGPT にページを開くよう 2 回尋ねます。回答は採点せず、ページを開いたか だけを見ます。
- 断片の判定。 検索のコピーにある断片は
read、ない断片は理由とともにmissingです。directは ChatGPT が ページを開いたときに受け取る内容で同じ判定をします。コードがすべての断片を判定するため、変わっていないページは 同じスコアになります。
結果を読む
上の OLIVE YOUNG のページの結果を主なフィールドだけに絞ると次のとおりです。score
ChatGPT 検索が保持する断片の割合で、0 から 100 です。断片はすべて同じ重みです。robots.txt が ChatGPT 検索から
ページを外しているときと、サイトが ChatGPT 検索のクローラーを拒否しているときは 0 です。reading.score には
robots.txt で 0 になる前の割合が残ります。
direct
誰かが URL を渡したときのように、ChatGPT がページを直接開いたときに受け取る内容です。direct.score は
ChatGPT-User が受け取る HTML と ChatGPT が開ける画像にある断片の割合で、direct.read はその数です。ChatGPT が
ページを開けなかったときは 0 です。2 つのスコアは、ページが文字を画像に書いたりスクリプトで描いたりするところで
分かれます。ChatGPT 検索は画像内の文字を保持せず、スクリプトが HTML から描く内容は保持します。ChatGPT のリーダーは
読める画像を開き、スクリプトは実行しません。栄養成分表示が原寸の JPEG である食品の商品ページは、検索で 56、
直接開いて 93 でした。
access
サイトが ChatGPT 検索のクローラーを拒否すると
search.refused が true になり、スコアは 0 です。search.lines は
検索のコピーの行数です。blockedBy は、サイトがどのアドレスからでも ChatGPT-User エージェントを拒否するなら
user_agent、私たちのアドレスからのそのエージェントは受け入れ OpenAI のアドレスは拒否するなら
openai_addresses、ブラウザも拒否するなら site です。robots は OpenAI のエージェントごとに判定を決めた
robots.txt の行を、noindex は noindex の指示とその場所を、probes は各リクエストが受け取ったステータスを示します。
reading.items[]
断片ごとに 1 項目です。
reading.locations は断片を where ごとに数え、ChatGPT がページを開けるようになった後にも残る問題を示します。
causes[] は逃した断片を原因ごとにまとめます。
analysis
summary はスコア、最大の問題、確認された問題を直したときのスコア(potential)を書きます。direct は ChatGPT が
ページを直接開いたときに受け取る内容を、開けないときは妨げている側と修正方法を書きます。issues[] の各項目には、
原因(detail)、修正方法(fix)、その問題で逃した断片(facts)、根拠、その問題が下げた点数が入ります。スコアを
0 にとどめるアクセスの問題が先に来て、残りは下げた点数の大きい順です。basis は confirmed で、私たちが直接読んだ
ページ(HTML、レンダリング、画像、robots.txt、HTTP の応答)で確かめた問題であることを示します。analysis の文章は
英語です。
markdown
人が見るページを Markdown にまとめたものです。画像内の文字は画像があった位置に入ります。スコアが確認するページ固有の
内容は見出しとラベルの下に置かれます。メニューやレビューなど内容の周りの部分は、区間ごとに 1 行に折りたたみます。
ChatGPT 検索が逃す断片はその位置に理由とともに _(missing: …)_ と印を付け、冒頭には ChatGPT がページを開いたときに
受け取る断片の数も書きます。冒頭と印はページの言語で書きます。対応する言語は英語、韓国語、日本語、中国語、
スペイン語、フランス語、ドイツ語、ポルトガル語で、それ以外は英語です。日本語のページでは _(欠落: …)_ です。
以下は英語の OLIVE YOUNG のページの一部です。
screenshot
人が見るページの最初の 4 画面を収めた JPEG です。1366×900 のウィンドウでページを最後までスクロールしたあと、先頭で撮影します。
url 自体がアクセスキーで、expiresAt(タスクから 30 日後)まで開けます。撮影できなかったページには screenshot がなく、
保存できなかった画像は status: "failed" です。
rendering
AI エージェント向けにレンダリングしたページです。コピーは、人のブラウザが描いた HTML からスクリプトを除き、各画像の中の文字をその alt
に加えたものです。WCAG が文字画像に求める代替テキストです。rendering.score はコピーのテキストに含まれる断片の割合で、コピーを受け取った
AI エージェントが画像を開かずに受け取る量です。rendering.read はその断片数、reading.items[].rendering は断片ごとの判定です。
コピー自体は結果に含まれません。上の OLIVE YOUNG のページは、コピーに 55 個の断片がすべて入り 100 点です。
成分と FAQ の画像の文字は alt に、スクリプトが読み込む価格と評価は本文に入ります。
rendering はありません。
スコアを正しく読む
- ChatGPT 検索は、クローラーが作ったページのコピーをもとに動きます。コピーには HTML のテキストとスクリプトがその HTML から描く内容があり、画像内の文字とページが開いた後に読み込む内容はありません。コピーは最後に収集した時点の もので、ページを直した内容はクローラーがページを取得し直した後に ChatGPT 検索に入ります。
- ChatGPT がページを直接開くと、サーバーが送る HTML を読みます。スクリプトは実行せず、画像は alt テキストと、その
HTML が渡す
imgの src からだけ開きます。OpenAI は開いたページを約 30 分間再利用します。 - スコアが動くのは、ページかページの描かれ方が変わったときだけです。15 ページをそれぞれ 3 回採点すると、 10 ページは差が 3 点以下でした。訪問のたびに違う部分を描くページはもっと動きます。
- GEO Score は 1 ページを ChatGPT がどれだけ持つかを見ます。質問ごとに ChatGPT 検索がどのページを選ぶかは GEO モニター が追跡します。
エラーと課金
完了したタスクは、ページ 10 クレジットと、文字を読んだ画像 1 枚ごとに 5 クレジットです(最大 12 枚、結果のimages.read)。
ホストが拒否した画像や読めなかった画像(images.unread)は無料です。アカウントが 90 日以内に同じ画像を読んでいれば、その結果を再利用し(images.reused)、1 枚 2 クレジットです。送信時に 1 ページの上限である 70 クレジットを確保し、
完了時に使った分だけ請求します。失敗したタスクは請求しません。クレジットと制限を参照してください。
送信時の拒否
認証、同時実行数、レート制限のエラーはほかのタスクと同じです。エラーを参照してください。
失敗したタスク
失敗したタスクはstatus: "FAILED" で、error 文字列がコードで始まります。
次のステップ
Citation Analysis
1 つの回答を形作った情報源を確かめます。
GEO モニター
AI エンジンでのブランドを決まったスケジュールで追跡します。