メインコンテンツへスキップ
完了したAI回答を、その背後にあるページと比較します。結果には、エンジンが実行した検索、取得したページと引用したページ、 回答が挙げるブランドとそれを挙げているページ、自社ブランドの位置、優先順位付きのアクションが含まれます。さらに、 引用された各ページの段落を対応する回答の部分に結び付けてリンクごとに説明を付け、引用ページに共通する点をまとめます。 これは既存の回答に対する事後的な対応分析です。ソースがモデルに文を生成させた証拠でも、ページの品質スコアでも ありません。判定ではなく、確認するための根拠として扱ってください。
GET /v1/async/task/:id をポーリングするか、送信時に webhook.url を指定してください。タスクは taskType: "CITATION_ANALYSIS" として報告されます。この分析は POST /v1/async/task ではなく専用エンドポイントで 送信してください。GEO Audit 時代を含む旧エンドポイント POST /v1/geo-audit、POST /v1/source-influence と POST /v1/research、タスク種別 GEO_AUDIT、SOURCE_INFLUENCE と CITATION_ATTRIBUTION、include.geoAudit、include.sourceInfluence も引き続き使えます。レスポンスは常に新しい名前を使います。

実行済みのタスクを分析する

回答がこのAPIから得たものなら、結果から回答と引用をコピーする代わりにタスクidを送ってください。
タスクは自分のもので、COMPLETED であり、GET /v1/async/task/:id でまだ読める必要があります。回答の Markdown(エンジンがMarkdownを返さなかった場合はテキスト)が answer になり、引用URLがエンジンの順序で citations になります。最初の100件までで、ディスカッションスレッドは最大10件です。商品・動画カードの プレースホルダー(googleusercontent.com のリンク)と Google 検索のリンクは、読むページがないためスキップします。 送らなければタスクの prompt、country、エンジンを使います。taskId を answer や citations と一緒に送ると 400 で拒否され、未完了のタスクや回答テキスト・引用URLのないタスクも同様です。不明または期限切れのタスクidは 404 を返します。

収集と同時にすべての回答を分析する

収集リクエストに include.citationAnalysis: true を加えると、回答が収集された直後に分析が実行されます。 回答エンジン(CHATGPT, GEMINI, PERPLEXITY, GOOGLE_AIO, GOOGLE_AIMODE, NAVER_AI_BRIEF, NAVER_AI_TAB, BING_SEARCH, BING_COPILOT)で、単一タスク、タスクバッチ、グリッド、POST /v1/batches のいずれでも使えます。
分析は上の taskId と同じ方法で回答と引用 URL を読み取ります。回答の結果には response.citationAnalysis が入ります。GET /v1/async/task/:id が返す分析タスクそのもので、task、credits、そして response または error を含みます。
  • Webhook: 分析の完了後、回答と分析をまとめて一度だけ送ります。
  • ポーリング: 回答タスクは回答の準備ができた時点で COMPLETED になります。response.citationAnalysis.task.status が COMPLETED か FAILED になるまでポーリングを続けてください。
  • バッチは、すべての回答とその分析が終わった時点で完了します。
  • 分析がない場合: 回答に読み取れる引用 URL がない場合や、クレジットまたはキーの1日の上限で分析の hold を確保できない場合、response.citationAnalysis は { "error": "…" } となり、回答はすぐに届きます。
  • 課金: 分析は他のCitation Analysisタスクと同じく使用量に応じて別に課金されます。回答の課金額は変わりません。特定のタスクタイプだけを許可したキーでは CITATION_ANALYSIS も許可する必要があります。

Payload

taskId または include.citationAnalysis を使うと、これらのフィールドは回答の生データから埋められます。CHATGPT では、エンジンの検索が queries になり、取得されたすべてのページが cited、position、citedText、 publishedAt、query 付きの引用になります。トラッキングパラメータだけが異なる同じURLは統合されます。Google AI Overview では、オーバービューのソースが引用、それ以外のオーガニック結果が非引用となり、position にはオーガニック 順位が入ります。その他のエンジンは引用ソースのみを提供します。
リクエストに analysis を送ると 400 で拒否されます。インサイトはすべての結果に含まれます。

結果

v4 より前に保存された結果は、version フィールドのない以前の形のままです。

version

この形では常に 4 です。

answer

