AI SEO
by coreyhaines31 / marketingskills
Optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers.
Nuxt GEO (Generative Engine Optimization) guidelines for getting cited by ChatGPT, Perplexity, Claude, Google AI Overviews, and Gemini.
Listed ·Updated
Install data from skills.sh
Nuxt GEO Best Practices is an AI SEO (GEO and AEO) skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves answer and generative engine optimization for AI Overviews, Perplexity, and ChatGPT. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
Comprehensive Generative Engine Optimization guide for Nuxt 4 applications. Designed to maximize your brand's citation rate inside AI-generated answers from ChatGPT, Google AI Overviews / AI Mode, Perplexity, Claude, and Gemini. Contains 16 rules across 5 categories, prioritized by evidence-backed impact.
Reference these guidelines when:
llms.txt and llms-full.txt for AI agent discoveryrobots.txt (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.)usePageGeo composable for per-page AI-friendly metasitemap_index.xmlThis skill is built for Nuxt 4 apps. Several rules below show both a "from-scratch" Nitro-route implementation and the equivalent module-based shortcut. Strongly consider installing these — they remove a lot of boilerplate and stay in sync with Nuxt's official patterns:
@nuxtjs/seo by Harlan Wilton — meta-module that bundles @nuxtjs/sitemap, @nuxtjs/robots, nuxt-schema-org, nuxt-og-image, nuxt-link-checker, and nuxt-seo-utils. Covers most GEO infrastructure (robots.txt, sitemap, JSON-LD, meta) with one install.@nuxtjs/sitemap — auto-generated sitemap with per-page lastmod, hreflang, and exclusions.@nuxtjs/robots — programmatic robots.txt with per-route control and AI bot allow/disallow rules.nuxt-schema-org — type-safe JSON-LD via defineOrganization, defineWebSite, defineFaqPage, defineHowTo, definePerson, defineArticle.nuxt-og-image — for OG/share images (covered in the sibling nuxt-seo-best-practices skill — note CF Workers caveat there).Nuxt 4 ships first-class SEO/meta primitives. Read these before reinventing anything:
useSeoMeta, useHead, useServerSeoMeta, definePageMeta, the <Head> / <Title> / <Meta> components, and route-level head config.useSeoMeta — typed wrapper around useHead({ meta: [...] }) with full IntelliSense for OG/Twitter tags.useHead — generic head manager (used here for JSON-LD script injection).The usePageGeo composable in page-use-page-geo.md is a thin wrapper over these primitives; it is not a replacement for them.
Nuxt 4.5 note: head management now runs on
unheadv3 — stricteruseHeadtyping and no promise input. TheuseHeadJSON-LD injection patterns in this skill use plain synchronous values and are v3-compatible. Also, 4.5's experimental SSR streaming is bot-aware: crawlers automatically receive fully-buffered HTML, so enabling it does not hurt GEO (seeai-ssr-for-crawlers).
These rules synthesize:
measure-aeo-visibility. Key observation: the site had complete GEO infrastructure (llms.txt, valid schema, sitemap, 90% Google index coverage) and was still cited in 0 of 10 category queries — infrastructure is necessary, not sufficient.| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Content Extractability (the +40% levers) | CRITICAL | content- |
| 2 | AI Crawler & Discovery | CRITICAL | ai- |
| 3 | Entity Clarity | HIGH | entity- |
| 4 | Page-Level GEO | HIGH | page- |
| 5 | Measurement & Verification | CRITICAL | measure- |
Where the arxiv paper gives you which levers move visibility, an automated AEO audit gives you how a scoring engine actually weights a page. These weights come from a production audit of a 41-page Nuxt site and are useful for prioritising remediation when everything is failing at once:
| Factor | Weight | Typical score | Notes |
|---|---|---|---|
| Structured Data (JSON-LD) | 12% | Partial | entity-organization-schema |
| Content Depth | 10% | Pass | content-statistics, content-self-contained-chunks |
| Citations & Authority Signals | 8% | Partial | content-citations |
| E-E-A-T Signals | 8% | Fail (26) | entity-author-schema — worst common failure |
| FAQ Content | 8% | Fail (31) | entity-faq-howto-schema |
| Schema Completeness | 8% | Pass | entity-faq-howto-schema |
| Content Freshness | 7% | Partial | page-canonical-and-fresh |
| Entity Consistency | 7% | Partial | title / og:title / schema name must align |
| Content Extractability | 6% | Partial | content-self-contained-chunks |
| Definition Blocks | 6% | Fail (12) | content-definition-blocks — lowest scoring |
| Named Entities | 6% | Pass | entity-organization-schema |
| Snippet Eligibility | 6% | Pass | — |
| AI Access Files (llms.txt) | 5% | Pass | ai-llms-txt |
| Schema Validity | 5% | Pass | — |
| Technical SEO | 5% | Pass | sibling skill nuxt-seo-best-practices |
| AI Crawler Access | 4% | Partial | ai-robots-allowlist |
The three consistently-failing factors — E-E-A-T (8%), FAQ Content (8%), Definition Blocks (6%) — total 22% of the score and are among the cheapest to fix. Sites routinely ship perfect llms.txt, valid schema, and 90% Google index coverage while scoring 0 on all three. Start there.
Classic SEO health does not imply AEO visibility. The audited site ranked #3.9 for its own brand name with 90% index coverage, and was cited in zero of ten category queries. Brand search and category discovery are separate problems — see
measure-aeo-visibility.
These are the evidence-backed +30-40% visibility levers from the GEO arxiv paper. If you only do three things, do these three.
content-statistics — Add quantitative statistics (the single highest-lift change measured)content-citations — Add inline citations to credible sources (Sources component pattern)content-quotations — Add quotations from authoritative figurescontent-self-contained-chunks — Write paragraphs that retain meaning when extracted (RAG retrieval)content-definition-blocks — "What is X" / "How to X" shapes; lowest-scoring factor in real audits (12/100)content-no-keyword-stuffing — DO NOT bring SEO keyword stuffing into GEO; it actively hurts visibilityIf AI crawlers can't access your content, none of the other rules matter.
ai-llms-txt — Generate llms.txt and llms-full.txt via Nitro server routesai-robots-allowlist — Explicitly allow GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.ai-ssr-for-crawlers — Ensure AI crawlers receive rendered HTML, not a JS shellai-sitemap — Generate AI-friendly XML sitemap with lastmod for fresh-content signalsHelp AI systems disambiguate WHO you are, WHAT category you belong to, and WHAT you're authoritative for.
entity-organization-schema — Site-wide Organization JSON-LD with sameAs cross-referencesentity-faq-howto-schema — FAQPage and HowTo schemas for the question-shaped queries LLMs loveentity-author-schema — Person schema with credentials and sameAs for E-E-A-Tpage-use-page-geo — Reusable usePageGeo composable for per-page GEO metapage-canonical-and-fresh — Canonical URL + dateModified for content freshness signalsEverything above is unfalsifiable without this. Generative engines are stochastic — the same query can be cited on one sweep and not the next with zero content change.
measure-aeo-visibility — Repeated sampling, share-of-voice, Wilson intervals, the ≥5-sweeps/month floor, and mention-vs-citationRead individual rule files for detailed explanations and code examples:
rules/content-statistics.md
rules/ai-llms-txt.md
rules/_sections.md
Each rule file contains:
For the complete guide with all rules expanded: AGENTS.md
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.