Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/tech-leads-club-tlc-generative-engine-optimization/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 68% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 67% | 0% |
Expert in Generative Engine Optimization — making pages discoverable, understandable, trustworthy, quotable, and fresh for AI answer engines.
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.
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-seoseoweb-accessibilityweb-quality-auditLoad 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 |
templates/page-metadata.html (canonical, hreflang, meta description).templates/techarticle.jsonld (or faqpage.jsonld for FAQ pages).templates/quotable-article-outline.md): short direct answer → supporting detail → sources.robots.txt to allow AI crawlers (templates/robots-ai-crawlers.txt).llms.txt if the site wants to guide AI agents (templates/llms.txt).references/pillars-and-workflow.md).robots.txt — are OAI-SearchBot and BingBot allowed?references/measurement-and-tools.md) so the user can track AI visibility over time.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.noindex or Disallow for AI crawlers unless the user explicitly wants to block AI indexing.User: "Can you audit my blog for AI search visibility?"
Actions:
robots.txt → OAI-SearchBot is missing a Disallow but also missing an explicit Allow — confirm default is allow.datePublished is missing, author has no url.Result: Prioritized list: fix techarticle.jsonld, add author bio, add FAQPage schema. Clear, actionable, no ranking promises.
User: "Create a new GEO-optimized article page for my Next.js blog."
Actions:
<head> from templates/page-metadata.html.templates/techarticle.jsonld filled with real title, author, dates.templates/quotable-article-outline.md: direct-answer intro, H2/H3 sections, sources list.robots.txt allows OAI-SearchBot.Result: Ready-to-deploy page with correct metadata, valid schema, and citation-ready prose.
User: "Write an llms.txt for my documentation site."
Actions:
templates/llms.txt format: H1 site name → blockquote description → ## Key pages with Markdown links → optional ## Technical files.llms.txt is not a crawler-control file and doesn't guarantee citations.Result: A concise, standards-compliant llms.txt with honest caveats.
| 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 |
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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 23,228 | 7,323 | -68% | 1 | 1 | 0% | 4,409 | 3,222 | -27% | 0 | 0 | — |
case-01 | fail→pass | 25,649 | 16,718 | -35% | 1 | 1 | 0% | 4,093 | 4,982 | +22% | 0 | 0 | — |
case-02 | fail→fail | 24,325 | 15,672 | -36% | 1 | 1 | 0% | 3,964 | 4,465 | +13% | 0 | 0 | — |
case-03 | fail→pass | 14,000 | 13,120 | -6% | 1 | 1 | 0% | 2,307 | 4,038 | +75% | 0 | 0 | — |
case-05 | pass→pass | 13,754 | 31,190 | +127% | 1 | 1 | 0% | 2,159 | 3,629 | +68% | 0 | 0 | — |
case-06 | pass→pass | 12,011 | 6,732 | -44% | 1 | 1 | 0% | 1,837 | 3,074 | +67% | 0 | 0 | — |
case-07 | pass→pass | 69,273 | 6,783 | -90% | 1 | 1 | 0% | 1,494 | 3,302 | +121% | 0 | 0 | — |
case-08 | pass→pass | 10,558 | 8,106 | -23% | 1 | 1 | 0% | 1,696 | 3,384 | +100% | 0 | 0 | — |
case-09 | pass→pass | 16,441 | 11,179 | -32% | 1 | 1 | 0% | 2,283 | 3,944 | +73% | 0 | 0 | — |
case-10 | pass→pass | 8,793 | 4,824 | -45% | 1 | 1 | 0% | 1,525 | 2,913 | +91% | 0 | 0 | — |
case-11 | pass→pass | 6,955 | 6,398 | -8% | 1 | 1 | 0% | 1,229 | 3,151 | +156% | 0 | 0 | — |
case-12 | pass→pass | 11,663 | 7,691 | -34% | 1 | 1 | 0% | 2,212 | 3,474 | +57% | 0 | 0 | — |
case-13 | pass→pass | 14,046 | 8,996 | -36% | 1 | 1 | 0% | 2,514 | 3,663 | +46% | 0 | 0 | — |
case-14 | pass→pass | 10,618 | 6,736 | -37% | 1 | 1 | 0% | 1,581 | 3,232 | +104% | 0 | 0 | — |
case-15 | pass→pass | 13,753 | 9,934 | -28% | 1 | 1 | 0% | 2,529 | 3,958 | +57% | 0 | 0 | — |
case-16 | pass→pass | 12,917 | 10,305 | -20% | 1 | 1 | 0% | 2,175 | 3,848 | +77% | 0 | 0 | — |
case-17 | pass→pass | 14,637 | 13,995 | -4% | 1 | 1 | 0% | 2,270 | 4,594 | +102% | 0 | 0 | — |
case-18 | fail→fail | 18,727 | 12,523 | -33% | 1 | 1 | 0% | 3,173 | 4,408 | +39% | 0 | 0 | — |
case-19 | pass→pass | 15,417 | 12,294 | -20% | 1 | 1 | 0% | 2,524 | 4,034 | +60% | 0 | 0 | — |
case-20 | pass→pass | 12,553 | 11,881 | -5% | 1 | 1 | 0% | 1,944 | 4,061 | +109% | 0 | 0 | — |
case-21 | pass→pass | 14,920 | 8,614 | -42% | 1 | 1 | 0% | 2,532 | 3,576 | +41% | 0 | 0 | — |
case-22 | pass→pass | 12,430 | 49,847 | +301% | 1 | 1 | 0% | 2,157 | 3,780 | +75% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.