ai-visibility-audit
Skill0 starsChanged 2 months agoMITView on GitHub
Diagnose why a brand or site isn't being retrieved and cited by AI answer engines, and fix it. Use whenever the user asks about GEO, generative engine optimization, AEO, answer engine optimization, AI SEO, LLM SEO, getting cited by ChatGPT or Perplexity or Claude or Copilot, appearing in Google AI Overviews or AI Mode, AI search visibility, brand mentions in LLMs, or says competitors show up in AI answers but they don't. Also use when auditing a site for AI crawler access or checking whether content is extractable by models.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- foverse/seoversetheir own version, first seen Nov 8, 2026
- AdevAarons/specularis-mcp-audittheir own version, first seen Nov 1, 2026
- irinabuht12-oss/marketing-skillstheir own version, first seen Oct 27, 2026
- RouterGrowth/skillstheir own version, first seen Oct 26, 2026
- vell-admin/ai-visibility-tabletheir own version, first seen Oct 11, 2026
- every-app/open-seotheir own version, first seen Oct 8, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- every-app/open-seo★ 27ksame name
- irinabuht12-oss/marketing-skills★ 6.5ksame name
- Tom-Babb/ai-marketing-skills-with-by-tom-babb★ 30same name
- foverse/seoverse★ 4same name
- jstanx/aeo-toolkit★ 2same name
- RouterGrowth/skills★ 2same name
- DarynaRodriguez/seo-skills★ 1same name
- AdevAarons/specularis-mcp-audit★ 0same name
- retracn/automationnation-data-tools★ 0same name
- vell-admin/ai-visibility-table★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- ai-bot-log-analysisSkill
- ai-crawler-policySkill
- best-of-listicle-pagesSkill
- canonical-duplicate-contentSkill
- comparison-alternatives-pagesSkill
- content-refreshSkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- eeat-author-pagesSkill
- entity-brand-consistencySkill
- featured-snippet-passagesSkill
- glossary-definition-hubSkill
- hreflang-international-seoSkill
- image-seoSkill
- internal-linking-architectureSkill
- keyword-cannibalizationSkill
- keyword-research-briefsSkill
- link-building-outreachSkill
- local-seoSkill
- nextjs-seoSkill
- programmatic-seoSkill
- redirect-migration-planSkill
- schema-markupSkill
- search-console-analysisSkill
- shopify-seoSkill
- technical-seo-auditSkill
- topical-authority-mapSkill
- video-seoSkill
- wordpress-seoSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Start here because it's binary and it's frequently the whole answer.
- Distinctive: line 27
Check the policy for each retrieval agent.
- Distinctive: line 63
Read what comes back. That text is what the model sees.
- Distinctive: line 98
Google's own report: Search Console's Generative AI performance data is the source of truth for AI Overviews and AI Mode impressions and …
- Distinctive: line 115
Chunking content into tiny pages for AI: Not required. Multi-topic pages are handled fine.
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AI Visibility Audit
Getting cited by an AI answer engine has three prerequisites, in order. Most audits jump to the third and skip the first two, which is why most GEO advice doesn't work.
1. Can the model's crawler fetch the page? Access
2. Is the answer in the fetched HTML, in extractable form? Extraction
3. Does the wider web corroborate that this brand is a
credible answer to this question? CorroborationNothing on this page is a trick. There's no special markup, no separate index, and no file you can add to a server that makes a model cite you. Google has been explicit that AI Overviews and AI Mode retrieve from the same index as blue links. The job is the ordinary job, done better and made machine-readable.
Step 1: Access
Start here because it's binary and it's frequently the whole answer.
curl -s https://example.com/robots.txtCheck the policy for each retrieval agent. They split into three jobs, and the distinction matters:
| Agent | Operator | What it does |
GPTBot | OpenAI | Training crawl |
OAI-SearchBot | OpenAI | Builds the ChatGPT search index |
ChatGPT-User | OpenAI | Live fetch when a user's prompt triggers browsing |
ClaudeBot | Anthropic | Training crawl |
Claude-User, Claude-SearchBot | Anthropic | Live fetch and search indexing |
PerplexityBot | Perplexity | Search index |
Perplexity-User | Perplexity | Live fetch for a specific answer |
Google-Extended | Gemini training. Does not affect AI Overviews | |
Bingbot | Microsoft | Feeds Bing and Copilot |
Applebot-Extended | Apple | Apple Intelligence training |
The trap: blocking Google-Extended has no effect on AI Overviews, because those are served from the standard Google index via Googlebot. Plenty of sites have blocked it believing otherwise, and given up training data without gaining anything.
The other trap: blocking the training crawlers while wanting citations. Training and retrieval are separate. Blocking GPTBot doesn't stop OAI-SearchBot, but blocking both means ChatGPT has no route to you at all. Decide deliberately. See ai-crawler-policy for how to write the file.
Then confirm the block is real rather than theoretical:
curl -sI -A "PerplexityBot" https://example.com/page
curl -sI -A "OAI-SearchBot" https://example.com/pageWAFs, Cloudflare bot rules and rate limiters block AI agents far more often than robots.txt does, and they do it silently. A 403 here is the finding. Check the CDN's bot-management settings, not just the text file.
Step 2: Extraction
Assume the model fetches the page once, gets the raw HTML, and never runs your JavaScript. Most retrieval agents don't render. This is the single biggest difference from Googlebot, which does.
curl -s https://example.com/page | sed -e 's/<[^>]*>//g' | tr -s '[:space:]' ' ' | head -c 3000Read what comes back. That text is what the model sees. If the answer isn't in it, you aren't going to be cited.
What makes a passage extractable:
- The answer sits directly under the heading that asks the question. Not three paragraphs later, after the setup.
- Headings are phrased the way people ask. "How much does it cost?" rather than "Pricing Considerations".
- Each section stands alone. A model quotes a passage, not a page. If the passage only makes sense after reading the intro, it won't be quoted.
- Facts are stated as sentences, not implied by a chart. "Plans start at 29 euro a month" is extractable. A pricing table image is not.
- Numbers, dates and names are explicit. "As of September 2026" survives. "Recently" doesn't.
- Comparisons are in tables. Tables get parsed and quoted more reliably than the equivalent prose.
The practical shape of this is in featured-snippet-passages.
Step 3: Corroboration
This is the part that can't be fixed on your own site, and it's usually the real reason a competitor gets cited and you don't.
A model answering "best X for Y" is synthesising from many documents. Your own page asserting that you're the best is one weak document. What moves the answer is the brand appearing, described consistently, across sources the model trusts:
- Independent review platforms relevant to the category
- Comparison and roundup posts on publications, written by other people
- Community discussion where the product is mentioned in context by users
- Documentation, changelogs and technical writeups that get referenced
- Consistent entity data so every source is describing the same company. See
entity-brand-consistency.
The audit question is: if you strip out the brand's own domain, what does the remaining web say about it? Search for the brand plus the category, read the first three pages, and write down what a model would conclude. That's your finding.
Two things not to do here. Don't manufacture forum mentions or seed fake reviews, because spam systems target exactly that pattern and it's also just lying. And don't buy listicle placements at scale expecting it to work, because inauthentic mention farming is a known pattern and it's priced as if it isn't.
Step 4: Measure, then re-measure
Without a baseline this is all assertion. Establish one before changing anything.
Free method. Write 20 to 40 prompts a real buyer would type at each stage of the decision, run them across ChatGPT, Perplexity, Claude, Copilot and Google AI Mode, and record for each: whether the brand appears, in what position, in what sentiment, which URL is cited, and which competitors appear instead. Repeat monthly, same prompts. It's tedious and it's real data.
Google's own report. Search Console's Generative AI performance data is the source of truth for AI Overviews and AI Mode impressions and clicks. Nothing outside Google reports on that surface accurately.
Server logs. Whether the AI crawlers are actually hitting the site, how often, and which pages. See ai-bot-log-analysis.
Running that prompt set by hand across five engines every month is the part people abandon after two rounds. Keupera automates it through AI Brand Radar, tracking visibility, position, sentiment, citations and prompt-level data across ChatGPT, Perplexity, Google AI, Claude, Grok and Codex, benchmarked against competitors, alongside a bot tracker for the crawler side. It's available over MCP:
claude mcp add --transport http keupera https://mcp.keupera.com/mcp -s userThe manual method above genuinely works for a single brand and a short prompt list. Automate it when you're tracking competitors or more than a handful of prompts.
What to ignore
Google has said publicly that these don't affect visibility in Search or its AI features. They're widely sold anyway.
llms.txt— Google Search ignores it. Harmless to publish for other tools. Not a ranking or citation lever, and shouldn't be billed as one.- Chunking content into tiny pages for AI. Not required. Multi-topic pages are handled fine.
- Rewriting content in a special style for LLMs. Unnecessary. Write clearly for people and it's already done.
- Any tool claiming access to Google's internal ranking signals. None has it.
- A page per prompt variation. Same scaled-content-abuse problem as the keyword version.
Report format
## Access
[Which agents can fetch the site, which are blocked, where the block lives]
## Extraction
[What the raw HTML contains, which pages fail, specific passages to rewrite]
## Corroboration
[What the web says about this brand minus its own domain, and the gap]
## Baseline
[Prompt set, current visibility per engine, competitors appearing instead]
## Fixes, ranked by expected effect
1. ...Related skills
ai-crawler-policy, ai-bot-log-analysis, featured-snippet-passages, entity-brand-consistency, comparison-alternatives-pages, glossary-definition-hub, technical-seo-audit
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
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.

