AEO AND GEO SKILL

AEO and GEO framework

A five-layer AEO and GEO framework, extractable structure, citation worthiness, schema depth, AI-readable access, real-world entity signals, with a rule that a stated gap beats an estimated number.

No key, no account neededClaude CodeClaude.ai (zip upload)Anthropic API

Install this skill
npx skills add addition-labs/skills --skill seo-aeo-geo

Run this in a terminal inside your project folder. Claude Code, Cursor and Codex then read the skill from where it lands.

  1. Step 01Open a terminal in your project folder
  2. Step 02Paste the command and press Enter
  3. Step 03Pick the agents to install to
  4. Step 04Ask the agent for the job; it reads the skill

seo-aeo-geoaddition-labs/skillsMIT licencecommit a67dd34updated 2026-09-07

RampStack’s skills share a house style: a framework with numbered layers, a workflow, failure patterns, a default output file, and one paragraph titled "If required data is unavailable" that says a stated gap is a complete answer. This one applies that style to AI search.

The five layers compound. Structure makes a passage extractable; citation worthiness makes it worth quoting; schema makes it machine-readable; access lets crawlers reach it; entity signals make the brand something an AI can cross-reference. The workflow is audit, list ten to twenty priority queries, test, find gaps, fix layer by layer, re-test quarterly.

It is shorter than ai-seo and less sourced than seo-geo. Its value is the order of operations and the honesty rule.

When to use it

The phrases that trigger it

Say any of these and an agent that has the skill installed will usually load it; you can also call it by name. The phrases are the skill’s own, from its description.

  • AEO
  • GEO
  • AI search
  • AI overview
  • generative search
  • LLM optimization
  • llms.txt
  • AI citation
  • answer engine

What’s inside

The playbook, section by section

  • Layer 1, extractable structure

    Direct answers in one to three sentences at the top of each section, question headers, atomic facts, tables, inline definitions, numbered steps.

  • Layer 2, citation worthiness

    Original data, specific numbers, named experts with Person schema, visible and schema dates, methodology disclosure, outbound citations.

  • Layer 3, structured data depth

    Required and recommended properties both filled, Person with sameAs, Organization on the homepage, BreadcrumbList site-wide.

  • Layer 4, AI-readable access

    llms.txt, an explicit robots.txt decision per AI crawler, semantic HTML, no client-only rendering for critical content.

  • Layer 5, entity signals

    Wikipedia only with genuine notability, Wikidata, consistent NAP, mentions across authoritative sources, review signals.

  • Seven failure patterns

    Including manufactured FAQ schema, single-product optimisation, and treating llms.txt as a magic bullet.

Reference files the agent loads on demand

2 files in the skill folder, read only when an instruction calls for one.

llms-txt-guide.md
How to write a useful llms.txt, with examples.
extraction-friendly-patterns.md
Content patterns AI extracts cleanly, shown before and after.

See it in action

One real run, in full

The request on the left went to the skill as installed. On the right is everything it returned, unedited; scroll inside the box to read it all.

You ask

Score https://addition-labs.com on your 5-layer framework. Fetch the homepage, https://addition-labs.com/robots.txt and https://addition-labs.com/llms.txt. Priority queries: 'ecommerce seo agency', 'aeo agency', 'what is answer engine optimization'. We cannot query the AI products live from here; state that gap as your rule requires.

The skill delivers

aeo-geo-strategy.md: addition-labs.com

Scope of this audit: the homepage (/), /robots.txt and /llms.txt, fetched 2026-09-11 with curl. Every URL listed in llms.txt was HEAD-checked for status. One Wikidata search and one Wikipedia lookup were run for the entity layer. Nothing else on the site was read, so scores describe what these three surfaces show, not the whole site.

1. Current AI visibility audit

Gap, stated per the data-availability rule. The workflow's step 3 requires querying the major AI products (ChatGPT search, Google AI Overviews, Perplexity, Gemini, Claude) with each priority query and recording which sources they cite. That cannot be done from this environment. So:

  • Needed: live citations for ecommerce seo agency, aeo agency, what is answer engine optimization from each AI product.
  • Obtained: none. No AI product was queried.
  • Affected: this section, the "is the site cited" column of the priority-query table in section 3, and the competitor gap analysis (step 4). Those are left empty rather than estimated. Everything else in this document rests on the fetched files and is unaffected.

