Script d'extraction de query fan-out - ChatGPT 5.3/5.4
Résumé IA
Cet article présente un raccourci navigateur gratuit conçu pour extraire les données de « query fan-out » de ChatGPT sans avoir besoin de clé API OpenAI. Quentin explique comment cet outil révèle les recherches masquées et les citations utilisées par l'IA, offrant aux spécialistes SEO/GEO une visibilité cruciale sur la manière dont les LLM effectuent leurs recherches, classent les sources et identifient les lacunes de contenu.
Table des matières
This article is also available in English: ChatGPT 5.3/5.4 Query Fan Out Extraction Bookmarklet
Ce matin, j’ai vu un post de Chris Long sur LinkedIn mentionnant que le “Fan Out” de ChatGPT est de retour. J’ai donc créé un petit raccourci navigateur (un bookmarklet) pour extraire ces données facilement. Pas besoin de clés API ni de configuration complexe : c’est juste un bouton dans votre barre de favoris.
Au départ, j’utilisais un outil similaire de SEO Pub et je me souviens à quel point c’était utile pour analyser rapidement un prompt quand je ne travaillais pas encore chez Adobe. Même s’il est maintenant beaucoup plus facile pour moi de faire cela à grande échelle avec LLM Optimizer, je voulais partager une méthode accessible pour ceux qui n’ont pas accès à ces solutions d’entreprise.
Si tu veux industrialiser ce processus en incluant d’autres LLM, n’hésite pas à me contacter sur LinkedIn pour qu’on discute de comment LLM Optimizer pourrait t’aider.
C’est quoi le “Query Fan-out” ?
Quand tu envoies un prompt à ChatGPT, il utilise parfois le RAG (Retrieval-Augmented Generation). Pour trouver les meilleures infos avant de te répondre, il décompose ta demande en plusieurs recherches spécifiques. Par exemple, un prompt comme “Meilleures agences GEO à Montréal” peut déclencher cinq recherches différentes sur des noms d’agences précis, des avis clients ou des classements locaux.
En temps normal, on ne voit que la liste finale des “Sources”. Les fan-out queries, ce sont les miettes de pain que l’IA a suivies pour arriver à sa conclusion.
Ce que fait ce raccourci
Cet outil utilise ta session de navigation actuelle pour charger le JSON de la conversation, exactement comme l’application web le fait. Il n’a pas besoin de clé API OpenAI : il effectue simplement le même type de requête que tu pourrais inspecter toi-même dans les outils de développement (DevTools) de ton navigateur.
Dès que tu cliques sur le raccourci depuis une conversation ChatGPT, il ouvre un nouvel onglet où il organise toutes les données techniques cachées dans un format clair et lisible.
Ce qu’il te permet de récupérer
Le script extrait plusieurs couches de données cruciales, souvent masquées dans l’interface :
- Requêtes fan-out : Les termes exacts que ChatGPT a saisis dans son moteur de recherche.
- Citations détaillées : Chaque URL citée dans la réponse.
- Extraits des résultats de recherche : Les titres de pages et les résumés que l’IA a vraiment consultés pour chaque résultat.
Pourquoi c’est important de voir ce que ChatGPT “pense”
Si tu bosses en SEO/GEO, accéder à ces infos est vital pour quelques raisons simples :
- Visibilité organique : Tu peux vérifier si ton site apparaît dans les résultats que ChatGPT a scannés.
- Suivi des sources : Tu identifies les sites sur lesquels l’IA s’appuie pour forger son opinion sur ton secteur.
- Contenu manquant : Si l’IA cherche “Tarifs de [Ta Marque]” et qu’elle ne trouve rien, tu sais exactement quel contenu tu dois créer en priorité.
Comment installer le raccourci sur Chrome
Ça fonctionne pour Google Chrome sur ordinateur.
- Affiche ta barre de favoris : Utilise Ctrl + Shift + B (Windows) ou ⌘ + Shift + B (macOS).
- Crée un nouveau favori : Fais un clic droit sur une zone vide de la barre et choisis Ajouter une page….
- Donne-lui un nom : Appelle-le par exemple
ChatGPT Fan-out. - Colle le script : Dans le champ URL, colle l’intégralité du bloc de code ci-dessous. Ça doit impérativement commencer par
javascript:.
- Lance le raccourci : Clique sur le favori quand tu es sur un onglet ChatGPT (tu dois être connecté).