送信した回答をそのまま返します。answerRanges はまさにこの文字列のオフセットです。JavaScript のUTF-16コード 単位で、start は含み、end は含みません。テキストを分割し直さず、answer.slice(start, end) のようにそのまま 切り出してください。links[] の範囲は回答の意味的なまとまり(文、リスト項目、表のセル)を丸ごと指し、 brands[] の範囲は書かれたとおりの名前を指します。境界は元のテキスト基準です。

queries[]

この回答のためにエンジンが実行した検索です。それぞれ id、text、そしてその検索が見つけたソースを示す sourceIds を持ちます。エンジンが検索を公開せず、送信もしなかった場合は空です。

sources[]: ページごとに1エントリ

  • id: 不透明な識別子。結果内で一意です。
  • url: ページのURL。domain: そのホスト。
  • channel: ページを管理する主体。ホストから判定します:
    • own: 自社ブランドのサイト(own が true のときに限る)。
    • brand: 結果が挙げる他ブランドの自社サイト。
    • editorial: 発行元。ページを変更できるのは発行元だけです。認識できないホストは editorial として 報告されます。
    • retailer: オンラインストアまたはマーケットプレイス。
    • review_platform: 顧客レビューまたは企業レビューのサイト。
    • community: フォーラムまたはQ&Aサイト。
    • video: 動画プラットフォーム。
    • social: ソーシャルネットワーク。
    • blog_platform: ホスティング型のブログサービス。
    • reference: 百科事典またはwiki。アクションの対象にはなりません。
  • cited: 回答がページを引用していれば true、エンジンが取得しただけなら false。
  • position: そのページのエンジン自身の順位。順位がなければ null。
  • queryIds[]: そのページを見つけた検索。
  • publishedAt: エンジンが報告した公開日、または null。
  • citedText[]: エンジン自身が引用したと報告した箇所。なければ []。
  • brandIds[]: 読み取れたページ本文、タイトル、citedText に登場するブランド。
  • own: ページが自社ブランドのサイト上にあれば true。
  • paragraphs[]: 結果に含まれた引用ページの段落。それぞれ id(結果全体で一意)と段落の text を持ちます。 リンクなしで含まれる段落もあります。非引用ページでは常に空です。
  • error: ページを読めなかった場合のみ存在します。このとき paragraphs は空で、文字列はそのソースに関する 短い理由です。

brands[]

結果が追跡するすべてのブランド: 自社の brand(role: "target")、competitors("competitor")、そして回答が 挙げるその他のブランド("answer")。
  • rank: 回答でそのブランド名が初めて現れる順、1から。回答がそのブランドを挙げていなければ null。
  • answerRanges[]: 回答がそのブランドまたはその製品名を挙げている正確な箇所。同じUTF-16オフセットで、answer.slice(start, end) は書かれたとおりの名前を返します。大文字小文字を区別せず単語単位で照合し(空白で区切らない文字体系を除く)、見出しや表のセルも対象ですが、リンクURLや画像マークアップの中は対象外です。links[] の範囲と違い、回答のまとまり全体ではありません。
  • citedSourceIds[]: ページがそのブランドを挙げている引用ソース。
  • retrievedSourceIds[]: ページがそのブランドを挙げている非引用ソース。
  • ownSourceIds[]: そのブランド自身のサイト上のソース。target のみ埋められます。
  • paragraphId: このリンクが対象とする段落。常に sources[] に存在する段落を指します。
  • answerRanges[]: この段落に対応する回答の部分で、上と同じUTF-16オフセットの start/end ペアです。1つの リンクが複数の範囲を持つことがあり、同じ回答テキストが範囲間で重複することはありません。各範囲は回答の まとまり(文、リスト項目、表のセル)を丸ごと指します。
  • explanation: 対応を説明する短い文。段落が回答のその部分について何を述べているかを記します。

visibility

この回答における自社ブランドの位置です。brand を送らなかった場合は null。
  • brandId: brands[] 内の自社ブランド。
  • stage: 次のいずれか:
    • mentioned: 回答が自社ブランドを挙げている。
    • on_cited_page: 回答は挙げていないが、引用ページが挙げている。
    • on_retrieved_page: エンジンが引用せずに取得したページだけが挙げている。
    • not_found: 読み取ったどのページも挙げていない。
  • rank: brands[] における自社ブランドの rank。
  • answerBrands: 回答が挙げるブランドの数。

