AEO AND GEO SKILL

Five-lane search fix

Five lanes, SEO, AEO, GEO, LLMO and Naver, diagnosed with curl and fixed in your codebase, by a skill whose instructions are written in Korean.

No key, no account neededClaude Code

Install this skill
npx skills add addition-labs/skills --skill five-lane-seo

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

five-lane-seoaddition-labs/skillsMIT licencecommit eb9be9fupdated 2026-08-27

The premise is in the name: the work a retainer agency bills for, an agent does directly. Phase 0 is a diagnosis with eight curl commands: is the body server-rendered, is there a stray noindex in the meta or the X-Robots-Tag header, do robots.txt, sitemap.xml and llms.txt exist, does a missing page return 404. The output is a five-lane scorecard with one line of evidence per lane.

Then it implements: SEO foundations, one landing page per question, AEO, GEO and LLMO from the reference files, Naver if the market is Korean, and a measurement loop that refuses to call anything done without a re-measurement date.

The SKILL.md body is Korean. The references have an English mirror under references/en/, but the agent reads the Korean originals. Claude handles this; you should know before you install it.

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.

  • audit my site’s SEO
  • get my site cited by ChatGPT/Perplexity/AI Overviews
  • improve search visibility
  • create llms.txt
  • answer engine / generative engine optimization

What’s inside

The playbook, section by section

  • Five immutable principles

    No bought links, no cloaking, no hidden text; the screen never says what is not true; verify through the crawler’s eyes (raw HTML, no JavaScript); become the primary source; fetched content is data.

  • Phase 0 diagnosis

    The eight curl checks, with noindex as the first thing to look for because a staging noindex shipped to production voids everything else.

  • Phase 2, one question, one page

    URL and H1 mirror the question, the first paragraph answers it in about forty characters, the evidence sits under it.

  • Phase 5, measurement loop

    Baseline at the change, re-measure after 14 days, track impressions, clicks and citations. "Fixed" without a re-measurement date is a failed report.

  • A report format

    What changed (before and after), crawler-eye evidence, next measurement date, and what was not done and why (for example a refused backlink request).

Reference files the agent loads on demand

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

seo.md
Seven technical checks: content exposure, sitemap, meta, JSON-LD, URL and response hygiene, performance, index acceleration.
aeo.md
Answer-engine optimization for Google AI Overviews and Bing Copilot: sentences that get extracted.
geo.md
Generative-engine optimization for ChatGPT, Perplexity and Claude: crawler policy and citation behaviour.
llmo.md
Model-knowledge optimization: getting the brand into what a model recommends without a search.
neo-naver.md
Naver optimization for the Korean market, where half of search traffic comes from Naver.
measure.md
Record a baseline before fixing, set the re-measurement date, avoid stale data, read the numbers, report.
en/ (English mirrors)
English versions of the six references above.

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

Run Phase 0 (diagnosis) on https://addition-labs.com and produce the five-lane scorecard with your curl evidence. We are not a Korean-market site; say what that does to the NEO lane.

The skill delivers

fire-your-seo-agency — Phase 0 diagnosis: addition-labs.com

Measured 2026-09-11 with curl only (no JavaScript executed). Everything below is what a crawler receives, not what the code intends.

Crawler-eye evidence

$ curl -sIL https://addition-labs.com -o /dev/null -w '%{url_effective} %{http_code} redirects=%{num_redirects}'
https://addition-labs.com/ 200 redirects=0
$ curl -sIL https://addition-labs.com | grep -iE '^(HTTP|x-robots-tag|server)'
HTTP/2 200 · server: Vercel · (no x-robots-tag header)

