How to Audit ChatGPT Fan-Out Site: Query Targeting and Brand Visibility Over Time
Just to add to above, here is a skill I've been running inside of Profound to get some similar data to that screenshot above, - it struggles with longer period analysis but ok for snapshots
Fan-Out Site: Audit
Purpose
Measures how often ChatGPT's fan-out (web-search sub-query) decomposition explicitly targets a website using the site: operator, and how often that targeting lands on the tracked project's own domain versus other domains/brands. This surfaces whether ChatGPT is treating a site as a directly-searchable, authoritative source โ and which brands it's doing that for most.
Who is this for?
GEO/AI-search team members auditing a tracked project's visibility inside ChatGPT's fan-out search behaviour.
Default parameters
Data period: trailing 3 months (90 days) ending today, unless the user specifies otherwise.
Platform: ChatGPT only.
Chart view: daily, unless the user asks for weekly or monthly instead (see Inputs).
Domain: the project's own tracked domain, resolved automatically from the project profile (e.g. example.com for that project). Not asked per run.
Inputs
Ask for (one or two questions at a time, don't dump them all at once):
Project/client โ which project to run this against. Confirm the match if the name is ambiguous.
Date range โ confirm the default 3-month window, or take an explicit override if given.
Chart view โ ask whether the user wants the charts shown daily, weekly, or monthly. Default to daily if they don't have a preference.
Platform and domain are fixed by the defaults above โ don't ask about these unless the user wants to change them for a specific run.
Instructions
Step 1 โ Resolve the project and its own domain
Find/confirm the project.
Pull the project profile to confirm its own tracked root domain โ this is the domain used for the "your domain" chart (Step 7). If the profile doesn't expose a clean root domain, confirm it with the user once and use that for the rest of the run.
Step 2 โ Pull all ChatGPT fan-out queries for the period
Pull fan-out/search queries for the project across the confirmed date window, filtered to ChatGPT's model channels/model IDs only (see Default parameters).
Request at minimum: date, query text (plus chat/prompt IDs if useful for dedupe).
Paginate through the full result set โ do not truncate. A truncated pull will under-report site: counts, which are often small in absolute terms and easy to lose if you stop early.
Step 3 โ Flag site: queries
For every query, flag it as a "site query" if its text contains the substring site: (case-insensitive), allowing for a following space (site: example.com) as well as no space (site:example.com).
For each flagged query, extract the domain that follows site: (strip whitespace, protocol, and trailing punctuation) to identify which domain was targeted.
Separately flag whether the extracted domain matches the project's own domain from Step 1, allowing for www./no-www and subdomain variants โ but do NOT fuzzy-match genuinely different domains (e.g. example.co.uk and example.com must stay distinct).
Step 4 โ Check: does reddit.com (and specific subreddits) appear?
From the flagged site: queries, check separately whether reddit.com appears as the targeted domain at all.
Within those, check whether the query goes further and targets a specific subreddit path (e.g. site:reddit.com/r/london) rather than the bare domain.
Report as a short callout: total site:reddit.com count, and a breakdown of which subreddits (if any) were specifically targeted, with counts.
Step 5 โ Check: do any site: commands target a folder/path?
From the flagged site: queries, check whether the domain is followed by a folder or path (e.g. site:example.com/folder) rather than just the bare domain.
Report as a short callout: count and % of site: queries that included a folder/path, plus the most common folders seen (if any pattern emerges).
Step 6 โ Chart 1: % of fan-out queries containing site:, over time
Group all queries (flagged and unflagged) by the confirmed chart view (daily/weekly/monthly โ see Inputs).
For each period: (count of site: queries) รท (total fan-out queries) ร 100.
Render as a single-series line chart โ x-axis = date, y-axis = % of queries.
Step 7 โ Chart 2: own-domain site: queries, over time
From the site: queries only, filter to those matching the project's own domain.
Group by the same period granularity as Step 6.
Render as a line chart (use a bar chart instead if counts are mostly zero/very sparse โ it reads more honestly than a flat line at zero).
If the count is consistently very low or zero, say so plainly in the summary โ that's a real and common finding, not a data gap.
Step 8 โ Top 10 brands table
From all site: queries in the window, group by extracted domain and map each domain to a tracked brand/competitor where possible; label any unmapped domain by its raw domain string.
Count occurrences per brand/domain, rank descending, take the top 10.
Render as a table: Brand/Domain | Number of site: mentions | % of all site: queries in the window.
Step 9 โ Chart 3: top 10 brands, over time
For the same top 10 brands/domains identified in Step 8, compute their site: query counts per period (same granularity as Steps 6โ7).
Render as a multi-series line chart, one line per brand (10 series max).
Step 10 โ Write a short summary
Cover, in plain English:
The overall % of fan-out queries using site: over the period, and whether that's trending up, down, or flat.
How the project's own domain compares โ a meaningful share of site: queries, negligible, or effectively absent.
Which brand leads the top 10, and how the tracked brand's own line looks against it (including if the tracked brand doesn't make the top 10 at all).
The reddit.com/subreddit finding from Step 4, and the folder/path finding from Step 5.
Outputs
Callout โ reddit.com / subreddit-level site: targeting
Callout โ folder/path-level site: targeting
Line chart โ % of fan-out queries containing site: over time (ChatGPT only)
Chart โ own-domain site: query volume over time
Table โ top 10 brands/domains by site: mentions in the period
Line chart โ top 10 brands/domains' site: query volume over time
Short written summary
Data Source
Fan-out / web-search sub-query data and brand/domain mapping from the project's tracked search-query and brand data (project profile, search query log, tracked brand list).
Notes
ChatGPT-only by design โ this audits ChatGPT's specific fan-out behaviour, not a cross-engine comparison. If a future version needs Gemini/Perplexity, add an explicit platform parameter, but keep the default ChatGPT-only until asked otherwise.
site: matching is a substring match on the raw query text โ a fan-out query can combine site: with other terms and should still be flagged; it doesn't need to be the entire query.
The top 10 count is fixed for both the table (Step 8) and the line chart (Step 9) โ don't let these drift apart.
Same process applies across all clients โ no client-specific variants for now.