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


<!--
  Données structurées : le moteur de rendu (scripts/blog_render.py) insère un
  BlogPosting + Open Graph + 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 ; fusionnez-le
  avec 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 spécialement conçu 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 à tester de nombreuses invites 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 d’adresses IP 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 par 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 présentons ici le pipeline complet, é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 — termes de recherche : pipeline de données, écran d’ingénieur, orange foncé]

## Pourquoi les publicités ChatGPT sont-elles difficiles à extraire ?

Les publicités ChatGPT sont difficiles à extraire car leur interface est à la fois fermée, contextuelle et régionale. Les publicités apparaissent dans des encadrés intitulés « Sponsorisé » sous la réponse ; elles sont sélectionnées 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)).

> Résumé : 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 intitulés « Sponsored » (Parrainé), mis en correspondance contextuellement par fil de discussion privé, et ne disposent d’aucun répertoire public, de sorte que cette surface ne peut être observée qu’en exécutant diverses requêtes lors de sessions éligibles ([OpenAI, « Testing ads in ChatGPT »](https://openai.com/index/testing-ads-in-chatgpt/) ; [Search Engine Journal, 2026](https://www.searchenginejournal.com/see-competitor-ads-chatgpt-trendos-spa/575883/)).

<!-- [PERSPECTIVE UNIQUE] --> Cette surface fermée bouleverse 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 de la zone sponsorisée 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 de ChatGPT de bout en bout ?

Vous effectuez le scraping des 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 prompts, 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 spécialement conçu permet d’obtenir une courbe de tendance de la 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. Affichage</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 axés sur le parcours d’achat (« meilleur CRM pour les petites équipes ») et des prompts basés 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 construction de ces prompts dans [la cartographie des prompts pour les publicités ChatGPT](https://www.joinmassive.com/blog/prompt-mapping-chatgpt-ads).
2. **Qualifiez la session.** Chaque test doit être effectué 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. **Générez 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 est nécessaire d’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 d’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égez 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. **Planification et stockage.** Exécutez l’ensemble à une cadence fixe et enregistrez des lignes horodatées, afin que le taux d’impression reflète une tendance plutôt qu’un instantané.

## Comment exécuter des invites sous forme de sessions éligibles et géolocalisées avec précision ?

Vous exécutez les invites en tant que sessions éligibles en les émettant à partir d’origines d’utilisateurs réels sur le marché cible, puis en capturant la conversation générée. C’est cette étape qui détermine 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 FAI de consommateurs réels ressemblent à du trafic ordinaire, et les interfaces d’IA s’affichent en fonction de la région et de la langue ; la précision nécessite donc 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 constitue une décision à part entière, 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, et qui fonctionne sur de véritables appareils grand public dans plus de 195 pays. Son point de terminaison 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 HTML de conversation complète, de HTML de prompt, de HTML de complément, de HTML de sources 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 haute qualité 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 aspects complexes (sources éligibles, géolocalisation, rendu) sont gérés en arrière-plan 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 intègre 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 le taux 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 ratio unique permet de transformer une surface bruyante, propre à chaque thread, en un chiffre que vous pouvez suivre et comparer.

La taille de l’échantillon est importante. Une poignée de sessions donne une estimation instable, tandis que des dizaines par requête 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 au taux de part d’impression permet également d’identifier la page de destination exacte vers laquelle un concurrent redirige pour chaque conversation.

> Résumé : La part d’impressions 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 sessions correspondent à une part d’impressions de 48 % pour cette invite et cette fenêtre temporelle ([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 exécution 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 la comparaison entre deux fenêtres difficile.

Le stockage est simple une fois que le schéma est stabilisé. Une seule table large suffit : requête, marché, horodatage de l’exécution, annonceur, titre de l’annonce, description de l’annonce, URL finale. La part d’impressions correspond alors à une requête sur cette table, regroupée par prompt, marché et fenêtre. 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 l’intérêt même de l’extraction programmée des résultats IA sponsorisés.

## Remarque sur la portée et les termes relatifs à la plateforme

Ne collectez que les contenus publicitaires publics 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 adaptez votre rythme de collecte à une cadence 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 à cet effet, et si vous opérez à des fins commerciales ou à grande échelle, faites examiner 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 de ChatGPT s’il n’existe pas de répertoire public ?

Vous procédez par échantillonnage plutôt que par recherche. Étant donné que 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 ; une collecte géolocalisée précise nécessite donc 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, « Test des publicités dans 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 collecter pour chaque publicité ?

Collectez le titre de la publicité, sa description et l’URL finale pour chaque emplacement sponsorisé, ainsi que la requête, le marché et l’horodatage de 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 invite et chaque marché.

### Le scraping des publicités ChatGPT est-il autorisé ?

Ne collectez que 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 à ne pas franchir. 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 qui ressemblent à 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 suggestions de ChatGPT provenant d’appareils d’utilisateurs réels sur 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).