What can be said without the live test: the site has a dedicated page for each of the three queries (see section 3), all three return HTTP 200, and all three are listed in llms.txt. Whether any AI product cites them is unknown.

2. Five-layer scorecard

Scores are 0 to 10 and are judged on the fetched surfaces only.

LayerScoreEvidence (fetched)What is missing
1. Extractable content structure4 / 10Homepage is server-rendered: 728 words of text are in the raw HTML with one <main>, 4 <article>, 11 <section>, 1 <h1>, 9 <h2>, 10 <h3>, 1 <ol> (the six-step process). The nine "hard problems" and the six steps are listed cleanly.No section opens with a definitive 1 to 3 sentence answer. No question-phrased H2/H3. No tables. No inline definition of AEO, SEO or AI visibility on the page, so the homepage answers none of the three priority queries directly. Carousel controls leak into the text (← →, "Swipe for all six steps", a bare digit run "3 5 2 1 4 2 6 3" from the You/We graphic), which is extraction noise.
2. Citation worthiness2 / 10The homepage names its case-study clients only by category ("official Apple retail", "global travel platforms"). llms.txt states that guides, glossary and comparisons list their sources and say what they could not measure.On the homepage: zero specific numbers, zero named authors, no publication or last-updated date (no <time>, no datePublished/dateModified anywhere in the HTML), no methodology text, no outbound citations. The citation-worthy material the site claims to have lives on pages not fetched here, so this score covers the homepage only.
3. Structured data depth4 / 10One JSON-LD block, valid JSON, @graph with Organization (@id, name, url, logo, legalName, email, full PostalAddress, one sameAs) and WebSite (publisher link, inLanguage). Canonical, Open Graph and Twitter tags present.Organization has no telephone, foundingDate, founder, description, areaServed, knowsAbout, contactPoint; sameAs holds a single LinkedIn URL. No Person, BreadcrumbList, FAQPage, Service, or ProfessionalService on the homepage. WebSite has no potentialAction. Minor: og:url is https://addition-labs.com while canonical is https://addition-labs.com/ (trailing-slash mismatch). Not validated in the Schema.org Validator or Rich Results Test (not run here).
4. AI-readable accessibility7 / 10/llms.txt exists at root, HTTP 200, text/plain; charset=utf-8, valid structure (H1, > description, one context paragraph, 13 H2/H3 sections, 168 links, every one of the 168 returned 200 with no redirects, all on the canonical host). /robots.txt is User-agent: * / Allow: / plus a sitemap line; nothing is blocked, and /sitemap.xml returns 200 application/xml. Homepage content is in the HTML, not injected client-side (one Vite module script, but the text is already present).llms.txt is 6,145 words and 168 URLs against the guide's 500 to 2,000 words and 10 to 30 cornerstone pieces; the file itself says "the pages below are the whole published site", which is the "treating it as a sitemap" mistake the guide names. No llms-full.txt and no link to one (optional). robots.txt makes no explicit decision on GPTBot, ClaudeBot, Google-Extended, PerplexityBot or OAI-SearchBot; allow-all covers visibility but is a default, not a decision. No <nav> element (header and footer exist).
5. Real-world entity signals3 / 10Consistent NAP: the legal name and Sheridan, WY address in the JSON-LD match the address line in llms.txt. Email is in schema.Wikidata search for "Addition Labs" returns no entity; en.wikipedia.org/wiki/Addition_Labs returns 404 (and notability is not something to force). Only one sameAs profile. No phone. No review or rating platform referenced on the homepage or in schema. Brand mentions on third-party sites were not measured here.

Weighted read: the site is well ahead of most agency sites on layer 4 and behind on layers 2 and 5, which are the layers that decide whether an AI product trusts the source enough to name it.

3. Priority queries

The three queries given, mapped to the page that should carry the citation. "Cited today" is unknown for all three (section 1).

QueryTarget page (from llms.txt, HTTP 200)Cited today
ecommerce seo agency/services/seo "Ecommerce SEO Agency"not measured
aeo agency/services/aeo/answer-engine-optimization "Answer Engine Optimization Agency" (with /services/aeo as the pillar)not measured
what is answer engine optimization/resources/glossary/answer-engine-optimization "What Is Answer Engine Optimization"not measured

