ChatGPT も広告を表示しています。以下がその全体的な帰属循環のプロセスです。

2026/04/29 8:54

ChatGPT も広告を表示しています。以下がその全体的な帰属循環のプロセスです。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

OpenAI は、ChatGPT に独自の広告システムを直接統合し、SSE ストリームに

single_advertiser_ad_unit
オブジェクトを注入し、クリエイティブ資産を独自ドメインである
bzrcdn.openai.com
上にホストしています。ブラウザには OAIQ v0.1.3 という追跡用 SDK が実行されており、製品の閲覧情報を OpenAI のサーバーへ報告しています。このシステムは Fernet 暗号化されたトークン(例:
ads_spam_integrity_payload
,
oppref
,
olref
,
ad_data_token
)を使用しており、これらは公衆向けのヘッダーバイトを 9 文字含み、トークンの発行時刻の復元を可能にしています(例:2026 年 4 月 26 日)。クリックされたリンクは外部ではなく ChatGPT の内部ウェブビュー内(
open_externally: false
)で開かれるため、OpenAI はクリック後のナビゲーションを観察できます。アトリビューションチェーンには、720 時間の有効期限を持つファーストパーティcookieに格納されるフォワードトークン(
__oppref
)と、impression ログを記録する
olref
が使用されます。コンテキストターゲティングは、北京旅行、フライト、NBA など 6 つの異なる会話トピックで確認されています。広告出稿元には Grubhub や GetYourGuide があります。追跡を軽減するには、ドメイン
bzrcdn.openai.com
bzr.openai.com
をフィルタリングし、cookie(例:
__oppref
,
__oaiq_domain_probe
)を確認する必要があります。

本文

2026 年 4 月 28 日

OpenAI の広告プラットフォームは、大きく分けて 2 つの構成要素からなっています。ChatGPT 側の仕組みでは、会話中のモデル応答時にバックエンドが構造化された

single_advertiser_ad_unit
オブジェクトを SSE(Server-Sent Events)ストリームに注入します。一方で商取引側では、訪問者のブラウザ内で OAIQ という追跡用 SDK が実行され、製品閲覧情報を OpenAI へ報告します。この両者は、各広告につき 4 つの Fernet エンコードされたクリックトークンを介して統合されています。以下の情報は、同意を得たモバイルトラフィックのリサーチフリートで観測したすべてのものであり、すべてが実際のトラフィックからの発見に基づいています。

チャット GPT(ChatGPT)にメッセージを送信すると、バックエンドは

chatgpt.com/backend-api/f/conversation
で SSE 応答を開始します。そのストリームの大部分のイベントはモデルからの出力ですが、一部が広告ユニットです。それらの形式は以下の通りです:

event: delta
data: {
  "type":           "single_advertiser_ad_unit",
  "ads_request_id": "069e89b3-c038-7764-8000-6e5a193e5f69",
  "ads_spam_integrity_payload": "gAAAAABp6Js_<...省略された部分...>",
  "preamble":       "",
  "advertiser_brand": {
    "name":        "Grubhub",
    "url":         "www.grubhub.com",
    "favicon_url": "https://bzrcdn.openai.com/cabfae7ead26b03d.png",
    "id":          "adacct_6984ed0ba55481a29894bb192f7773b4"
  },
  "carousel_cards": [{
    "title":     "中国料理を配達してもらう",
    "body":      "Grubhub で配達を受け、ご満足ください",
    "image_url": "https://bzrcdn.openai.com/cabfae7ead26b03d.png",
    "target": {
      "type":  "url",
      "value": "https://www.grubhub.com/?utm_source=chatgptpilot&utm_medium=paid&utm_campaign=diner_gh_search_chatgpt_kw_traffic_nb_x_nat_x&utm_content=nbchinese&oppref=gAAAA<...>&olref=gAAAA<...>",
      "open_externally": false
    },
    "ad_data_token": "eyJwYXlsb2<...>"
  }]
}

注釈:

  • single_advertiser_ad_unit
    は型付スキーマであり、名称から多Advertiser など兄弟構造も想定されます。
  • advertiser_brand.id
    adacct_<32_hex>
    の形式で、各事業者向けに一意かつ安定したアカウント識別子です。
  • ブランドのファビコン画像と広告画像の両方が
    bzrcdn.openai.com
    から読み込まれます。OpenAI は事業者自体がホストするのではなく、広告クリエイティブを自らのインフラ上でホストしています。
  • target.open_externally: false
    は、リンクをクリックしても ChatGPT のアプリ内 WebView で開かれるため、クイックナビゲーション後も OpenAI 側でクリック後の遷移を直接観測可能になっています。またピクセルシグナルも追加で取得できます。
  • 各広告には Fernet エンコードされたトークンが 4 つ付属します:
    ads_spam_integrity_payload
    ,
    oppref
    ,
    olref
    、および base64 でラップされた
    ad_data_token
    です。これらすべてはサーバー固有のキーを用いて AES-128-CBC で暗号化され、HMAC-SHA256 による完全性検証が施されています。