actions[]

自社ブランドのための優先順位付きの次のステップです。brand を送らなかった場合は []。priority は1(最優先) から始まり、欠番はありません。アクションは control の順に並びます。まず自社が管理するもの(owned)、次に 自社が投稿できるプラットフォーム(platform)、最後にアウトリーチ(outreach)です。summary は1文、steps[] は 1〜5個の具体的なステップで、どちらも回答の言語で書かれます。sourceIds、brandIds、queryIds、linkIds は この結果内の根拠を指します。 brandIds は自社ブランド、またはそれらのページが挙げる競合ブランドを示します。アクションが、偽のレビューや 関係を明かさないレビュー、独立したレビュアーを装うこと、リンクの購入、自社が所有しないページの編集を提案する ことはありません。自社ブランドを挙げていても引用されなかった第三者ページは、アクションではなく brands[].retrievedSourceIds に示されます。

insights[]

ページ全体から読み取れる内容の短い要約を最大4件示します。どのチャネルが引用されたか、引用ページに共通する形式・ 鮮度・基準、回答のブランドの順序が引用ページの扱う内容とどう対応するか、そして自社ブランドの位置です。 sourceIds は各要約の元になったページ、linkIds はリンクを示します。少なくとも一方は空でなく、この結果内の エントリしか指しません。インサイトは対応を説明するもので、助言ではありません。

結果を正しく読む

  • リンクがないことは判定ではありません。 リンクのない段落は回答の範囲と一致しなかっただけで、範囲のない 回答部分はリンクされた段落がなかっただけです。どちらもページが無関係、未使用、信頼できないという意味では ありません。
  • 読めなかったページは不確かなままです。 sources[].error があれば、その引用は分析から除外されています。 リンクがないことを否定的な結果と見なさないでください。重要なら再試行するか body を渡してください。
  • 対応であって因果ではありません。 結果は、既存の回答と既存のページテキストが事後的にどう対応するか、そして それらのページがどのブランドを挙げているかを説明します。生成への影響を測ったり、ページを採点したり、回答の 生成過程を報告したりはしません。
  • not_found は読み取ったどのページにもないという意味です。 自社ブランドがウェブ上に存在しないという意味では ありません。
  • 取得データはエンジンに依存します。 非引用ページは、エンジンが公開している場合(ChatGPT、Google AI Overview) か、cited: false のページを送った場合にのみ現れます。それ以外ではすべてのソースが引用となり、自社ページは 引用としてのみ現れます。
  • チャネルはホストから判定します。 channel はページのホストから推定したもので、誰が書いたかを読み取って 判定したものではありません。
  • アクションは提案であって保証ではありません。 この結果に挙げたページをもとに優先順位を付けたもので、実行しても 回答が変わるとは限りません。
  • idは内部用です。 s…/q…/b…/l…/a… の識別子を実行をまたいだ安定キーとして保存しないでください。 1つの結果の中でのみ有効です。

実行と制限

  • サイズは失敗の理由になりません。 リクエスト契約が受け付けるもの、つまり最大200,000文字の answer と最大 100件の引用はすべて分析します。長い回答、多数のソース、非常に長いページは、拒否せずに処理を分割して扱います。
  • 深さはページではなく回答に比例します。 長いページだからといって、回答が裏付けられる以上のリンクは 生まれません。分析は回答に対応する可能性が最も高い箇所に集中し、対応があるすべてのソースが結果に表れます。 大きなページや、同じ記述をナビゲーション、一覧、レビューで繰り返すページでは、すべての出現ではなく最も強い 箇所を想定してください。
  • マークアップは根拠になりません。 サイトマップ、リンク索引、画像ギャラリーはリンクを生みません。それら だけでできたページは、対応を作り出さずに段落なしで報告されます。
  • 読めなかったソースは、他に読めるソースがあればタスクを失敗させずに sources[].error で報告します。どの ソースも読めなかった場合、分析の失敗、タイムアウト、サービス設定エラーではタスクが失敗します。
  • リクエストはAPIの他の部分と同様に使用量で計測します。送信レスポンスは一時的なクレジットの確保を示し、 最終的な課金はタスクが終了状態に達したときに確定します。