The skill asks for 10 to 20. The following are proposed from pages that already exist in llms.txt; they are candidates for the owner to confirm, not measured demand:

  1. what is ai visibility → /resources/glossary/what-is-ai-visibility
  2. aeo vs seo → /resources/compare/aeo-vs-seo
  3. chatgpt ads agency → /services/chatgpt-ads
  4. ecommerce google ads agency → /services/google-ads
  5. shopify aeo → /shopify/aeo
  6. ai visibility monitoring services → /services/aeo/ai-visibility
  7. llm optimization → /services/aeo/llm-optimization
  8. b2b aeo → /services/aeo/b2b
  9. best ai visibility tools → /resources/tools/ai-visibility-tools
  10. answer engine optimization tools → /resources/tools/answer-engine-optimization-tools
  11. geo tools → /resources/tools/generative-engine-optimization-tools
  12. llms.txt generator → /tools/llms-txt-generator
  13. chatgpt optimization → /services/aeo/chatgpt

4. Layer-by-layer remediation plan

Layer 1: extractable structure (homepage, then the three target pages)
  1. Add a definitive two-sentence answer under the H1 that says what Addition is in extractable terms (agency type, channels, who it serves). The current subhead ("Your next customer is already looking for what you sell...") is a hook, not an answer.
  2. Recast at least two H2s as the questions buyers ask ("What does an AI-native search agency do?", "Which channels does Addition run?") and open each with the answer.
  3. Add one comparison table (the four services × what each covers × how it is measured); the "Services. Four ways people find you" block is already that data in prose.
  4. Remove carousel affordances from the crawlable text: render the ← → controls and "Swipe for all six steps" as ARIA-labelled buttons, and keep the You/We digit graphic out of the DOM text (use aria-hidden or an image with alt).
  5. Not fetched, so not scored: confirm the three target pages open with a direct answer and, for the glossary entry, that the definition is the first sentence.
Layer 2: citation worthiness
  1. Put at least one specific, sourced number on the homepage from the case studies the site says it has, with the client named or the anonymisation stated.
  2. Add a named author with a bio link on every guide, glossary and comparison page, marked up as Person with sameAs (LinkedIn at minimum).
  3. Show publication date and last-updated date on every resource page, visibly and in schema.
  4. Where a page states "what it could not measure", keep that; it is exactly the methodology disclosure this layer rewards. Mirror a one-line version of it on the homepage.