- Regarde le résultat : Un nouvel onglet s’ouvre avec toutes les données extraites proprement.

Le code du raccourci
Je sais qu’on ne se connaît probablement pas encore, et je suis le premier à admettre que coller un bloc de code dans son navigateur peut sembler un peu louche. C’était mon cas la première fois.
Si tu veux un deuxième avis, tu peux coller le code dans ton LLM préféré et lui demander : Ce code contient-il des éléments malveillants, et l'auteur peut-il accéder à mes conversations ChatGPT ?. C’est une bonne façon de vérifier par toi-même. Ce script tourne uniquement sur la page (chatgpt.com), utilise ta session actuelle et n’envoie jamais de données vers des serveurs externes.
J’ai aussi une approche stricte de respect de la vie privée et je n’utilise pas de cookies de suivi, c’est pour ça que tu ne verras pas de bannière de cookies sur mon site. Tu peux lire ma politique de confidentialité pour tous les détails.
javascript:(async()=>{const e="https://quentinyacoub.com",t=e+"/favicon.svg",n=e+"/img/logo-quentin-yacoub.webp",a="Quentin Yacoub",r=e+"/img/photo-quentin-yacoub.webp",o="Spécialiste SEO/GEO",i=e+"/fr/";let s=null;try{if("chatgpt.com"!==location.hostname&&"www.chatgpt.com"!==location.hostname&&"chat.openai.com"!==location.hostname)return void alert("ChatGPT Fan-Out\n\nUtilisez ce favori sur chatgpt.com ou chat.openai.com, avec une page de conversation ouverte.");const b=location.pathname.match(/\/c\/([a-z0-9-]+)/i)?.[1];if(!b)return void alert("Aucun ID de conversation dans l'URL (/c/...). Tu n'es peut-être pas connecté à ChatGPT. Un compte est requis pour que le script fonctionne.");if(s=window.open("","_blank"),!s)return void alert("ChatGPT Fan-Out\n\nLe navigateur a bloqué le nouvel onglet. Autorisez les pop-ups pour ChatGPT et réessayez.");const w=await fetch("/api/auth/session",{credentials:"include"}).then(e=>e.json()).catch(()=>({})),y=w?.accessToken;if(!y)return s.close(),void alert("ChatGPT Fan-Out\n\nImpossible de lire votre session ChatGPT. Connectez-vous sur chatgpt.com, actualisez cette conversation, puis relancez le favori.");const v=`/backend-api/conversation/${encodeURIComponent(b)}`,C=await fetch(v,{credentials:"include",headers:{Authorization:"Bearer "+y,"Content-Type":"application/json"}});if(!C.ok)throw s.close(),new Error("Échec du chargement de la conversation : "+C.status);const E=await C.json(),k=new Set,q=[],N=[],z=[];function l(e){try{const t=new URL(String(e).trim());if("http:"!==t.protocol&&"https:"!==t.protocol)return String(e).trim();const n=t.searchParams;for(const e of[...n.keys()]){const t=e.toLowerCase();(t.startsWith("utm_")||"gclid"===t||"fbclid"===t||"mc_cid"===t||"mc_eid"===t)&&n.delete(e)}return t.toString()}catch{return String(e).trim()}}function c(e){if(null==e)return;const t=("string"==typeof e?e:"object"==typeof e&&null!=e.q?String(e.q):"").trim();t&&!k.has(t)&&(k.add(t),q.push({q:t}))}!function e(t){if(t&&"object"==typeof t){"search_result_group"===t.type&&Array.isArray(t.entries)&&t.entries.forEach(e=>{if("search_result"===e?.type&&e.url&&e.title&&e.snippet){const t=l(e.url);if(!function(e){try{const t=new URL(String(e).trim());return"http:"===t.protocol||"https:"===t.protocol}catch{return!1}}(t))return;z.push({title:e.title,url:t,snippet:e.snippet})}});for(const n in t)"entries"!==n&&e(t[n])}}(E);const j=new Set,A=[];function p(e){try{const t=l(e),n=new URL(t);if("http:"!==n.protocol&&"https:"!==n.protocol)return null;const a=(n.pathname||"/").replace(/\/+$/,"")||"/",r=[...new URLSearchParams(n.search).entries()].sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&");return(n.hostname.toLowerCase()+a+(r?"?"+r:"")).toLowerCase()}catch{return null}}function d(e,t){const n=String(e||"").trim();if(!/^https?:\/\//i.test(n))return;const a=l(n),r=p(a);if(!r||j.has(r))return;if(function(e){if(!e)return!1;for(let t=0;t<z.length;t++)if(p(z[t].url)===e)return!0;return!1}(r))return;j.add(r);let o=t&&String(t).trim()||"";if(!o)try{o=new URL(a).hostname.replace(/^www\./,"")}catch{o=a}const i=function(e){try{const t=new URL(String(e).trim());return"images.openai.com"===t.hostname&&t.pathname.includes("/thumbnails/")}catch{return!1}}(a);if(i){const e=t&&String(t).trim();o=e&&!/^images\.openai\.com$/i.test(e.replace(/^www\./,""))?"Miniature produit — "+e:"Miniature produit"}A.push({url:a,title:o,isProductThumbnail:i})}function h(e){if(!e||"object"!=typeof e)return;const t=e.queries;Array.isArray(t)&&t.forEach(e=>c(e))}if(function(e){const t=e?.mapping;if(t&&"object"==typeof t)for(const e of Object.keys(t)){const n=t[e]?.message?.metadata;if(!n||"object"!=typeof n)continue;const a=n.content_references;if(Array.isArray(a))for(const e of a){if(!e||"object"!=typeof e)continue;const t=e.items;if(Array.isArray(t))for(const e of t)if(e&&"object"==typeof e&&e.url){const t=null!=e.attribution?String(e.attribution):"";d(e.url,t||(null!=e.title?String(e.title):""))}if("product_entity"===e.type&&e.product&&"object"==typeof e.product){const t=e.product,n=null!=t.title?String(t.title).trim():"",a=t.image_urls;Array.isArray(a)&&a.forEach(e=>{"string"==typeof e&&e.trim()&&d(e.trim(),n)})}const n=e.safe_urls;if(Array.isArray(n))for(const e of n)"string"==typeof e&&e.trim()&&d(e.trim(),"")}const r=n.safe_urls;if(Array.isArray(r))for(const e of r)"string"==typeof e&&e.trim()&&d(e.trim(),"")}}(E),function e(t,n){if(t&&"object"==typeof t&&!(n>80)){h(t.search_model_queries),t.metadata?.search_model_queries&&h(t.metadata.search_model_queries),Array.isArray(t.search_queries)&&t.search_queries.forEach(e=>c(null!=e?.q?e.q:e)),t.metadata&&Array.isArray(t.metadata.search_queries)&&t.metadata.search_queries.forEach(e=>c(null!=e?.q?e.q:e)),Array.isArray(t.queries)&&t.queries.length&&"string"==typeof t.queries[0]&&t.queries.forEach(e=>c(e)),"thoughts"===t.content_type&&Array.isArray(t.thoughts)&&t.thoughts.forEach(e=>e?.content&&N.push(String(e.content))),"thoughts"===t.type&&Array.isArray(t.thoughts)&&t.thoughts.forEach(e=>e?.content&&N.push(String(e.content)));for(const a in t)"search_queries"!==a&&"metadata"!==a&&e(t[a],n+1);if(t.metadata)for(const a in t.metadata)e(t.metadata[a],n+1)}}(E,0),function e(t,n){if(!t||"object"!=typeof t||n>80)return;const a=t.product_lookup_data;if(a&&"object"==typeof a){const e=a.request_query;"string"==typeof e&&e.trim()&&c(e.trim())}for(const a in t)e(t[a],n+1)}(E,0),!(q.length||N.length||z.length||A.length))return s.close(),void alert("Rien à exporter pour cette conversation : aucune requête fan-out, résultat web, réflexion ou lien cité. Essayez une réponse avec recherche web, citations ou liens type produits.");const T=s.document;T.open(),T.write('<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ChatGPT Fan-Out</title></head><body></body></html>'),T.close();const _=T.createElement("link");_.rel="icon",_.type="image/svg+xml",_.href=t,T.head.appendChild(_);const R=T.createElement("link");R.rel="stylesheet",R.href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap",T.head.appendChild(R);const S=T.createElement("style");S.textContent=[":root{--primary:#1473E6;--primary-hover:#0D66D0;--primary-light:#E8F1FC;--text:#1A1A2E;--muted:#6B7280;--bg:#FFFFFF;--bg-alt:#F8F9FA;--border:#E5E7EB;}","body{margin:0;padding:0;font-family:Inter,system-ui,sans-serif;background:var(--bg-alt);color:var(--text);}",".topbar{background:var(--bg);border-bottom:1px solid var(--border);box-shadow:0 1px 3px rgba(0,0,0,.06);}",".topbar-inner{max-width:960px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}",".brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);}",".brand:hover .brand-name,.brand:hover .brand-role,.brand:hover .brand-sep{color:var(--primary);}",".brand-logo{width:40px;height:40px;border-radius:12px;object-fit:cover;background:linear-gradient(135deg,#1473E6,#8E5BF6);}",".brand-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;}",".brand-name{font-weight:700;font-size:1.125rem;}",".brand-sep{font-size:1.125rem;font-weight:700;color:var(--text);}",".brand-role{font-size:1.125rem;font-weight:700;color:var(--text);}","#main-content{max-width:800px;margin:32px auto;padding:0 20px 48px;}","h1{font-size:1.5rem;font-weight:700;margin:0 0 8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;}","h2{font-size:1.125rem;font-weight:700;margin:0;color:var(--text);}",".section-intro{margin-top:32px;}",".header + .section-intro{margin-top:0;}",".section-desc{margin:8px 0 0;font-size:14px;line-height:1.5;color:var(--muted);max-width:640px;}",".section-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin:0 0 12px;}",".section-head-main{flex:1 1 220px;min-width:0;}",".section-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-shrink:0;margin-left:auto;}",".query-search-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--bg);box-shadow:0 1px 2px rgba(0,0,0,.06);text-decoration:none;}",".query-search-btn:hover{background:var(--primary-light);border-color:var(--primary);}",".query-search-btn img{display:block;width:20px;height:20px;}",".query-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}",".query-row:first-child{padding-top:4px;}",".query-row:last-child{border-bottom:none;padding-bottom:4px;}",".query-text{flex:1;min-width:0;font-size:15px;line-height:1.5;word-break:break-word;}",".query-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}",".query-row .query-search-btn{width:36px;height:36px;}",".block-card{padding:12px 18px 16px;background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,.06);margin-bottom:8px;}",".block-pre{margin:0;white-space:pre-wrap;word-break:break-word;font-size:15px;line-height:1.55;color:var(--text);}",".cited-query-row{align-items:flex-start;}",".cited-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}",".cited-row-title{font-weight:600;font-size:15px;line-height:1.35;color:var(--text);}",".cited-thumb-star{color:var(--muted);font-weight:600;margin-right:2px;}",".cited-row-url{min-width:0;max-width:100%;overflow:hidden;font-size:14px;line-height:1.4;}",".cited-row-url a.link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}",".search-result-url-wrap{min-width:0;max-width:100%;overflow:hidden;}",".search-result-url-wrap a.link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}",".search-sources-footnote{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--muted);padding:0 2px 0 0;}",".cited-block .entry{margin-bottom:14px;}",".cited-block .entry:last-child{margin-bottom:0;}",".cited-block .entry-title{font-weight:600;margin-bottom:4px;}",".cited-footnote{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--muted);padding:0 2px 0 0;}","button{padding:8px 14px;border:none;border-radius:12px;background:var(--primary);color:#fff;font-weight:600;font-size:14px;cursor:pointer;font-family:inherit;box-shadow:0 1px 3px rgba(0,0,0,.08);}","button:hover{background:var(--primary-hover);}","a.link{color:var(--primary);text-decoration:underline;text-underline-offset:3px;}","a.link:hover{color:var(--primary-hover);}",".header{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin-bottom:24px;}",".header-main{flex:1 1 220px;min-width:0;}",".header > button{flex-shrink:0;margin-left:auto;align-self:flex-start;}",".toast{position:fixed;left:50%;top:24px;transform:translateX(-50%);background:var(--primary);color:#fff;padding:12px 28px;border-radius:12px;opacity:0;box-shadow:0 10px 25px rgba(20,115,230,.25);transition:opacity .25s;z-index:2002;font-size:15px;font-weight:600;pointer-events:none;}",".toast.show{opacity:1;}",".pill{display:inline-block;background:var(--primary-light);color:var(--primary);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;margin-left:0;}",".pill-cid{word-break:break-all;white-space:normal;max-width:100%;}",".subtle{font-size:14px;color:var(--muted);margin:0 0 16px;}",".author-card{margin-top:40px;padding:24px;background:var(--bg);border:1px solid var(--border);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.06);}",".author-head{display:flex;flex-direction:row;gap:12px;align-items:flex-start;margin-bottom:12px;}","@media (min-width:768px){.author-head{gap:16px;}}",".author-photo{width:56px;height:56px;border-radius:12px;object-fit:cover;flex-shrink:0;}","@media (min-width:768px){.author-photo{width:80px;height:80px;}}",".author-head-text{display:flex;flex-direction:column;gap:4px;justify-content:center;min-width:0;}",".author-name-row{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;}",".author-gradient-box{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#1473E6,#8E5BF6);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}","@media (min-width:768px){.author-gradient-box{width:48px;height:48px;border-radius:12px;}}",".author-mini-logo{width:100%;height:100%;object-fit:cover;display:block;}",".author-display-name{font-weight:700;font-size:1.125rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}","@media (min-width:768px){.author-display-name{font-size:1.875rem;}}",".author-role-line{font-size:0.875rem;color:var(--muted);}","@media (min-width:768px){.author-role-line{font-size:1.25rem;}}",".author-bio{font-size:0.875rem;line-height:1.625;color:var(--muted);margin:0 0 12px;}",".linkedin-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--primary);color:#fff;font-weight:600;border-radius:12px;text-decoration:none;font-size:0.875rem;box-shadow:0 1px 3px rgba(0,0,0,.08);}",".linkedin-btn:hover{background:var(--primary-hover);color:#fff;}",".linkedin-btn svg{flex-shrink:0;}"].join(""),T.head.appendChild(S);const F=T.createElement("div");F.className="topbar";const L=T.createElement("div");L.className="topbar-inner";const P=T.createElement("a");P.className="brand",P.href=e+"/fr/",P.target="_blank";const G=T.createElement("img");G.className="brand-logo",G.src=n,G.alt=a,G.width=40,G.height=40;const U=T.createElement("span");U.className="brand-line";const I=T.createElement("span");I.className="brand-name",I.textContent=a;const O=T.createElement("span");O.className="brand-sep",O.textContent=" | ";const B=T.createElement("span");B.className="brand-role",B.textContent=o,U.appendChild(I),U.appendChild(O),U.appendChild(B),P.appendChild(G),P.appendChild(U),L.appendChild(P),F.appendChild(L),T.body.appendChild(F);const M=T.createElement("div");M.className="toast",M.id="toast",M.textContent="Copié !",T.body.appendChild(M);const H=T.createElement("div");H.id="main-content",T.body.appendChild(H);const $=T.createElement("div");$.className="header";const D=T.createElement("div");D.className="header-main";const V=T.createElement("h1");V.textContent="ChatGPT Fan-Out";const J=T.createElement("span");J.className="pill pill-cid",J.textContent=b,V.appendChild(J);const Q=T.createElement("p");function u(){return A.map(e=>String(e.url).trim()).join("\n")}function m(){return z.map(e=>String(e.url).trim()).join("\n")}function f(){return q.map(e=>e.q).join("\n")}Q.className="subtle",Q.textContent="Ce favori extrait de la conversation ChatGPT ouverte les requêtes effectuées, les sites cités dans la réponse et les URL des résultats de recherche web.",D.appendChild(V),D.appendChild(Q);const Y=T.createElement("button");Y.textContent="Tout copier",Y.onclick=()=>x(function(){const e=[];return q.length&&e.push("--- Requêtes fan-out ---\n"+f()),N.length&&e.push("--- Raisonnement / réflexions ---\n"+N.join("\n\n")),A.length&&e.push("--- Citations ---\n"+u()),z.length&&e.push("--- Résultats de recherche web ---\n"+m()),e.join("\n\n")}(),T),$.appendChild(D),$.appendChild(Y),H.appendChild($);const W="Recherches effectuées par ChatGPT pour répondre.",X="Sites que ChatGPT propose dans sa réponse (les liens que vous pouvez ouvrir depuis celle-ci).",K="Chaque ligne correspond à ce que l’export de conversation enregistre comme résultat de recherche web : titre, lien et court extrait (snippet). Le fichier n’indique pas si le modèle a ouvert la page entière ou seulement cet extrait, ni quel moteur a été utilisé.";function g(e,t,n){const a=T.createElement("div");a.className="section-intro";const r=T.createElement("div");r.className="section-head";const o=T.createElement("div");o.className="section-head-main";const i=T.createElement("h2");if(i.textContent=e,o.appendChild(i),t){const e=T.createElement("p");e.className="section-desc",e.textContent=t,o.appendChild(e)}const s=T.createElement("div");s.className="section-actions";for(let e=0;e<n.length;e++){const t=n[e],a=T.createElement("button");a.textContent=t.label,a.onclick=()=>x(t.getText(),T),s.appendChild(a)}r.appendChild(o),r.appendChild(s),a.appendChild(r),H.appendChild(a)}if(q.length){g("Requêtes fan-out",W,[{label:"Copier toutes les requêtes",getText:f}]);const de=T.createElement("div");de.className="block-card",q.forEach(e=>{const t=T.createElement("div");t.className="query-row";const n=T.createElement("div");n.className="query-text",n.textContent=e.q;const a=T.createElement("div");a.className="query-row-actions";const r=T.createElement("a");r.className="query-search-btn",r.href="https://www.google.com/search?q="+encodeURIComponent(e.q)+"&ie=UTF-8",r.target="_blank",r.title="Rechercher cette requête sur Google";const o=T.createElement("img");o.src="https://www.google.com/favicon.ico",o.alt="Google",o.width=20,o.height=20,r.appendChild(o);const i=T.createElement("a");i.className="query-search-btn",i.href="https://www.bing.com/search?q="+encodeURIComponent(e.q)+"&form=QBLH&sp=-1&lq=0&pq=&sc=0-0&qs=n&sk=",i.target="_blank",i.title="Rechercher cette requête sur Bing";const s=T.createElement("img");s.src="https://www.bing.com/favicon.ico",s.alt="Bing",s.width=20,s.height=20,i.appendChild(s);const l=T.createElement("button");l.textContent="Copier",l.onclick=()=>x(e.q,T),a.appendChild(r),a.appendChild(i),a.appendChild(l),t.appendChild(n),t.appendChild(a),de.appendChild(t)}),H.appendChild(de)}if(N.length){g("Raisonnement / réflexions",null,[{label:"Copier les réflexions",getText:()=>N.join("\n\n")}]);const he=T.createElement("div");he.className="block-card";const ue=T.createElement("pre");ue.className="block-pre",ue.textContent=N.join("\n\n"),he.appendChild(ue),H.appendChild(he)}if(A.length){g("Citations",X,[{label:"Copier les citations",getText:u}]);const me=T.createElement("div");if(me.className="block-card",A.forEach(e=>{const t=T.createElement("div");t.className="query-row cited-query-row";const n=T.createElement("div");n.className="cited-row-main";const a=T.createElement("div");if(a.className="cited-row-title",e.isProductThumbnail){const t=T.createElement("span");t.className="cited-thumb-star",t.textContent="*",t.title="Voir la note ci-dessous.",a.appendChild(t),a.appendChild(T.createTextNode(" "+e.title))}else a.textContent=e.title;const r=T.createElement("div");r.className="cited-row-url";const o=T.createElement("a");o.className="link",o.href=e.url,o.textContent=e.url,o.title=e.url,o.target="_blank",r.appendChild(o),n.appendChild(a),n.appendChild(r);const i=T.createElement("div");i.className="query-row-actions";const s=T.createElement("button");s.textContent="Copier",s.onclick=()=>x(e.url,T),i.appendChild(s),t.appendChild(n),t.appendChild(i),me.appendChild(t)}),H.appendChild(me),A.some(e=>e.isProductThumbnail)){const fe=T.createElement("p");fe.className="cited-footnote",fe.textContent="* Les liens marchands et du panneau d’achat sont souvent absents de la conversation enregistrée ; ce favori ne peut pas encore les récupérer — seule l’URL de miniature d’aperçu issue de l’export est affichée ici.",H.appendChild(fe)}}if(z.length){g("Résultats de recherche web",K,[{label:"Copier les URL de recherche",getText:m}]);const ge=T.createElement("div");ge.className="block-card cited-block",z.forEach(e=>{const t=T.createElement("div");t.className="entry";const n=T.createElement("div");n.className="entry-title",n.textContent=e.title;const a=T.createElement("div");a.className="search-result-url-wrap";const r=T.createElement("a");if(r.className="link",r.href=e.url,r.textContent=e.url,r.title=e.url,r.target="_blank",a.appendChild(r),t.appendChild(n),t.appendChild(a),e.snippet){const n=T.createElement("div");n.style.fontSize="14px",n.style.color="var(--muted)",n.style.marginTop="6px",n.textContent=e.snippet,t.appendChild(n)}ge.appendChild(t)}),H.appendChild(ge);const xe=T.createElement("p");xe.className="search-sources-footnote",xe.textContent="ChatGPT peut récupérer ou utiliser davantage de résultats web que ceux visibles dans l’interface ; ce tableau ne liste que les lignes « sources de recherche » enregistrées dans l’export de cette conversation.",H.appendChild(xe)}const Z=T.createElement("div");Z.className="author-card";const ee=T.createElement("div");ee.className="author-head";const te=T.createElement("img");te.className="author-photo",te.src=r,te.alt=a,te.width=80,te.height=80,te.loading="lazy",te.decoding="async";const ne=T.createElement("div");ne.className="author-head-text";const ae=T.createElement("div");ae.className="author-name-row";const re=T.createElement("div");re.className="author-gradient-box";const oe=T.createElement("img");oe.className="author-mini-logo",oe.src=n,oe.alt="",oe.width=48,oe.height=48,oe.setAttribute("aria-hidden","true"),re.appendChild(oe);const ie=T.createElement("span");ie.className="author-display-name",ie.textContent=a,ae.appendChild(re),ae.appendChild(ie);const se=T.createElement("span");se.className="author-role-line",se.textContent=o,ne.appendChild(ae),ne.appendChild(se),ee.appendChild(te),ee.appendChild(ne);const le=T.createElement("p");le.className="author-bio",le.appendChild(T.createTextNode("Bonjour, je suis Quentin, spécialiste SEO/GEO. J’écris sur l’industrie de la recherche en ligne sur "));const ce=T.createElement("a");ce.className="link",ce.href=i,ce.target="_blank",ce.textContent="mon blog personnel",le.appendChild(ce),le.appendChild(T.createTextNode(". J’y documente l’évolution de la recherche et les stratégies que j’utilise pour naviguer dans ce virage de l’IA. Pas de promesses de remplacer votre équipe marketing avec des agents IA ni de plans pour s’enrichir rapidement. Juste des notes pour apprivoiser ce nouveau paysage."));const pe=T.createElement("a");function x(e,t){const n=t.createElement("textarea");n.value=e,t.body.appendChild(n),n.select();try{t.execCommand("copy"),function(){const e=T.getElementById("toast");e.classList.add("show"),setTimeout(()=>e.classList.remove("show"),2e3)}()}catch{alert("ChatGPT Fan-Out\n\nCopie dans le presse-papiers impossible. Réessayez ou copiez le texte manuellement.")}t.body.removeChild(n)}pe.className="linkedin-btn",pe.href="https://www.linkedin.com/in/quentin-yacoub-seo-geo-specialist/?locale=fr_FR",pe.target="_blank",pe.insertAdjacentHTML("afterbegin",'<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> '),pe.appendChild(T.createTextNode("Me contacter sur LinkedIn")),Z.appendChild(ee),Z.appendChild(le),Z.appendChild(pe),H.appendChild(Z)}catch(be){if(s&&!s.closed)try{s.close()}catch{}alert("ChatGPT Fan-Out\n\nImpossible de charger la conversation (réseau, session ou changement côté OpenAI). Si vous êtes connecté, ouvrez Outils de développement → Réseau, actualisez le chat et vérifiez que les requêtes pointent encore vers /backend-api/conversation/{id}."),console.error(be)}})();Erreurs potentielles et solutions
Le script peut renvoyer deux types d’alertes selon l’état de votre session. J’ai documenté ici comment les résoudre pour vous faire gagner du temps.
Aucun ID de conversation dans l'URL (/c/...)Cette erreur signifie que le script ne parvient pas à identifier une discussion spécifique pour extraire les données.
- La solution : Vérifie que tu es bien sur la page d’une conversation ChatGPT active. Ton URL doit contenir
/c/suivi d’une suite de caractères. Si tu es sur la page d’accueil, lance simplement une discussion ou rafraîchis la page.
Rien à exporter pour cette conversation...Ce message s’affiche quand la réponse que tu consultes n’a pas déclenché de recherche Web ou n’utilise pas de citations.
- La solution : Teste une requête qui force ChatGPT à chercher des données externes. Par exemple :
Quelles sont les meilleures stratégies de GEO (Generative Engine Optimization) pour 2026 ?
J’ai seulement rencontré ces deux scénarios lors de mes tests. Si tu tombes sur un autre problème, n’hésite pas à me contacter sur LinkedIn : je mettrai cette liste à jour pour la communauté.
Depuis que je suis devenu père en décembre dernier, mon temps pour le “troubleshooting” est un peu plus limité, mais je ferai de mon mieux pour t’aider à faire fonctionner le tout.
Note importante : Toutes les opinions et articles de blog partagés sur ce site sont strictement mes projets personnels. Ils ne représentent pas les vues, stratégies ou produits officiels de mon employeur, Adobe.
Hello, je m'appelle Quentin, je suis spécialiste SEO/GEO chez Adobe. Je développe des outils IA pour Site Optimizer et LLM Optimizer. J'utilise ce site pour documenter mes réflexions sur l'évolution de la recherche à l'ère de l'IA, et pour partager mes experimentations et raccourcis que j'utilise.
Retrouvez-moi sur LinkedIn