---
type: Article
title: "ChatGPT 5.3/5.4 Query Fan Out Extraction Bookmarklet"
description: "Get a free bookmarklet to extract the hidden search queries and citations ChatGPT uses to build its answers."
canonical: https://quentinyacoub.com/en/blog/chatgpt-53-54-query-fan-out-extraction-bookmarklet/
resource: https://quentinyacoub.com/en/blog/chatgpt-53-54-query-fan-out-extraction-bookmarklet/
lang: en
alternate: https://quentinyacoub.com/fr/blog/script-extraction-query-fan-out-chatgpt-53-54/
datePublished: 2026-04-09T00:00:00.000Z
dateModified: 2026-04-09T00:00:00.000Z
author: Quentin Yacoub
tags: ["SEO", "GEO", "ChatGPT", "Automation"]
license: CC-BY-4.0
---

> Deterministic, faithful markdown rendering of the canonical page below.
> Not an AI summary. To cite, use the canonical URL.

# ChatGPT 5.3/5.4 Query Fan Out Extraction Bookmarklet

![Blueprint-style graphic featuring the text CHATGPT FAN OUT QUERY EXTRACTION BOOKMARKLET on a grid background.](https://quentinyacoub.com/_astro/chatgpt-5-3-5-4-fan-out-query-extraction-bookmarklet-cover.DWf_aN43.webp)

This morning I saw [a post from Chris Long on LinkedIn](https://www.linkedin.com/posts/chris-long-marketing_great-news-seos-fan-out-queries-are-officially-activity-7447970753565802496-KXJh) mentioning that ChatGPT "Fan Out" is back, and I created a simple bookmarklet to pull this data out. No API keys, no complex setup: just a shortcut in your browser.

I had originally used a bookmarklet from SEO Pub and I remember how helpful it was to quickly check a prompt [when I wasn’t working at Adobe](/en/about/). While it is now much easier for me to do this at scale with [LLM Optimizer](https://business.adobe.com/products/llm-optimizer.html), I wanted to share a simple way for people who don’t have access to those enterprise-level tools. 

If you want to do this at scale, [feel free to contact me on LinkedIn](https://www.linkedin.com/in/quentin-yacoub-seo-geo-specialist/?locale=en_US) to discuss how LLM Optimizer could help you. 

## What is "Query Fan-out"?

When you give ChatGPT a prompt, sometimes it uses **RAG** (Retrieval-Augmented Generation) and it breaks it down into several specific searches to get the best data before answering you. For example, a prompt like "Best GEO agencies in Montreal" might trigger five different searches for specific agency names, reviews, or local rankings.

We usually only see the final "Sources" list, but the **fan-out queries** are the breadcrumbs the AI followed to get there.

## What the bookmarklet does

This tool uses your existing logged-in browser session to load the same conversation JSON the web app uses. It does not require an OpenAI API key; it simply performs the same class of request you can inspect yourself in your browser's DevTools.

Once you click it on a conversation page, it opens a **new tab** where it organizes all the hidden technical data into a readable format.

## What It Retrieves

The bookmarklet extracts several key layers of data that are usually hidden in the UI:

* **Fan-out search queries:** The actual strings ChatGPT typed into a search engine.
* **Detailed citations:** Every URL cited in the response.
* **Web search result snippets:** The short page titles and excerpts the AI reviewed for each search hit.

## Why It's Important to Know ChatGPT "Thoughts"

If you are working in SEO/GEO, seeing this information is crucial for a few simple reasons:

* **Organic Ranking Visibility:** You can see if your site actually appeared in the search results ChatGPT looked at.
* **Source Tracking:** You can see which sites the AI is actually relying on to form its opinion of your industry.
* **Content Gaps:** If the AI is searching for "Pricing for [Your Brand]" and finding nothing, you know what content you need to create.

## How to Install the Bookmarklet on Chrome

This works for **Google Chrome** on desktop.

1.  **Show your bookmarks bar:** Use **Ctrl + Shift + B** (Windows) or **⌘ + Shift + B** (macOS).
2.  **Create a new bookmarklet:** Right-click an empty area of the bar and choose **Add page...**.
3.  **Name it:** Call it something like `ChatGPT Fan-out`.
4.  **Paste the script:** In the URL field, paste the **entire** code block below. It must start with `javascript:`.
*Chrome bookmarklet dialog: name “ChatGPT Fan-out”, URL field with javascript: bookmark*
5.  **Run the shortcut:** Click the shortcut while on a ChatGPT tab (you must be logged in). 
*ChatGPT conversation open in the browser with the fan-out bookmarklet on the bookmarks bar*
6.  **Check out the result:** A new tab will open displaying all the extracted data.
*New tab showing extracted fan-out queries, citations, and web search rows from ChatGPT*



## The Bookmarklet Code
I know we probably haven't met yet, and I’ll be the first to admit that pasting a block of code into your browser can feel a little sketchy—it definitely did for me the first time. 

If you want a second opinion, feel free to paste the code into your favorite LLM and ask: `Does this code contain anything malicious, and can the author access my ChatGPT conversations?` It’s a great way to verify everything for yourself. This script runs entirely on the page origin (`chatgpt.com`), uses your existing session, and never sends data to external servers. 

I also follow a strict privacy-first approach and do not use tracking cookies, which is why you won't see a cookie banner on my site. You can [read my privacy policy](/en/privacy/) for full details.

```
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="SEO/GEO Specialist",i=e+"/en/";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\nRun this bookmark on chatgpt.com or chat.openai.com, with a conversation page open.");const b=location.pathname.match(/\/c\/([a-z0-9-]+)/i)?.[1];if(!b)return void alert("No conversation ID in the address bar (/c/...). You may not be signed in to ChatGPT. An account is required for the script to work.");if(s=window.open("","_blank"),!s)return void alert("ChatGPT Fan-Out\n\nYour browser blocked the new tab. Allow pop-ups for ChatGPT and try again.");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\nCould not read your ChatGPT session. Sign in at chatgpt.com, reload this conversation, then run the bookmark again.");const C=`/backend-api/conversation/${encodeURIComponent(b)}`,v=await fetch(C,{credentials:"include",headers:{Authorization:"Bearer "+y,"Content-Type":"application/json"}});if(!v.ok)throw s.close(),new Error("Conversation fetch failed: "+v.status);const k=await v.json(),E=new Set,q=[],N=[],T=[];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&&!E.has(t)&&(E.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;T.push({title:e.title,url:t,snippet:e.snippet})}});for(const n in t)"entries"!==n&&e(t[n])}}(k);const A=new Set,_=[];function d(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 p(e,t){const n=String(e||"").trim();if(!/^https?:\/\//i.test(n))return;const a=l(n),r=d(a);if(!r||A.has(r))return;if(function(e){if(!e)return!1;for(let t=0;t<T.length;t++)if(d(T[t].url)===e)return!0;return!1}(r))return;A.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\./,""))?"Product thumbnail — "+e:"Product thumbnail"}_.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):"";p(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()&&p(e.trim(),n)})}const n=e.safe_urls;if(Array.isArray(n))for(const e of n)"string"==typeof e&&e.trim()&&p(e.trim(),"")}const r=n.safe_urls;if(Array.isArray(r))for(const e of r)"string"==typeof e&&e.trim()&&p(e.trim(),"")}}(k),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)}}(k,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)}(k,0),!(q.length||N.length||T.length||_.length))return s.close(),void alert("Nothing to export from this conversation: no fan-out queries, web results, reflections, or cited links were found. Try a reply that used web search, citations, or product-style links.");const j=s.document;j.open(),j.write('<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ChatGPT Fan-Out</title></head><body></body></html>'),j.close();const z=j.createElement("link");z.rel="icon",z.type="image/svg+xml",z.href=t,j.head.appendChild(z);const S=j.createElement("link");S.rel="stylesheet",S.href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap",j.head.appendChild(S);const F=j.createElement("style");F.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(""),j.head.appendChild(F);const P=j.createElement("div");P.className="topbar";const I=j.createElement("div");I.className="topbar-inner";const G=j.createElement("a");G.className="brand",G.href=e+"/en/",G.target="_blank";const R=j.createElement("img");R.className="brand-logo",R.src=n,R.alt=a,R.width=40,R.height=40;const L=j.createElement("span");L.className="brand-line";const U=j.createElement("span");U.className="brand-name",U.textContent=a;const O=j.createElement("span");O.className="brand-sep",O.textContent=" | ";const B=j.createElement("span");B.className="brand-role",B.textContent=o,L.appendChild(U),L.appendChild(O),L.appendChild(B),G.appendChild(R),G.appendChild(L),I.appendChild(G),P.appendChild(I),j.body.appendChild(P);const H=j.createElement("div");H.className="toast",H.id="toast",H.textContent="Copied!",j.body.appendChild(H);const D=j.createElement("div");D.id="main-content",j.body.appendChild(D);const Q=j.createElement("div");Q.className="header";const $=j.createElement("div");$.className="header-main";const M=j.createElement("h1");M.textContent="ChatGPT Fan-Out";const W=j.createElement("span");W.className="pill pill-cid",W.textContent=b,M.appendChild(W);const Y=j.createElement("p");function m(){return _.map(e=>String(e.url).trim()).join("\n")}function u(){return T.map(e=>String(e.url).trim()).join("\n")}function f(){return q.map(e=>e.q).join("\n")}Y.className="subtle",Y.textContent="This bookmarklet extracts from the open ChatGPT thread the queries it searched, the sites it links to in the reply, and URLs from its web search results.",$.appendChild(M),$.appendChild(Y);const V=j.createElement("button");V.textContent="Copy all",V.onclick=()=>x(function(){const e=[];return q.length&&e.push("--- Fan Out Queries ---\n"+f()),N.length&&e.push("--- Reasoning / thoughts ---\n"+N.join("\n\n")),_.length&&e.push("--- Citations ---\n"+m()),T.length&&e.push("--- Web search results ---\n"+u()),e.join("\n\n")}(),j),Q.appendChild($),Q.appendChild(V),D.appendChild(Q);const J="Searches made by ChatGPT to give you an answer.",X="Websites ChatGPT proposes in its answer—the links you can open from the reply.",K="These rows are what the chat export saves as web-search results for this thread: a page title, link, and short excerpt (snippet) per hit. The file does not say if the model opened the full page or only had this excerpt, and it does not say which search engine was used.";function g(e,t,n){const a=j.createElement("div");a.className="section-intro";const r=j.createElement("div");r.className="section-head";const o=j.createElement("div");o.className="section-head-main";const i=j.createElement("h2");if(i.textContent=e,o.appendChild(i),t){const e=j.createElement("p");e.className="section-desc",e.textContent=t,o.appendChild(e)}const s=j.createElement("div");s.className="section-actions";for(let e=0;e<n.length;e++){const t=n[e],a=j.createElement("button");a.textContent=t.label,a.onclick=()=>x(t.getText(),j),s.appendChild(a)}r.appendChild(o),r.appendChild(s),a.appendChild(r),D.appendChild(a)}if(q.length){g("Fan Out Queries",J,[{label:"Copy all queries",getText:f}]);const pe=j.createElement("div");pe.className="block-card",q.forEach(e=>{const t=j.createElement("div");t.className="query-row";const n=j.createElement("div");n.className="query-text",n.textContent=e.q;const a=j.createElement("div");a.className="query-row-actions";const r=j.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="Search this query on Google";const o=j.createElement("img");o.src="https://www.google.com/favicon.ico",o.alt="Google",o.width=20,o.height=20,r.appendChild(o);const i=j.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="Search this query on Bing";const s=j.createElement("img");s.src="https://www.bing.com/favicon.ico",s.alt="Bing",s.width=20,s.height=20,i.appendChild(s);const l=j.createElement("button");l.textContent="Copy",l.onclick=()=>x(e.q,j),a.appendChild(r),a.appendChild(i),a.appendChild(l),t.appendChild(n),t.appendChild(a),pe.appendChild(t)}),D.appendChild(pe)}if(N.length){g("Reasoning / thoughts",null,[{label:"Copy thoughts",getText:()=>N.join("\n\n")}]);const he=j.createElement("div");he.className="block-card";const me=j.createElement("pre");me.className="block-pre",me.textContent=N.join("\n\n"),he.appendChild(me),D.appendChild(he)}if(_.length){g("Citations",X,[{label:"Copy citations",getText:m}]);const ue=j.createElement("div");if(ue.className="block-card",_.forEach(e=>{const t=j.createElement("div");t.className="query-row cited-query-row";const n=j.createElement("div");n.className="cited-row-main";const a=j.createElement("div");if(a.className="cited-row-title",e.isProductThumbnail){const t=j.createElement("span");t.className="cited-thumb-star",t.textContent="*",t.title="See note below.",a.appendChild(t),a.appendChild(j.createTextNode(" "+e.title))}else a.textContent=e.title;const r=j.createElement("div");r.className="cited-row-url";const o=j.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=j.createElement("div");i.className="query-row-actions";const s=j.createElement("button");s.textContent="Copy",s.onclick=()=>x(e.url,j),i.appendChild(s),t.appendChild(n),t.appendChild(i),ue.appendChild(t)}),D.appendChild(ue),_.some(e=>e.isProductThumbnail)){const fe=j.createElement("p");fe.className="cited-footnote",fe.textContent="* Retailer and shopping-panel links are often absent from the saved conversation; this bookmarklet cannot retrieve them yet—only the preview thumbnail URL from the export is shown here.",D.appendChild(fe)}}if(T.length){g("Web search results",K,[{label:"Copy search URLs",getText:u}]);const ge=j.createElement("div");ge.className="block-card cited-block",T.forEach(e=>{const t=j.createElement("div");t.className="entry";const n=j.createElement("div");n.className="entry-title",n.textContent=e.title;const a=j.createElement("div");a.className="search-result-url-wrap";const r=j.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=j.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)}),D.appendChild(ge);const xe=j.createElement("p");xe.className="search-sources-footnote",xe.textContent="ChatGPT may retrieve or use more web results than you see in the UI; this table only lists the search-source rows saved in this conversation export.",D.appendChild(xe)}const Z=j.createElement("div");Z.className="author-card";const ee=j.createElement("div");ee.className="author-head";const te=j.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=j.createElement("div");ne.className="author-head-text";const ae=j.createElement("div");ae.className="author-name-row";const re=j.createElement("div");re.className="author-gradient-box";const oe=j.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=j.createElement("span");ie.className="author-display-name",ie.textContent=a,ae.appendChild(re),ae.appendChild(ie);const se=j.createElement("span");se.className="author-role-line",se.textContent=o,ne.appendChild(ae),ne.appendChild(se),ee.appendChild(te),ee.appendChild(ne);const le=j.createElement("p");le.className="author-bio",le.appendChild(j.createTextNode("Hi, I'm Quentin, an SEO/GEO Specialist. I write on the search industry on "));const ce=j.createElement("a");ce.className="link",ce.href=i,ce.target="_blank",ce.textContent="my personal blog",le.appendChild(ce),le.appendChild(j.createTextNode(". I document where search is heading and share the practical strategies I actually use to navigate the AI shift. No promises of replacing your marketing team with AI agents, get-rich-quick schemes, or spinning thousands of articles. Just notes and experiments to figure out this new landscape."));const de=j.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=j.getElementById("toast");e.classList.add("show"),setTimeout(()=>e.classList.remove("show"),2e3)}()}catch{alert("ChatGPT Fan-Out\n\nClipboard copy failed. Try again or copy the text manually.")}t.body.removeChild(n)}de.className="linkedin-btn",de.href="https://www.linkedin.com/in/quentin-yacoub-seo-geo-specialist/?locale=en_US",de.target="_blank",de.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> '),de.appendChild(j.createTextNode("Connect on LinkedIn")),Z.appendChild(ee),Z.appendChild(le),Z.appendChild(de),D.appendChild(Z)}catch(be){if(s&&!s.closed)try{s.close()}catch{}alert("ChatGPT Fan-Out\n\nCould not load the conversation (network issue, session, or OpenAI changed the API). If you are signed in, open DevTools → Network, refresh the chat, and check that requests still go to /backend-api/conversation/{id}."),console.error(be)}})();
```

## Potential Errors
The script might return two types of alerts based on your current session:

1. `No conversation ID in the address bar (/c/...).`
This means the script can't find a specific chat to pull data from.

* **Solution:** Ensure you are on an active ChatGPT conversation page (the URL should contain `/c/` followed by a string of characters). If you are on the homepage, start a chat first or refresh the page.

2. `Nothing to export from this conversation...`
This occurs when the specific response you are viewing didn't trigger a web search or use citations.

* **Solution:** Try a prompt that forces ChatGPT to look for external data. For example: `What are the best Generative Engine Optimization strategies for 2026?`

I have only encountered these two scenarios so far. If you run into any other issues, feel free to [reach out on LinkedIn](https://www.linkedin.com/in/quentin-yacoub-seo-geo-specialist/?locale=en_US) and I will update this list for the community. Since becoming a dad back in December, my time for troubleshooting is a bit more limited, but I’ll do my best to help you get it running.

---
**Cite:** https://quentinyacoub.com/en/blog/chatgpt-53-54-query-fan-out-extraction-bookmarklet/
**License:** CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/), Quentin Yacoub
**Related:** [What is AEM Sites Optimizer?](/en/blog/what-is-aem-sites-optimizer.md) · [My SEO/GEO Technical Stack: Architecture and Results](/en/blog/seo-geo-technical-stack.md) · [Hello World: My First Website](/en/blog/hello-world.md)
**See also:** /llms.txt · /okf/index.md
