---
title: "Build an AI Citation Gap Map in Google Sheets"
description: "Find the exact pages ChatGPT, Perplexity, and AI Overviews cite instead of yours. Log their URLs, spot the patterns, and turn the gaps into a fix list."
url: "https://groas.com/post/build-a-citation-gap-map-in-one-google-s"
image: "https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/005f618e-ce12-419a-b161-bf037a878eee.png"
published: "2026-10-17T05:35:31.786Z"
modified: "2026-10-17T05:35:31.858Z"
---

October 17, 2026 · 10 min read

# Build an AI Citation Gap Map in Google Sheets

[Alexander PerelmanHead Of Product @ groas](https://groas.com/author/alexander-perelman)[LinkedIn](https://www.linkedin.com/in/alexander-433793253/)

![A tiny surveyor plants an orange flag in the one empty square of a spreadsheet-grid landscape built from stacked web pages owned by others.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/005f618e-ce12-419a-b161-bf037a878eee.png)

In this article

1. [Before you start: the sheet and the baseline](#before-you-start-the-sheet-and-the-baseline)
2. [Step 1: Choose 20 prompts and build the ledger](#step-1-choose-20-prompts-and-build-the-ledger)
3. [Step 2: Run each prompt in three engines and copy the full URLs](#step-2-run-each-prompt-in-three-engines-and-copy-the-full-urls)
4. [Step 3: Extract domains and tag page types](#step-3-extract-domains-and-tag-page-types)
5. [Step 4: Pivot from domains to the exact pages beating yours](#step-4-pivot-from-domains-to-the-exact-pages-beating-yours)
6. [Step 5: Give each losing prompt one next action](#step-5-give-each-losing-prompt-one-next-action)
7. [Step 6: Rerun the prompts and verify the change](#step-6-rerun-the-prompts-and-verify-the-change)
8. [Where the spreadsheet stops](#where-the-spreadsheet-stops)

A buyer asks Perplexity to compare products in your category. It cites a competitor’s comparison page and a review directory, but not yours. **Your gap is those URLs**, not a visibility score telling you that you lost.

I’d treat this like a Google Ads search terms report: collect the rows, find the patterns, then decide what to change. A prompt list tells you where to look. The cited pages tell you what to do. You can pull them into one Google Sheet without a scraping script, paid API key, or dashboard subscription.

## Before you start: the sheet and the baseline

At the end, you’ll have a citation ledger, a domain and page-type breakdown, a view of the URLs winning your target prompts, and a fix list. Set aside about **45 minutes** for the first manual pass and have these ready:

- A blank Google Sheet you can edit.
- ChatGPT with web search available, Perplexity, and Google Search with AI Overviews available.
- Twenty buyer prompts you can rerun later.

Keep the same prompts and test conditions for each pass. This is a working baseline, not a permanent ranking of who owns AI search.

## Step 1: Choose 20 prompts and build the ledger

### Use buyer questions, not brand questions

**Action:** Write five questions about the problem your product solves, ten comparing approaches or products, and five asking about vendor alternatives. Use the patterns in [the prompt mining swipe file](https://groas.com/post/the-prompt-mining-sheet-60-buyer-prompts) if you need a starting point. Label each prompt with its intent stage.

A query such as “What does \[Company Name] do?” tests whether an engine recognizes a name the buyer already knows. It does little to expose the pages an undecided buyer might encounter instead of yours. [HubSpot’s content audit research](https://blog.hubspot.com/marketing/diagnosing-aeo-gaps-content-audit-guide) puts the scale of third-party citations in perspective: brand-owned sites accounted for about 12% of AI citation volume in its analysis, with the rest going to sources such as comparisons, directories, and guides. Start where the buyer is still choosing.

![A printed spreadsheet with search prompts and domain names highlighted.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/28d0647f-5e84-4e20-a171-be14d609db6b.png)

### Set up one row per source

**Action:** Rename the first tab `Raw Citations`. Put these nine headers in Row 1, one per column:

```text
A: Prompt
B: Intent Stage
C: Engine
D: Date Tested
E: Cited URL
F: Extracted Domain
G: Page Archetype
H: Brand Mentioned (Y/N)
I: Brand Cited (Y/N)
```

Each row will represent one cited URL for one prompt in one engine. If an answer has five sources, you’ll enter five rows and repeat columns A through D. If an answer has no cited sources, enter one row for that test with Column E blank. That row preserves the test; it is not a citation.

Keep H and I separate. A **mention without a citation** means your brand appears in the answer but the answer does not link to your site. A **citation gap** means the cited sources omit your domain. Neither flag, by itself, tells you why the engine made that choice.

**Expected result:** You have a place for every test, including tests with no sources. **Common mistake:** Put a whole source list in one cell. You’ll lose the ability to count and inspect individual pages.

## Step 2: Run each prompt in three engines and copy the full URLs

**Action:** Run each prompt in ChatGPT with web search enabled, Perplexity, and Google Search. Use a clean browser session where possible, and keep your login and search settings consistent across reruns. Don’t switch to a logged-out session if doing so removes access to the feature you need to test.

Find the sources in each interface:

1. In ChatGPT, confirm web search is active, then open the answer’s footnotes or `Sources` list.
2. In Perplexity, open the numbered inline citations or source tiles.
3. In Google Search, open the source cards or links attached to the AI Overview, when one appears.

Copy each destination into `Cited URL`, not just its homepage domain. Fill in the prompt, intent stage, engine, and date on the same row. Mark whether the answer mentions your brand in H, and whether a source links to your domain in I. If an AI Overview does not appear or an answer has no cited links, record that test with a blank cited URL rather than inventing a source.

A run across 20 prompts and three engines may leave you with roughly **180 to 350 citation rows**, though the number will depend on the answers you get. The full path matters. A review page, comparison page, and product page on the same domain present different jobs for you.

[AirOps and Kevin Indig’s analysis](https://searchengineland.com/chatgpt-citations-favor-a-small-group-of-domains-study-438924) distinguishes pages ChatGPT retrieves from the smaller set it cites. Your ledger tracks the cited set: the pages a reader can actually open from the answer. And don’t assume one engine stands in for the others. [Peec.ai’s cross-engine study](https://peec.ai/blog/top-domains-cited-by-ai-search/) found limited overlap between ChatGPT and Perplexity citations; practitioners discussing their own tracking on [Reddit r/aeo](https://www.reddit.com/r/aeo/comments/1eh6m2k/everyone_optimizes_for_chatgpt_but_chatgpt_and/) have reported similar engine-specific patterns. Test all three rather than treating one source list as the whole market.

![An infographic showing retrieved pages narrowing to cited URLs across ChatGPT, Perplexity, and Google AI Overviews.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/a4fb47d6-c7d4-4e5c-9ded-e163274b1e5a.png)

**Expected result:** Every available source has its own row and its full URL. **Common mistake:** Copy the answer’s product names but skip its links. Those links are the point of the exercise.

## Step 3: Extract domains and tag page types

### Pull hostnames without retyping them

**Action:** Paste this formula into `Raw Citations!F2`, then fill it down Column F:

```excel
=IFERROR(LOWER(REGEXREPLACE(REGEXEXTRACT(E2, "^(?:https?://)?([^/?#]+)"), "^www\.", "")), "")
```

It strips the scheme, path, and leading `www.` so you can group citations by hostname. For example, `https://www.g2.com/products/example/reviews` becomes `g2.com`. [URL to Domain Extractor’s Google Sheets documentation](https://urltodomainextractor.com/how-to-extract-domain-from-url-in-google-sheets/) describes this approach. A blank cited URL produces a blank domain.

### Tag what each page does

**Action:** Select Column G and choose `Data` > `Data validation` > `Add rule` > `Dropdown`. Add these five values:

- `Competitor Product Page`
- `Editorial Roundup`
- `Review Directory`
- `Community Discussion`
- `Official Documentation`

Tag cited rows only. Then create a tab named `Archetype Summary`. Put the five labels in `A2:A6` and paste this formula into `B2`; fill it through `B6` and format those cells as percentages:

```excel
=IFERROR(COUNTIF('Raw Citations'!$G$2:$G, A2)/COUNTIF('Raw Citations'!$G$2:$G, "?*"), 0)
```

The denominator counts filled archetype cells, not the header or the blank rows you kept for uncited tests. Finish tagging before reading the percentages. If roundups and directories dominate, the immediate task may be getting onto those pages, not publishing another general post on your site.

**Expected result:** You can see which kinds of pages receive citations. **Common mistake:** Tag a page by its domain alone. Open the exact URL; a directory’s review page and its editorial list do different work.

## Step 4: Pivot from domains to the exact pages beating yours

### Count the recurring domains

**Action:** Select the populated range in `Raw Citations`, then choose `Insert` > `Pivot table` and place the pivot on a new tab named `Domain Intelligence`. Configure it this way:

- **Rows:** `Extracted Domain`.
- **Columns:** `Engine`.
- **Values:** `Cited URL`, summarized by `COUNTA`.
- **Filters:** `Extracted Domain`; exclude blanks and your own domain.

Sort domains by the count of cited URLs, highest first. This separates recurring third-party gatekeepers from domains that appear in only one engine. It also keeps your no-citation test rows out of the tally.

![An analyst mapping citation paths to dominant third-party domains on a drafting table.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/1d436548-4157-4c88-ab24-b2543e06a5c1.png)

### Inspect competitor URLs, not just competitor domains

**Action:** Insert a second pivot from the same ledger on a new tab named `Competitor URLs`. Set **Rows** to `Cited URL`, **Values** to `Cited URL` summarized by `COUNTA`, and filter `Page Archetype` to `Competitor Product Page`. Sort by count. Open the URLs at the top and note which prompts cite each one.

This is where the spreadsheet becomes useful. A domain total tells you who appears often; a URL tells you which asset to inspect. When I built [a framework for turning Google Ads search terms into an AI content-gap map](https://groas.com/post/turn-your-google-ads-search-terms-into-a), the useful move was the same: match the asset to the question rather than admiring an aggregate chart.

Don’t assume a cited competitor won solely because it ranked above you in ordinary search. [Ahrefs’ analysis of US queries](https://ahrefs.com/blog/most-cited-websites-google-ai-overviews/) found that only 38% of URLs cited in Google AI Overviews ranked in the organic top 10 for the corresponding query. Inspect the cited page itself: its answer, structure, comparisons, and information available near the top.

**Expected result:** You have a short list of pages to examine alongside the prompts that surface them. **Common mistake:** Stop at a domain leaderboard and write “improve authority” on the task list. That is not an edit anyone can make on Tuesday.

## Step 5: Give each losing prompt one next action

**Action:** Create a `Fix List` tab. For each prompt where your domain was not cited, copy the prompt, engine, leading cited URL, and relevant page archetype. Assign the gap to one of these three buckets:

1. **Missing asset on your site:** A competitor’s dedicated comparison, worksheet, or pricing breakdown answers a question your site does not. Build a page that addresses that question in its title and opening paragraph.
2. **Missing third-party inclusion:** A review directory or editorial roundup keeps appearing. Check the specific cited page. Claim or update a relevant directory profile, or pursue inclusion on the list rather than publishing another broad blog post.
3. **Existing asset that needs an editorial update:** You already cover the question, but the cited page makes its answer easier to find. Move the direct answer and concrete details higher, and make the relevant comparison easier to scan.

You are assigning work from observed URLs, not diagnosing an engine’s hidden ranking rules. [Kevin Indig and AirOps reported](https://searchengineland.com/chatgpt-citations-favor-a-small-group-of-domains-study-438924) that 44.2% of citations in their analysis came from the first 30% of a page’s content, while conclusions accounted for under 4%. That is a useful reason to check where your answer sits. It is not proof that moving one paragraph will earn a citation.

**Expected result:** Every priority gap points to an asset to build, a page to update, or a third-party page to pursue. **Common mistake:** Put “create more AI content” in the fix list. Name the URL and the action.

## Step 6: Rerun the prompts and verify the change

**Action:** Repeat the same 20 prompts each month under comparable conditions. Make a dated copy of the ledger, such as `Citations_2026_11` or `Citations_2026_12`, and keep the prompt set unchanged so you can compare passes. Refresh or rebuild the pivots against the new ledger.

Track three things:

- **Your citation share:** rows citing your domain divided by all rows with a cited URL.
- **Third-party inclusion:** the share of gatekeeper pages on your target list that now include your brand.
- **Competitor URL displacement:** which previously recurring competitor pages stop appearing for the same prompts.

Mention rate is still a useful diagnostic; [this AI visibility tracker walkthrough](https://groas.com/post/build-your-own-ai-visibility-tracker-in) covers it. But a mention and a clickable citation are different outcomes, so keep H and I separate on every pass.

**Verify:** After you publish or update an asset, give it 14 days, then run the same prompt in a clean, comparable session in Perplexity or ChatGPT with web search enabled. Open the sources and check whether your exact URL appears. One appearance is evidence of a citation on that test, not a promise that it will persist. Log the result either way.

**The first thing to change once your page earns a citation:** Check whether your Google Ads headlines and landing page copy answer that same buyer question as directly. Then set up a filtered view in Google Analytics 4 for referrals from `chatgpt.com` and `perplexity.ai` so you can see whether cited visits reach your site.

![A Google Sheet citation map beside live AI answer citations on a dual-screen desk.](https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/60a5f2e3-deec-4971-bb96-93c22637a04f.png)

**Common mistake:** Change the prompts between runs and call the difference progress. Keep the test stable before you read the delta.

## Where the spreadsheet stops

I like the sheet because it forces the useful question: **which page won this prompt, and what can I change?** It also has a ceiling. Twenty prompts give you a manageable baseline, not your entire search footprint. Repeating tests, maintaining the ledger, updating pages, and coordinating that work with paid search takes time.

That operating burden is why [groas](https://groas.com/) exists. Rather than handing you another score or a periodic list of recommendations, groas combines autonomous paid and organic search execution with a named human strategist who sets direction and guardrails. Specialized models handle ongoing campaign, content, bidding, targeting, budget, and optimization work; the strategist owns the decisions that should not be left to a dashboard. The model is a flat monthly fee, not a percentage-of-spend markup.

Start with the sheet. Keep the cited URLs. When the work outgrows manual logging, don’t replace the URLs with a prettier score.

## Frequently Asked Questions

### Should I test brand-name prompts or buyer questions when tracking AI citations?

Use buyer questions rather than brand questions. The article recommends five prompts about the problem your product solves, ten comparing approaches or products, and five asking about vendor alternatives, each labeled with its intent stage. A query like 'What does \[Company Name] do?' only tests whether an engine recognizes a name the buyer already knows, so it exposes little about the pages an undecided buyer might encounter instead of yours.

### How do I structure a Google Sheet to log AI answer citations?

Create a tab called Raw Citations with nine columns: Prompt, Intent Stage, Engine, Date Tested, Cited URL, Extracted Domain, Page Archetype, Brand Mentioned (Y/N), and Brand Cited (Y/N). Each row represents one cited URL for one prompt in one engine, so an answer with five sources gets five rows. If an answer has no cited sources, enter one row for that test with the Cited URL column blank.

### What is the difference between a brand mention and a brand citation in AI answers?

A mention without a citation means your brand appears in the answer text but the answer does not link to your site. A citation gap means the cited sources omit your domain entirely. Track them in separate columns, because neither flag by itself tells you why the engine made that choice.

### Which AI engines should I run my test prompts in, and where do I find the cited sources?

Run each prompt in ChatGPT with web search enabled, Perplexity, and Google Search with AI Overviews. In ChatGPT, open the answer's footnotes or Sources list; in Perplexity, open the numbered inline citations or source tiles; in Google Search, open the source cards attached to the AI Overview. Test all three rather than assuming one engine stands in for the others, since studies have found limited overlap between ChatGPT and Perplexity citations.

### Is there a formula to extract the domain from a URL in Google Sheets?

Yes. Paste this formula into the first data row of the domain column and fill it down: =IFERROR(LOWER(REGEXREPLACE(REGEXEXTRACT(E2, "^(?:https?://)?(\[^/?#]+)"), "^www\\.", "")), ""). It strips the scheme, path, and leading www. so a URL like https\://www\.g2.com/products/example/reviews becomes g2.com, letting you group citations by hostname. A blank cited URL produces a blank domain.

### Why should I copy the full cited URL instead of just the domain?

Because a domain total tells you who appears often, but a URL tells you which specific asset to inspect. A review page, comparison page, and product page on the same domain do different jobs, so copy each destination URL into the sheet, not just its homepage. Then open the URLs cited most often and note which prompts surface each one.

### How do I turn AI citation gaps into a fix list?

For each prompt where your domain was not cited, copy the prompt, engine, leading cited URL, and page archetype into a Fix List tab, then assign the gap to one of three buckets: a missing asset on your site to build, a missing third-party inclusion to pursue on a directory or roundup, or an existing asset that needs an editorial update to surface its direct answer higher.

### How often should I rerun my AI citation prompts to measure progress?

Rerun the same 20 prompts each month under comparable conditions, making a dated copy of the ledger such as Citations_2026_11 and keeping the prompt set unchanged. After publishing or updating a page, give it 14 days, then run the same prompt in a clean session in Perplexity or ChatGPT with web search enabled and check whether your exact URL appears.

## Pay For Results, Not For Hours

Businesses buy the outcome, agencies resell it, and groas answers for it either way.

[See If You Qualify](https://groas.typeform.com/to/xC1bQNUT)

## Structured data

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://graph.groas.com/entity/groas","name":"groas","url":"https://groas.com/","logo":{"@type":"ImageObject","url":"https://groas.com/icon-512.png","width":512,"height":512},"sameAs":["https://www.linkedin.com/company/groas/"]},{"@type":"WebSite","@id":"https://groas.com/#website","name":"groas","url":"https://groas.com/","inLanguage":"en-US","publisher":{"@id":"https://graph.groas.com/entity/groas"}},{"@type":"WebPage","@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#webpage","url":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s","name":"Build an AI Citation Gap Map in Google Sheets","description":"Find the exact pages ChatGPT, Perplexity, and AI Overviews cite instead of yours. Log their URLs, spot the patterns, and turn the gaps into a fix list.","inLanguage":"en-US","isPartOf":{"@id":"https://groas.com/#website"},"about":{"@id":"https://graph.groas.com/entity/groas"},"primaryImageOfPage":{"@type":"ImageObject","url":"https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/005f618e-ce12-419a-b161-bf037a878eee.png"},"breadcrumb":{"@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#breadcrumb"},"dateModified":"2026-10-17T05:35:31.858Z","mainEntity":{"@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#article"}},{"@type":"BreadcrumbList","@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://groas.com/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://groas.com/blog"},{"@type":"ListItem","position":3,"name":"Build an AI Citation Gap Map in Google Sheets","item":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s"}]},{"@type":"BlogPosting","@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#article","url":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s","mainEntityOfPage":{"@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#webpage"},"isPartOf":{"@id":"https://groas.com/blog#blog"},"headline":"Build an AI Citation Gap Map in Google Sheets","description":"Find the exact pages ChatGPT, Perplexity, and AI Overviews cite instead of yours. Log their URLs, spot the patterns, and turn the gaps into a fix list.","datePublished":"2026-10-17T05:35:31.786Z","dateModified":"2026-10-17T05:35:31.858Z","image":{"@type":"ImageObject","url":"https://pub-87da24ecbbfc4c3bad6875f3aa013712.r2.dev/generated-images/005f618e-ce12-419a-b161-bf037a878eee.png"},"author":{"@id":"https://groas.com/author/alexander-perelman#person"},"publisher":{"@id":"https://graph.groas.com/entity/groas"},"keywords":"cited, page, domain, google, citation, url, list, cited url","wordCount":2088,"inLanguage":"en-US"},{"@type":"Person","@id":"https://groas.com/author/alexander-perelman#person","name":"Alexander Perelman","jobTitle":"Head Of Product @ groas","description":"Ex Goldman Sachs and Ex Stanford Computer Science","image":"https://groas.com/media/blog/4f17cac3a81acc224cc1b2cfab8f94bbc295a3089d13e8421125771ef8d4064f.jpg","worksFor":{"@id":"https://graph.groas.com/entity/groas"},"sameAs":["https://www.linkedin.com/in/alexander-433793253/"]},{"@type":"FAQPage","@id":"https://groas.com/post/build-a-citation-gap-map-in-one-google-s#faq","mainEntity":[{"@type":"Question","name":"Should I test brand-name prompts or buyer questions when tracking AI citations?","acceptedAnswer":{"@type":"Answer","text":"Use buyer questions rather than brand questions. The article recommends five prompts about the problem your product solves, ten comparing approaches or products, and five asking about vendor alternatives, each labeled with its intent stage. A query like 'What does [Company Name] do?' only tests whether an engine recognizes a name the buyer already knows, so it exposes little about the pages an undecided buyer might encounter instead of yours."}},{"@type":"Question","name":"How do I structure a Google Sheet to log AI answer citations?","acceptedAnswer":{"@type":"Answer","text":"Create a tab called Raw Citations with nine columns: Prompt, Intent Stage, Engine, Date Tested, Cited URL, Extracted Domain, Page Archetype, Brand Mentioned (Y/N), and Brand Cited (Y/N). Each row represents one cited URL for one prompt in one engine, so an answer with five sources gets five rows. If an answer has no cited sources, enter one row for that test with the Cited URL column blank."}},{"@type":"Question","name":"What is the difference between a brand mention and a brand citation in AI answers?","acceptedAnswer":{"@type":"Answer","text":"A mention without a citation means your brand appears in the answer text but the answer does not link to your site. A citation gap means the cited sources omit your domain entirely. Track them in separate columns, because neither flag by itself tells you why the engine made that choice."}},{"@type":"Question","name":"Which AI engines should I run my test prompts in, and where do I find the cited sources?","acceptedAnswer":{"@type":"Answer","text":"Run each prompt in ChatGPT with web search enabled, Perplexity, and Google Search with AI Overviews. In ChatGPT, open the answer's footnotes or Sources list; in Perplexity, open the numbered inline citations or source tiles; in Google Search, open the source cards attached to the AI Overview. Test all three rather than assuming one engine stands in for the others, since studies have found limited overlap between ChatGPT and Perplexity citations."}},{"@type":"Question","name":"Is there a formula to extract the domain from a URL in Google Sheets?","acceptedAnswer":{"@type":"Answer","text":"Yes. Paste this formula into the first data row of the domain column and fill it down: =IFERROR(LOWER(REGEXREPLACE(REGEXEXTRACT(E2, \"^(?:https?://)?([^/?#]+)\"), \"^www\\.\", \"\")), \"\"). It strips the scheme, path, and leading www. so a URL like https://www.g2.com/products/example/reviews becomes g2.com, letting you group citations by hostname. A blank cited URL produces a blank domain."}},{"@type":"Question","name":"Why should I copy the full cited URL instead of just the domain?","acceptedAnswer":{"@type":"Answer","text":"Because a domain total tells you who appears often, but a URL tells you which specific asset to inspect. A review page, comparison page, and product page on the same domain do different jobs, so copy each destination URL into the sheet, not just its homepage. Then open the URLs cited most often and note which prompts surface each one."}},{"@type":"Question","name":"How do I turn AI citation gaps into a fix list?","acceptedAnswer":{"@type":"Answer","text":"For each prompt where your domain was not cited, copy the prompt, engine, leading cited URL, and page archetype into a Fix List tab, then assign the gap to one of three buckets: a missing asset on your site to build, a missing third-party inclusion to pursue on a directory or roundup, or an existing asset that needs an editorial update to surface its direct answer higher."}},{"@type":"Question","name":"How often should I rerun my AI citation prompts to measure progress?","acceptedAnswer":{"@type":"Answer","text":"Rerun the same 20 prompts each month under comparable conditions, making a dated copy of the ledger such as Citations_2026_11 and keeping the prompt set unchanged. After publishing or updating a page, give it 14 days, then run the same prompt in a clean session in Perplexity or ChatGPT with web search enabled and check whether your exact URL appears."}}]}]}
```