広告の選択プロセスについて パネル内の単一アカウントに対し、6 つの異なるトピックでの会話がそれぞれ 6 回行われ、そこに 6 種類以上の異なる広告が配信されました。ターゲティングは完全に会話文脈に基づいています:

会話のトピック配信された事業者
北京旅行計画(万里の長城・紫禁城など)Grubhub — 「中国料理を配達してもらう」
北京観光ツアーの手配GetYourGuide — 万里の長城ツアー(ad_id=beijing003)
北京へのフライト予約Axel — utm_term=vflight_beijing_03
NBA プレーオフGametime — utm_campaign=nba&utm_content=playoffs
スpring ファッション・トレンドAritzia — utm_campaign=chatgptpilot_trav3
生産性向上・スライド作成Canva — utm_campaign=…link-clicks_products

同じアカウントで異なるトピック、そして異なるブランド。ただし、ターゲティングに過去の会話履歴が組み込まれているかどうかについては、明確な証拠は見つかりませんでした。

4 つのトークンによるアトリビューションチェーン
各広告は 4 つの異なる Fernet エンコードされたデータ塊とともに送信されます。それぞれは以下のように機能します(位置付けから判断):

  • ads_spam_integrity_payload
    : SSE データ内部に送られ、クリック URL には含まれません。サーバー側で偽造クリックからの完全性を検証するためのものでした。
  • oppref
    : クリック URL に含まれ、OAIQ ピクセルによって完全に同じ値を保持したままクッキー
    __oppref
    (TTL:720 時間/30 日)に記録されます。これは「前方アトリビューショントークン」であり、その後の事業者側のピクセルイベントを通じてすべて移動します。
  • olref
    :
    oppref
    と共にクリック URL に含まれますが、観測された SDK では保存されていません。OpenAI サーバー側でのインプレッションサイド/アウトバウンドリンク参照ログの役割を持つと考えられます。
  • ad_data_token
    : Base64 でラップされた JSON で、さらに Fernet エンコードされたトークンを内包しています。SSE ペイロードに持たされ、おそらくクリック時にサーバー上で照合されます。

Fernet の最初の 9 バイトは公開情報であり、バージョンバイト

0x80
に続く 8 バイトのビッグエンディアン形式的な Unix タイムスタンプが含まれます。したがって、これらのトークンの発券時刻を OpenAI のキーなしに復元することが可能です:

import base64, struct, datetime

b = base64.urlsafe_b64decode("gAAAAABp7fdA" + "==")
print(datetime.datetime.utcfromtimestamp(struct.unpack(">Q", b[1:9])[0]))
# → 2026-04-26 11:30:08 UTC

Home Depot のクリック URL をキャプチャした例では、トークンの発券時刻は 11:30:08、ブラウザが事業者ページを取得したのは 11:31:43 で、クリックレイテンシは 95 秒に相当しました。

商取引側でのループ閉鎖の仕組み
ユーザーがカードをタップすると、ブラウザは以下のような URL を開きます:

https://www.grubhub.com/?utm_source=chatgptpilot&...
&oppref=gAAAA<...>
&olref=gAAAA<...>

事業者ページは OAIQ SDK を読み込みます:

<script src="https://bzrcdn.openai.com/sdk/oaiq.min.js"></script>
<script>
  oaiq('init',    { pid: '<事業者のピクセル ID>' });
  oaiq('measure', 'contents_viewed', { ... });
</script>

oaiq.min.js
のバージョンは 0.1.3 です。初期化時に
window.location
から
?oppref=
を読み取り、ファーストパーティクッキー
__oppref
(TTL:720 時間)に書き込み、探査用クッキー
__oaiq_domain_probe
を設定します。その後続する
measure
呼び出しごとに JSON を以下へ POST 送信します:
POST https://bzr.openai.com/v1/sdk/events?pid=<事業者>&st=oaiq-web&sv=0.1.3

確認すべきドメインとクッキー:

  • ChatGPT の広告イベントをブロックしたい場合、フィルタリストに加えるべきドメイン:
    bzrcdn.openai.com
    ,
    bzr.openai.com
  • ChatGPT による推奨クリックの後に確認すべき 2 つのクッキー名:
    __oppref
    ,
    __oaiq_domain_probe

同じ日のほかのニュース

一覧に戻る →

2026/04/29 4:44

Ghostty は GitHub から撤退します。