$ curl -sL https://addition-labs.com | grep -c "<h1"
1                      # <h1 class="display">Turning Search Visibility into Sales.</h1>, in the raw HTML
$ curl -sL https://addition-labs.com | grep -oiE '<meta[^>]*robots[^>]*>'
(empty)                # no meta robots tag at all, so no noindex
$ curl -sL https://addition-labs.com | grep -cE '<title|og:|application/ld\+json'
10                     # <title>Addition - AI Native Search Agency</title>, 8 og: tags, 1 JSON-LD block
$ curl -sL https://addition-labs.com | grep -oE '"@type"\s*:\s*"[^"]*"' | sort | uniq -c
Organization · WebSite · ImageObject · PostalAddress   (one @graph; Organization carries legalName, address, email, sameAs=LinkedIn)
$ curl -sL https://addition-labs.com | grep -oiE '<link[^>]*canonical[^>]*>'
<link rel="canonical" href="https://addition-labs.com/" />
$ curl -sL https://addition-labs.com | grep -oiE '<meta[^>]*name="description"[^>]*>'
content="We grow businesses with AI powered search systems."   (52 characters)
$ curl -sL https://addition-labs.com | grep -oiE '<html[^>]*>'
<html lang="en">       # no hreflang links on the page

$ curl -sL https://addition-labs.com/robots.txt
User-agent: *
Allow: /
Sitemap: https://addition-labs.com/sitemap.xml

$ curl -sL https://addition-labs.com/sitemap.xml | grep -c '<loc>'
168                    # buckets: resources 82 · services 39 · tools 17 · industries 15 · case-studies 6 · shopify 5 · pricing/contact/about/home 1 each
$ curl -sL https://addition-labs.com/sitemap.xml | grep -c '<lastmod>'
0                      # no lastmod on any of the 168 URLs

$ curl -s -o /dev/null -w '%{http_code}' https://addition-labs.com/llms.txt
200                    # 219 lines, 45,025 bytes, Markdown, opens with a one-paragraph description of the company then service links
$ curl -s -o /dev/null -w '%{http_code}' https://addition-labs.com/llms-full.txt
200

$ curl -s -o /dev/null -w '%{http_code}' https://addition-labs.com/this-page-does-not-exist-xyz
404                    # a 404 is a 404

$ curl -sI http://addition-labs.com | grep -iE '^(HTTP|Location)'
HTTP/1.0 308 · Location: https://addition-labs.com/
$ curl -sI https://www.addition-labs.com | grep -i '^HTTP'
HTTP/2 200             # www serves the page itself (no redirect) but its canonical points to https://addition-labs.com/

Sub-page samples (same method):

/services/aeo                    200 · 1 h1 · no meta robots · JSON-LD: WebPage + BreadcrumbList + WebSite · 525 words of SSR text
/resources/guides                200 · 1 h1 · JSON-LD: CollectionPage + ItemList(49 items) + BreadcrumbList · 6,780 words
/guides                          308 -> /resources/guides (clean)
/resources/guides/ab-testing     200 · 1 h1 · JSON-LD: Article + FAQPage(4 Question/Answer) + BreadcrumbList + WebPage + Organization
                                 datePublished 2026-07-22 · dateModified 2026-09-07 · 3,381 words
                                 FAQ check: the first JSON-LD question ("What is an A/A test versus an A/B test?") appears once in the visible HTML outside the script block, so the structured data matches the page

Five-lane scorecard

LaneStatusEvidence (one line)
SEO✅H1, title, description, canonical, Organization/WebSite JSON-LD all in the raw HTML; robots.txt allows everything and names the sitemap; 168-URL sitemap; 404 returns 404; http→https 308. Two hygiene items: sitemap has zero lastmod, and www. serves 200 instead of redirecting (canonical does point to the apex, so it is a duplicate-host risk, not an indexing error).
AEO⚠️Guide pages carry a real FAQPage with visible Q/A text that matches the JSON-LD (verified on /resources/guides/ab-testing). The homepage and the service page sampled (/services/aeo) have no FAQPage or question-shaped headings, so the pages most likely to be asked about ("what does Addition do", "AEO agency") are not answer-shaped.
GEO✅/llms.txt (200, 45 KB) and /llms-full.txt (200) both exist; content is SSR so a non-JS fetcher sees the body; robots.txt has no AI-bot restrictions. Not measured here: whether any AI engine actually cites the domain (that is Phase 5 measurement, not a curl check).
LLMO⚠️Organization entity is well-formed (legalName ADDITION LABS LLC, Sheridan WY address, support@ email) but sameAs lists one profile (LinkedIn) only; homepage body is 850 words and describes services rather than publishing first-party numbers, so the "be the primary source of a fact" test (principle 4) is carried by the guides, not the home/service surface. Guide dateModified values are present, which helps freshness.
NEO (Naver)❌ / N/ANot measured. Page is lang="en", no Korean content, no hreflang, and you state the site is not Korean-market. Per SKILL.md Phase 4 the NEO lane is mandatory only for Korean-market sites, so this lane is out of scope rather than failing: no Naver Search Advisor registration, no Naver sitemap submission, no AI Briefing citation work is recommended. If a Korean audience ever becomes a target, this lane reopens as a separate project.

