Search is becoming a conversation with an AI, and shopping is becoming a task you hand to an agent. This playbook is the working checklist for making your business readable, citable, and usable by both: 21 checks across four tiers, each with the exact steps and copy-paste code to hand your web team.
When someone asks ChatGPT, Gemini, Claude, or Perplexity for a recommendation, the answer comes from whatever data is easiest for the AI to find, parse, and trust. Most businesses have almost no machine-readable data yet, so there is no panic here, just a practical fact: agents are already reading websites, and it is very helpful to be among the first businesses they can actually talk to.
Good SEO is the foundation for GEO (Generative Engine Optimization). This playbook starts with fundamentals and builds to the agent-commerce layer now arriving. One principle throughout: own your data layer. Vendors should extend your reach, not be your whole strategy.
The one-sentence version: being crawlable is the baseline your website vendor is steadily commoditizing; the durable part is reputation across the sources AI trusts, because those signals are earned over time rather than toggled on.
If you skip these, nothing else matters. They are the basics rather than differentiators, and most platforms are adding them over time.
robots.txt must not block GPTBot, ClaudeBot, Google-Extended, or PerplexityBot. A five-minute check that businesses get wrong constantly.
Edit robots.txt at your site root (or ask your web vendor) so AI crawlers are explicitly allowed, and remove any Disallow rules covering your product, pricing, or review pages.
User-agent: *
Allow: /
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
Sitemap: https://yourdomain.com/sitemap.xml
A leftover meta robots noindex or noai tag, often from a redesign or staging push, silently tells machines to ignore you even when robots.txt welcomes them.
View source on your homepage (right-click, View Page Source) and search for "noindex", "none", "noai", and "noimageai" inside meta robots tags. If found and unintentional, remove the tag or the directive, then redeploy. These usually survive from a redesign or a staging environment push. Check your key pages, not just the homepage.
Server-rendered content. Most AI crawlers don't execute JavaScript. If the raw HTML is empty, you don't exist.
Ask your website vendor for server-side rendering of key pages. Test it yourself: View Source on your homepage; if the visible text isn't in the raw HTML, AI crawlers can't read it. Content must exist before JavaScript runs.
JSON-LD identifying who you are, where, and what you sell or do.
Add an identity block to your homepage HTML, inside <head>. Use the most specific @type that fits your business (Store, Restaurant, ProfessionalService, AutoDealer, etc.) and keep every field identical to your Google Business Profile.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "[Your Business]",
"url": "https://yourdomain.com",
"telephone": "+1-XXX-XXX-XXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "...",
"addressLocality": "...",
"addressRegion": "..",
"postalCode": "....."
}
}
</script>
Product or service data, FAQ blocks, and rating markup AI can lift directly.
Add Product or Service markup to every product/service detail page, and FAQPage markup wherever you answer customer questions. The price in markup must match the price on the page.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "[Product name]",
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"price": 149.00,
"priceCurrency": "USD"
}
}
</script>
A feed at any common path (/llm/inventory, /data/products.json, etc.) or declared in llms.txt. The tier beyond page schema: your whole catalog in one request.
Publish a machine-readable catalog at /data/products.json (any path works), regenerate it at least daily, and declare it in your llms.txt so agents can find it.
{
"business": "[Name]",
"last_updated": "2026-07-25T08:00:00-06:00",
"update_frequency": "daily",
"items": [
{
"name": "[Product or service]",
"category": "...",
"price": 149.00,
"currency": "USD",
"in_stock": true,
"url": "https://yourdomain.com/product/..."
}
]
}
Curated agent-facing site index. Cheap insurance, low crawler pickup so far.
Create a plain-text file at yourdomain.com/llms.txt: a curated Markdown map of your most important pages and data feeds. One hour of work, cheap insurance for the agent layer.
# [Your Business]
> One paragraph: who you are, where,
> what makes you different.
## Products & Services
- [What We Offer](https://yourdomain.com/services): Full list with pricing
## About
- [Contact & Hours](https://yourdomain.com/contact)
## Data Feeds
- [Catalog JSON](https://yourdomain.com/data/products.json): Machine-readable catalog
sitemap.xml exists and robots.txt points to it.
Generate sitemap.xml (most platforms do this automatically), confirm it loads at yourdomain.com/sitemap.xml, and add a Sitemap: line to robots.txt pointing at it.
The first two things every crawler reads.
Give the homepage a specific <title> (business name + what you do + where) and a meta description under 160 characters that answers "who is this and why choose them."
<title>[Business] | [What you do] in [City]</title>
<meta name="description" content="[One sentence: what you do, where, and the one thing that makes you different.]">
AI systems weigh third-party reputation heavily. They cite the sources they trust as ground truth, which is often not your own website. These signals take steady, ongoing attention.
Schema pointing to your Google, review-platform, and social profiles. One unambiguous identity.
In your Organization/LocalBusiness schema, add a sameAs array listing your real profiles (Google Business, review platforms, social, other owned domains). Three or more links gives AI one unambiguous identity.
"sameAs": [
"https://g.page/yourbusiness",
"https://www.linkedin.com/company/yourbusiness",
"https://www.facebook.com/yourbusiness",
"https://www.youtube.com/@yourbusiness"
]
Your review score in a format machines trust.
Add AggregateRating markup with your REAL numbers from Google or your review platform, and refresh it monthly. Never invent ratings; if you don't have reviews yet, earn a few first. This check should follow reality.
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "[your real average]",
"bestRating": "5",
"reviewCount": "[your real count]"
}
Links to Google, Yelp, Trustpilot, industry review sites, and social. The source stack AI cites for "best X near me."
Link your real profiles from your site (footer works): Google Maps/Business, Yelp, Trustpilot, Facebook, YouTube, Instagram, LinkedIn, BBB, or your industry's review sites. Four or more linked platforms passes. Only link profiles that are genuinely yours.
Contact identity visible in raw HTML, consistent with your listings everywhere. Address applies to local businesses.
Put your business name, phone number, and full address (with ZIP) as visible text on the homepage. The footer is the natural spot, exactly matching your listings everywhere else.
For local businesses, the single biggest lever for Gemini. Complete profile, accurate category, steady flow of recent, responded-to reviews. Recency and velocity beat raw volume.
Complete every field of your Google Business Profile (category, hours, photos, Q&A), then build a steady cadence of recent reviews with human-written responses.
Google/Maps, Yelp, Trustpilot, the review sites specific to your industry, and increasingly Reddit. The most underrated lever in the room.
Claim and complete your profiles on Google, Yelp, Trustpilot, BBB, and the review sites specific to your industry. AI cross-references these before recommending anyone.
People searching your business by name signals a real, trusted entity. Identical name/address/phone everywhere; Wikidata or Wikipedia if you qualify.
Make your name, address, and phone identical everywhere, and give people reasons to search your business by name. If you qualify for a Wikidata or Wikipedia entry, get one.
Answer the exact things people ask AI, on pages you fully control.
One page per buyer-intent question, with literal Q&A. Detected via FAQPage schema and FAQ links on the homepage.
Create an FAQ from real customer questions and wrap it in FAQPage schema. One page per buyer-intent question is the most-studied GEO tactic there is.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "[Real customer question]?",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Your specific answer with real numbers.]"
}
}]
}
</script>
dateModified in schema, recent sitemap lastmod dates. Models weight freshness.
Add dateModified to your homepage schema, keep sitemap lastmod dates current, and refresh key content on a schedule. Staleness reads as abandonment to AI.
"dateModified": "2026-07-25"
Positive presence where AI leans for opinion. Harder to control, real signal.
Show up genuinely where AI reads opinion: answer questions in your industry's subreddits, publish useful video, participate in forums. Earned, not bought.
Everything above is a hypothesis until you watch the citations move.
Standard prompt set against ChatGPT, Gemini, and Perplexity. Find where you're invisible or uncited, fix, re-measure.
Write 20 buyer-intent prompts, run them monthly against ChatGPT, Gemini, and Perplexity, and log whether you're named and cited. Fix what's missing, re-measure next month.
Learn what actually works in your market instead of assuming.
Track listing health and review velocity monthly next to your prompt results, so you learn what actually moves citations in your market instead of guessing.
Automated checks fetch the site's homepage, robots.txt, sitemap, and agent-discovery files, then follow links to scan a live product or detail page and FAQ page, parsing what an AI crawler would see. No JavaScript is executed, exactly like most AI crawlers.
Checks are scored only on pages actually reached: observed-missing fails, unreachable stays neutral. A site is only marked down for what is affirmatively observed missing or broken, never for what the tool couldn't reach.
Confidence labels: "high" means well-documented or directly observed; "medium" means credible but not rigorously proven. GEO is young. Treat weightings as directional and let measurement settle disputes.
The scorecard runs the automated half of this playbook exactly the way an AI crawler reads a site: no JavaScript, straight from the raw HTML, robots.txt, schema, and feeds. Fair by design: a site is only marked down for what is affirmatively observed missing or broken.
Run the scorecardAdd to the work. This playbook and scorecard are free and continually developed. If you want to contribute, suggest a check, report a finding, or share what moved your citations, connect directly.