geo · aeo · seo · citations · search-intelligence

How to Mine LLM Citation Results for Search Intelligence

A reproducible workflow for turning ChatGPT, Gemini, Perplexity and Google AI citations into URL-level evidence for content, outreach and competitive analysis.

LLM citation mining turns answer-engine results into a dataset you can audit. Save each prompt run, the full answer, every source shown to the user, the exact URL behind that source, and the claim or passage it appears to support. Normalize the URLs only after preserving the originals. Then compare citation frequency, source type, ownership, engine overlap and answer contribution across repeated runs.

A domain list is not enough. reddit.com tells you almost nothing about the thread, claim or action that produced the citation. A useful record connects one prompt run to one answer, one citation event, one page and, where the interface allows it, one supported claim.

What counts as an LLM citation?

An LLM citation is a source attribution that an answer engine presents to the user as support for its answer. It may appear as an inline link, numbered footnote, source card or linked page title. A plain-text brand or domain name is a mention unless the interface attributes a source.

Keep four events separate:

Event What you observed What it proves
Mention An entity appears in the answer The model included the entity
Citation The interface attributes a visible source The engine surfaced that source
Retrieval A system fetched or considered a page The page entered the candidate set
Absorption The answer uses a claim, fact, wording or structure from the page The page contributed to the answer

Most commercial exports expose mentions and citations. They rarely expose the complete retrieval set, so do not describe every displayed citation as “a page the model read.” Retrieval and citation can diverge. Research based on roughly 14,000 search-enabled conversations found systems sometimes used online material without providing equivalent source attribution. A separate 2026 measurement framework calls the two observable outcomes citation selection and citation absorption: whether a page is cited, and how much of its evidence appears in the answer.

This boundary affects every conclusion. Citation count measures displayed attribution. It does not measure every page retrieved, every source used internally or causal influence on the model.

Which fields should you collect?

Use an event table rather than one row per domain. One answer can cite several pages, and the same page can support several claims.

Field Purpose
run_id Unique key for one prompt execution
observed_at UTC timestamp of the run
engine ChatGPT, Gemini, Perplexity, AI Overview, AI Mode or another surface
model_or_surface Visible model/version or product surface when available
country and language Location and language can change retrieval
prompt_id Stable key for the prompt concept
prompt_text Exact wording used in this run
prompt_segment Branded, category, problem, comparison, local or another fixed segment
run_number Repeat number for the same prompt and conditions
answer_text Full answer as displayed
citation_position Position in the answer or source panel
source_label Title or label shown by the engine
observed_url Exact link captured from the interface
resolved_url Destination after redirects
canonical_url Page-declared canonical after verification
registrable_domain Domain used for aggregation
supported_claim Answer sentence or claim nearest the citation
cited_passage Best-matching page passage, if verified
match_method Inline mapping, exact text, semantic match or unknown
match_confidence Confidence in the claim-to-passage mapping
fetch_status HTTP and extraction result
page_title and page_h1 Page identification and classification context
published_at and modified_at Freshness analysis
taxonomy fields Ownership, publisher type, page format, intent and actionability

Preserve observed_url, resolved_url and canonical_url as separate columns. Removing a tracking parameter is reversible; replacing the observed URL with a declared canonical is not. A canonical can be wrong, redirects can cross domains, and two URLs with similar titles can be different pages.

How should you design the prompt panel?

A prompt panel should represent the decisions people make in the category. Build segments before writing individual prompts so one easy-to-measure query type does not dominate the results.

Start with these segments:

  1. Category: “What are the best payroll tools for a 20-person company?”
  2. Problem: “How do I reduce payroll errors across two countries?”
  3. Comparison: “Product A vs Product B for a distributed team.”
  4. Attribute: “Which payroll platform supports contractor payments?”
  5. Branded: “Is Product A reliable for international payroll?”
  6. Local or regulated: add location, language or compliance constraints where they affect the decision.

For a tourism pilot, hold the destination constant and vary the traveller’s job. An Istanbul panel might ask where a first-time visitor should stay, which hotels fit a family near Sultanahmet, how to travel from the airport, whether a solo traveller faces specific safety risks and which entry rules apply to a declared nationality. Record dates, budget, party type, currency and country of origin where they can change the answer.

Freeze the exact wording during a measurement window. If you change a prompt, assign a new version instead of editing the historical record. Record account state, location and search/browsing mode where visible.

Run every prompt more than once. Citation results vary even when the wording stays fixed. A single answer is an example; repeated runs reveal whether a source is stable, occasional or a one-off.

How do you capture citations across different engines?

Capture what the user can verify on each surface. Store the raw response before converting it into a common schema.

  • Inline markers: save the answer sentence, marker number and linked URL.
  • Source panels: save the visible label and the actual link target. The two may not match the same URL.
  • Citation cards: preserve card order, page title, domain and target URL.
  • Domain-only references: keep the domain as an observation, but leave the cited URL empty.
  • No citation: save the run with zero citation events. Missing results belong in the denominator.

Do not reconstruct a page URL from a displayed domain. If an answer says “check Yelp” without linking a specific page, record a mention. Guessing the homepage creates fake evidence and contaminates outreach lists.