Layer 3: structured data
  1. Extend Organization: description, telephone (if one exists), foundingDate, founder (as Person), areaServed, knowsAbout (SEO, AEO, Google Ads, ChatGPT Ads), contactPoint, and more sameAs entries (any owned profiles beyond LinkedIn).
  2. Add Service entities (one per channel) referencing the organization as provider.
  3. Add BreadcrumbList site-wide; Article with author, datePublished, dateModified on resources; DefinedTerm or Article on glossary entries; FAQPage only where a page has genuine Q&A pairs (do not manufacture them).
  4. Align og:url with the canonical (https://addition-labs.com/).
  5. Validate in both the Schema.org Validator and Rich Results Test after each change.
Layer 4: AI-readable accessibility
  1. Cut llms.txt to a curated set: keep the five service pillars, the case studies, the glossary and comparison pages that map to the priority queries, the tools, and the company pages; target 30 to 60 links and under 2,000 words. Move the full inventory to sitemap.xml (already present) or to llms-full.txt if a full dump is wanted. Keep the description; it already names what, for whom and how measured.
  2. Make the crawler decision explicit in robots.txt: list GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Google-Extended, PerplexityBot with Allow: / so the allow is a stated policy, not the absence of one.
  3. Add a <nav> element around the primary navigation.
  4. Optional: add <link rel="alternate" type="text/markdown" href="/llms.txt"> to the homepage head so the file is discoverable from the HTML.
Layer 5: entity signals
  1. Create a Wikidata item for Addition Labs LLC (legal name, website, LinkedIn, address, founding date, industry) with properties matching the JSON-LD.
  2. Add every owned profile to sameAs and make the NAP identical across Google Business Profile, LinkedIn, Crunchbase or similar, and the site footer.
  3. If clients can be named, have them named consistently on the site, on LinkedIn and in any press, so the entity claims cross-reference.
  4. Reviews: choose one platform (Clutch or Google Business Profile are the usual ones for agencies), collect real reviews there, and reference it from the site. Do not add AggregateRating schema without a real, visible rating source.
  5. Do not pursue a Wikipedia article unless independent coverage exists.

5. Implementation roadmap

WeekWorkLayer
1Run the live visibility test for the 16 queries across ChatGPT search, AI Overviews, Perplexity, Gemini, Claude; record cited domains per query. Fill section 1 and the "cited today" column.Audit
1Trim llms.txt to the curated set; add explicit AI-crawler lines to robots.txt; fix og:url.4, 3
2Homepage: direct answer under H1, two question H2s, services table, carousel text cleanup, <nav>.1, 4
2 to 3Extend Organization, add Service and BreadcrumbList; validate.3
3 to 4Author bios + Person schema, visible and schema dates on resource pages; direct-answer openers on the three target pages.1, 2, 3
4 to 6Wikidata item, sameAs expansion, NAP alignment, one review platform.5
6Re-run the visibility test and compare to week 1.Audit

6. Re-test schedule

  • Re-run the 16-query visibility test across the AI products at the end of week 6, then quarterly (December 2026, March 2027, June 2027).
  • Re-check llms.txt links for 200 status and re-review its contents quarterly, or when a new section launches.
  • Re-run this five-layer scorecard quarterly; AI products change faster than search algorithms did, so a score from one quarter is not evidence for the next.

Data gaps, in one place

  • No AI product was queried: section 1, the "cited today" column, and the competitor gap analysis are empty.
  • Only the homepage, robots.txt and llms.txt were read; layers 1 to 3 are scored on the homepage alone, and the three target pages were checked only for HTTP status.
  • Schema was parsed but not run through the Schema.org Validator or Rich Results Test.
  • Third-party brand mentions, reviews and social profiles beyond the single sameAs link were not measured.
  • Queries 4 to 16 are proposals derived from existing pages, not measured search or prompt demand.

What this run could not do

It could not run live queries against ChatGPT, AI Overviews, Perplexity, Gemini or Claude (its step 3) or the competitor gap analysis (step 4), and did not run the Schema.org validator or the Rich Results test. Layers 1 to 3 are scored on the homepage only, and queries 4 to 16 are proposals from existing pages, not measured demand.

Method behind it

Where we would differ, and why

Our AI visibility audit guide is the measured version of this skill’s step three: how to test the priority queries across engines with sample sizes, and what counts as a citation versus a mention. Use the skill for the five layers and the guide for the test.

Layer 4 lists Google-Extended among the crawlers to allow "if visibility matters". Google-Extended controls Gemini training and grounding, not Google Search or AI Overviews; allowing it does not change visibility in Google’s surfaces.

The skill treats FAQPage schema as a citation lever. Google stopped showing FAQ rich results for all sites in May 2026; the block still helps entity clarity, which is a weaker claim than the skill makes.

AI visibility audit: what it includes and when to buy one

Of six openly published AI-visibility audits, two are measurement only with no diagnostic step, and the other four mix measuring with diagnosing; none is diagnosis alone.
What each audit covers.From AI visibility audit: what it includes and when to buy one

SKILL.md

The file the agent reads

Written by RampStack and published under the MIT licence. Read the full file (1,313 words) on GitHub, at the commit we reviewed: rampstackco/claude-skills/skills/seo-aeo-geo/SKILL.md. The reference files are in the same folder.

Questions

Questions people ask before installing

Can it test my AI visibility?

Only if your agent can query the AI products. Without that, the skill’s own rule applies: it states the gap and delivers the rest of the plan. It will not estimate a citation rate.

How does it install without npx?

RampStack ships as a Claude Code plugin marketplace or as a folder you copy into `~/.claude/skills/`; the README also documents zipping a skill folder for Claude.ai.

Is the quarterly re-test realistic?

For a store with a small content set, yes: ten to twenty queries, three to five runs each, once a quarter is an afternoon.