| name | site-geo-optimization |
| description | Make a website discoverable and citable by AI answer engines (ChatGPT, Perplexity, Claude, Google AI overviews) — i.e. GEO / generative engine optimization, the AI-era cousin of SEO. Use this whenever someone wants their site, blog, or docs to show up in AI answers, asks about llms.txt, "getting cited by ChatGPT", AI SEO, structured data for LLMs, or wants to audit/score how AI-ready their site is. Trigger it even if they just say "I want AI to find my site" or "why doesn't ChatGPT know about my blog". Covers the concrete signals (llms.txt, AI-crawler robots, author identity, schema, FAQ markup), how to score a site, the correctness rules that avoid penalties, and how to prompt an AI to do the work.
|
Site GEO optimization
What this is and why it matters
People increasingly ask an AI instead of opening Google. The AI answers, often
with a link back to a source it trusts. That link is the new front door. GEO is
the work of making sure your site can be found, read, trusted, and cited by
those answer engines.
The good news: the basics are concrete, mostly a handful of plain files plus some
structured data. Much of it can be generated by an AI — the human's job is the
judgment calls (which profiles are real, where FAQ markup is honest, keep it
simple). Explain it to the user in those terms; most people doing this are not
deep technical SEO folks.
The signals (the checklist)
Work these in order; each is independently valuable.
-
llms.txt (+ llms-full.txt) — the llmstxt.org
standard. A clean, plain-text "menu" of the site: an H1, a one-line summary,
then link lists of pages with short descriptions. llms-full.txt is the same
idea but contains the full text of every page in one file. Generate both from
the site's content at build time so they stay current automatically. This is
the single highest-signal "I'm AI-ready" file.
-
AI-crawler-friendly robots.txt — explicitly Allow: / the AI bots
(GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot,
Google-Extended, Applebot-Extended, CCBot, Bingbot) and reference the sitemap.
Many sites accidentally block these. You can't be cited if you can't be read.
-
Author identity (entity + sameAs) — the biggest authority lever. Emit a
Person in your structured data with url and a sameAs array linking the
author's real profiles (LinkedIn, GitHub, X, YouTube, newsletter). This is how
engines recognize the author as a known entity and attribute/cite work by
name. The links must be real — a 404 in sameAs hurts more than helps.
-
Core structured data (JSON-LD) — WebSite site-wide; Article on posts
with author (the Person above), publisher (Organization), datePublished/
dateModified, image, mainEntityOfPage. Plus the per-page basics: unique
<title>, meta description, canonical URL, <meta name="author">, Open Graph
-
FAQ markup on "how do I…" content — FAQPage JSON-LD is what engines pull
into question-style answers. Make it opt-in and visible: render a real FAQ
section on the page AND matching FAQPage schema from the same source. Never
ship schema that doesn't match visible content — mismatched/invisible FAQ
markup gets ignored or flagged. A central /faq hub page aggregating them is
a strong bonus asset.
-
Fundamentals that still matter — semantic HTML (one <h1>, real heading
hierarchy, <article>, <time>), a sitemap, an RSS feed, fast load (static
output helps), and clean readable URLs. AI parsers reward the same clarity
humans do.
Scoring a site (audit rubric)
When asked to "score" or audit, fetch the live pages and check real signals — do
not score from assumptions. Weighted dimensions that work well:
| Dimension | Weight | Checks |
|---|
| LLM-readable files | 20% | llms.txt, llms-full.txt, AI-friendly robots, sitemap, RSS present |
| Crawlability & access | 15% | AI bots allowed, HTTPS, clean URLs, canonical, static/fast |
| Structured data | 20% | Article + Person + Organization + WebSite + FAQPage |
| Content semantics & meta | 15% | one h1, headings, meta description, author, dates, OG/Twitter |
| Authority & citability | 15% | author entity with real sameAs, bylines, freshness, internal links |
| Distribution & feeds | 15% | RSS, OG/Twitter, full-text endpoint |
Score each 0–100, weight, and report the total with the top 3 highest-leverage
fixes. Verify each claim against the live HTML (curl + grep) so the score is
defensible. See references/implementation.md for an audit command and the
generator code for each file.
Correctness rules (avoid penalties)
sameAs links must resolve — find the user's real profile URLs (search their
site/content) rather than guessing; a wrong link is worse than none.
- FAQ schema must mirror visible on-page Q&A. Don't mark up content that isn't
there, and be cautious duplicating the same FAQ across many URLs.
- Generate llms.txt and feeds from the content source so they never drift out of
sync with the site.
How to prompt an AI to do this
This is very delegable; the human supplies judgment, the AI does the mechanics.
Useful prompt shapes:
Audit first:
"Score my site [domain] for GEO — check llms.txt, robots/AI-crawler access,
structured data, author identity, and FAQ markup against the live pages, and
tell me the top fixes."
Then implement the highest-leverage items:
"Add an llms.txt and llms-full.txt generated from my posts, an AI-friendly
robots.txt, and an author Person entity with sameAs links to my real profiles:
[LinkedIn], [YouTube], [GitHub]. Keep them self-updating on each deploy."
Add FAQ correctly:
"On my tutorial posts, add an opt-in FAQ that renders a visible section AND
matching FAQPage schema from the same source — only where the Q&A is genuinely
on the page."
Keep yourself in the loop:
"Tell me which links you used for sameAs so I can confirm they're mine, and
verify each change against the live site after deploying."
Reference implementation
A complete, live build of this (Astro static site): generator endpoints for
llms.txt / llms-full.txt, the author Person + Article JSON-LD, an opt-in FAQ
component, and a /faq hub — https://github.com/alnutile/astro-and-zapier-chat
— with condensed, adaptable code in references/implementation.md.