9月20日、buchodi.comが「ChatGPT now knows what you do on other websites via ad collector」と題した記事を公開した。独立した技術検証によって明らかにされたのは、ChatGPTのアカウントIDと外部サイトでの購買・閲覧行動を紐づけるトラッキング基盤の存在だ。観測されたデータには医療疾患名、債務整理のファネルページ、訴訟受付フォームのURLが含まれており、936の広告主・1,029のホスト名にわたる規模で稼働していることが確認された。
OpenAIは2025年初頭に広告事業への参入を発表し、企業がChatGPT内にスポンサードコンテンツを掲載できる仕組みを整備してきた。筆者が指摘するのはその裏側で動くトラッキングの仕組みだ。MetaのFacebook Pixelと構造的に同等でありながら、一点だけ前例がない——「人々がソーシャルネットワークには書かないようなことを打ち明けるAIチャット製品」と外部サイトの行動が紐づく、という点である。
仕組みの全体像:3ステップで完結する
核心にあるのは__obiというクッキーと、bzr.openai.com(OpenAI内部で「Bazaar」と呼ばれる広告プラットフォームのドメイン)だ。
Step 1:ChatGPTがアカウントに紐づく識別子を発行する。 ユーザーがchatgpt.comを開くと、クライアントが16バイトのランダム値を生成しバックエンドに署名を要求する。返ってくるのはRS256形式のJWT(JSON Web Token)で、subフィールドにChatGPTのアカウントID、obiフィールドにトラッキング識別子が含まれる。有効期限は60秒。
Step 2:識別子がOpenAIドメイン全体のクッキーとして保存される。 このJWTをbzr.openai.comに渡すと、以下の属性で__obiクッキーがセットされる。
Set-Cookie: __obi=…; Domain=.openai.com; SameSite=none; Secure; Max-Age=31536000
SameSite=none; Secureという組み合わせはクロスサイトリクエストでもクッキーを送信させるための設定だ(SameSite属性の詳細はMDNを参照)。有効期間は1年間。
Step 3:広告主サイトがそれをOpenAIへ送り返す。 ChatGPTに広告を出稿する企業は自社サイトにOpenAIの計測ピクセルを設置する。そのスクリプト(bzrcdn.openai.com/sdk/oaiq.min.js)をブラウザが読み込む際、<script src>リクエストに__obiクッキーが自動的に付与される。SDKのコードが実行されるより前の段階で、識別子はすでにOpenAIのサーバーに届いている。
SDKが収集するデータの範囲
SDKはページ上の識別情報を4経路で収集する。広告主が意図的に渡す値と、SDKがフォームフィールド・ページテキスト・タグマネージャーのデータレイヤーから自動収集する値だ。観測された685件のID関連イベントのうち、スクレイピング由来が主力で、広告主が意図的に渡したのは255件にとどまった。
SDKはGoogle Tag Managerが使用するwindow.dataLayerのpushメソッドを置き換え、Adobe Analytics用のadobeDataLayerも読み取る。メール・電話番号・氏名・住所はSHA-256でハッシュ化して送信されるが、国・地域・市区町村・郵便番号は平文で送られる。パス(URLのパス部分)も収集対象で、観測されたパスには医療疾患名、債務整理のファネルページ、訴訟受付フォームが含まれていた。
ログアウト中でも追跡は続く
筆者が自身のスマートフォンでトラフィックを解析した結果、1つの__obi値がChewy・Wayfair・ThriftBooks・Eventbrite・HelloFresh・Coursera・SeatGeekを含む12の商業サイト・13の異なるピクセルIDからOpenAIに送信されていた。
デコードされた932件のsyncトークンのうち196件はsubject_type: anonymous、つまりログアウト状態のユーザーのものだった。匿名識別子もアカウント識別子と同様に安定しており、1デバイスに1つ、少なくとも27日間持続する。
クッキーポリシーとの齟齬
OpenAIのクッキーポリシーでは__obiは「アナリティクスクッキー」として分類されている。OpenAIはアナリティクス(oai_consent_analytics)とマーケティング(oai_consent_marketing)を別の同意項目として管理しており、筆者がデコードしたすべてのsyncトークンにはconsent_decision: analytics_allowedが含まれていた。つまりマーケティングの同意を拒否してアナリティクスのみ許可したユーザーも、このクロスサイトトラッキングの対象になっている可能性がある。この分類が適切かどうかは、GDPRやCCPAの解釈上も論点になりうる。
筆者は9月14日にOpenAIのプレスおよびプライバシー窓口に質問を送ったが、「内部でレビューのために共有する」という確認のみで、実質的な回答は得られていない。
「adtechとして標準的」だが「AIチャットでは前例がない」
ログイン済みアカウント・ピクセル発火時のサードパーティクッキー・オフサイトのコンバージョンをプロファイルに紐づける仕組みは、MetaのFacebook Pixelと構造的に同等だ。Facebook Pixelも過去にFTCやEUの規制当局から調査を受けてきた経緯がある。
なお、この仕組みはSafariおよびiOS上のすべてのブラウザでは機能しない。WebKitのIntelligent Tracking Prevention(ITP)がサードパーティクッキーをブロックするためだ。また広告主もこの紐づけを把握できない。__obiは広告主のスクリプトがアクセスできないドメインに属しており、彼らはコンバージョンピクセルを設置しただけで、訪問者のChatGPT IDへの紐づけが行われていることを知るすべがない。
詳細はChatGPT now knows what you do on other websites via ad collectorを参照していただきたい。