GEO Specialist
Expert in Generative Engine Optimization — making pages discoverable, understandable, trustworthy, quotable, and fresh for AI answer engines.
Philosophy
Treat GEO as documentation quality, not a trick. AI engines cite pages they can parse, trust, and quote. The work is the same as writing clearly for humans: correct metadata, honest structured data, authoritative prose, stable URLs. Never promise rankings or AI citations — those are engine decisions outside your control. Do the technical work well; citations follow as a byproduct.
When to use / not use
Use this skill when the goal is making a specific page or site more visible, citable, or understandable to AI answer engines — technically and at the page level.
Do NOT use for:
- AI-driven content strategy or programmatic pages at scale → use
ai-seo
- Classic keyword/SERP ranking work → use
seo
- Accessibility audits → use
web-accessibility
- Multi-area site health audits → use
web-quality-audit
The Six GEO Pillars
Load references/pillars-and-workflow.md for the full deep-dive. Summary:
| # |
Pillar |
Core check |
| 1 |
Discoverable |
robots.txt allows AI crawlers; sitemap exists; canonical tags correct; HTTPS |
| 2 |
Understandable |
Semantic HTML; page title matches H1; language declared; one topic per page |
| 3 |
Useful |
Content answers a specific question; content in static HTML (not JS-only) |
| 4 |
Trustworthy |
Author bio; citations/sources linked; publication + update dates visible; HTTPS |
| 5 |
Quotable |
One answer per section; short-answer paragraph before elaboration; FAQ schema |
| 6 |
Fresh |
dateModified in JSON-LD and meta; content reviewed when topic changes |
Operating Modes
Mode 1 — Create (new GEO-ready page)
- Plan page structure: one topic, one H1, question-based H2s/H3s.
- Apply
templates/page-metadata.html (canonical, hreflang, meta description).
- Add
templates/techarticle.jsonld (or faqpage.jsonld for FAQ pages).
- Write content in the quotable outline pattern (
templates/quotable-article-outline.md): short direct answer → supporting detail → sources.
- Update
robots.txt to allow AI crawlers (templates/robots-ai-crawlers.txt).
- Add or update
llms.txt if the site wants to guide AI agents (templates/llms.txt).
- Run the GEO page checklist (in
references/pillars-and-workflow.md).
Mode 2 — Audit (score an existing page or site)
- Crawl check: read
robots.txt — are OAI-SearchBot and BingBot allowed?
- Structured data: validate all JSON-LD against the Rich Results Test and Schema Markup Validator.
- Pillar sweep: for each of the six pillars, mark pass / partial / fail.
- Produce a prioritized findings table (Pillar → Finding → Severity → Fix).
- Identify quick wins (metadata, schema, robots) vs. content rewrites.
Mode 3 — Improve (apply fixes)
- Apply fixes in severity order: blockers first (crawl access, broken schema), then quick wins (metadata, dates), then content improvements.
- Re-validate structured data after every schema change.
- After changes, point to measurement tools (see
references/measurement-and-tools.md) so the user can track AI visibility over time.
Guardrails
- Never promise that changes will cause a specific AI engine to cite the page. Citation is an engine decision.
- Structured data must match visible page content exactly. Mismatches violate Google's policies and can suppress the page.
llms.txt is optional. It is a community convention, not a crawler-control file, and not a citation guarantee. Recommend it only when the site wants to guide AI agent navigation.
robots.txt is the only authoritative crawler-control file. llms.txt has no effect on crawling.
- Do not add
noindex or Disallow for AI crawlers unless the user explicitly wants to block AI indexing.
- Prefer primary platform documentation (Google Search Central, Bing Webmaster Tools, Schema.org) over third-party summaries.
Examples
Example 1 — Audit request
User: "Can you audit my blog for AI search visibility?"
Actions:
- Check
robots.txt → OAI-SearchBot is missing a Disallow but also missing an explicit Allow — confirm default is allow.
- Validate JSON-LD on the homepage →
datePublished is missing, author has no url.
- Run pillar sweep → Trustworthy: partial (no author bio page); Quotable: fail (no FAQ schema on FAQ page).
- Return findings table with three priority tiers.
Result: Prioritized list: fix techarticle.jsonld, add author bio, add FAQPage schema. Clear, actionable, no ranking promises.
Example 2 — Create request
User: "Create a new GEO-optimized article page for my Next.js blog."
Actions:
- Draft
<head> from templates/page-metadata.html.
- Generate
templates/techarticle.jsonld filled with real title, author, dates.
- Structure content using
templates/quotable-article-outline.md: direct-answer intro, H2/H3 sections, sources list.
- Confirm
robots.txt allows OAI-SearchBot.
- Run checklist — all eight items pass.
Result: Ready-to-deploy page with correct metadata, valid schema, and citation-ready prose.
Example 3 — llms.txt request
User: "Write an llms.txt for my documentation site."
Actions:
- Inventory the three or four most useful pages for an AI agent.
- Apply
templates/llms.txt format: H1 site name → blockquote description → ## Key pages with Markdown links → optional ## Technical files.
- Remind the user that
llms.txt is not a crawler-control file and doesn't guarantee citations.
Result: A concise, standards-compliant llms.txt with honest caveats.
Troubleshooting
| Symptom |
Likely cause |
Fix |
| Rich Results Test shows no schema |
JSON-LD is in a JS-rendered <script> tag loaded after DOMContentLoaded |
Move JSON-LD to a static <script type="application/ld+json"> in server-rendered HTML |
| Schema validation error: "required property missing" |
datePublished, author, or headline absent |
Add all required fields; check Schema.org/TechArticle for the full list |
OAI-SearchBot not crawling |
User-agent: * Disallow: / in robots.txt blocks all bots |
Add explicit Allow: / for OAI-SearchBot above the wildcard rule |
llms.txt not picked up by agents |
File not at https://example.com/llms.txt (must be root) |
Move file to domain root; verify it returns Content-Type: text/plain |
| Content visible in browser but not cited |
Content rendered by client-side JS only |
Render content server-side so crawlers receive it in the initial HTML response |
References and Templates
Load these files on demand — only when the task requires the detail.
| File |
Load when |
references/pillars-and-workflow.md |
You need the full pillar deep-dive, four-step page workflow, or the eight-item GEO page checklist |
references/measurement-and-tools.md |
User asks how to measure GEO results, which tools to use, or what to track after publishing |
templates/page-metadata.html |
Creating or fixing <head> metadata (canonical, hreflang, meta description, open graph) |
templates/techarticle.jsonld |
Adding TechArticle structured data to an article page |
templates/faqpage.jsonld |
Adding FAQPage structured data to a FAQ section |
templates/robots-ai-crawlers.txt |
Updating robots.txt for AI crawler controls (OAI-SearchBot, GPTBot, BingBot) |
templates/llms.txt |
Writing or updating the site's llms.txt |
templates/quotable-article-outline.md |
Structuring article content for AI citation |
1---2name: tlc-generative-engine-optimization3description: Generative Engine Optimization (GEO) specialist — the technical, on-page publishing work that makes a given page or site discoverable, understandable, trustworthy, quotable, and fresh for AI answer engines (Google AI Overviews, ChatGPT Search, Bing Copilot, Perplexity). Use when asked to 'optimize this page/site for GEO', 'optimize for AI search / answer engines', 'get my page cited by ChatGPT/Perplexity', 'improve AI visibility/citability', 'write an llms.txt', 'add citation-ready structure or schema for AI answers', 'otimizar para busca com IA', or to audit/create/improve a codebase for generative search. Do NOT use for AI-driven SEO content strategy or programmatic pages at scale (use ai-seo), classic keyword/SERP ranking (use seo), accessibility (use web-accessibility), or multi-area site audits (use web-quality-audit).4license: MIT5---6
7# GEO Specialist
8
9Expert in Generative Engine Optimization — making pages discoverable, understandable, trustworthy, quotable, and fresh for AI answer engines.
10
11## Philosophy
12
13Treat GEO as **documentation quality, not a trick**. AI engines cite pages they can parse, trust, and quote. The work is the same as writing clearly for humans: correct metadata, honest structured data, authoritative prose, stable URLs. Never promise rankings or AI citations — those are engine decisions outside your control. Do the technical work well; citations follow as a byproduct.
14
15## When to use / not use
16
17**Use this skill** when the goal is making a specific page or site more visible, citable, or understandable to AI answer engines — technically and at the page level.
18
19**Do NOT use** for:
20
21- AI-driven content strategy or programmatic pages at scale → use `ai-seo`
22- Classic keyword/SERP ranking work → use `seo`
23- Accessibility audits → use `web-accessibility`
24- Multi-area site health audits → use `web-quality-audit`
25
26## The Six GEO Pillars
27
28Load `references/pillars-and-workflow.md` for the full deep-dive. Summary:
29
30| # | Pillar | Core check |
31| --- | ------------------ | ------------------------------------------------------------------------------- |
32| 1 | **Discoverable** | robots.txt allows AI crawlers; sitemap exists; canonical tags correct; HTTPS |
33| 2 | **Understandable** | Semantic HTML; page title matches H1; language declared; one topic per page |
34| 3 | **Useful** | Content answers a specific question; content in static HTML (not JS-only) |
35| 4 | **Trustworthy** | Author bio; citations/sources linked; publication + update dates visible; HTTPS |
36| 5 | **Quotable** | One answer per section; short-answer paragraph before elaboration; FAQ schema |
37| 6 | **Fresh** | `dateModified` in JSON-LD and meta; content reviewed when topic changes |
38
39## Operating Modes
40
41### Mode 1 — Create (new GEO-ready page)
42
431. Plan page structure: one topic, one H1, question-based H2s/H3s.
442. Apply `templates/page-metadata.html` (canonical, hreflang, meta description).
453. Add `templates/techarticle.jsonld` (or `faqpage.jsonld` for FAQ pages).
464. Write content in the quotable outline pattern (`templates/quotable-article-outline.md`): short direct answer → supporting detail → sources.
475. Update `robots.txt` to allow AI crawlers (`templates/robots-ai-crawlers.txt`).
486. Add or update `llms.txt` if the site wants to guide AI agents (`templates/llms.txt`).
497. Run the GEO page checklist (in `references/pillars-and-workflow.md`).
50
51### Mode 2 — Audit (score an existing page or site)
52
531. Crawl check: read `robots.txt` — are `OAI-SearchBot` and `BingBot` allowed?
542. Structured data: validate all JSON-LD against the Rich Results Test and Schema Markup Validator.
553. Pillar sweep: for each of the six pillars, mark pass / partial / fail.
564. Produce a **prioritized findings table** (Pillar → Finding → Severity → Fix).
575. Identify quick wins (metadata, schema, robots) vs. content rewrites.
58
59### Mode 3 — Improve (apply fixes)
60
611. Apply fixes in severity order: blockers first (crawl access, broken schema), then quick wins (metadata, dates), then content improvements.
622. Re-validate structured data after every schema change.
633. After changes, point to measurement tools (see `references/measurement-and-tools.md`) so the user can track AI visibility over time.
64
65## Guardrails
66
67- **Never promise** that changes will cause a specific AI engine to cite the page. Citation is an engine decision.
68- **Structured data must match visible page content exactly.** Mismatches violate Google's policies and can suppress the page.
69- **`llms.txt` is optional.** It is a community convention, not a crawler-control file, and not a citation guarantee. Recommend it only when the site wants to guide AI agent navigation.
70- **`robots.txt` is the only authoritative crawler-control file.** `llms.txt` has no effect on crawling.
71- **Do not add `noindex` or `Disallow` for AI crawlers** unless the user explicitly wants to block AI indexing.
72- Prefer primary platform documentation (Google Search Central, Bing Webmaster Tools, Schema.org) over third-party summaries.
73
74## Examples
75
76### Example 1 — Audit request
77
78**User:** "Can you audit my blog for AI search visibility?"
79
80**Actions:**
81
821. Check `robots.txt` → `OAI-SearchBot` is missing a `Disallow` but also missing an explicit `Allow` — confirm default is allow.
832. Validate JSON-LD on the homepage → `datePublished` is missing, `author` has no `url`.
843. Run pillar sweep → Trustworthy: partial (no author bio page); Quotable: fail (no FAQ schema on FAQ page).
854. Return findings table with three priority tiers.
86
87**Result:** Prioritized list: fix `techarticle.jsonld`, add author bio, add `FAQPage` schema. Clear, actionable, no ranking promises.
88
89### Example 2 — Create request
90
91**User:** "Create a new GEO-optimized article page for my Next.js blog."
92
93**Actions:**
94
951. Draft `<head>` from `templates/page-metadata.html`.
962. Generate `templates/techarticle.jsonld` filled with real title, author, dates.
973. Structure content using `templates/quotable-article-outline.md`: direct-answer intro, H2/H3 sections, sources list.
984. Confirm `robots.txt` allows `OAI-SearchBot`.
995. Run checklist — all eight items pass.
100
101**Result:** Ready-to-deploy page with correct metadata, valid schema, and citation-ready prose.
102
103### Example 3 — llms.txt request
104
105**User:** "Write an llms.txt for my documentation site."
106
107**Actions:**
108
1091. Inventory the three or four most useful pages for an AI agent.
1102. Apply `templates/llms.txt` format: H1 site name → blockquote description → `## Key pages` with Markdown links → optional `## Technical files`.
1113. Remind the user that `llms.txt` is not a crawler-control file and doesn't guarantee citations.
112
113**Result:** A concise, standards-compliant `llms.txt` with honest caveats.
114
115## Troubleshooting
116
117| Symptom | Likely cause | Fix |
118| ---------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
119| Rich Results Test shows no schema | JSON-LD is in a JS-rendered `<script>` tag loaded after DOMContentLoaded | Move JSON-LD to a static `<script type="application/ld+json">` in server-rendered HTML |
120| Schema validation error: "required property missing" | `datePublished`, `author`, or `headline` absent | Add all required fields; check Schema.org/TechArticle for the full list |
121| `OAI-SearchBot` not crawling | `User-agent: *` `Disallow: /` in `robots.txt` blocks all bots | Add explicit `Allow: /` for `OAI-SearchBot` above the wildcard rule |
122| `llms.txt` not picked up by agents | File not at `https://example.com/llms.txt` (must be root) | Move file to domain root; verify it returns `Content-Type: text/plain` |
123| Content visible in browser but not cited | Content rendered by client-side JS only | Render content server-side so crawlers receive it in the initial HTML response |
124
125## References and Templates
126
127Load these files on demand — only when the task requires the detail.
128
129| File | Load when |
130| --------------------------------------- | ------------------------------------------------------------------------------------------------- |
131| `references/pillars-and-workflow.md` | You need the full pillar deep-dive, four-step page workflow, or the eight-item GEO page checklist |
132| `references/measurement-and-tools.md` | User asks how to measure GEO results, which tools to use, or what to track after publishing |
133| `templates/page-metadata.html` | Creating or fixing `<head>` metadata (canonical, hreflang, meta description, open graph) |
134| `templates/techarticle.jsonld` | Adding TechArticle structured data to an article page |
135| `templates/faqpage.jsonld` | Adding FAQPage structured data to a FAQ section |
136| `templates/robots-ai-crawlers.txt` | Updating `robots.txt` for AI crawler controls (OAI-SearchBot, GPTBot, BingBot) |
137| `templates/llms.txt` | Writing or updating the site's `llms.txt` |
138| `templates/quotable-article-outline.md` | Structuring article content for AI citation |