ChatGPT Query Fanout Analyzer (Bookmarklet)

This Bookmarklet will help you parse the conversations data from your ChatGPT prompts including the fan-out queries, which URLs rank and what entities are found on the page. It allows you to view the conversation as a Markdown file too.

This was inspired, derived from and adapted from the works of Mike Friedman (TheSEOPUB) and Geeksta.

Parsing Query Fanouts

Whenever you look into your Chrome Devtools Console you see that ChatGPT gives you a ton of informations such as the queries that it sent for each of your prompt via the search_model_queries.

Join the Newsletter

    I’ve created this bookmarklet to help you get to that data easily.

    Adding the Bookmarklet

    To add a bookmarklet, right-click on the bookmark bar.

    Click on “Add Page…”

    Add a name and copy this code in the URL section of the bookmark bar.

    Don’t worry, this is simple, I didn’t add any bad tracking of your stuff in there, simple thing I built for myself and sharing with you.

    javascript:void((async()=>{var%20w=window.open("","_blank");if(!w)return%20alert("Popup%20blocked!%20Please%20allow%20popups%20for%20this%20site.");var%20ft="<link%20rel='preconnect'%20href='https://fonts.googleapis.com'><link%20rel='preconnect'%20href='https://fonts.gstatic.com'%20crossorigin><link%20href='https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'%20rel='stylesheet'>";var%20st="<style>*{box-sizing:border-box}body{background:%23000;color:%23FFF;font-family:'Poppins',sans-serif;margin:0;padding:20px}%23c{width:100%;max-width:1600px;margin:0%20auto}h1{text-align:center;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:10px}.logo{height:28px;margin-right:15px;filter:brightness(0)%20invert(1)}h2{text-align:center;color:%23eee;font-weight:400;font-size:20px;margin-bottom:20px;margin-top:5px}.cred{text-align:center;font-size:11px;color:%23666;margin-bottom:15px;font-family:monospace}.cred%20a{color:%2300EB5B;text-decoration:none}.cred%20a:hover{text-decoration:underline}.ctrl{background:%23121212;padding:15px;border-radius:8px;border:1px%20solid%20%23333;margin-bottom:20px;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;align-items:center;position:relative}.btn{background:%23000;color:%2300EB5B;border:1px%20solid%20%2300EB5B;padding:8px%2016px;cursor:pointer;border-radius:4px;font-weight:700;font-size:13px;transition:0.2s}.btn:hover{background:%2300EB5B;color:%23000}.tn{background:%23121212;border-radius:8px;margin-bottom:20px;border:1px%20solid%20%23333;overflow:hidden}.th{background:%23000;padding:15px%2020px;color:%2300EB5B;font-weight:700;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-bottom:1px%20solid%20%23333;font-size:15px}.th:hover{background:%231a1a1a}.ar{transition:transform%20.2s}.cl%20.ar{transform:rotate(-90deg)}.cols{padding:15px;display:grid;grid-template-columns:repeat(auto-fit,%20minmax(250px,%201fr));gap:15px}.col{background:%23000;border:1px%20solid%20%23333;border-radius:6px;display:flex;flex-direction:column}.ch{padding:10px;border-bottom:1px%20solid%20%23333;font-weight:700;color:%23888;font-size:12px;text-transform:uppercase;background:%230a0a0a;display:flex;justify-content:space-between}.it{background:%231a1a1a;padding:12px;margin:10px;border-radius:4px;font-size:13px;border:1px%20solid%20%23333;word-break:break-word}.ih{border-left:3px%20solid%20%2300EB5B}.sm{display:flex;justify-content:space-between;margin-bottom:6px;font-size:11px;color:%23aaa}.sb{padding:2px%206px;border-radius:3px;font-weight:700;color:%23000;font-size:10px}.type-Primary{background:%2300EB5B}.type-Grouped{background:%23FFFF59}.type-Sidebar{background:%235FEAFF}.type-Footnote{background:%23C197FF}.type-Supporting{background:%239Bf2FF}.type-Business{background:%23FF9626}.type-Tool{background:%23FFED0E}.type-Image{background:%23FF4E51}.type-Attachment{background:%23D1FF73}.type-Entity{background:%23FFA0E9}.type-ImgGroup{background:%23FFA500}.type-Decision{background:%23FF00FF}.type-Model{background:%23FF4500}.sti{font-weight:700;color:%2300EB5B;margin-bottom:4px;font-family:monospace}.ri{font-size:10px;background:%23000;color:%2300EB5B;padding:2px%205px;border:1px%20solid%20%2300EB5B;vertical-align:middle;margin-left:8px}.su{font-size:12px;color:%23888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;margin-bottom:4px;text-decoration:none}.ssn{font-size:11px;color:%23ccc;background:%23000;padding:8px;border-radius:4px;margin-top:6px;border:1px%20solid%20%23222;white-space:pre-wrap;font-family:monospace}.cp{background:transparent;border:1px%20solid%20%23555;color:%23aaa;font-size:10px;cursor:pointer}.cp:hover{color:%2300EB5B;border-color:%2300EB5B}.ms-con{position:relative;display:inline-block}.ms-btn{min-width:180px;text-align:left;display:flex;justify-content:space-between}.ms-drop{display:none;position:absolute;top:100%;left:0;background:%23222;border:1px%20solid%20%23444;border-radius:4px;z-index:1000;width:100%;padding:8px;box-shadow:0%2010px%2020px%20rgba(0,0,0,0.5)}.ms-row{display:flex;align-items:center;padding:4px%200;cursor:pointer;font-size:13px;color:%23ddd}.ms-row:hover{color:%23fff}.ms-chk{margin-right:10px;accent-color:%2300EB5B}%23md{display:none;width:100%;margin-top:20px}%23mt{width:100%;height:70vh;background:%23121212;color:%2300EB5B;border:1px%20solid%20%23333;padding:20px;font-family:monospace;border-radius:8px}.av{font-size:10px;color:%23888;font-weight:400;text-transform:uppercase;margin-top:4px}</style>";w.document.write("<!DOCTYPE%20html><html><head><title>ChatGPT%20Analyzer</title>"+ft+st+"</head><body><p%20style='font-weight:700;margin-top:20px'>Fetching...</p></body></html>");try{var%20cid=location.pathname.match(/\/c\/([^/]+)/)?.[1];if(!cid)throw%20new%20Error("Open%20a%20chat%20first.");var%20s=await%20fetch("/api/auth/session").then(r=>r.json());var%20r=await%20fetch(`/backend-api/conversation/${cid}`,{headers:{Authorization:"Bearer%20"+s.accessToken,"Content-Type":"application/json"}});if(!r.ok)throw%20new%20Error("Fetch%20error");var%20d=await%20r.json();var%20gm=new%20Map();var%20fd=t=>typeof%20t==="number"?new%20Date(t*1000).toLocaleDateString():t||"";for(var%20id%20in%20d.mapping){var%20n=d.mapping[id],m=n.message?.metadata,c=n.message?.content;let%20q=[],st=[],fn=[],l=[],sw=[],en=[],ig=[],dc=[];var%20ss=new%20Set(),sl=new%20Set(),sfn=new%20Set(),ssw=new%20Set(),sen=new%20Set(),sig=new%20Set();var%20al=(arr,set,o,ty,rk=null,fri=null)=>{if(!o.url&&!o.ti)return%20false;var%20cl=(o.url||o.ti).trim().replace(/\/$/,"");if(set.has(cl))return%20false;set.add(cl);var%20ri=fri??(o.refs?.[0]?.ref_index);arr.push({u:o.url||"",t:ty,ti:o.title||"No%20Title",sn:o.snippet||"",at:o.attribution||"",dt:fd(o.pub_date),r:rk,ri:ri});return%20true};if(m?.search_model_queries?.queries)m.search_model_queries.queries.forEach(x=>q.push({t:x,h:true}));if(m?.search_queries)m.search_queries.forEach(x=>q.push({t:x.q,h:false}));if(m?.search_result_groups)m.search_result_groups.forEach(g=>g.entries?.forEach(e=>al(st,ss,e,"Grouped%20Citation")));if(m?.content_references)m.content_references.forEach(x=>{if(x.cite_map)Object.values(x.cite_map).forEach(v=>al(st,ss,v,"Sidebar%20Citation"));if(x.type==="businesses_map"&&x.businesses)x.businesses.forEach(b=>al(st,ss,{url:b.website_url,title:b.name,snippet:b.address,attribution:"Map%20Result"},"Business%20Map"));if((x.type==="sources_footnote"||x.type==="sources_footnotes")&&x.sources)x.sources.forEach(src=>al(fn,sfn,src,"Footnote%20Source"))});let%20pr=1;if(m?.content_references)m.content_references.forEach(x=>{if(x.type==="grouped_webpages"&&x.items)x.items.forEach(i=>{var%20pri=(i.refs?.[0]?.ref_index);if(al(l,sl,i,"Primary%20Citation",pr))pr++;if(i.supporting_websites)i.supporting_websites.forEach(s=>al(sw,ssw,s,"Supporting%20Web",null,pri))})});if(m?.image_results)m.image_results.forEach(i=>al(l,sl,{url:i.url||i.content_url,title:i.title},"Image"));if(m?.attachments)m.attachments.forEach(a=>al(l,sl,{url:a.url,title:a.name},"Attachment"));let%20txt="";if(c?.parts){txt=c.parts.join("\n");var%20rig=/\uE200image_group\uE202(.*?)\uE201/g;let%20mig;while((mig=rig.exec(txt))!==null){try{var%20j=JSON.parse(mig[1]);var%20t=JSON.stringify(j);if(!sig.has(t)){sig.add(t);ig.push({t:"ImgGroup",ti:t,sn:"",u:""})}}catch(e){}}var%20ren=/\uE200entity\uE202(.*?)\uE201/g;let%20men;while((men=ren.exec(txt))!==null){try{var%20j=JSON.parse(men[1]);var%20t=j[1],ty=j[0],det=j[3]?JSON.stringify(j[3]):"";if(!sen.has(t)){sen.add(t);en.push({t:"Entity",ti:t,sn:ty+(det?"%20|%20"+det:""),u:""})}}catch(e){}}}if(q.length||st.length||fn.length||l.length||sw.length||en.length||ig.length||dc.length||(txt&&n.message.author.role==="assistant")){let%20pt=n.parent,pm="[Start]";for(let%20i=0;i<25;i++){var%20p=d.mapping[pt];if(!p)break;if(p.message?.author?.role==="user"){var%20px=p.message.content.parts;pm=Array.isArray(px)?px.join(" "):px;break}pt=p.parent}if(!gm.has(pm))gm.set(pm,{p:pm,q:[],st:[],fn:[],l:[],sw:[],en:[],ig:[],dc:[],txt:"",models:new%20Set(),uniqDec:new%20Set()});var%20g=gm.get(pm);g.q.push(...q);g.st.push(...st);g.fn.push(...fn);g.l.push(...l);g.sw.push(...sw);g.en.push(...en);g.ig.push(...ig);if(n.message?.author?.role==="assistant"&&m?.model_slug)g.models.add(m.model_slug);if(txt&&n.message.author.role==="assistant")g.txt+=txt+"\n\n"}}gm.forEach(g=>{if(g.models.size){g.dc.unshift({t:"Model",ti:Array.from(g.models).join(",%20"),sn:"Generative%20Models",u:""})}});var%20grps=Array.from(gm.values());var%20doc=w.document;doc.open();doc.write("<!DOCTYPE%20html><html><head><title>ChatGPT%20Analyzer</title>"+ft+st+"</head><body></body></html>");doc.close();var%20ct=doc.createElement("div");ct.id="c";ct.innerHTML=`<h1>ChatGPT%20Conversations%20Analyzer</h1><div%20class="cred">Created%20by:%20<a%20href="https://www.jcchouinard.com/"%20target="_blank">Jean-Christophe%20Chouinard</a></div><h2>Conversation%20Title:%20${d.title}</h2>`;var%20cb=doc.createElement("div");cb.className="ctrl";var%20msCon=doc.createElement("div");msCon.className="ms-con";var%20msBtn=doc.createElement("button");msBtn.className="btn%20ms-btn";msBtn.innerHTML="Visible%20Columns%20<span>▼</span>";var%20msDrop=doc.createElement("div");msDrop.className="ms-drop";var%20colsState={"Model%20Info":true,"Queries":true,"Entities":true,"Footnotes":true,"Steps":false,"Links":false,"Supporting":false,"Image%20Groups":false};Object.keys(colsState).forEach(k=>{var%20row=doc.createElement("div");row.className="ms-row";var%20chk=doc.createElement("input");chk.type="checkbox";chk.className="ms-chk";chk.checked=colsState[k];chk.onclick=(e)=>{e.stopPropagation();colsState[k]=e.target.checked;rdr()};row.onclick=(e)=>{if(e.target!==chk){chk.checked=!chk.checked;colsState[k]=chk.checked;rdr()}};var%20lbl=doc.createElement("span");lbl.textContent=k;row.append(chk,lbl);msDrop.appendChild(row)});msBtn.onclick=(e)=>{e.stopPropagation();msDrop.style.display=msDrop.style.display==="block"?"none":"block"};doc.onclick=()=>msDrop.style.display="none";msCon.append(msBtn,msDrop);cb.appendChild(msCon);var%20mkBtn=(txt,fn)=>{var%20b=doc.createElement("button");b.className="btn";b.textContent=txt;b.onclick=fn;cb.appendChild(b)};mkBtn("Expand%20All",()=>{doc.querySelectorAll(".cols").forEach(el=>el.style.display="grid");doc.querySelectorAll(".th").forEach(el=>el.classList.remove("cl"))});mkBtn("Collapse%20All",()=>{doc.querySelectorAll(".cols").forEach(el=>el.style.display="none");doc.querySelectorAll(".th").forEach(el=>el.classList.add("cl"))});var%20dld=(c,n)=>{var%20b=new%20Blob([c],{type:'text/csv;charset=utf-8;'});var%20l=doc.createElement("a");l.href=URL.createObjectURL(b);l.download=n;l.click()};var%20esc=t=>(t===null||t===undefined)?'""':'"'+String(t).replace(/"/g,'""')+'"';mkBtn("Export%20Selected",async()=>{var%20km={"Model%20Info":"dc","Queries":"q","Steps":"st","Footnotes":"fn","Links":"l","Supporting":"sw","Image%20Groups":"ig","Entities":"en"};var%20act=Object.keys(colsState).filter(k=>colsState[k]);if(!act.length)return%20alert("Select%20columns%20first");for(var%20k%20of%20act){let%20c="",h=false;if(k==="Queries")c="User%20Query,Search%20Queries\n";else%20if(k==="Entities")c="User%20Query,Entities\n";else%20if(k==="Image%20Groups")c="User%20Query,Image%20Group\n";else%20if(k==="Model%20Info")c="User%20Query,Info%20Type,Value\n";else%20c="User%20Query,Type,Title,URL,Snippet\n";grps.forEach(g=>{var%20ar=g[km[k]];if(ar&&ar.length){h=true;ar.forEach(x=>{if(k==="Queries")c+=`${esc(g.p)},${esc(x.t)}\n`;else%20if(k==="Entities"||k==="Image%20Groups")c+=`${esc(g.p)},${esc(x.ti)}\n`;else%20if(k==="Model%20Info")c+=`${esc(g.p)},${esc(x.ti)},${esc(x.sn)}\n`;else%20c+=`${esc(g.p)},${k},${esc(x.ti)},${esc(x.u)},${esc(x.sn)}\n`})}});if(h){dld(c,k.replace(/\s+/g,"_")+"_Report.csv");await%20new%20Promise(r=>setTimeout(r,750))}}});mkBtn("View%20Markdown",(e)=>{var%20m=doc.getElementById("md"),da=doc.getElementById("display-area");var%20s=m.style.display==="none";m.style.display=s?"block":"none";da.style.display=s?"none":"block";e.target.textContent=s?"View%20Report":"View%20Markdown"});ct.appendChild(cb);var%20da=doc.createElement("div");da.id="display-area";ct.appendChild(da);let%20mdt=`%23%20${doc.title}\n\n`;grps.forEach((g,i)=>{mdt+=`%23%23%23%20PROMPT%20${i+1}\n\n${g.p}\n\n%23%23%23%20RESPONSE%20${i+1}\n\n${g.txt}\n\n---\n\n`});var%20md=doc.createElement("div");md.id="md";md.innerHTML=`<textarea%20id="mt"%20readonly>${mdt}</textarea>`;ct.appendChild(md);var%20rc=(ti,it,dst)=>{if(!it||!it.length)return;var%20cl=doc.createElement("div");cl.className="col";var%20hd=doc.createElement("div");hd.className="ch";hd.innerHTML=`<span>${ti}%20(${it.length})</span>`;var%20cpb=doc.createElement("button");cpb.className="cp";cpb.textContent="Copy";cpb.onclick=()=>{navigator.clipboard.writeText(it.map(x=>x.u||x.t||x.ti).join("\n")).then(()=>alert("Copied!"))};hd.appendChild(cpb);cl.appendChild(hd);it.forEach(x=>{if(x.t&&!x.u&&!x.ti){cl.innerHTML+=`<div%20class="it%20${x.h?'ih':''}">${x.t}</div>`}else{let%20rk=x.r?`<span%20style="background:%2300EB5B;color:%23000;padding:1px%205px;border-radius:3px;margin-right:5px">%23${x.r}</span>`:"";let%20ri=(x.ri!=null)?`<span%20class="ri">Ref:%20${x.ri}</span>`:"";cl.innerHTML+=`<div%20class="it"><div%20class="sm"><span%20class="sb%20type-${x.t.split(" ")[0]}">${x.t}</span><span>${x.at}%20${x.dt?'•%20'+x.dt:''}</span></div><div%20class="sti">${rk}${x.ti}${ri}</div>${x.u?`<a%20class="su"%20href="${x.u}"%20target="_blank">${x.u}</a>`:""}${x.sn?`<div%20class="ssn">${x.sn}</div>`:""}</div>`}});dst.appendChild(cl)};var%20rdr=()=>{da.innerHTML="";grps.forEach(g=>{var%20tn=doc.createElement("div");tn.className="tn";var%20th=doc.createElement("div");th.className="th";let%20av=[];if(g.dc.length)av.push("Model%20Info");if(g.q.length)av.push("Queries");if(g.en.length)av.push("Entities");if(g.fn.length)av.push("Footnotes");if(g.l.length)av.push("Links");if(g.ig.length)av.push("Image%20Groups");th.innerHTML=`<div%20style="display:flex;flex-direction:column;gap:4px"><span>${g.p}</span>${av.length?`<div%20class="av">Available:%20${av.join(",%20")}</div>`:""}</div><span%20class="ar">▼</span>`;th.onclick=function(){var%20n=this.nextElementSibling;var%20h=n.style.display==="none";n.style.display=h?"grid":"none";if(h)this.classList.remove("cl");else%20this.classList.add("cl")};tn.appendChild(th);var%20cls=doc.createElement("div");cls.className="cols";if(colsState["Model%20Info"])rc("Model%20Info",g.dc,cls);if(colsState["Queries"])rc("Queries",g.q,cls);if(colsState["Steps"])rc("Steps",g.st,cls);if(colsState["Footnotes"])rc("Footnotes",g.fn,cls);if(colsState["Links"])rc("Links",g.l,cls);if(colsState["Supporting"])rc("Supporting",g.sw,cls);if(colsState["Image%20Groups"])rc("Image%20Groups",g.ig,cls);if(colsState["Entities"])rc("Entities",g.en,cls);tn.appendChild(cls);da.appendChild(tn)})};rdr();doc.body.appendChild(ct)}catch(e){w.document.body.innerHTML=`<h2%20style='color:red;text-align:center;font-family:Poppins,sans-serif'>${e.message}</h2>`}})())

    3.7/5 - (18 votes)