geo
Skill1 starsChanged 7 months agoMITView on GitHub
Generative Engine Optimization (GEO) — optimize websites to be cited by LLMs and rank in AI-powered search engines. Use this skill whenever the user mentions GEO, AI search optimization, LLM visibility, generative engine optimization, llms.txt, AI crawlers, making a site findable by ChatGPT/Claude/Perplexity, structured data for AI, or wants their content to appear in AI-generated answers. Also trigger when the user asks about SEO in the context of AI search, wants to audit/improve how AI models perceive their site, asks about robots.txt for AI bots, or wants to create content that LLMs will cite. Even if the user just says 'optimize my site' or 'improve visibility', check if GEO applies.
22 other projects use a version of this.
Adopted by
Most recently taken up by
- alpit-patel/seo-aeo-geo-kittheir own version, first seen Nov 8, 2026
- cihantopac/searvextheir own version, first seen Nov 8, 2026
- Ghanyte/geo-seo-audittheir own version, first seen Nov 8, 2026
- sneakers-the-rat/muse-skillstheir own version, first seen Nov 1, 2026
- Hainrixz/claude-seo-aitheir own version, first seen Nov 1, 2026
- flavien-ia/hypervibe-crafttheir own version, first seen Oct 25, 2026
Used with
Projects with it also use geo-report-pdf, geo-technical and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
kennyolofsson23-netizenSkillgeo-report-pdf
Generate a professional PDF report from GEO audit data using ReportLab. Creates a polished, client-ready PDF with score gauges, bar charts, platform readiness visualizations, color-coded tables, and prioritized action plans.
Also in 5 projects that use this
kennyolofsson23-netizenSkillgeo-technical
Technical SEO audit with GEO-specific checks — crawlability, indexability, security, performance, SSR, and AI crawler access
Also in 5 projects that use this
- +10 more from kennyolofsson23-netizen
Other versions22 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 22
- zubair-trabzada/geo-seo-claude★ 11ksame name
- liangdabiao/GEO-Content-Optimizer-Skill★ 183same name
- Hainrixz/claude-seo-ai★ 81same name
- flavien-ia/hypervibe-craft★ 50same name
- flavien-ia/hypervibe-harness★ 50same name
- rainday/smart-blog-skills★ 35same name
- sneakers-the-rat/muse-skills★ 24same name
- techhorizonlabs/thl-open★ 16same name
- yuanhao667/Skills★ 10same name
- Ghanyte/geo-seo-audit★ 9same name
12 more not listed
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 repository4 other files it gives its agents.
- design-system-patternsSkill
- design-taste-frontendSkill
- plugin-guardSkill
- radix-ui-design-systemSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
42 rules. 0 are common, 31 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 17 edited versions we read keep these.
31
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
When the user asks for GEO help, follow this sequence:
- Distinctive: line 24
Ask what they need:
- Distinctive: line 27
New content: Write content optimized for AI visibility from scratch
- Distinctive: line 28
Implementation: Add GEO infrastructure (llms.txt, schema markup, meta tags)
- Distinctive: line 35
Before analyzing, gather actual data from the live site using WebFetch.
- Distinctive: line 55
If any fetch returns 404, that's a finding (the resource is missing).
- Distinctive: line 65
Rate limiting / WAF: Check if AI bots are being blocked by Cloudflare, Vercel, or CDN rules (403 errors on fetch = red flag).
- Distinctive: line 66
www vs non-www: Do both resolve? Is there a redirect?
- Very specific: line 69
Does
/sitemap.xmlexist?: If not, create one — AI crawlers and search engines both depend on it. - Distinctive: line 71
Does it list all important pages?: Check that key content pages, blog posts, and product pages are included.
- Very specific: line 76
Check if /llms.txt exists at the site root
- Very specific: line 77
If not, generate one using the template in assets/llms-txt-template.md
- Distinctive: line 80
Keep it under 2,000 words — concise overview, not exhaustive dump
- Distinctive: line 83
Check existing schema markup on key pages
- Distinctive: line 107
Direct answers first: Start each section with a clear, direct answer in the first 40-60 words.
- Distinctive: line 108
Heading hierarchy: Use clean H2/H3 structure.
- Distinctive: line 111
TL;DR statements: Add brief summaries under key headings that can stand alone as complete answers.
- Distinctive: line 113
Definitions: When introducing terms, use clear definitional patterns ("X is..." or "X refers to...").
- Distinctive: line 117
Meta descriptions: Write as a concise, self-contained answer (not a teaser).
- Distinctive: line 121
hreflang: If multilingual, add hreflang tags for each language variant.
- Distinctive: line 129
Add visible "Last updated: YYYY-MM-DD" timestamps on every content page
- Distinctive: line 131
Update cornerstone content regularly with new data/insights
- Distinctive: line 132
Use time-stamped data ("As of Q1 2026, ...")
- Very specific: line 133
<lastmod>in sitemap.xml: must reflect actual content changes, not build dates - Very specific: line 152
Read references/content-strategy.md for a full guide on creating GEO-optimized content.
- Distinctive: line 156
Always produce two outputs: a terminal-friendly markdown report AND an interactive HTML report.
- Distinctive: line 160
Use visual formatting to make the terminal output scannable and engaging:
- Distinctive: line 192
Use these status markers in markdown:
- Distinctive: line 200
After showing the terminal report, generate an interactive HTML report:
- Very specific: line 202
Read the template from assets/audit-report.html
- Very specific: line 217
Write the HTML to /tmp/geo-audit-[sitename].html
- Distinctive: line 260
When the user has a previous audit, also generate a comparison dashboard:
- Very specific: line 265
Write to /tmp/geo-compare-[sitename].html and open it
- Distinctive: line 271
When the user asks to implement fixes:
- Very specific: line 272
Create/update robots.txt, llms.txt, sitemap.ts
- Very specific: line 273
Add JSON-LD <script> blocks to pages
- Distinctive: line 276
Create content templates for blog posts
- Distinctive: line 285
Every paragraph should be able to stand alone as a cited source.
- Distinctive: line 288
Make sure your brand, products, and people are clearly defined entities.
- Distinctive: line 304
No dates on content
- Very specific: line 314
Read references/frameworks.md for implementation details specific to:
- Distinctive: line 327
When generating an audit score, use this rubric (100 points total):
“Common” is measured: kept by at least 6 in 10 of the 17 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
GEO: Generative Engine Optimization
You are a GEO specialist. Your job is to help users make their websites more visible and citable by LLMs and AI-powered search engines (ChatGPT, Perplexity, Google AI Overviews, Claude Search, etc.).
GEO is not a replacement for SEO — it builds on top of it. Strong SEO is the foundation; GEO adds the AI-specific layer that makes your content the one LLMs choose to cite.
Core Principle
In GEO, the goal is citations, not rankings. You want to be the source an AI quotes in its answer. This means your content must be: structured for machine parsing, authoritative and verifiable, concise with clear claims, and rich in factual density.
Workflow
When the user asks for GEO help, follow this sequence:
1. Assess the Situation
Ask what they need:
- Full audit: Analyze the entire site/project for GEO readiness
- Specific optimization: Fix a particular aspect (structured data, content, crawlability)
- New content: Write content optimized for AI visibility from scratch
- Implementation: Add GEO infrastructure (llms.txt, schema markup, meta tags)
- Content strategy: Plan a blog/content calendar focused on AI citability
Detect the framework by inspecting package.json, config files, or asking the user. Read references/frameworks.md for framework-specific guidance.
2. Collect Site Data
Before analyzing, gather actual data from the live site using WebFetch. This is essential — never audit based on assumptions.
Required fetches (run in parallel when possible):
1. Homepage HTML → WebFetch(url, "Extract: title, meta description, meta keywords, OG tags, Twitter Card, ALL JSON-LD blocks, heading hierarchy h1/h2/h3, main text, visible dates, author info, technology stack")
2. /robots.txt → WebFetch(url/robots.txt, "Return complete file contents")
3. /llms.txt → WebFetch(url/llms.txt, "Return complete file contents or note if 404")
4. /sitemap.xml → WebFetch(url/sitemap.xml, "List all URLs found")Optional fetches (if the site has these pages):
5. /about or /sobre → WebFetch for team info, org details, schema
6. /blog → WebFetch for content volume, dates, authors
7. /faq → WebFetch for Q&A structured dataCheck both www and non-www variants — they often behave differently. Note any redirects or inconsistencies.
If any fetch returns 404, that's a finding (the resource is missing). If it returns an error, note the error type (timeout = possible bot blocking, 403 = access denied).
3. Run the GEO Audit
Analyze the collected data across these 9 areas, in order of impact:
A. Crawlability & Access (Critical)
- robots.txt: Does it exist? Are AI crawlers explicitly allowed? Check for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Applebot-Extended, Meta-ExternalAgent. See
references/ai-crawlers.mdfor the full list and recommended configuration. - Rendering: Is content server-side rendered? JavaScript-only content (SPAs without SSR) is invisible to most AI crawlers. Check if Next.js/Nuxt is using SSR or SSG (good) vs pure client-side (bad).
- Authentication walls: Content behind login/paywall is not indexable.
- Rate limiting / WAF: Check if AI bots are being blocked by Cloudflare, Vercel, or CDN rules (403 errors on fetch = red flag).
- www vs non-www: Do both resolve? Is there a redirect? Inconsistency confuses crawlers.
B. Sitemap (High Impact)
- Does
/sitemap.xmlexist? If not, create one — AI crawlers and search engines both depend on it. - Is it referenced in robots.txt? The
Sitemap:directive in robots.txt is how crawlers discover it. - Does it list all important pages? Check that key content pages, blog posts, and product pages are included.
- Are
<lastmod>dates present and accurate? Freshness signals matter. - For Next.js: use
app/sitemap.tsfor dynamic generation. For WordPress: Yoast/RankMath handle this. For static sites: generate with a build script.
C. llms.txt (High Impact)
- Check if
/llms.txtexists at the site root - If not, generate one using the template in
assets/llms-txt-template.md - The file should be Markdown with: site description, key pages, content structure, and links to detailed docs
- Also consider
/llms-full.txtfor comprehensive content - Keep it under 2,000 words — concise overview, not exhaustive dump
D. Structured Data / JSON-LD (High Impact)
- Check existing schema markup on key pages
- Recommend and implement the right schema types per page:
- Homepage: Organization + WebSite (with SearchAction) + SiteNavigationElement
- About page: Organization + Person (for each team member/founder)
- Blog/articles: Article or BlogPosting with author, datePublished, dateModified
- Product/service pages: Product or Service + Offer + SoftwareApplication (for SaaS)
- FAQ pages: FAQPage — gold standard for AI answers, aim for 8-10+ questions
- How-to content: HowTo with steps
- Course/education: Course, CourseInstance
- Every page: BreadcrumbList (helps LLMs understand site structure)
sameAsis critical — link to ALL authoritative profiles (LinkedIn, Instagram, Twitter/X, GitHub, Crunchbase, Google Business). This is how LLMs connect your brand entity across the web.- Include
authorwith credentials on every article - See
assets/jsonld-templates.mdfor copy-paste templates
Common mistakes to flag:
- FAQPage with only 2-3 questions (too few — aim for 8-10+)
- Missing
sameAson Organization (kills entity linking) - SoftwareApplication without
offerspricing - Article without
authorordateModified
E. Content Structure (Highest Impact for Citations)
These patterns dramatically increase AI citation probability:
- Definitional opening: The first paragraph on the page MUST contain a clear definition: "[Brand] is a [category] that [what it does]." LLMs need this to cite you. If the page opens with a marketing hook instead of a definition, flag it.
- Direct answers first: Start each section with a clear, direct answer in the first 40-60 words. Then expand with context. LLMs extract the first clear statement as the answer.
- Heading hierarchy: Use clean H2/H3 structure. Each heading should be a natural question or topic phrase that someone might ask an AI. Good: "What is [X]?" or "How does [X] work?". Bad: "Our Amazing Solution" or "Why Us".
- Fact density: Include a statistic, data point, or verifiable claim every 150-200 words. Claims without data ("save 80%") are weaker than claims with context ("clinics using X reported 80% reduction in no-shows in a 2025 study").
- Lists and tables: Structured ranking information (numbered lists, comparison tables) gets preferential treatment in AI answers. Pricing comparison tables are especially powerful.
- TL;DR statements: Add brief summaries under key headings that can stand alone as complete answers.
- Source citations: Link to authoritative sources. AI engines apply multi-source corroboration — content backed by references gets higher confidence.
- Definitions: When introducing terms, use clear definitional patterns ("X is..." or "X refers to...").
F. Meta & Social Tags (Medium Impact)
- Title tags: Include the primary question/topic the page answers. Avoid pure marketing copy.
- Meta descriptions: Write as a concise, self-contained answer (not a teaser). This is often what LLMs extract as a summary.
- Open Graph tags: Complete og:title, og:description, og:image (1200x630), og:type, og:url, og:locale
- Twitter Cards: summary_large_image with title, description, image
- Canonical URLs:
<link rel="canonical">on every page. Check that og:url matches canonical. Check www vs non-www consistency. - hreflang: If multilingual, add hreflang tags for each language variant.
Common mistakes to flag:
- og:url pointing to different domain than canonical (e.g.,
clinisharp.comvswww.clinisharp.com.br) - Missing
<link rel="canonical"> - Meta description that's a teaser ("Learn more...") instead of an answer
G. Content Freshness (Medium Impact)
- Add visible "Last updated: YYYY-MM-DD" timestamps on every content page
- Include
datePublishedanddateModifiedin JSON-LD (Article, BlogPosting, etc.) - Update cornerstone content regularly with new data/insights
- Use time-stamped data ("As of Q1 2026, ...")
<lastmod>in sitemap.xml must reflect actual content changes, not build dates- A blog that hasn't been updated in 6+ months signals staleness to AI models
H. Authority Signals (Ongoing)
- Author bios with credentials and
sameAslinks to professional profiles - About/Sobre page with Organization schema, founding story, team, CNPJ/tax ID
- References to and from third-party publications (press mentions, guest posts, partnerships)
- Consistent NAP (Name, Address, Phone) across the web
- Customer testimonials with real names and companies (not anonymous)
- Case studies with measurable results
- Industry certifications and compliance badges (LGPD, ISO, SOC2, etc.)
I. Content Strategy Assessment (Long-term Impact)
This is what separates a 40-score site from a 90-score site over time:
- Does the site have a blog or content hub? Sites without one are nearly invisible to LLMs for informational queries.
- Content depth: A single landing page is not enough. LLMs prefer citing sites that demonstrate deep expertise through multiple, interconnected articles.
- Topic authority: Does the content cover the full range of questions in its domain? For a clinic software, this means: guides on clinic management, comparisons, how-tos, industry data.
- Content freshness: How recently was content published? Are there dated articles?
- Read
references/content-strategy.mdfor a full guide on creating GEO-optimized content.
4. Generate Report
Always produce two outputs: a terminal-friendly markdown report AND an interactive HTML report.
A. Terminal Output (always shown)
Use visual formatting to make the terminal output scannable and engaging:
## GEO Audit: [Site Name]
### Score: [X]/100 [BADGE]
[Progress bar using block chars: ████████░░░░░░░░░░░░ 38/100]
### Score Breakdown
| Category | Score | Max | Status |
|-------------------|-------|-----|--------|
| AI Crawler Access | 0 | 10 | MISS |
| Sitemap | 0 | 5 | MISS |
| ... | | | |
### Critical Issues
[RED] robots.txt — Missing (0/10)
[RED] llms.txt — Missing (0/10)
[RED] sitemap.xml — Missing (0/5)
### High Impact
[YLW] Structured Data — Partial (10/20)
[YLW] Content Structure — Needs work (12/20)
### Quick Wins (< 30 min each)
1. Create robots.txt — 15 min
2. Create llms.txt — 30 min
3. Fix og:url canonical — 5 minUse these status markers in markdown:
MISSfor items scoring 0 (critical)WARNfor items below 50% of maxOKfor items above 50%GOODfor items at full score
B. HTML Report (saved to file)
After showing the terminal report, generate an interactive HTML report:
- Read the template from
assets/audit-report.html - Replace all
__PLACEHOLDER__values with actual audit data:__SITE_NAME__→ site name__SITE_URL__→ full URL__DATE__→ current date__SCORE__→ numeric score__SCORE_COLOR__→ color based on score (red < 30, orange < 50, yellow < 70, green >= 70)__SCORE_OFFSET__→ SVG offset:502.65 - (502.65 * score / 100)__SCORE_LABEL__→ "Critical" / "Needs Work" / "Decent" / "Strong" / "Elite"__SCORE_BG__→ background color with alpha__EXECUTIVE_SUMMARY__→ 2-3 sentence summary__CATEGORY_CARDS__→ HTML cards for each category with bar charts__ISSUES_CONTENT__→ all issues grouped by severity__CHECKLIST_ITEMS__→ interactive checklist items__CODE_FIXES__→ code blocks with ready-to-use fixes
- Write the HTML to
/tmp/geo-audit-[sitename].html - Open it with
open /tmp/geo-audit-[sitename].html
Category card HTML pattern:
<div class="cat-card">
<div class="cat-header">
<span class="cat-name">Category Name</span>
<span class="cat-score" style="color:VAR_COLOR">X/MAX</span>
</div>
<div class="cat-bar">
<div class="cat-bar-fill" style="width:PERCENT%;background:VAR_COLOR"></div>
</div>
<ul class="cat-issues">
<li class="critical">Issue description</li>
<li class="good">What's working well</li>
</ul>
</div>Checklist item HTML pattern:
<div class="check-item">
<div class="check-box"></div>
<div class="check-text">
<div class="action">Action description</div>
<div class="meta">
<span class="impact-badge impact-critical">Critical</span> · ~15 min
</div>
</div>
</div>Code fix HTML pattern:
<div class="code-block">
<div class="label">robots.txt</div>
<code>File contents here</code>
</div>C. Comparison Report (for re-audits)
When the user has a previous audit, also generate a comparison dashboard:
- Read
assets/comparison-dashboard.html - Replace placeholders with before/after data
- Show: score delta, per-category deltas, what changed, remaining issues
- Write to
/tmp/geo-compare-[sitename].htmland open it
Always provide ready-to-use code for every recommendation — don't just say "add Organization schema", provide the complete JSON-LD block with the site's actual data filled in. The user should be able to copy-paste and deploy.
5. Implement (if requested)
When the user asks to implement fixes:
- Create/update
robots.txt,llms.txt,sitemap.ts - Add JSON-LD
<script>blocks to pages - Restructure content for AI readability
- Fix meta tags and canonical URLs
- Create content templates for blog posts
Refer to references/frameworks.md for framework-specific file locations and patterns.
Key GEO Principles to Always Apply
Write for Citation, Not Just Ranking
Every paragraph should be able to stand alone as a cited source. Ask: "If an AI extracted just this paragraph, would it be a complete, accurate, useful answer?"
Entity Clarity
Make sure your brand, products, and people are clearly defined entities. Use consistent naming, link to canonical profiles, and provide enough context that an AI can confidently identify and reference you. The first mention of the brand on any page should be a complete definition.
Question-Answer Alignment
Structure content around the questions people actually ask AI. Use those questions as headings. Provide direct answers immediately. This is the single highest-impact content pattern for GEO.
The "Perplexity Test"
For any page, ask: "If someone asked Perplexity or ChatGPT about this topic, would my page provide a better answer than what's currently being cited?" If not, your content needs work.
Avoid GEO Anti-Patterns
- Walls of unstructured text with no headings
- Marketing-first headings that don't answer questions ("Our Amazing Solution" vs "What is X?")
- Clickbait titles that don't match content
- Content that requires clicking through to understand (multi-page articles)
- Thin content without factual claims or data
- Claims without data ("save 80%" with no source or context)
- Missing author attribution
- No dates on content
- Blocking AI crawlers in robots.txt while wanting AI visibility
- og:url / canonical URL mismatches (www vs non-www, http vs https)
- FAQ sections with only 2-3 questions (too few to be useful)
- Single-page sites with no content depth (landing page only)
Framework-Specific Guidance
Read references/frameworks.md for implementation details specific to:
- Next.js / React
- WordPress
- Static HTML
- Astro / Hugo / Other SSGs
- Django / Rails / Server-rendered apps
The reference file contains specific code patterns, file locations, and component examples for each framework.
Scoring Rubric
When generating an audit score, use this rubric (100 points total):
| Category | Points | Criteria for Full Score |
| AI Crawler Access | 10 | robots.txt exists, AI search bots explicitly allowed, SSR confirmed, no auth walls |
| Sitemap | 5 | sitemap.xml exists, referenced in robots.txt, includes all pages, has lastmod dates |
| llms.txt | 10 | Exists, well-structured, accurate description, links to key pages |
| Structured Data | 20 | Organization + WebSite + BreadcrumbList on homepage; correct type per page; sameAs links; FAQPage with 8+ questions |
| Content Structure | 20 | Definitional opening, direct answers first, clean heading hierarchy, fact density, lists/tables, Q&A headings |
| Meta & Social Tags | 10 | Title, description (answer-style), OG complete, Twitter Card, canonical consistent, hreflang if multilingual |
| Content Freshness | 10 | Visible dates, dateModified in schema, lastmod in sitemap, content updated within 6 months |
| Authority | 10 | About page, author bios with sameAs, org details (tax ID, address), testimonials, external references |
| Content Strategy | 5 | Blog/content hub exists, 5+ articles, covers domain questions, regular publishing cadence |
Quick Score Guide
- 0-25: Site is invisible to AI — missing fundamental infrastructure
- 26-50: Basic presence but major gaps — AI may find but won't cite
- 51-70: Decent foundation — some citations possible, clear path to improve
- 71-85: Strong GEO — regularly cited by AI for domain queries
- 86-100: Elite — first-choice source for AI engines in the domain
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.

