# Comment extraire les publicités ChatGPT à grande échelle : une architecture technique


<!--
  Données structurées : le moteur de rendu (scripts/blog_render.py) injecte un ensemble plat
  composé de BlogPosting, d'Open Graph et de balises Twitter dans <head> à partir du frontmatter ci-dessus.
  Le fichier JSON-LD correspondant à la FAQPage se trouve dans faq-schema.jsonld, dans ce dossier ; intégrez-le
  à la page (idéalement sous la forme d’un seul @graph combiné) au moment de la publication.
-->

# Comment extraire les publicités de ChatGPT à grande échelle : une architecture technique

OpenAI a commencé à tester des publicités au sein de ChatGPT pour les adultes américains connectés aux formules « Free » et « Go » le 9 février 2026 ([OpenAI, « Testing ads in ChatGPT »](https://openai.com/index/testing-ads-in-chatgpt/)). Il n’existe pas de répertoire public à interroger, et la mise en correspondance s’effectue au cas par cas, par fil de discussion privé. Apprendre à extraire les publicités de ChatGPT n’est donc pas un problème d’analyse syntaxique. Il s’agit d’un problème d’échantillonnage : exécutez un ensemble de prompts conçu à cet effet au cours de sessions éligibles et géolocalisées avec précision, capturez chaque encadré sponsorisé, puis répétez l’opération jusqu’à ce que les chiffres se stabilisent.

> **Points clés à retenir**
> - Les publicités ne s’affichent que pour les adultes américains connectés aux formules « Free » et « Go » ; les formules « Pro », « Business » et « Enterprise » restent sans publicité, les sessions de collecte doivent donc être effectuées sur une formule éligible ([TechCrunch, « ChatGPT déploie des publicités », 09/02/2026](https://techcrunch.com/2026/02/09/chatgpt-rolls-out-ads/)).
> - Il n’existe pas de centre de transparence publicitaire, et la mise en correspondance s’effectue au niveau de chaque fil de discussion privé ; par conséquent, la seule façon d’observer les publicités consiste à exécuter de nombreuses requêtes variées et à enregistrer les résultats ([Search Engine Journal, 2026](https://www.searchenginejournal.com/see-competitor-ads-chatgpt-trendos-spa/575883/)).
> - Pour chaque apparition, vous enregistrez le titre de la publicité, sa description et l’URL finale, puis vous calculez le taux d’impression en divisant le nombre d’apparitions par le nombre total d’exécutions ([Search Engine Land, 2026](https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301)).
> - Les publicités sont déployées pays par pays ; la collecte précise des données s’effectue donc marché par marché à partir de sources locales ([Euronews, 2026](https://www.euronews.com/next/2026/02/10/chatgpt-will-now-show-you-adverts-heres-everything-you-need-to-know)).
> - Les adresses IP des centres de données sont rapidement bloquées ; les adresses IP résidentielles provenant de véritables FAI ressemblent au trafic normal des utilisateurs ([DataImpulse, « Meilleurs proxys pour le scraping IA en 2026 »](https://dataimpulse.com/blog/best-proxies-for-ai-scraping/)).

Ce document technique accompagne le guide stratégique sur [la manière de surveiller les publicités ChatGPT](https://www.joinmassive.com/blog/how-to-monitor-chatgpt-ads). Nous y décrivons ici le pipeline réel, étape par étape.

[IMAGE : Écran d’un ingénieur affichant un pipeline de données avec des files d’attente de requêtes, des zones géographiques et un tableau des publicités sponsorisées, avec des accents orange foncé dans l’interface utilisateur — mots-clés de recherche : pipeline de données, écran d’ingénieur, foncé]

## Pourquoi les publicités ChatGPT sont-elles difficiles à extraire ?

Les publicités ChatGPT sont difficiles à extraire car leur surface est à la fois fermée, contextuelle et régionale. Les publicités apparaissent dans des encadrés intitulés « Sponsored » sous la réponse, en fonction du sujet de la conversation, de l’historique du chat, et des interactions publicitaires antérieures plutôt qu’en fonction de mots-clés exacts ([StackAdapt, « Comment faire de la publicité sur ChatGPT »](https://www.stackadapt.com/resources/blog/how-to-advertise-on-chatgpt)). Deux requêtes identiques peuvent renvoyer des annonceurs différents ; une seule observation ne vous apprend donc pratiquement rien.

Trois contraintes déterminent chaque décision de conception. Premièrement, les publicités ne s’affichent que pour les adultes américains connectés aux versions Free ou Go ; vos sessions doivent donc être éligibles. Deuxièmement, la mise en correspondance s’effectue par fil de discussion privé, sans répertoire de référence ([Search Engine Journal, 2026](https://www.searchenginejournal.com/see-competitor-ads-chatgpt-trendos-spa/575883/)). Troisièmement, le déploiement s’effectue pays par pays, en commençant par les États-Unis, puis le Royaume-Uni, le Japon, la Corée du Sud, le Canada, l’Australie et la Nouvelle-Zélande, le Mexique et le Brésil étant prévus ([Euronews, 2026](https://www.euronews.com/next/2026/02/10/chatgpt-will-now-show-you-adverts-heres-everything-you-need-to-know)).

> Encadré de référence : Les publicités ChatGPT ne s’affichent que pour les adultes américains connectés aux formules « Free » et « Go » lors du test du 9 février 2026 ; elles apparaissent dans des encadrés portant la mention « Sponsored » (Parrainé), mis en correspondance contextuellement pour chaque fil de discussion privé, et ne disposent d’aucun répertoire public ; leur visibilité ne peut donc être observée qu’en exécutant diverses invites lors de sessions éligibles ([OpenAI, « Test des publicités dans ChatGPT »](https://openai.com/index/testing-ads-in-chatgpt/) ; [Search Engine Journal, 2026](https://www.searchenginejournal.com/see-competitor-ads-chatgpt-trendos-spa/575883/)).

<!-- [POINT DE VUE UNIQUE] --> Cette surface fermée renverse la logique économique habituelle du scraping. Dans le scraping web classique, l’analyse syntaxique est peu coûteuse et c’est l’accès qui représente le coût. Ici, l’analyse syntaxique de l’encadré sponsorisé est insignifiante, et le véritable coût est d’ordre statistique : vous estimez une distribution cachée, votre architecture doit donc privilégier la taille de l’échantillon et la stabilité des conditions plutôt que des sélecteurs sophistiqués.

## Comment extraire les publicités ChatGPT de bout en bout ?

Vous extrayez les publicités ChatGPT à l’aide d’un pipeline en huit étapes qui transforme un ensemble de prompts en une courbe de tendance. Ces étapes vont de la conception à la diffusion : conception des invites, qualification des sessions, répartition géographique, rendu, capture, normalisation, calcul du taux d’impression, puis planification et stockage. Chaque étape alimente la suivante, et la boucle entière se répète à un rythme régulier afin que le bruit d’une exécution unique s’équilibre pour former un signal mesurable.

<figure>
  <svg viewBox="0 0 680 260" role="img" aria-label="Pipeline en huit étapes pour l'extraction des publicités ChatGPT, de la conception de l'ensemble de prompts au stockage planifié" xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="0" width="680" height="260" fill="#0a0a0f"/>
    <text x="24" y="34" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="18" font-weight="600">Pipeline de collecte des publicités ChatGPT</text>
    <text x="24" y="54" fill="#8e8b89" font-family="Outfit, sans-serif" font-size="12">Un ensemble de prompts conçu devient une courbe de tendance de part d’impression.</text>

 <!-- Ligne 1 -->
    <rect x="24" y="78" width="142" height="40" rx="6" fill="#121117" stroke="#d74939"/>
    <text x="95" y="103" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">1. Ensemble de prompts</text>
    <rect x="190" y="78" width="142" height="40" rx="6" fill="#121117" stroke="#1d1d21"/>
    <text x="261" y="103" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">2. Session éligible</text>
    <rect x="356" y="78" width="142" height="40" rx="6" fill="#121117" stroke="#1d1d21"/>
    <text x="427" y="103" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">3. Données géographiques par marché</text>
    <rect x="522" y="78" width="134" height="40" rx="6" fill="#121117" stroke="#ff8163"/>
    <text x="589" y="103" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">4. Rendu</text>

    <!-- rangée de flèches 1 -->
    <text x="178" y="103" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>
    <text x="344" y="103" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>
    <text x="510" y="103" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>

    <!-- Ligne 2 -->
    <rect x="24" y="158" width="142" height="40" rx="6" fill="#121117" stroke="#1d1d21"/>
    <text x="95" y="183" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">5. Zone de capture</text>
    <rect x="190" y="158" width="142" height="40" rx="6" fill="#121117" stroke="#1d1d21"/>
    <text x="261" y="183" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">6. Normaliser</text>
    <rect x="356" y="158" width="142" height="40" rx="6" fill="#121117" stroke="#d74939"/>
    <text x="427" y="183" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">7. Part d'impression</text>
    <rect x="522" y="158" width="134" height="40" rx="6" fill="#121117" stroke="#1d1d21"/>
    <text x="589" y="183" fill="#faf4ec" font-family="Outfit, sans-serif" font-size="12" text-anchor="middle">8. Planifier + enregistrer</text>

    <text x="178" y="183" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>
    <text x="344" y="183" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>
    <text x="510" y="183" fill="#8e8b89" font-family="'JetBrains Mono', monospace" font-size="14" text-anchor="middle">&#8594;</text>

    <text x="24" y="236" fill="#34d399" font-family="'JetBrains Mono', monospace" font-size="11">Répétez l’ensemble du pipeline à un rythme régulier ; le signal réside dans la répétition</text>
  </svg>
  <figcaption>Pipeline de référence pour l’extraction de données publicitaires avec ChatGPT. Méthode tirée de <a href="https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301">Search Engine Land, « Ce que les données publicitaires de ChatGPT révèlent sur vos concurrents », 2026</a>.</figcaption>
</figure>

Voici le rôle de chaque étape :

1. **Concevez l’ensemble de prompts.** Créez des prompts liés au parcours d’achat (« meilleur CRM pour les petites équipes ») et des prompts portant sur des termes de marque (« [marque] en vaut-elle la peine ? »). La formulation influe sur les publicités déclenchées ; considérez donc cet ensemble comme une variable contrôlée. Nous abordons la conception dans [la cartographie des prompts pour les publicités ChatGPT](https://www.joinmassive.com/blog/prompt-mapping-chatgpt-ads).
2. **Qualifiez la session.** Chaque session doit être effectuée par un adulte américain connecté à la version Free ou Go. Les versions Pro, Business et Enterprise n’affichent aucune publicité ([TechCrunch, 2026](https://techcrunch.com/2026/02/09/chatgpt-rolls-out-ads/)). Variez l’historique des sessions afin qu’un fil de discussion biaisé ne fausse pas l’échantillon.
3. **Répartissez par zone géographique.** Le déploiement s’effectuant pays par pays, la collecte s’effectue par marché à partir d’origines locales. Une vue limitée aux États-Unis ne prendrait pas en compte les annonceurs du Royaume-Uni, du Japon ou du Canada à mesure que le test s’étend.
4. **Affichez la conversation.** Envoyez la requête et capturez la réponse entièrement affichée, y compris tout bloc sponsorisé. C’est à cette étape qu’il faut utiliser des origines d’utilisateurs réels, comme expliqué ci-dessous.
5. **Capturez l’encadré sponsorisé.** À partir du résultat affiché, extrayez le titre de l’annonce, sa description et l’URL finale pour chaque emplacement sponsorisé ([Search Engine Land, 2026](https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301)).
6. **Analysez et normalisez.** Mappez les champs bruts à un schéma stable. Normalisez les noms des annonceurs et les URL finales afin qu’un même annonceur ne soit pas réparti sur plusieurs lignes.
7. **Calculez le taux d’impression.** Agréguez les apparitions par rapport au nombre total d’exécutions par requête et par marché. Nous reviendrons sur les calculs dans un instant.
8. **Planifier et stocker.** Exécutez l’ensemble à une cadence fixe et enregistrez les lignes horodatées, afin que le taux d’impression reflète une tendance plutôt qu’un instantané.

## Comment exécuter des invites en tant que sessions éligibles et géolocalisées avec précision ?

Vous exécutez les invites en tant que sessions éligibles en les lançant à partir d’origines d’utilisateurs réels sur le marché cible, puis en capturant la conversation générée. C’est à cette étape que se décide si vous collectez des données publicitaires IA à grande échelle ou si vous êtes bloqué dès le début. La plupart des plateformes signalent rapidement les adresses IP de centres de données, tandis que les adresses IP résidentielles provenant de véritables FAI grand public ressemblent à du trafic ordinaire ; de plus, les interfaces IA s’affichent en fonction de la région et de la langue, ce qui nécessite des adresses IP locales sur l’ensemble des marchés ([DataImpulse, « Meilleurs proxys pour le scraping IA en 2026 »](https://dataimpulse.com/blog/best-proxies-for-ai-scraping/)). Le choix de ce réseau relève d’une décision distincte, comparée dans [proxys résidentiels vs proxys de centres de données pour les publicités IA](https://www.joinmassive.com/blog/residential-vs-datacenter-proxies-ai-ads).

C’est là que Massive s’intègre directement dans le pipeline. Massive est un réseau d’accès aux appareils associé à une pile de rendu qui renvoie du code HTML ou Markdown propre à partir de n’importe quelle source publique, quel que soit l’emplacement, en s’exécutant sur de véritables appareils grand public dans plus de 195 pays. Le point de terminaison de sa Web Render API `/ai` renvoie les compléments de ChatGPT via des origines provenant d’appareils d’utilisateurs réels dans la zone géographique de votre choix, sous forme de conversation HTML complète, de prompt HTML, de complément HTML, de sources HTML et d’un tableau de sous-requêtes. Le mode synchrone renvoie directement le complément ; le mode asynchrone `/ai/completions` fonctionne selon un principe de mise en file d’attente et de récupération, avec un ciblage géographique par pays, subdivision ou ville.

Massive fournit la fonctionnalité ; votre équipe conçoit l’ensemble de prompts et gère l’opération. Pour le pipeline associé, le point de terminaison « Browsing » (`/browser`) offre une sortie Markdown de premier ordre et des sessions persistantes pouvant aller jusqu’à 12 minutes. Chaque adresse IP est enregistrée via le SDK Massive, et la plateforme est auditée SOC 2, conforme au RGPD et certifiée AppEsteem, avec une piste d’audit complète.

La boucle de contrôle est simple. Les parties complexes (origines éligibles, géolocalisation, rendu) se situent en amont de l’appel de rendu, ce qui permet à votre code de se concentrer sur l’échantillonnage et l’agrégation :

```python
# Illustrative sampling loop. The render_chatgpt() call abstracts an
# eligible, geo-targeted session; see your render provider's docs for
# exact endpoint parameters before wiring it up.
from collections import Counter

def sample_prompt(prompt, market, runs=25):
    appearances = Counter()
    for _ in range(runs):
        convo = render_chatgpt(prompt=prompt, geo=market)   # rendered HTML
        for box in find_sponsored_boxes(convo):             # may be zero
            ad = {
                "advertiser": normalize(box.title),
                "description": box.description,
                "final_url":  canonical(box.final_url),
                "prompt":     prompt,
                "market":     market,
            }
            store(ad)                                       # stage 8
            appearances[ad["advertiser"]] += 1
    # stage 7: impression share = appearances / total runs
    return {a: round(n / runs, 3) for a, n in appearances.items()}
```

La boucle est délibérément simple. Une version de production ajoute des tentatives de réessai, une détection des encadrés sponsorisés tolérant les modifications de mise en page, une validation écartant les rendus vides, ainsi qu’une planification par marché.

## Comment calculez-vous le taux d’impression sur plusieurs exécutions ?

Vous calculez la part d’impression en divisant le nombre d’apparitions d’un annonceur par le nombre total d’exécutions pour une requête et un marché donnés. Si un annonceur s’affiche dans 12 exécutions sur 25, cela correspond à une part d’impression de 48 % pour cette requête et cette fenêtre ([Search Engine Land, 2026](https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301)). Ce simple ratio permet de transformer une surface bruyante, propre à chaque fil de discussion, en un chiffre que vous pouvez suivre et comparer.

La taille de l’échantillon est importante. Une poignée d’exécutions produit une estimation instable, tandis que des dizaines d’exécutions par invite permettent d’obtenir un résultat stable. Veillez à maintenir des conditions de collecte fixes (même marché, même niveau et même formulation de la requête), afin qu’une variation des chiffres reflète bien l’enchère publicitaire plutôt que votre configuration. Le suivi de l’URL finale parallèlement à la part d’impression permet également d’identifier la page de destination exacte vers laquelle un concurrent redirige pour chaque conversation.

> Résumé : Le taux d’impression d’une publicité ChatGPT correspond au nombre d’exécutions au cours desquelles un annonceur apparaît, divisé par le nombre total d’exécutions pour cette requête et ce marché ; 12 apparitions sur 25 exécutions représentent un taux d’impression de 48 % pour cette requête et cette période ([Search Engine Land, « Ce que les données publicitaires de ChatGPT révèlent sur vos concurrents », 2026](https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301)).

## À quelle fréquence devez-vous collecter ces données, et où les stocker ?

Vous effectuez des collectes à une cadence fixe et stockez chaque observation sous forme de ligne horodatée, car la valeur réside dans la tendance, et non dans un instantané. Une collecte hebdomadaire ou quotidienne du même ensemble de requêtes, par marché, permet de constituer un historique que vous ne pourrez pas reconstituer ultérieurement. Considérez le calendrier lui-même comme faisant partie intégrante de la méthode : modifier la fréquence en cours de route rend difficile la comparaison entre deux périodes.

Le stockage est simple une fois que le schéma est stabilisé. Une seule table large suffit : prompt, marché, horodatage de l’exécution, annonceur, titre de l’annonce, description de l’annonce, URL finale. Le taux d’impression correspond alors à une requête sur cette table, regroupée par prompt, marché et période. Comme vous contrôlez les conditions de collecte, la même requête réexécutée le mois suivant produit un chiffre comparable, ce qui est justement l’intérêt de collecter les résultats des publicités sponsorisées par IA selon un calendrier défini.

## Remarque sur le champ d’application et les conditions d’utilisation de la plateforme

Ne collectez que les publicités accessibles au public et ne dépassez pas ce cadre. L’encadré sponsorisé visible par tout utilisateur éligible relève de l’information publique, et c’est là la limite qu’il convient de respecter. Ne collectez pas de données à caractère personnel, ne tentez pas de contourner l’authentification au-delà d’une session de connexion normale, et effectuez votre collecte à un rythme raisonnable plutôt que de surcharger le service. Respectez les conditions d’utilisation énoncées par chaque plateforme, veillez à ce que votre ensemble de prompts soit spécialement conçu pour cet usage, et si vous opérez à des fins commerciales ou à grande échelle, faites vérifier la légalité de votre utilisation spécifique par un juriste. La législation en la matière varie selon les juridictions et évolue constamment.

## Foire aux questions

### Comment extraire les publicités ChatGPT s’il n’existe pas de répertoire public ?

Vous procédez par échantillonnage plutôt que par recherche. Comme la mise en correspondance s’effectue au niveau de chaque fil de discussion privé sans centre de transparence, vous exécutez de manière répétée un ensemble de prompts spécialement conçu lors de sessions éligibles aux États-Unis et vous enregistrez chaque encadré sponsorisé ([Search Engine Journal, 2026](https://www.searchenginejournal.com/see-competitor-ads-chatgpt-trendos-spa/575883/)). Le volume et la répétition transforment une surface cachée, propre à chaque fil de discussion, en un chiffre mesurable de part d’impression que vous pouvez suivre au fil du temps.

### Pourquoi avez-vous besoin d’adresses IP résidentielles pour collecter des données publicitaires sur ChatGPT ?

Les adresses IP de centres de données sont rapidement bloquées, tandis que les adresses IP résidentielles provenant de véritables FAI grand public ressemblent à du trafic utilisateur normal ([DataImpulse, « Meilleurs proxys pour le scraping IA en 2026 »](https://dataimpulse.com/blog/best-proxies-for-ai-scraping/)). Les surfaces publicitaires de l’IA s’affichent également en fonction de la région et de la langue, et le déploiement s’effectue pays par pays ; par conséquent, une collecte géolocalisée précise nécessite des adresses IP locales sur chaque marché que vous souhaitez observer.

### Quels niveaux d’abonnement ChatGPT affichent réellement des publicités ?

Seuls les niveaux « Free » et « Go », et uniquement pour les adultes américains connectés, selon le test du 9 février 2026 ([OpenAI, « Testing ads in ChatGPT »](https://openai.com/index/testing-ads-in-chatgpt/)). Les niveaux « Pro », « Business » et « Enterprise » restent sans publicité ([TechCrunch, 2026](https://techcrunch.com/2026/02/09/chatgpt-rolls-out-ads/)). Les sessions de collecte qui ne relèvent pas d’un niveau éligible ne renverront aucune boîte sponsorisée.

### Quels champs devez-vous capturer pour chaque publicité ?

Enregistrez le titre de l’annonce, sa description et l’URL finale pour chaque emplacement sponsorisé, ainsi que la requête, le marché et l’horodatage de la diffusion ([Search Engine Land, 2026](https://searchengineland.com/what-chatgpt-ads-data-reveals-about-your-competitors-479301)). Ces champs vous permettent de normaliser les annonceurs, de suivre les pages de destination et de calculer le taux d’impression en divisant le nombre d’apparitions par le nombre total de diffusions pour chaque prompt et chaque marché.

### Le scraping des publicités ChatGPT est-il autorisé ?

Collectez uniquement l’encart publicitaire public visible par tout utilisateur éligible, évitez les données à caractère personnel et respectez les conditions générales de chaque plateforme ainsi qu’une fréquence raisonnable. La surface publicitaire publique constitue la limite. Considérez le scraping comme une observation des emplacements publics, et non comme une collecte massive, et faites procéder à un examen juridique en cas d’utilisation commerciale ou à grande échelle, car les règles varient selon les juridictions.

## Ce que cela implique pour vous

Le scraping des publicités ChatGPT relève d’un échantillonnage rigoureux, et non d’une ingénierie de sélection. Le pipeline en huit étapes maintient des conditions stables : un ensemble de prompts conçu, des sessions éligibles, la bonne zone géographique, un rendu conforme à celui des utilisateurs réels. Ainsi, les chiffres de part d’impression que vous calculez ont une valeur significative sur plusieurs semaines. Créez la boucle une seule fois, exécutez-la à une cadence régulière et stockez chaque ligne.

La contrainte qui détermine tout réside au niveau de la couche de collecte : des sessions éligibles, géolocalisées avec précision et ressemblant à celles d’utilisateurs réels. C’est là qu’interviennent le point de terminaison `/ai` de Massive et sa couverture de plus de 195 pays, qui renvoient les complétions de ChatGPT via des origines d’appareils d’utilisateurs réelssur le marché de votre choix. Commencez dès maintenant à prélever des échantillons, respectez l’espace publicitaire, et vous disposerez de données de tendance impossibles à recréer a posteriori. Pour le cadre stratégique, reportez-vous à [comment surveiller les publicités ChatGPT](https://www.joinmassive.com/blog/how-to-monitor-chatgpt-ads).
