---
name: geo-citation-tracker
description: Activates when the user asks to track AI citations, monitor whether their content is being cited by ChatGPT/Perplexity/Gemini/Google AI Overviews, or measure GEO performance over time. Tracks citation appearances across LLMs, surfaces competitor citations, and generates monthly reports showing AI visibility trends. The bridge between content production (Pillar 8 blog-pipeline) and knowing whether the GEO investment is paying off.
---

# GEO Citation Tracker Skill

The measurement layer for Pillar 8. Publishing GEO-optimized content is half the work. Knowing whether AI models actually cite you is the other half. This skill tracks AI citation appearances over time across the major LLMs.

## Activation Rules

Activate when:
- The user asks to "track citations," "check AI visibility," "monitor GEO," etc.
- The user runs the `/geo-citation-tracker` slash command
- A scheduled cron job triggers weekly citation checks

## Prerequisites

1. **A list of target keywords** to monitor (typically the keywords your blog-pipeline articles target)
2. **A list of your published URLs** to check for citations
3. **API access OR a paid AI visibility tool**, choose one path:
   - **DIY path:** Free. Uses Perplexity's API (free tier) and ChatGPT search (manual checks). Less comprehensive but $0/month.
   - **Profound path:** ~$300/month for an AI visibility platform that monitors all major LLMs automatically
   - **Hybrid path:** Profound for the top 20 priority keywords, DIY for everything else

If using the DIY path, set up Perplexity API access at perplexity.ai/api.

---

## What This Skill Tracks

For each target keyword, this skill checks whether your content gets cited when an AI model is asked a question that should naturally surface your content.

### Citation events tracked

- **Direct citation:** AI model includes your URL as a source in its answer
- **Implicit citation:** AI model paraphrases content from your page without linking (use this signal cautiously — could be coincidence)
- **Featured citation:** AI model places your source in the top 3 cited sources
- **No citation:** Your content isn't appearing despite ranking on traditional Google

### Models monitored

- **Perplexity** (via API — most reliable for citation tracking)
- **ChatGPT Search** (manual checks or via paid tool)
- **Google AI Overviews** (manual checks or via paid tool)
- **Claude with web search** (manual checks)
- **Gemini** (manual checks or via paid tool)

---

## Slash Commands

### `/geo-citation-tracker [keyword-list-file]`

Run a citation check across all monitored keywords.

**Usage:**
```
/geo-citation-tracker ./seo/monitored-keywords.txt
```

**Keyword list file format:**
```
commercial cleaning services Atlanta | https://yoursite.com/atlanta-commercial-cleaning
office cleaning Atlanta | https://yoursite.com/office-cleaning-atlanta
janitorial services Buckhead | https://yoursite.com/buckhead-janitorial
```

(Format: `keyword | URL you'd want cited`)

**Workflow:**

1. **For each keyword, query Perplexity API:**
   - Send a question that would naturally surface your content (e.g., "What's the best commercial cleaning service in Atlanta?")
   - Capture the response and the cited sources
   - Check if your URL appears in the citations
   - Check if your domain appears (even if not your specific URL)
   - Check the position of your citation in the source list

