The complete GEO audit methodology.
Step 1: Inventory.
The inventory step builds the ground truth for everything that follows. You cannot audit what you cannot classify.
Most GEO engagements open with a client who thinks they have 80 pages and actually has 340. Half of them thin tag archives, duplicate paginated blog indexes, or orphaned legacy landing pages. The audit has to start with a real crawl.
What to do
- Run a full crawl. Screaming Frog for small-to-mid sites (under 10k URLs). Firecrawl or DataForSEO On-Page API for larger or JavaScript-heavy sites.
- Classify every URL by template: home, pillar, blog, product, category, landing, about, contact, legal, admin artifact.
- Measure word count, H-tag density, and internal link count per URL.
- Export the classified dataset to CSV. This CSV is the artifact Step 2 and Step 3 will reference.
Example Skill prompt
Skill: winston-tech-audit
Crawl {client_domain} and classify each URL by template.
Templates: home, pillar, blog-post, product, category,
landing, about, contact, legal, utility.
Output CSV with columns:
url, template, word_count, h2_count, h3_count,
internal_links_in, internal_links_out, schema_types
Flag any URL where template cannot be inferred.
What good looks like
A complete inventory tells you three things within ten minutes of reading it: how much content you actually have, how it distributes across templates, and where the orphans are.
Common failure modes
- Crawler respects robots.txt and misses a third of the site.
- JavaScript-rendered content missed because crawler is not running headless Chrome.
- Template classification collapses pillar pages into generic blog posts and loses signal.
- Pagination URLs counted as unique content.
Step 2: Chunk audit.
Chunk auditing is the step that separates GEO from traditional SEO. AI engines quote passages, not pages. So every H2 section must work as a standalone citable unit.
A chunk is citable when it can be lifted out of its page and still make sense. No pronoun dependencies. No "as mentioned above." No heading like "The first one" that requires the list above it for context.
What to do
- Sample 10-25% of URLs per template (full coverage for pillars, sample for blog posts).
- Score each H2 section on the 0-1-2 rubric: 0 (no structure or buried headings), 1 (structured but pronoun-dependent), 2 (self-contained and citable).
- Compute a page-level average score and a site-level median.
- Record top three failure patterns per template.
Example Skill prompt
Skill: aeo-content-auditor
Audit {url} against the chunk-readiness rubric.
For each H2 section, score 0-1-2:
0 = no direct-answer opening sentence OR no H2 structure
1 = structured, but first sentence uses pronouns referring
outside the section
2 = self-contained: first sentence is a direct answer
to the H2, no outside pronouns
Return: per-H2 score, the offending sentence if <2,
and a rewrite suggestion.
What good looks like
Site-level median of 1.5 or higher, with pillar pages at 2.0. Any pillar below 1.5 is a priority-one rewrite.
Common failure modes
- H2s that are questions but the first sentence does not answer them.
- Sections that open with "This is important because...". A phrase that assumes the reader just saw the prior section.
- Bulleted lists with no introductory direct-answer sentence.
Step 3: Schema audit.
Schema auditing is where most teams discover they are serving no structured data at all. Schema.org markup is the cheapest GEO win available.
AI engines read JSON-LD before they read prose. A page with FAQ schema is roughly ten times more likely to surface as a cited passage than the same page without it.
What to do
- For every template, check presence of: Article (or BlogPosting), FAQPage, HowTo, Organization, Person, WebSite, BreadcrumbList.
- Validate with Google's Rich Results Test and schema.org's validator. Note every warning, not just every error.
- Check that author Person schema is consistent across pages and linked to a single URL.
- Verify Organization schema includes sameAs links to LinkedIn, Crunchbase, and category-specific directories.
Example checklist output
| Template | Article | FAQPage | HowTo | Person | Status |
|---|---|---|---|---|---|
| Homepage | - | yes | - | - | Pass |
| Pillar | yes | yes | yes | yes | Pass |
| Blog post | yes | optional | if methodology | yes | Fix: missing Person |
| Service page | - | yes | - | - | Pass |
Common failure modes
- FAQ schema copy does not match the visible FAQ copy. Google penalizes this.
- Multiple Organization blocks on the same page, conflicting.
- HowTo schema with zero steps because the author copied the template literally.
Step 4: Entity audit.
The entity audit checks whether the site tells a coherent story about who the brand is, what it claims expertise in, and who it is not. AI engines need this to decide whether to cite you for a topic.
The test question is simple: can a model, given only your site, write one accurate paragraph describing your brand's category, your top three services, and two pieces of proof you are credible? If no, the entity signal is broken.
What to do
- Audit the About page: does it name the category, the founder, and at least three specific service areas?
- Check Person schema on every author byline. Include sameAs links to public profiles.
- Audit the About page's Organization schema for `knowsAbout`, `areaServed`, and `memberOf` where applicable.
- Run a prompt against Claude and ChatGPT: "Based on {domain}, describe what this company does and who works there." Note what the engine gets wrong.
Example prompt used inside the audit
You are the entity-audit agent.
Given the crawled content of {domain}, answer:
1. What category does this company operate in?
2. Who is the founder or primary public voice?
3. What are the top three services, in plain language?
4. Name two pieces of proof that this company is credible.
If any answer requires more than surface-level inference,
flag the underlying page as an entity-signal gap.
Common failure modes
- About page is three sentences and a stock photo.
- No Person schema on author bylines, so citations go to generic "the author" references.
- Services described in marketing abstractions instead of named deliverables.
Step 5: Citation analysis.
Citation analysis is where the audit becomes an ongoing instrument, not a one-shot deliverable. You run scheduled queries against the AI engines and record who gets cited.
This is the only step that produces a competitor map grounded in the actual answer space, not in SERP proxies.
What to do
- Build a prompt set of 50-200 buyer-intent questions in the client's category.
- Run the prompts against ChatGPT, Perplexity, Claude, and Google AI Overviews. Record cited domains and cited passages.
- Classify cited domains: client, direct competitor, publisher, Reddit or Quora thread, other.
- Compute citation share per engine and per prompt cluster.
- Re-run weekly. Track deltas.
Example Skill prompt
Skill: anthropic-skills:geo-prompt-research
Generate 150 buyer-intent prompts for {client_category}.
Cover: definitional, comparative, recommendation, tutorial,
and troubleshooting intents.
Then schedule a daily run against ChatGPT, Perplexity, Claude,
and Google AI Overviews. Log cited URL, cited passage,
competitor domains, and answer position.
Common failure modes
- Prompt set skewed toward branded queries, which inflates your citation share.
- Running only against one engine and generalizing.
- Treating a single run as signal. Citation behavior varies day to day.
Step 6: Competitive delta.
The competitive delta maps your site's scores from Steps 2-4 against the competitors surfaced in Step 5. The point is to find where the gap is largest and where the fastest wins sit.
What to do
- Pick the top five cited competitors from Step 5.
- Run the chunk, schema, and entity audits against each of them, using the same rubric.
- Build a 5-column comparison table across the four scored dimensions.
- Flag any dimension where your score is more than 0.5 below the competitor median. That is priority content work.
Common failure modes
- Scoring your own site with different rigor than the competitors (bias).
- Ignoring publisher sites that outrank you on citation share just because they are not direct competitors. They still own the answer space.
Step 7: Roadmap.
The roadmap sequences the fixes by impact-to-effort. High-impact-low-effort first.
Recommended sequence
- Weeks 1-2: Schema. Fastest win, highest citation-probability delta. FAQ and HowTo everywhere they fit.
- Weeks 3-6: Chunk rewrites on pillars. Top-20 highest-traffic pages. Rewrite every H2 opening to pass the 0-1-2 rubric at 2.
- Weeks 7-10: Entity content. Rebuild About page. Add Person schema with sameAs. Write an "About our methodology" page if one does not exist.
- Weeks 11-12: Citation-source seeding. Publish guest content and methodology docs on the publisher sites that Step 5 showed are over-cited by AI engines in your category.
Re-audit at week 13 and measure citation share delta.
The scoring rubric.
The 0-1-2 scale applied across the four scored dimensions.
| Dimension | 0 | 1 | 2 |
|---|---|---|---|
| Chunk readiness | No H2 structure or buried headings | H2s exist but openings are pronoun-dependent | Every H2 opens with a direct-answer sentence |
| Schema coverage | No JSON-LD or broken markup | Partial coverage; some templates missing schema | Full coverage across all templates, validated |
| Entity clarity | No About page or contradictory brand story | About page exists but lacks Person/Org schema | Consistent entity signal across content and schema |
| Citation presence | Zero citations across tracked prompts | Cited on <20% of tracked prompts | Cited on 20%+ of tracked prompts across engines |
Median score across dimensions is the site's GEO readiness grade. Anything below 1.5 is a GEO engagement worth taking on.