How should cited URLs be normalized?

Normalize in stages and keep an audit trail.

  1. Store the exact observed link.
  2. Remove known tracking parameters into a separate normalized field.
  3. Resolve redirects and record the final destination.
  4. Standardize host casing, default ports and fragments.
  5. Check the page canonical instead of trusting it automatically.
  6. Create a page_key only after reviewing parameterized pages in that site’s context.

Do not merge URLs because their titles look alike. Do not collapse every path on a domain into one record. Page-level evidence disappears when domain aggregation happens too early.

How do you fetch and enrich the pages?

Fetch every unique normalized URL and keep failures. A failed fetch may indicate a deleted page, bot block, paywall or JavaScript dependency, each of which changes what you can do next.

Extract:

  • final status code and redirect chain;
  • title, H1 and main text;
  • canonical, publication date and modified date;
  • author or organization;
  • structured data types;
  • headings, tables, lists and evidence-bearing passages;
  • named brands and products;
  • contact or contribution route where outreach is relevant.

Tavily, Firecrawl and similar extractors can produce clean text quickly, but save the source URL and extraction timestamp. Extraction output is derived data. It should never replace the captured citation event or raw page snapshot.

How do you map a citation to the claim it supports?

Start with the interface’s inline mapping. When the engine links a marker to a source, attach the nearest answer sentence or clause to that citation. Where only a source panel exists, label the claim mapping as unknown unless the page contains a clear match.

Use three matching levels:

Level Rule Suitable use
Exact Shared quote, number or distinctive phrase High-confidence evidence mapping
Semantic Passage expresses the same claim without shared wording Analysis with manual review
Unmapped No defensible passage match Citation-frequency analysis only

A citation can be selected without contributing much to the answer. In the public geo-citation-lab dataset, 602 prompts produced more than 21,000 valid search-layer citations and over 18,000 successfully fetched pages. Its analysis found that platforms with more citations did not necessarily show deeper page influence. Count breadth and passage contribution separately.

Which metrics turn the dataset into search intelligence?

Calculate metrics at a declared unit. “Citation share” can mean a share of answers, citation events, unique URLs or unique domains; those numbers are not interchangeable.

Citation frequency

Count how many distinct prompt runs cite a URL. Also report distinct prompts, because ten repeats of one prompt should not outweigh ten separate customer questions without explanation.

Prompt coverage

Measure the share of prompts in a segment where a URL, domain or ownership class appears. This shows whether a source covers one narrow question or a broad decision set.

Stability

For each URL or domain, divide cited repeated runs by eligible repeated runs. Report the denominator. A source cited in two of three runs is different from one cited in two of twenty.

Engine overlap

Compare normalized URL sets by engine with Jaccard overlap. Run the comparison at both URL and domain level; engines may agree on a publisher while choosing different pages.

Source concentration

Calculate the share held by the top domains and a concentration measure such as HHI. A category controlled by five sources needs a different plan from a category with a long citation tail.

Owned, competitor and influenceable share

Separate pages you own, competitor properties, third parties you can influence and sources you cannot realistically change. This turns a visibility report into a work queue.

Citation absorption

Where passage mapping is defensible, count supported claims and evidence types: definitions, numbers, comparisons, procedures or direct quotes. Keep this measure separate from citation selection.

How do citation results become actions?

Each taxonomy combination points to a different action.

Pattern Likely action
Owned page cited repeatedly Protect accuracy, freshness and crawlability
Competitor page cited for an uncovered topic Build a better first-party answer
Independent comparison page cites competitors Prepare an evidence-led inclusion pitch
Review platform dominates commercial prompts Improve profile completeness and review operations
Community thread shapes several answers Participate within community rules; do not manufacture posts
Government or academic page dominates Treat as a standard to cite and explain, not an outreach target
Page selected but claim cannot be mapped Investigate before treating it as an optimization model

The resulting work can feed content briefs, digital PR, review programmes, technical fixes and competitor research. Keep the evidence row attached to the action so an editor can see why it entered the queue.

What mistakes make a citation dataset unreliable?

  • Counting brand mentions as citations.
  • Saving domains when a specific cited URL is available.
  • Replacing original URLs with canonicals and losing the evidence trail.
  • Dropping runs with no citations.
  • Mixing AI Overviews and AI Mode as one Google surface.
  • Comparing engines with different prompt sets or dates.
  • Treating one run as a stable result.
  • Inferring that a cited page caused the answer.
  • Claiming a passage match when only a source card exists.
  • Publishing percentages without naming the denominator.

What should the first deliverable contain?

Ship four linked tables:

  1. prompt_runs: one row per engine, prompt and run.
  2. citation_events: one row per displayed source in an answer.
  3. pages: one row per normalized page with fetch and taxonomy fields.
  4. claim_matches: one row per citation-to-answer-claim mapping.

The next step is to classify the pages table with a taxonomy that keeps ownership, publisher type, page format, intent and actionability separate. That structure is covered in How to Classify Cited URLs in Your Industry with JEV.

Find my problem

Is your business in the answer?

One report, four AI platforms, the questions your customers actually ask.

Join the waitlist