agentleFS
psyducklerpsyduckler/aeo-skills/aeo-ai-overview-simulator/SKILL.md

aeo-ai-overview-simulator

Skill13 starsChanged 6 months agoMITView on GitHub

Simulate Google AI Overviews by running prompts through Gemini 3 Flash with Google Search grounding. See which sources get cited, how often, and what snippets get pulled — before checking the real AI Overview. Track a specific domain to measure mention rate, citation rate, and exact excerpts. Use when a user wants to: preview what an AI Overview would look like for a query, see which sources Google's AI cites, measure a domain's citation share, or understand what content Gemini pulls from their site.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No pip dependencies (stdlib only)

    line 31
  2. Very specific:

    Run from the skill directory.

    line 52
  3. Very specific:

    When --diff is enabled, the simulator analyzes the response text across all runs to reveal the stable core vs volatile periphery of the …

    line 107
  4. Distinctive:

    Search query frequency (what the model searches for)

    line 152
  5. Distinctive:

    Start with your most important queries — the ones you'd want to appear in AI Overviews for

    line 161
  6. Very specific:

    Use --output json to feed results into other AEO skills (analytics, gap finder)

    line 164

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AEO AI Overview Simulator

Source: github.com/psyduckler/aeo-skills Part of: AEO Skills Suite

Simulate Google AI Overviews by running prompts through the same model that powers them — Gemini 3 Flash with Google Search grounding.

Why This Works

Google's AI Overviews and Search AI Mode are powered by Gemini 3 Flash (gemini-3-flash-preview). When you run a prompt through this model with google_search grounding enabled, you're simulating exactly what happens when a user triggers an AI Overview in Google Search. The model searches the web, selects sources, and generates a grounded answer — the same pipeline Google uses.

Influence happens at retrieval, not inside the model. You can't edit training data, but you can enter the "candidate set" the model selects from when it searches. Gemini is search-first — it searches before nearly every answer, making it more influenceable than GPT. This simulator reveals the recurring retrieval set — the sources, themes, and response patterns the model consistently draws from.

Running 20 samples per prompt captures the probabilistic nature of AI responses. A source cited in 15/20 runs is reliably featured; one cited in 3/20 is marginal. This frequency data is far more actionable than a single snapshot.

Requirements

  • Gemini API key (free from aistudio.google.com) — set as GEMINI_API_KEY env var
  • Python 3.9+
  • No pip dependencies (stdlib only)

Usage

# Basic — simulate an AI Overview for a query
GEMINI_API_KEY="$GEMINI_API_KEY" python3 scripts/simulate.py "best project management tools for startups"

# Track a specific domain
GEMINI_API_KEY="$GEMINI_API_KEY" python3 scripts/simulate.py "best project management tools for startups" --domain monday.com

# With response text diffing — see stable core vs volatile insertion points
GEMINI_API_KEY="$GEMINI_API_KEY" python3 scripts/simulate.py "best project management tools for startups" --domain monday.com --diff

# More runs for higher confidence
GEMINI_API_KEY="$GEMINI_API_KEY" python3 scripts/simulate.py "best project management tools for startups" --domain monday.com --runs 40

# JSON output for programmatic use
GEMINI_API_KEY="$GEMINI_API_KEY" python3 scripts/simulate.py "best project management tools for startups" --output json

Run from the skill directory. Resolve scripts/simulate.py relative to this SKILL.md.

Options

OptionDefaultDescription
prompt(required)The query to simulate
--domain(none)Domain to track (e.g., example.com)
--runs20Number of simulation runs
--modelgemini-3-flash-previewGemini model to use
--concurrency5Max parallel API calls (keep ≤5 to avoid rate limits)
--outputtextOutput format: text or json
--diffoffEnable response text diffing — analyze sentence stability across runs

Output

Text Output

AI Overview Simulation: "best project management tools for startups"
Model: gemini-3-flash-preview
Runs: 20/20 successful