## Japanese Translation: GitHub ユーザー 1299 が 18 年にわたり作成・維持してきたターミナルエミュレータ Ghostty が、プラットフォーム上の重要なインフラ障害の発生により、創始者が現在それを重大な業務に不適切と見なし始めたことを受け、公式に GitHub を離れる予定である。最近の GitHub Actions の停電は数時間ほど PR レビューをブロックし、これは Git そのものの問題ではなく GitHub サービス自体の構造的な問題を浮き彫りにしている。同月中盤の主要な GitHub 障害(同日に Elasticsearch の障害も発生したが別の事件)と時期を同じくしてこの週に終了した議論が、プロジェクトの移行計画を見事に実現させながら、現在の URL で即時のコードアクセスのために読み取り専用ミラーを維持するという方針で進められた。創始者は、新たなホスティングソリューションを探す過程で、商業的およびフリーソフトウェアの複数のプロバイダーから依存関係を段階的に削除していくことを意図している。この動きは、不揃いなサービスレベルを持つ主要プラットフォームに依存するオープンソースプロジェクトの長期的な持続可能性に対する業界全体の懸念の高まりを示しており、維持者は利便性よりも安定性を最優先することを促している。

2026/04/29 6:17

GitHub に至るまで

## 日本語訳: 中心的な論点是、GitHub が有用なツールから、オープンソースのアイデンティティに依存する脆弱で中央集権的なインフラへと進化しすぎているという点にある。この依存関係は危険であり、企業の管理不備と不安定性が、過去の記録と長年にわたって構築されたコミュニティへの信頼の双方を脅かしている。GitHub はコード共有を円滑化させ、事実上のプロジェクト放棄フォーク、イシュー、議論などのアーカイブとなったが、その台頭は npm エコシステムなどにおけるマイクロ依存関係の爆発的増加と同時期に起きたものである。 GitHub を以前に、オープンソースは評判、メーリングリスト、信頼できるメンテナ、そしてより多くの管理努力を要するが制御とコミュニティの文脈を保持できる自己ホスト化インフラ(例:Trac、Subversion)などに基づいていた。Git の分散型の性質が広く普及したにもかかわらず、GitHub はホスティングを単一の商用エンティティに集約し、これはソフトウェアコモンズの皮肉な中央集権化である。今日では、いくつかのプロジェクト(Ghostty、Strudel、Tenacity など)は、不安定なベンダーへの依存を回避するために、Codeberg などの独立したホスティングへ移行している。 今すぐ必要なのは、商業的モデルから完全に切り離された、公衆向けの資金を十分に得たアーカイブを作り、重要コード、リリースアソートメント、およびセキュリティ勧告や設計論争などを含む歴史的議論を保存することである。現在のようにプラットフォームの変更や急激な移行によって消えてしまう場合である。そのようなレジリエントなバックアップがない場合、業界は社会的歴史の不可逆的な損失に直面し、コミュニティが孤立しデータが脆弱になるリスクを抱えることになる。著者は GitHub の回復を望みつつも、オープンソースの歴史に対して単一のプラットフォームへの依存は無責任であると論じており、将来には pre-GitHub 時代の教訓と GitHub エポックの実態とのバランスが必要であるべきである。

2026/04/29 8:59

Claude のシステムプロンプトにおける不具合が、ユーザーの資金を浪費させると同時に、管理されたエージェントを破損させるという問題が発生しています。

## Japanese Translation: # Summary: 2.1.92 版で解決済みと标记されても、2.1.111 などのバージョンでは致命的なハードコードされたバグが残り、サブエージェントが正当なコード編集を拒否している。根本的な原因は、CLI バイナリ自体に誤って注入された `<system-reminder>`(ユーザー設定ではない)であり、あらゆるファイルを読み込んだ場合、コードの改善を拒否することが必須になっている。メインスレッドではマルウェア分析に基づいて条件付きでこの状況を解釈することが多いが、厳格な安全基準を持つサブエージェントは比喩的な解釈ではなく文字通りの解釈を採用し、「マルウェア」という修飾子を無視する。その結果、並列ワークフローにおける致命的な失敗が発生し、多数のサブエージェントがタスクを拒否することで、マルチエージェントコーディングが複雑な負荷に対して使用不可能となる。この問題はコンテキストウィンドウ容量に大量のリソースを浪費しており(読み込みごとに約 400 トークン)、セッション全体で同意なしに百万単位のトークンを消費する可能性がある。Opus 4.7 サブエージェントにおける再現テストにより、バグが 2.1.92 で修正されたという以前のアセスメントが否定され、問題が 2.1.111 で依然として活性であることを確認している。開発者たちはジレンマに直面しており、 reminder を完全に削除するか、文法を再編成してマルウェア条件が動作より先行することを明確にするか、あるいは最初のファイル読み込みだけに厳格に制限するかの選択肢しかない。

ChatGPT も広告を表示しています。以下がその全体的な帰属循環のプロセスです。 | そっか~ニュース