#136 by GitHub stars
zubair-trabzada/geo-seo-claude
GEO-first SEO skill for Claude Code. Comprehensive AI search optimization for any website — citability scoring, AI crawler analysis, brand authority, schema markup, platform-specific optimization, and PDF reports. If you want learn how to sell this to real businesses, check out the skool community
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
geo/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-audit/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-brand-mentions/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-citability/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-compare/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-content/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-crawlers/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-llmstxt/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-platform-optimizer/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-proposal/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-prospect/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-report/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-report-pdf/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-schema/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-technical/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
skills/geo-update/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
989cae01e8eb → 989cae01e8eb
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 989cae01e8eb
No earlier version was observed for comparison.
Verified commit 989cae01e8ebbc42a9ec798eb9e7cb423f5ec89c
git clone --filter=blob:none --no-checkout https://github.com/zubair-trabzada/geo-seo-claude.git .hotskills/zubair-trabzada-geo-seo-claude && git -C .hotskills/zubair-trabzada-geo-seo-claude checkout --detach 989cae01e8ebbc42a9ec798eb9e7cb423f5ec89c
# Copy each selected skill directory from .hotskills/zubair-trabzada-geo-seo-claude into .claude/skills/<skill-name>/Heat
6.1- Star growth, last 7 daysAhead of 88% of tracked repositories
- Star growth, last 24 hoursAhead of 86% of tracked repositories
- Rank movement, last 7 daysAhead of 63% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- geo
geo - geo-audit
skills/geo-audit - geo-brand-mentions
skills/geo-brand-mentions - geo-citability
skills/geo-citability - geo-compare
skills/geo-compare - geo-content
skills/geo-content - geo-crawlers
skills/geo-crawlers - geo-llmstxt
skills/geo-llmstxt - geo-platform-optimizer
skills/geo-platform-optimizer - geo-proposal
skills/geo-proposal - geo-prospect
skills/geo-prospect - geo-report
skills/geo-report - geo-report-pdf
skills/geo-report-pdf - geo-schema
skills/geo-schema - geo-technical
skills/geo-technical - geo-update
skills/geo-update
How it works
geo
When your agent uses it
GEO-first SEO analysis tool. Optimizes websites for AI-powered search engines (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews) while maintaining traditional SEO foundations. Performs full GEO audits, citability scoring, AI crawler analysis, llms.txt generation, brand mention scanning, platform-specific optimization, schema markup, technical SEO, content quality (E-E-A-T), and client-ready GEO report generation. Use when user says "geo", "seo", "audit", "AI search", "AI visibility", "optimize", "citability", "llms.txt", "schema", "brand mentions", "GEO report", or any URL for analysis.
What it loads into context
Frontmatter
171 tokensAlways available to the agent
SKILL.md
2,883 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Reference
- Market Context (Why GEO Matters)
- Orchestration Logic
- Business Type Detection
- Sub-Skills (14 Specialized Components)
- Subagents (5 Parallel Workers)
- Output Files
- PDF Report Generation
- Quality Gates
- Quick Start Examples
Files
SKILL.mdcore11,167 bytesSKILL.mdcore11,167 bytes
Read SKILL.md
# GEO-SEO Analysis Tool — Claude Code Skill (February 2026)
> **Philosophy:** GEO-first, SEO-supported. AI search is eating traditional search.
> This tool optimizes for where traffic is going, not where it was.
---
## Quick Reference
| Command | What It Does |
|---------|-------------|
| `/geo audit <url>` | Full GEO + SEO audit with parallel subagents |
| `/geo page <url>` | Deep single-page GEO analysis |
| `/geo citability <url>` | Score content for AI citation readiness |View the complete source on GitHubgeo-audit
When your agent uses it
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit across AI citability, platform analysis, technical infrastructure, content quality, and schema markup. Produces a composite GEO Score (0-100) with prioritized action plan.
What it loads into context
Frontmatter
92 tokensAlways available to the agent
SKILL.md
2,893 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Key Insight
- Audit Workflow
- Issue Severity Classification
- Output Format
- Quality Gates
- Business-Type-Specific Audit Adjustments
Files
SKILL.mdcore12,320 bytesSKILL.mdcore12,320 bytesSKILL.mdcore12,320 bytesSKILL.mdcore12,320 bytes
Read SKILL.md
# GEO Audit Orchestration Skill
## Purpose
This skill performs a comprehensive Generative Engine Optimization (GEO) audit of any website. GEO is the practice of optimizing web content so that AI systems (ChatGPT, Claude, Perplexity, Gemini, etc.) can discover, understand, cite, and recommend it. This audit measures how well a site performs across all GEO dimensions and produces an actionable improvement plan.
## Key Insight
Traditional SEO optimizes for search engine rankings. GEO optimizes for AI citation and recommendation. Sites that score high on GEO metrics see 30-115% more visibility in AI-generated responses (Georgia Tech / Princeton / IIT Delhi 2024 study). The two disciplines overlap but have distinct requirements.
---
## Audit Workflow
View the complete source on GitHubgeo-brand-mentions
When your agent uses it
Brand mention and authority scanner for AI visibility. Analyzes brand presence across platforms that AI models rely on for entity recognition and citation decisions. Produces a Brand Authority Score (0-100) with platform-specific recommendations.
What it loads into context
Frontmatter
81 tokensAlways available to the agent
SKILL.md
5,469 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Insight
- Platform Importance Ranking for AI Citations
- Composite Brand Authority Score
- Analysis Procedure
- Output Format
- Reference Data
Files
SKILL.mdcore23,108 bytesSKILL.mdcore23,108 bytesSKILL.mdcore23,108 bytesSKILL.mdcore23,108 bytes
Read SKILL.md
# Brand Mention Scanner Skill
## Core Insight
Brand mentions correlate approximately 3x more strongly with AI visibility than traditional backlinks. An Ahrefs study published in December 2025, analyzing 75,000 brands across AI search platforms, found that **unlinked brand mentions** -- references to a brand name without a hyperlink -- are a stronger predictor of whether AI systems cite and recommend a brand than Domain Rating or backlink count.
The critical finding: **the platform where the mention appears matters enormously.** Not all mentions are equal. A mention on YouTube or Reddit carries far more weight for AI citation than a mention on a low-authority blog, because AI training data and retrieval systems disproportionately index high-engagement platforms.
This inverts a core assumption of traditional SEO. In traditional SEO, a backlink from a high-DR site is the gold standard. In GEO, an unlinked mention on Reddit or a YouTube video description may be more valuable than a dofollow backlink from a DR 70 blog.
---
## Platform Importance Ranking for AI Citations
View the complete source on GitHubgeo-citability
When your agent uses it
AI citability scoring and optimization. Analyzes web page content to determine how likely AI systems (ChatGPT, Claude, Perplexity, Gemini) are to cite or quote passages from the page. Provides a citability score (0-100) with specific rewrite suggestions.
What it loads into context
Frontmatter
93 tokensAlways available to the agent
SKILL.md
3,542 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Insight
- Citability Scoring Rubric (0-100)
- Analysis Procedure
- Output Format
- Reference Data
Files
SKILL.mdcore14,804 bytesSKILL.mdcore14,804 bytes
Read SKILL.md
# AI Citability Scoring Skill
## Core Insight
AI language models cite passages that meet specific structural criteria. Research from Princeton, Georgia Tech, and IIT Delhi (2024) found that GEO-optimized content achieves 30-115% higher visibility in AI-generated responses. The key finding: AI systems preferentially extract and cite passages that are **134-167 words long**, **self-contained** (understandable without surrounding context), **fact-rich** (containing specific statistics, dates, or named entities), and **directly answer a question** in the first 1-2 sentences.
This is fundamentally different from traditional SEO copywriting, which optimizes for keyword density and user engagement metrics. GEO citability optimizes for **extractability** -- the ease with which an AI system can pull a passage from your content and present it as a direct answer.
---
## Citability Scoring Rubric (0-100)
### Category 1: Answer Block Quality (30% of total score)
View the complete source on GitHubgeo-compare
When your agent uses it
Monthly delta tracking and progress reporting for GEO clients. Compares two GEO audits (baseline vs. current), calculates score improvements across all categories, tracks action item completion, and generates a "here's your progress" client report. Use when user says "compare", "delta", "monthly report", "progress", "confronta", "progressi", "report mensile", or when running a monthly client check-in.
What it loads into context
Frontmatter
137 tokensAlways available to the agent
SKILL.md
2,751 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Commands
- Workflow
- Report Template
- Delta Calculation Logic
- Trend Interpretation
- Output
Files
SKILL.mdcore9,952 bytes
Read SKILL.md
# GEO Monthly Delta Report Generator
## Purpose
The single most powerful retention tool for a GEO agency: show clients **exactly**
what improved since they started working with you. Every point gained on the GEO
score is proof of value. This skill generates the "here's your progress" report.
---
## Commands
```
/geo compare <domain>View the complete source on GitHubgeo-content
When your agent uses it
Content quality and E-E-A-T assessment for AI citability — evaluate experience, expertise, authoritativeness, trustworthiness, and content structure
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
3,751 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- How to Use This Skill
- E-E-A-T Framework (100 points total)
- Content Quality Metrics
- AI Content Assessment
- Content Freshness Assessment
- Topical Authority Assessment
- Overall Scoring (0-100)
- Output Format
Files
SKILL.mdcore15,913 bytesSKILL.mdcore15,913 bytes
Read SKILL.md
# GEO Content Quality & E-E-A-T Assessment
## Purpose
AI search platforms do not just find content — they evaluate whether content deserves to be cited. The primary framework for this evaluation is **E-E-A-T** (Experience, Expertise, Authoritativeness, Trustworthiness), which per Google's December 2025 Quality Rater Guidelines update now applies to **ALL competitive queries**, not just YMYL (Your Money Your Life) topics. Content that scores high on E-E-A-T is dramatically more likely to be cited by AI platforms.
This skill evaluates content through two lenses:
1. **E-E-A-T signals** — does the content demonstrate real expertise and trust?
2. **AI citability** — is the content structured so AI platforms can extract and cite specific claims?
## How to Use This Skill
1. Fetch the target page(s) — homepage, key blog posts, service/product pages
2. Evaluate E-E-A-T across the 4 dimensions (25% each)View the complete source on GitHubgeo-crawlers
When your agent uses it
AI crawler access analysis. Checks robots.txt, meta tags, and HTTP headers to determine which AI crawlers can access the site. Provides a complete access map and recommendations for maximizing AI visibility while maintaining appropriate control.
What it loads into context
Frontmatter
79 tokensAlways available to the agent
SKILL.md
4,620 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Key Insight
- Complete AI Crawler Reference
- Recommendation Matrix Summary
- Analysis Procedure
- Output Format
- Scoring for Crawler Access
Files
SKILL.mdcore18,885 bytesSKILL.mdcore18,885 bytesSKILL.mdcore18,885 bytes
Read SKILL.md
# AI Crawler Access Analysis Skill
## Purpose
This skill analyzes a website's accessibility to AI crawlers -- the bots that AI companies use to discover, index, and train on web content. If AI crawlers are blocked, the site's content cannot appear in AI-generated responses regardless of its quality. Crawler access is the foundational technical requirement for GEO.
## Key Insight
As of early 2026, many websites inadvertently block AI crawlers through overly aggressive robots.txt rules, inherited from legacy SEO configurations. An Originality.ai 2025 study found that over 35% of the top 1,000 websites block at least one major AI crawler, and 5-10% block all AI crawlers. Blocking AI crawlers is the single fastest way to become invisible in AI-generated search results.
---
## Complete AI Crawler Reference
View the complete source on GitHubgeo-llmstxt
When your agent uses it
Analyzes and generates llms.txt files -- the emerging standard for helping AI systems understand website structure and content. Can validate existing llms.txt files or generate new ones from scratch by crawling the site.
What it loads into context
Frontmatter
79 tokensAlways available to the agent
SKILL.md
3,695 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Why llms.txt Matters
- The llms.txt Specification
- llms-full.txt (Extended Version)
- Analysis Mode
- Generation Mode
- Output Format
- Best Practices Reference
Files
SKILL.mdcore15,739 bytes
Read SKILL.md
# llms.txt Standard Analysis and Generation Skill
## Purpose
This skill handles everything related to the `llms.txt` standard -- an emerging convention (proposed by Jeremy Howard in September 2024, gaining adoption through 2025-2026) that allows websites to provide structured guidance to AI systems about their content, structure, and key information. It is analogous to `robots.txt` (which tells crawlers what NOT to access) but instead tells AI systems what IS most useful to understand about the site.
## Why llms.txt Matters
AI language models face a fundamental challenge when processing websites: they must determine which pages are most important, what the site is about, and how content is organized -- typically by crawling many pages and inferring structure. `llms.txt` solves this by providing an explicit, machine-readable (and human-readable) summary.
**Benefits of having a well-crafted llms.txt:**
1. **Faster AI comprehension:** AI systems can understand your site's purpose and structure from a single file rather than crawling dozens of pages.
2. **Controlled narrative:** You choose which pages and facts AI systems see first, shaping how they represent your brand.View the complete source on GitHubgeo-platform-optimizer
When your agent uses it
Platform-specific AI search optimization — audit and optimize for Google AI Overviews, ChatGPT, Perplexity, Gemini, and Bing Copilot individually
What it loads into context
Frontmatter
97 tokensAlways available to the agent
SKILL.md
4,513 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Insight
- How to Use This Skill
- Platform 1: Google AI Overviews (AIO)
- Platform 2: ChatGPT Web Search
- Platform 3: Perplexity AI
- Platform 4: Google Gemini
- Platform 5: Bing Copilot
- Cross-Platform Summary
- Output Format
Files
SKILL.mdcore18,997 bytesSKILL.mdcore18,997 bytesSKILL.mdcore18,997 bytes
Read SKILL.md
# GEO Platform Optimizer
## Core Insight
Only **11% of domains** are cited by BOTH ChatGPT and Google AI Overviews for the same query. Each AI search platform uses different indexes, ranking logic, and source preferences. A page optimized for Google AI Overviews may be invisible to ChatGPT, and vice versa. Platform-specific optimization is not optional — it is the foundation of any serious GEO strategy.
## How to Use This Skill
1. Collect the target URL and the site's primary topic/industry
2. Run each platform checklist below against the site
3. Score each platform on the 0-100 rubric
4. Generate GEO-PLATFORM-OPTIMIZATION.md with per-platform scores, gaps, and action items
---View the complete source on GitHubgeo-proposal
When your agent uses it
Auto-generate a professional, client-ready GEO service proposal from audit data. Creates a full proposal in markdown and PDF including executive summary, findings, recommended service packages (Basic/Standard/Premium), pricing, timeline, and terms. Use when user says "proposal", "proposta", "offerta", "preventivo", "generate proposal", or after completing a GEO audit for a prospect.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
2,985 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Command
- Workflow
- Proposal Template
- Output
- Pricing Recommendation Logic
Files
SKILL.mdcore11,973 bytes
Read SKILL.md
# GEO Proposal Generator
## Purpose
Generate a fully customized, client-ready GEO service proposal that:
1. Pulls findings directly from the prospect's GEO audit
2. Translates technical gaps into business pain points
3. Presents 3 service tiers with clear pricing
4. Includes a realistic ROI projection
5. Outputs a professional markdown document ready to send
---
## CommandView the complete source on GitHubgeo-prospect
When your agent uses it
CRM-lite for managing GEO agency prospects and clients. Track leads through the full sales pipeline: Lead → Qualified → Proposal Sent → Won → Lost. Store audit history, notes, deal values, and generate pipeline summaries. Use when user says "prospect", "lead", "client", "pipeline", "crm", "nuovo prospect", "aggiungi cliente", or when managing the business side of GEO services.
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
1,730 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Commands
- Data Structure
- Orchestration Instructions
- Storage Location
- Pipeline Stage Definitions
- Output
Files
SKILL.mdcore7,453 bytesSKILL.mdcore7,453 bytes
Read SKILL.md
# GEO Prospect Manager
## Purpose
Manage GEO agency prospects and clients through the full sales lifecycle.
All data is stored in `~/.geo-prospects/prospects.json` (persistent across sessions).
---
## Commands
| Command | What It Does |
|---------|-------------|
| `/geo prospect new <domain>` | Create new prospect (interactive prompts) |View the complete source on GitHubgeo-report
When your agent uses it
Generate a professional, client-facing GEO report combining all audit results into a single deliverable with scores, findings, and prioritized actions
What it loads into context
Frontmatter
85 tokensAlways available to the agent
SKILL.md
4,257 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- How to Use This Skill
- GEO Readiness Score Calculation
- Report Template
- Formatting and Tone Guidelines
- Output
Files
SKILL.mdcore18,135 bytesSKILL.mdcore18,135 bytes
Read SKILL.md
# GEO Client Report Generator
## Purpose
This skill aggregates outputs from all GEO audit skills into a single, professional report that can be delivered directly to a client or stakeholder. The report is written for **business owners and marketing leaders**, not developers — technical findings are translated into business impact and clear action items with priority levels.
## How to Use This Skill
1. Run the following audits first (or use existing report data):
- `geo-platform-optimizer` -> GEO-PLATFORM-OPTIMIZATION.md
- `geo-schema` -> GEO-SCHEMA-REPORT.md
- `geo-technical` -> GEO-TECHNICAL-AUDIT.md
- `geo-content` -> GEO-CONTENT-ANALYSIS.md
- (Optional) `geo-llmstxt` -> llms.txt assessmentView the complete source on GitHubgeo-report-pdf
When your agent uses it
Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-tagged findings, and a 90-day roadmap.
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
1,334 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites
- How It Works
- Workflow
- What the PDF Contains
- Customizing the Report
- Troubleshooting
Files
SKILL.mdcore5,096 bytesSKILL.mdcore5,096 bytesSKILL.mdcore5,096 bytes
Read SKILL.md
# GEO PDF Report Generator (pandoc pipeline)
## Prerequisites
- **pandoc** — `brew install pandoc`
- **Google Chrome** — must be installed at `/Applications/Google Chrome.app/`
No Python dependencies. No ReportLab. No JSON data wrangling.
## How It Works
1. Read `GEO-AUDIT-REPORT.md` in the current directory (created by `/geo audit`)
2. Extract cover metadata from the report (brand name, domain, GEO score, date, locations)
3. Run `pandoc` with the bundled CSS + HTML template to produce a self-contained `GEO-REPORT.html`View the complete source on GitHubgeo-schema
When your agent uses it
Schema.org structured data audit and generation optimized for AI discoverability — detect, validate, and generate JSON-LD markup
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
3,638 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- How to Use This Skill
- Step 1: Detection
- Step 2: Validation
- Step 3: Schema Types for GEO
- Step 4: Deprecated/Changed Schemas to Flag
- Step 5: sameAs Strategy (CRITICAL for Entity Recognition)
- Step 6: JSON-LD Generation
- Scoring Rubric (0-100)
- Output Format
Scripts executed separately
../../scripts/fetch_page.py
Files
../../scripts/fetch_page.pyruns19,114 bytesSKILL.mdcore14,734 bytesSKILL.mdcore14,734 bytes
Read SKILL.md
# GEO Schema & Structured Data
## Purpose
Structured data is the primary machine-readable signal that tells AI systems what an entity IS, what it does, and how it connects to other entities. While schema markup has traditionally been about earning Google rich results, its role in GEO is fundamentally different: **structured data is how AI models understand and trust your entity**. A complete entity graph in structured data dramatically increases citation probability across all AI search platforms.
## How to Use This Skill
1. Fetch the target page HTML using `fetch_page.py` (see note below)
2. Detect all existing structured data (JSON-LD, Microdata, RDFa)
3. Validate detected schemas against Schema.org specifications
4. Identify missing recommended schemas based on business type
5. Generate ready-to-use JSON-LD code blocks
6. Output GEO-SCHEMA-REPORT.mdView the complete source on GitHubgeo-technical
When your agent uses it
Technical SEO audit with GEO-specific checks — crawlability, indexability, security, performance, SSR, and AI crawler access
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
5,680 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- How to Use This Skill
- Category 1: Crawlability (15 points)
- Category 2: Indexability (12 points)
- Category 3: Security (10 points)
- Category 4: URL Structure (8 points)
- Category 5: Mobile Optimization (10 points)
- Category 6: Core Web Vitals (15 points)
- Category 7: Server-Side Rendering (15 points) — CRITICAL FOR GEO
- Category 8: Page Speed & Server Performance (15 points)
- Category 9: Agent-Readiness Signals (non-scoring)
- IndexNow Protocol
- Overall Scoring
- Output Format
Files
SKILL.mdcore22,723 bytes
Read SKILL.md
# GEO Technical SEO Audit
## Purpose
Technical SEO forms the foundation of both traditional search visibility and AI search citation. A technically broken site cannot be crawled, indexed, or cited by any platform. This skill audits 8 categories of technical health with specific attention to GEO requirements — most critically, **server-side rendering** (AI crawlers do not execute JavaScript) and **AI crawler access** (many sites inadvertently block AI crawlers in robots.txt).
## How to Use This Skill
1. Collect the target URL (homepage + 2-3 key inner pages)
2. Fetch each page using curl/WebFetch to get raw HTML and HTTP headers
3. Run through each of the 8 audit categories below
4. Score each category using the rubric
5. Generate GEO-TECHNICAL-AUDIT.md with results
View the complete source on GitHubgeo-update
When your agent uses it
Pull the latest GEO-SEO skill updates from the upstream repository. Compares installed files against the latest release, shows what changed, and updates all skills, agents, scripts, and schema templates in place.
What it loads into context
Frontmatter
62 tokensAlways available to the agent
SKILL.md
1,136 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Update Workflow
- Important Notes
Files
SKILL.mdcore4,326 bytesSKILL.mdcore4,326 bytesSKILL.mdcore4,326 bytesSKILL.mdcore4,326 bytesSKILL.mdcore4,326 bytes
Read SKILL.md
# GEO-SEO Update Skill
## Purpose
Updates the locally installed GEO-SEO skills, agents, scripts, and schema templates to the latest version from the upstream repository. Shows a summary of what changed before and after the update.
---
## Update Workflow
### Step 1: Determine Installed Location
The GEO-SEO toolkit installs to these locations under `~/.claude/`:
View the complete source on GitHubSkills included
- geo
- geo-audit
- geo-brand-mentions
- geo-citability
- geo-compare
- geo-content
- geo-crawlers
- geo-llmstxt
- geo-platform-optimizer
- geo-proposal
- geo-prospect
- geo-report
- geo-report-pdf
- geo-schema
- geo-technical
- geo-update
Repository facts
- License
- MIT
- Created
- Feb 18, 2026
- Last pushed
- Nov 6, 2026
- Forks
- 1,739
- Open issues
- 21
- Project activity
- Active
Rank over the last 12 weeks
Now #136 · best #122 · down 7 in 30 days
- #130 on Oct 29
- #132 from Oct 30 to Oct 31
- #131 from Nov 1 to Nov 2
- #134 from Nov 3 to Nov 5
- #135 on Nov 6
- #136 since Nov 7
45 earlier periods
- #121 on Aug 2
- #122 on Aug 8
- #123 on Aug 9
- #125 on Aug 10
- #126 on Aug 11
- #127 from Aug 12 to Aug 15
- #126 on Aug 16
- #127 from Aug 17 to Aug 21
- #126 on Aug 22
- #127 from Aug 23 to Aug 28
- #126 on Aug 29
- #124 on Aug 30
- #123 on Aug 31
- #124 on Sep 1
- #123 from Sep 2 to Sep 3
- #122 on Sep 4
- #123 on Sep 5
- #122 on Sep 6
- #123 from Sep 7 to Sep 9
- #124 on Sep 10
- #123 on Sep 11
- #124 from Sep 12 to Sep 15
- #123 on Sep 16
- #124 on Sep 17
- #125 on Sep 18
- #124 on Sep 19
- #126 on Sep 20
- #125 from Sep 21 to Sep 25
- #124 on Sep 26
- #126 from Sep 27 to Sep 29
- #125 on Sep 30
- #126 from Oct 1 to Oct 2
- #127 on Oct 3
- #126 on Oct 4
- #128 on Oct 5
- #126 on Oct 6
- #128 on Oct 7
- #129 on Oct 8
- #130 from Oct 9 to Oct 11
- #131 from Oct 12 to Oct 13
- #132 on Oct 14
- #131 from Oct 15 to Oct 17
- #132 from Oct 18 to Oct 22
- #131 from Oct 23 to Oct 25
- #129 on Oct 28
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 22 notes
geo/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-audit/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-audit/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-audit/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-brand-mentions/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-brand-mentions/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-brand-mentions/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-citability/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-content/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-crawlers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-crawlers/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-platform-optimizer/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-platform-optimizer/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-prospect/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-report/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-report-pdf/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-report-pdf/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-schema/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-update/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/geo-update/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 16 broad permissionsin 16 files: geo/SKILL.md:1 geo-audit/SKILL.md:1 geo-brand-mentions/SKILL.md:1 and 13 more
- 1 dangerous shell commandin 1 file: geo-update/SKILL.md:110
- 135 network referencesin 8 files: geo-schema/SKILL.md:53 geo-crawlers/SKILL.md:32 scripts/fetch_page.py:20 and 5 more
- No hidden or obfuscated text
- No instruction overrides
- 1 executable scriptin 1 file: scripts/fetch_page.py:1
- No access to secrets
- No requests to vote in Hot
Show all 153 signals by file
geo/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write - Network accessline 67
**Phase 1: Discovery (Sequential)** 1. Fetch homepage HTML (curl or WebFetch) - Network accessline 68
1. Fetch homepage HTML (curl or WebFetch) - Network accessline 234
# Full GEO audit of a website /geo audit https://example.com - Network accessline 235
/geo audit https://example.com - Network accessline 237
# Check if AI bots can see your site /geo crawlers https://example.com - Network accessline 238
/geo crawlers https://example.com - Network accessline 240
# Score a specific page for AI citability /geo citability https://example.com/blog/best-article - Network accessline 241
/geo citability https://example.com/blog/best-article - Network accessline 243
# Generate an llms.txt file for your site /geo llmstxt https://example.com - Network accessline 244
/geo llmstxt https://example.com - Network accessline 246
# Get a 60-second visibility snapshot /geo quick https://example.com - Network accessline 247
/geo quick https://example.com - Network accessline 249
# Generate a client-ready report /geo report https://example.com - Network accessline 250
/geo report https://example.com
scripts/fetch_page.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
AI_CRAWLERS = { "GPTBot": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)", - Network accessline 21
"GPTBot": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)", - Network accessline 22
"ClaudeBot": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +https://www.anthropic.com/claude-bot)", - Network accessline 23
"PerplexityBot": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)", - Network accessline 24
"GoogleBot": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", - Network accessline 25
"BingBot": "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)", - Network accessline 65
try: response = requests.get( - Network accessline 66
response = requests.get( - Network accessline 242
try: response = requests.get(robots_url, headers=DEFAULT_HEADERS, timeout=timeout) - Network accessline 243
response = requests.get(robots_url, headers=DEFAULT_HEADERS, timeout=timeout) - Network accessline 337
for key, check_url in [("llms_txt", llms_url), ("llms_full_txt", llms_full_url)]: try: response = requests.get( - Network accessline 338
try: response = requests.get( check_url, headers=DEFAULT_HEADERS, timeout=timeout - Network accessline 339
response = requests.get( - Network accessline 425
for sitemap_url in sitemap_urls: try: response = requests.get( - Network accessline 426
try: response = requests.get( sitemap_url, headers=DEFAULT_HEADERS, timeout=timeout - Network accessline 427
response = requests.get( - Network accessline 438
try: child_resp = requests.get( - Network accessline 439
child_resp = requests.get( - Network accessline 491
data = {"pages": pages, "count": len(pages)} elif mode == "blocks": response = requests.get(target_url, headers=DEFAULT_HEADERS, timeout=30) - Network accessline 492
elif mode == "blocks": response = requests.get(target_url, headers=DEFAULT_HEADERS, timeout=30) data = extract_content_blocks(response.text) - Network accessline 493
response = requests.get(target_url, headers=DEFAULT_HEADERS, timeout=30)
skills/geo-audit/SKILL.md
- Broad permissionsline 1
Bash
skills/geo-brand-mentions/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 248
brand = '[Brand_Name]' # Check Wikipedia API directly api_url = f'https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch={quote_plus(brand)}&format=json' - Network accessline 249
# Check Wikipedia API directly api_url = f'https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch={quote_plus(brand)}&format=json' r = requests.get(api_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) - Network accessline 250
api_url = f'https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch={quote_plus(brand)}&format=json' r = requests.get(api_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) data = r.json() - Network accessline 251
r = requests.get(api_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) - Network accessline 254
if results and brand.lower() in results[0].get('title', '').lower(): print(f'WIKIPEDIA PAGE EXISTS: {results[0][\"title\"]}') print(f'URL: https://en.wikipedia.org/wiki/{results[0][\"title\"].replace(\" \", \"_\")}') - Network accessline 255
print(f'WIKIPEDIA PAGE EXISTS: {results[0][\"title\"]}') print(f'URL: https://en.wikipedia.org/wiki/{results[0][\"title\"].replace(\" \", \"_\")}') else: - Network accessline 256
print(f'URL: https://en.wikipedia.org/wiki/{results[0][\"title\"].replace(\" \", \"_\")}') - Network accessline 258
print('No direct Wikipedia page found') # Check Wikidata wd_url = f'https://www.wikidata.org/w/api.php?action=wbsearchentities&search={quote_plus(brand)}&language=en&format=json' - Network accessline 259
# Check Wikidata wd_url = f'https://www.wikidata.org/w/api.php?action=wbsearchentities&search={quote_plus(brand)}&language=en&format=json' r2 = requests.get(wd_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) - Network accessline 260
wd_url = f'https://www.wikidata.org/w/api.php?action=wbsearchentities&search={quote_plus(brand)}&language=en&format=json' r2 = requests.get(wd_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) wd = r2.json() - Network accessline 261
r2 = requests.get(wd_url, headers={'User-Agent': 'GEO-Audit/1.0'}, timeout=15) - Network accessline 269
**Method 2 — Direct URL check (backup verification):** 1. WebFetch: `https://en.wikipedia.org/wiki/[Brand_Name]` — check if the page loads (not a redirect to search) - Network accessline 270
1. WebFetch: `https://en.wikipedia.org/wiki/[Brand_Name]` — check if the page loads (not a redirect to search) - Network accessline 271
2. WebFetch: `https://en.wikipedia.org/wiki/[Founder_Name]` for founder article
skills/geo-citability/SKILL.md
- Broad permissionsline 1
Bash
skills/geo-compare/SKILL.md
- Broad permissionsline 1
Read, Write, Bash, Glob
skills/geo-content/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write
skills/geo-crawlers/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 32
- **Operator:** OpenAI - **User-Agent:** `GPTBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)` - Network accessline 33
- **User-Agent:** `GPTBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)` - **Purpose:** Fetches content for ChatGPT's web browsing, plugins, and search - Network accessline 34
- **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)` - Network accessline 40
- **Operator:** OpenAI - **User-Agent:** `OAI-SearchBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; OAI-SearchBot/1.0; +https://docs.openai.com/bots/overview)` - Network accessline 41
- **User-Agent:** `OAI-SearchBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; OAI-SearchBot/1.0; +https://docs.openai.com/bots/overview)` - **Purpose:** Specifically powers ChatGPT's search - Network accessline 42
- **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; OAI-SearchBot/1.0; +https://docs.openai.com/bots/overview)` - Network accessline 48
- **Operator:** OpenAI - **User-Agent:** `ChatGPT-User` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ChatGPT-User/1.0; +https://openai.com/bot)` - Network accessline 49
- **User-Agent:** `ChatGPT-User` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ChatGPT-User/1.0; +https://openai.com/bot)` - **Purpose:** Used when a ChatGPT user explicitly asks the model to - Network accessline 50
- **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ChatGPT-User/1.0; +https://openai.com/bot)` - Network accessline 56
- **Operator:** Anthropic - **User-Agent:** `ClaudeBot` - **Full User-Agent String:** `ClaudeBot/1.0; +https://www.anthropic.com/claude-bot` - Network accessline 57
- **User-Agent:** `ClaudeBot` - **Full User-Agent String:** `ClaudeBot/1.0; +https://www.anthropic.com/claude-bot` - **Purpose:** Fetches web content for Claude's features including web search, citations, and analysis tools. - Network accessline 58
- **Full User-Agent String:** `ClaudeBot/1.0; +https://www.anthropic.com/claude-bot` - Network accessline 64
- **Operator:** Perplexity AI - **User-Agent:** `PerplexityBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)` - Network accessline 65
- **User-Agent:** `PerplexityBot` - **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)` - **Purpose:** Powers Perplexity's AI search engine, w - Network accessline 66
- **Full User-Agent String:** `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)` - Network accessline 99
- **Operator:** Amazon - **User-Agent:** `Amazonbot` - **Full User-Agent String:** `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (compatible; Amazonbot/0.1; +https://de - Network accessline 100
- **User-Agent:** `Amazonbot` - **Full User-Agent String:** `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (compatible; Amazonbot/0.1; +https://developer.amazon.com/supp - Network accessline 101
- **Full User-Agent String:** `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)` - Network accessline 120
- **Operator:** Common Crawl (nonprofit) - **User-Agent:** `CCBot` - **Full User-Agent String:** `CCBot/2.0 (https://commoncrawl.org/faq/)` - Network accessline 121
- **User-Agent:** `CCBot` - **Full User-Agent String:** `CCBot/2.0 (https://commoncrawl.org/faq/)` - **Purpose:** Builds the Common Crawl dataset, which is used as training data by many AI companies (Google, Meta, Stability AI, and others). - Network accessline 122
- **Full User-Agent String:** `CCBot/2.0 (https://commoncrawl.org/faq/)` - Network accessline 371
See https://contentsignals.org/ for the full specification.
skills/geo-llmstxt/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 39
https://example.com/llms.txt - Network accessline 53
- [Page Title](https://example.com/page-url): Concise description of what this page covers and why it matters. - Network accessline 54
- [Another Page](https://example.com/another-page): Description of content. - Network accessline 58
- [Less Critical Page](https://example.com/optional-page): Description. - Network accessline 128
## Contact - Website: https://example.com - Network accessline 129
- Website: https://example.com - Network accessline 313
- [Most Important Page](https://example.com/page): Description covering the key content on this page. - Network accessline 314
- [Second Page](https://example.com/page-2): Description of this page's content and value. - Network accessline 315
- [Third Page](https://example.com/page-3): What users and AI systems will find here. - Network accessline 319
- [Product A](https://example.com/product-a): Core features, target users, and pricing model for Product A. - Network accessline 320
- [Product B](https://example.com/product-b): What Product B does and how it differs from Product A. - Network accessline 324
- [Guide Title](https://example.com/guide): Comprehensive guide covering [topic] with [X] sections and practical examples. - Network accessline 325
- [Blog Post](https://example.com/blog/post): Analysis of [topic] with original data from [source]. - Network accessline 337
- Website: https://example.com - Network accessline 426
4. **Include your differentiators.** If your site has unique data, original research, or exclusive features, highlight these in descriptions and Key Facts. 5. **Keep it concise.** The llms.txt should be scannable in under 60 seconds. Save d - Network accessline 427
5. **Keep it concise.** The llms.txt should be scannable in under 60 seconds. Save detail for llms-full.txt. 6. **Use absolute URLs.** Always include the full `https://` URL, never relative paths. 7. **Test after deployment.** After uploadi - Network accessline 428
6. **Use absolute URLs.** Always include the full `https://` URL, never relative paths. - Network accessline 429
7. **Test after deployment.** After uploading, verify the file is accessible at `https://yourdomain.com/llms.txt` with no redirects.
skills/geo-platform-optimizer/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write
skills/geo-proposal/SKILL.md
- Broad permissionsline 1
Read, Write, Bash, Glob, WebFetch
skills/geo-prospect/SKILL.md
- Broad permissionsline 1
Read, Write, Bash, Glob
skills/geo-report-pdf/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, Write
skills/geo-report/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write
skills/geo-schema/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write - Network accessline 53
1. **Valid JSON**: Is the JSON-LD syntactically valid? Check for trailing commas, unquoted keys, malformed strings. 2. **Valid @type**: Does the `@type` match a recognized Schema.org type? Check against https://schema.org/docs/full.html. - Network accessline 54
2. **Valid @type**: Does the `@type` match a recognized Schema.org type? Check against https://schema.org/docs/full.html. - Network accessline 163
"@type": "WebSite", "name": "Site Name", "url": "https://example.com", - Network accessline 164
"name": "Site Name", "url": "https://example.com", "potentialAction": { - Network accessline 165
"url": "https://example.com", - Network accessline 168
"target": { "@type": "EntryPoint", "urlTemplate": "https://example.com/search?q={search_term_string}" - Network accessline 169
"@type": "EntryPoint", "urlTemplate": "https://example.com/search?q={search_term_string}" }, - Network accessline 170
"urlTemplate": "https://example.com/search?q={search_term_string}" - Network accessline 220
1. **Wikipedia article** — highest authority entity link 2. **Wikidata item** — machine-readable entity identifier (e.g., `https://www.wikidata.org/wiki/Q12345`) - Network accessline 221
2. **Wikidata item** — machine-readable entity identifier (e.g., `https://www.wikidata.org/wiki/Q12345`) - Network accessline 263
{ "@context": "https://schema.org", - Network accessline 264
"@context": "https://schema.org", - Network accessline 265
"@type": "Organization", "@id": "https://example.com/#organization", "name": "Company Name", - Network accessline 266
"@id": "https://example.com/#organization", - Network accessline 267
"name": "Company Name", "url": "https://example.com", "logo": { - Network accessline 268
"url": "https://example.com", - Network accessline 269
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png", - Network accessline 270
"@type": "ImageObject", "url": "https://example.com/logo.png", "width": 600, - Network accessline 271
"url": "https://example.com/logo.png", - Network accessline 278
"@type": "Person", "name": "Founder Name", "sameAs": "https://www.linkedin.com/in/founder" - Network accessline 279
"name": "Founder Name", "sameAs": "https://www.linkedin.com/in/founder" }, - Network accessline 280
"sameAs": "https://www.linkedin.com/in/founder" - Network accessline 295
}, "sameAs": [ "https://en.wikipedia.org/wiki/Company_Name", - Network accessline 296
"sameAs": [ "https://en.wikipedia.org/wiki/Company_Name", "https://www.wikidata.org/wiki/Q12345", - Network accessline 297
"https://en.wikipedia.org/wiki/Company_Name", - Network accessline 298
"https://www.wikidata.org/wiki/Q12345", - Network accessline 299
"https://www.linkedin.com/company/company-name", - Network accessline 300
"https://www.youtube.com/@companyname", - Network accessline 301
"https://twitter.com/companyname", - Network accessline 302
"https://github.com/companyname", - Network accessline 303
"https://www.crunchbase.com/organization/company-name"
skills/geo-technical/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash, WebFetch, Write - Network accessline 28
### 1.1 robots.txt Validity - Fetch `https://[domain]/robots.txt` - Network accessline 29
- Fetch `https://[domain]/robots.txt` - Network accessline 30
- Check for syntactic validity: proper `User-agent`, `Allow`, `Disallow` directives - Check for common errors: missing User-agent, wildcards blocking important paths, Disallow: / blocking entire site - Verify XML sitemap is referenced: `Sit - Network accessline 32
- Verify XML sitemap is referenced: `Sitemap: https://[domain]/sitemap.xml` - Network accessline 282
### Detection Method 1. Fetch the page with curl (no JavaScript execution): `curl -s [URL]` - Network accessline 283
1. Fetch the page with curl (no JavaScript execution): `curl -s [URL]` - Network accessline 285
3. If key content (headings, paragraphs, product info, article text) is MISSING from the curl output, the site relies on client-side rendering - Network accessline 321
### 8.1 Time to First Byte (TTFB) - Target: **< 800ms** (ideally < 200ms) - Measure with curl: `curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s\n' [URL]` - Network accessline 322
- Target: **< 800ms** (ideally < 200ms) - Measure with curl: `curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s\n' [URL]` - If TTFB > 800ms: check server location, caching, database queries, CDN usage - Network accessline 323
- Measure with curl: `curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s\n' [URL]` - Network accessline 376
**How to check:** Capture all `Link:` response headers from the standard homepage fetch (no extra request). - Network accessline 418
### Implementation Check 1. Check for IndexNow key file: `https://[domain]/.well-known/indexnow-key.txt` or similar - Network accessline 419
1. Check for IndexNow key file: `https://[domain]/.well-known/indexnow-key.txt` or similar
skills/geo-update/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 38
TEMP_DIR=$(mktemp -d) git clone --depth 1 https://github.com/zubair-trabzada/geo-seo-claude.git "$TEMP_DIR/repo" - Network accessline 39
git clone --depth 1 https://github.com/zubair-trabzada/geo-seo-claude.git "$TEMP_DIR/repo" - Dangerous shell operationline 110
rm -rf "$TEMP_DIR"
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 11 facts
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-audit/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-citability/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-compare/SKILL.md:11High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-content/SKILL.md:7High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-crawlers/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-llmstxt/SKILL.md:4High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-platform-optimizer/SKILL.md:7High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-proposal/SKILL.md:11High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-prospect/SKILL.md:11High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-report/SKILL.md:7High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgeo-technical/SKILL.md:7High confidence
Signal confidence: 153 facts
- Broad permissions in the frontmatter of the SKILL.mdgeo/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdgeo/SKILL.md:67Low confidence
- Network access in prose of the SKILL.mdgeo/SKILL.md:68Low confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:234High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:235High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:237High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:238High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:240High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:241High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:243High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:244High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:246High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:247High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:249High confidence
- Network access in code of the SKILL.mdgeo/SKILL.md:250High confidence
- Executable script in code of another filescripts/fetch_page.py:1Low confidence
- Network access in code of another filescripts/fetch_page.py:20Low confidence
- Network access in code of another filescripts/fetch_page.py:21Low confidence
- Network access in code of another filescripts/fetch_page.py:22Low confidence
- Network access in code of another filescripts/fetch_page.py:23Low confidence
- Network access in code of another filescripts/fetch_page.py:24Low confidence
- Network access in code of another filescripts/fetch_page.py:25Low confidence
- Network access in code of another filescripts/fetch_page.py:65Low confidence
- Network access in code of another filescripts/fetch_page.py:66Low confidence
- Network access in code of another filescripts/fetch_page.py:242Low confidence
- Network access in code of another filescripts/fetch_page.py:243Low confidence
- Network access in code of another filescripts/fetch_page.py:337Low confidence
- Network access in code of another filescripts/fetch_page.py:338Low confidence
- Network access in code of another filescripts/fetch_page.py:339Low confidence
- Network access in code of another filescripts/fetch_page.py:425Low confidence
- Network access in code of another filescripts/fetch_page.py:426Low confidence
- Network access in code of another filescripts/fetch_page.py:427Low confidence
- Network access in code of another filescripts/fetch_page.py:438Low confidence
- Network access in code of another filescripts/fetch_page.py:439Low confidence
- Network access in code of another filescripts/fetch_page.py:491Low confidence
- Network access in code of another filescripts/fetch_page.py:492Low confidence
- Network access in code of another filescripts/fetch_page.py:493Low confidence
- Broad permissions in the frontmatter of the SKILL.mdgeo-audit/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdgeo-brand-mentions/SKILL.md:1High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:248High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:249High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:250High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:251High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:254High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:255High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:256High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:258High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:259High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:260High confidence
- Network access in code of the SKILL.mdgeo-brand-mentions/SKILL.md:261High confidence
and 103 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path CLAUDE.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md geo/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md geo/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md geo/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md geo/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md geo/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/zubair-trabzada-geo-seo-claude/)