Top Cited Sources:
============================================================
  85% (17/20) — monday.com
  70% (14/20) — asana.com
  55% (11/20) — clickup.com
  40% (8/20)  — notion.so
  25% (5/20)  — trello.com

Search Queries Used:
============================================================
  90% (18/20) — best project management tools for startups
  45% (9/20)  — project management software comparison
  30% (6/20)  — startup project management tools 2025

Domain Tracking: monday.com
============================================================
  Mention rate: 90% (18/20 runs)
  Citation rate: 85% (17/20 runs)
  Cited URLs:
    12x — https://monday.com/blog/project-management/best-tools/
    5x  — https://monday.com/s/project-management
  Excerpts:
    - "Monday.com offers an intuitive interface ideal for startups..."
    - "For budget-conscious startups, Monday.com's free tier..."

JSON Output

Structured JSON with sources, queries, domain_tracking, and per-run detail.

Response Text Diffing (--diff)

When --diff is enabled, the simulator analyzes the response text across all runs to reveal the stable core vs volatile periphery of the recurring retrieval set:

  • Stable sentences (>80%) — appear in almost every run. These form the core of the AI Overview and are hard to displace. They're backed by entrenched sources in the recurring retrieval set.
  • Common sentences (40-80%) — usually included but not locked in. These are the mid-tier — present more often than not.
  • Volatile sentences (10-40%) — the insertion points where your content can have impact. These sentences change between runs because the model is choosing between competing sources. Create content that wins these competitive slots.
  • Rare sentences (<10%) — edge cases the model occasionally surfaces. Low priority.
  • Entity volatility — brands, tools, and domains that appear inconsistently. These are competitive slots — the model is undecided about which entity to feature, meaning your brand can compete for these mentions.

Text Output with --diff

Response Stability Analysis:
============================================================

Stable (>80% of runs — core of the AI Overview, hard to displace):
  [95%] Project management tools help startups organize tasks and track progress...
  [90%] Key features to look for include task management, collaboration, and...

Volatile (10-40% — insertion points, your content can influence these):
  [35%] For bootstrapped startups, free tiers from tools like ClickUp offer...
  [25%] Integration with existing tools like Slack and Google Workspace is...

Entity Volatility (brands/entities that appear inconsistently — competitive slots):
  [40%] ClickUp (8/20 runs)
  [30%] Basecamp (6/20 runs)
  [20%] Linear (4/20 runs)

JSON Output with --diff

Adds a response_analysis object with stable_sentences, common_sentences, volatile_sentences, rare_sentences, and entity_frequency arrays.

Note: --diff adds processing time since it compares sentences across all runs. Off by default.

How It Works

  1. Sends the prompt to Gemini 3 Flash with google_search grounding tool enabled
  2. Repeats this 20 times (default) — each run is independent
  3. From each response, extracts:
    • Response text — the generated AI Overview
    • Grounding sources — URLs and titles of cited web pages
    • Search queries — what queries the model fired against Google Search
    • Grounding support — which parts of the response are supported by which sources
  4. Aggregates across all runs:
    • Source citation frequency (which domains/URLs appear most)
    • Search query frequency (what the model searches for)
    • Response consistency (how stable the answer is)
  5. If --domain provided:
    • Calculates mention rate (brand name in response text)
    • Calculates citation rate (domain in grounding sources)
    • Extracts exact excerpts where the domain is referenced

Tips

  • Start with your most important queries — the ones you'd want to appear in AI Overviews for
  • Compare citation rates before and after content changes (wait 2-4 weeks for re-indexing)
  • A citation rate >50% means you're reliably featured; <20% means you're marginal
  • Use --output json to feed results into other AEO skills (analytics, gap finder)
  • Pair with aeo-content-free to improve content that isn't getting cited
  • Pair with aeo-analytics-free to track citation rates over time

Further Reading

Notes

  • Gemini API key stored in macOS Keychain under google-api-key
  • Retries failed requests up to 5 times with exponential backoff
  • Rate-limited to respect API quotas — keep --concurrency ≤5
  • Results may vary between runs — that's expected and exactly why we sample multiple times

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.