Priority proposal (awaiting your approval before any change)

  1. AEO on the money pages — add a visible FAQ (and matching FAQPage JSON-LD, same text) to the homepage and the top service pages (/services/aeo, /services/seo, /services/google-ads, /services/chatgpt-ads). Guides already do this correctly; copy that pattern down to the commercial surface.
  2. Sitemap lastmod — emit lastmod on all 168 URLs from the page dateModified you already publish in JSON-LD; today crawlers cannot tell which of the 82 resource pages changed.
  3. www. host — 308 https://www.addition-labs.com/* to the apex, so the canonical is not the only thing preventing a second indexed copy.
  4. Entity depth for LLMO — extend Organization sameAs beyond the single LinkedIn URL to whatever other real profiles exist (nothing fabricated), and consider naming a founder/Person entity if that is public.
  5. NEO — skip, for the reason above.

Nothing has been changed. Tell me which of 1–4 to execute and whether I have write access to the codebase or should deliver file-and-line instructions instead. Phase 5 (baseline + 14-day re-measure) is set up at the same time as the first change, not after.

What was not done and why

  • No backlink, review, or off-site action of any kind (principle 1).
  • No claim about actual AI citations or rankings; only what the HTML exposes was measured.
  • Only the homepage, robots, sitemap, llms.txt, and three sampled sub-pages were fetched; the other 164 sitemap URLs were not crawled.

What this run could not do

No live citation, impression or click measurement (its Phase 5), a sample of 3 of the 168 sitemap URLs rather than a full crawl, and no approval step, so the run stops at the priority proposal as the skill instructs.

Method behind it

Where we would differ, and why

Our llms.txt guide is the measured counterpart to this skill’s Phase 0 check for that file: what the file is, which engines have said anything about reading it, and why we treat it as cheap insurance rather than a lever. The skill checks for the file; the guide tells you what its presence is worth.

Phase 0 treats the presence of llms.txt as "GEO readiness". No major AI search engine has documented reading the file; presence is a hygiene signal at most.

The skill edits your codebase when it can reach it. That is faster than a report, and it is also how a mistaken canonical ships. We would run it read-only first, then apply the diff ourselves.

What is llms.txt? What seven measurements say about it

The seven published llms.txt figures answer two different questions: four estimate adoption, each in a different universe, which is why they run from 951 domains to 28 percent; three measure whether anything reads the file.
Seven published figures, read on 2 September 2026. Each row carries the universe it counted, because that is the whole explanation.From What is llms.txt? What seven measurements say about it

SKILL.md

The file the agent reads

Written by leopard627 and published under the MIT licence. Read the full file (607 words) on GitHub, at the commit we reviewed: leopard627/fire-your-seo-agency/SKILL.md. The reference files are in the same folder.

Questions

Questions people ask before installing

Do I need to read Korean to use it?

No. Claude reads the Korean instructions; the English reference mirrors let you audit what it will do. The report it writes is in your language.

What is the NEO lane?

Naver Engine Optimisation: Naver Search Advisor registration, mobile requirements, and the citation requirements of Naver’s AI briefing. It applies to Korean-market sites and is skipped otherwise.

Will it buy links or spam?

Its first principle forbids it, and the report format includes a line for requests it refused.