2. **Update tracking history:**
   - Compare to previous weekly checks
   - Identify NEW citations (didn't exist last week)
   - Identify LOST citations (existed last week, gone now)
   - Track citation position changes

3. **For ChatGPT, Gemini, Google AI Overviews:**
   - These don't have free citation APIs. Generate manual check instructions for the user.
   - Output a list of queries to run manually in each interface
   - Provide a tracking spreadsheet template to log results

4. **Generate the citation report:**
   - Section A: Summary stats (citations this week vs. last week, total citations across all keywords)
   - Section B: New citations (which keywords started getting cited this week)
   - Section C: Lost citations (which citations disappeared)
   - Section D: Position changes (moved up, moved down, stable)
   - Section E: Competitive landscape (which competitors are getting cited for your keywords)
   - Section F: Recommendations (which articles need GEO refresh, which untargeted keywords are showing competitor citation patterns worth pursuing)

5. **Save report to** `./seo/citations/citation-report-[date].md`

### `/geo-citation-tracker --weekly`

Lighter-weight version for weekly automated runs. Just tracks Perplexity (free, automated) and outputs a 1-page summary.

### `/geo-citation-tracker --add [keyword] [url]`

Add a keyword + URL pair to the monitoring list.

**Usage:**
```
/geo-citation-tracker --add "best AI marketing newsletter" "https://highlyevolvedplant.com"
```

### `/geo-citation-tracker --report-monthly`

Generate a monthly report showing citation trends over the past 30 days. Useful for showing clients GEO ROI.

### `/geo-citation-tracker --competitor-research [keyword]`

For a specific keyword, research who's getting cited by AI models. Output a competitive landscape document showing:
- Which sources Perplexity cites for the keyword
- Which sources appear in ChatGPT search results (manual check instructions)
- What format/structure those cited sources use
- Specific recommendations for what to add to your competing content

This is the GEO equivalent of Pillar 5's Impressions Spy — it tells you what AI models prefer for any given query so you can reverse-engineer their preferences.

### `/geo-citation-tracker --query [question]`

One-off check for a specific question, not tied to your monitored keyword list.

**Usage:**
```
/geo-citation-tracker --query "What's the best way to generate Meta ads with AI?"
```

Returns the citation landscape for that specific question. Useful when investigating whether specific user questions surface your content.

---

## The Manual Tracking Workflow (When Not Using Profound)

For ChatGPT, Gemini, Google AI Overviews, and Claude with web search, the skill generates a manual check workflow:

1. **Output a query list** — one question per monitored keyword, formatted to test for citation
2. **Provide a Google Sheet template** for logging results
3. **Walk the user through the manual check** (typically 10-15 minutes for 20 keywords across 4 LLMs)
4. **Import the manual results** when the user runs `/geo-citation-tracker --import-manual [csv]`

This is tedious but free. After 4-6 weeks of doing it manually, the user usually upgrades to Profound or accepts a smaller monitored keyword list.

---

## Citation Health Metrics

For each monitored keyword, the skill calculates a "citation health score" (0-100):

- **80-100 (STRONG):** Cited by 3+ AI models, top-3 citation position
- **50-79 (HEALTHY):** Cited by 1-2 AI models, mid-pack citation position
- **20-49 (WEAK):** Implicit citations only, or single-LLM citations
- **0-19 (MISSING):** No citations despite published optimized content

Articles in the WEAK or MISSING tier should be prioritized for GEO refresh:

```
GEO REFRESH PRIORITY (run via /blog-pipeline --refresh):

URGENT:
  https://yoursite.com/article-1 (Score: 12 — published 60 days ago, no citations)
  https://yoursite.com/article-2 (Score: 18 — published 90 days ago, lost citations last month)

THIS QUARTER:
  https://yoursite.com/article-3 (Score: 34 — implicit citations only)
  https://yoursite.com/article-4 (Score: 41 — single-LLM citations)
```

---

## Cross-Skill Integration

**Calls into this skill:**
- The user (directly)
- Scheduled cron job (weekly)
- blog-pipeline (Pillar 8) — when publishing a new article, automatically add it to the monitoring list

**This skill calls:**
- Perplexity API (for automated tracking)
- The user (for manual checks of ChatGPT, Gemini, Google AI Overviews, Claude)

**Output flows to:**
- The user's monthly review
- blog-pipeline --refresh (for articles flagged as needing GEO refresh)
- Client reports (for agencies showing GEO ROI)

---

## Common Issues

### "I'm getting zero citations after 60 days"

This is normal for new sites. AI models heavily favor established domains for citations. Building citation authority takes 3-9 months for a new site.

If you're an established site (1+ years, decent backlink profile) and still seeing zero citations after 60 days, the content itself isn't structured for extraction. Run the seo-geo-checklist on the article and re-publish with structural fixes.

### "My competitors are getting cited and I'm not, despite better content"

Most common cause: competitors have better extraction-friendly structure, even if your content is more valuable. Run `/geo-citation-tracker --competitor-research [keyword]` to see what format they're using. Often the difference is just heading hierarchy and paragraph length.

### "Manual tracking is too time-consuming"

Three options:
- Reduce monitored keywords to top 10 only (track those manually, ignore the rest)
- Upgrade to Profound or a similar paid AI visibility tool ($200-400/month)
- Run the manual check monthly instead of weekly (loses some signal but cuts time by 75%)

### "Citation data conflicts between weeks"

AI model responses are non-deterministic. The same query can return different citations on different days. Don't read too much into single-week changes. Track the 4-week rolling average for any given keyword. Trends over a month are reliable; week-to-week changes are noise.

---

## Notes

- This skill is the closest thing to a measurement layer for GEO. Without it, you're publishing optimized content without knowing if it's working.
- The free Perplexity-based tracking is enough for most users. The paid Profound platform is justified once you have 50+ monitored keywords or you're managing multiple client accounts.
- AI citation patterns are still volatile in 2026. What gets cited this month may not get cited next month as models update. Re-evaluate your top citations quarterly.
- For agencies, run separate citation tracking per client. Client A's monitored keywords are not Client B's — keep them isolated.
