aeo-ready
Full AEO audit. Google crawls your pages and ranks them. AI engines synthesize answers from sources they've already ingested. Getting cited there is a different problem — schema markup, llms.txt, AI crawler access, and content that actually answers questions.
The Difference That Matters
Google crawls your pages and ranks them. AI engines don't rank pages — they synthesize answers from sources they've already ingested. To get cited:
- Your content must be structured so AI can extract a clear answer
- Your site must be in articles that AI engines pull from (listicles, "best X" roundups)
- Your technical setup must not block AI crawlers
This skill audits and fixes all three.
Phase 1: Scan the Codebase
Before generating anything, read the project:
- Framework: Next.js / Astro / Remix / static HTML?
- Existing meta tags: Check
<head>,layout.tsx,_document.tsx, or equivalent - Existing structured data: Search for
application/ld+jsonscripts - Content pages: Blog, docs, landing page, FAQ sections
- robots.txt: Does it exist? Does it block anything?
- sitemap.xml: Does it exist?
Tell the user what's missing before making changes.
Phase 2: Schema Markup
Schema markup is how you tell AI engines exactly what your content means. Without it, they have to guess.
Pick the right schema types for the project
| Project Type | Schema Types |
|---|---|
| SaaS / web app | SoftwareApplication + FAQPage + HowTo |
| Blog | Article + FAQPage + Person |
| Documentation | TechArticle + HowTo + FAQPage |
| Portfolio | Person + CreativeWork |
SoftwareApplication Schema
Inject in the <head> of the main layout:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "[Product Name]",
"description": "[One sentence — what it does and who it's for]",
"applicationCategory": "[BusinessApplication / DeveloperApplication / etc.]",
"operatingSystem": "Web",
"url": "[Homepage URL]",
"offers": {
"@type": "Offer",
"price": "[0 for free tier]",
"priceCurrency": "USD",
"description": "[Free tier / pricing summary]"
},
"creator": {
"@type": "Person",
"name": "[Your Name]",
"url": "[Your website]"
}
}
</script>
FAQPage Schema
This is the highest-value schema for AI engines. AI engines pull from FAQ answers directly to respond to user queries. Each answer must be 40-60 words — the sweet spot for AI extraction. Too short = not useful. Too long = gets cut off.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is [Product]?",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Product] is a [category] tool that helps [target user] [achieve outcome]. [How it works in one sentence]. [What makes it different or what the free tier includes]. [Result users get]."
}
},
{
"@type": "Question",
"name": "How does [Product] work?",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Product] works in three steps: [step 1], [step 2], and [step 3]. [Timeframe — how fast users get results]. [No manual work / fully automated / etc.]."
}
},
{
"@type": "Question",
"name": "Is [Product] free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Product] has a free tier that includes [what's included]. Paid plans start at [price] and include [key paid features]. No credit card required to get started."
}
}
]
}
</script>
Read the actual landing page and docs to generate real answers — never fabricate them.
HowTo Schema
For any getting-started or tutorial content:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to [use / set up / get started with] [Product]",
"step": [
{ "@type": "HowToStep", "name": "Step 1", "text": "[Instruction]" },
{ "@type": "HowToStep", "name": "Step 2", "text": "[Instruction]" },
{ "@type": "HowToStep", "name": "Step 3", "text": "[Instruction]" }
]
}
</script>
For Next.js App Router, inject schema in generateMetadata or directly in the page component. For static HTML, inject in the <head>.
Phase 3: llms.txt
Create public/llms.txt. This is a direct machine-readable summary for LLM crawlers — think of it as a README for AI engines:
# [Product Name]
> [One sentence: what it does + who it's for]
## What it does
[2-3 sentences covering the core use case and mechanism]
## Key features
- [Feature 1]: [one-line description]
- [Feature 2]: [one-line description]
- [Feature 3]: [one-line description]
## Pricing
- Free: [what's included]
- Paid: [pricing and what's included]
## Links
- Homepage: [URL]
- Getting started: [URL]
- Documentation: [URL if exists]
Keep it factual and specific. AI engines use this file when a user asks "what is [product]?" — so the description here matters.
Phase 4: AI Crawler Access
Check robots.txt. Most projects either don't have one or block crawlers accidentally. Add explicit allow rules for AI crawlers:
# AI crawlers — allow indexing
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
If the user wants to block a specific crawler, generate the Disallow rule and explain the tradeoff: blocking = not cited by that engine.
Phase 5: Content Gap Analysis
AI engines need direct answers to common questions about the product. Check if the landing page or docs answers each of these. For any that are missing, generate the content block:
"What is [Product]?" Must be answerable in 40-60 words on the landing page. Not just a tagline — an actual explanation.
"How does [Product] work?" Step-by-step with a HowTo schema attached.
"Is [Product] free?" Clear pricing info. Vague pricing = AI engines skip the citation.
"[Product] vs [Competitor]?" If this comparison doesn't exist anywhere, AI engines will use competitor sources instead.
"How do I get started?" Quick-start guide. If the onboarding is too long, summarize it on the landing page.
For each missing piece: generate the copy and the schema together.
Phase 6: Citation Strategy
AI engines synthesize answers from articles that rank well on Google. Getting cited by AI engines often means getting listed in those articles first.
- Search "best [your category] tools 2025" — find the top 10 ranking articles
- For each: note publication, whether it's maintained, whether it accepts submissions
- Generate a pitch angle per article — what's unique about this product vs tools already listed
Output a table:
Article | Publication | Updated | Accepts Submissions | Pitch Angle
[title] | [pub] | [date] | yes/no | [one sentence]
Use /cold-email to draft the outreach once the table is ready.
Phase 7: Audit Report
Output a score and status for each area:
AEO AUDIT — [project name]
════════════════════════════════════════
Schema Markup [score /10] [❌ missing / ⚠️ partial / ✅ done]
FAQ Content [score /10] [status]
llms.txt [score /10] [status]
AI Crawler Access [score /10] [status]
Content Gaps [score /10] [status]
Citation Readiness [score /10] [status]
────────────────────────────────────────
Overall [score /60]
════════════════════════════════════════
Then list the 3 highest-impact fixes in order.
Verify
[ ] SoftwareApplication schema injected in <head> of main layout
[ ] FAQPage schema present with at least 3 questions
[ ] Every FAQ answer is 40-60 words
[ ] HowTo schema on getting-started content
[ ] llms.txt exists at /llms.txt (publicly accessible)
[ ] robots.txt allows GPTBot, ClaudeBot, PerplexityBot
[ ] Content gap analysis completed — missing answers generated
[ ] Citation strategy table output
[ ] Audit report with scores output
See references/guide.md for schema examples by industry, advanced llms.txt patterns, and citation outreach templates.
More from tushaarmehtaa/tushar-skills
ship-credits
Scaffold a complete credits/token metering system for any app — database schema, backend middleware, payment webhooks, frontend state, and UI components. Goes from zero to "users can buy and spend credits" in one session.
17ship-email
Scaffold transactional and campaign email infrastructure end-to-end — provider setup, templates, user segmentation, and admin send UI. Use when the user wants to add email to their app — welcome emails, notifications, re-engagement, or bulk campaigns. Triggers on requests like "add email", "set up Resend", "email campaigns", "transactional email", "send emails to users", "welcome email", "notification emails", or any mention of email sending in an app context.
6make-skill
Turn any workflow into a properly structured Claude Code skill — YAML frontmatter, phase-based instructions, real code blocks, and a verify checklist. Use when the user wants to package a repeated workflow, create a new skill, turn a process into a slash command, or publish to the skills directory. Triggers on requests like "make a skill", "create a skill", "turn this into a skill", "new skill for...", "package this as a skill", "build a skill", "I want to publish a skill", "help me write a skill", or any request to create a reusable Claude Code skill.
6mvp-spec
Turn a rough product idea into a structured MVP spec — problem statement, personas, core loop, feature split, data model, API routes, page list, and tech stack recommendation. Write this before touching any code. Triggers on requests like "spec this out", "MVP spec", "plan this product", "what should I build first", "scope this idea", "PRD", "product spec", "write a spec for...", "help me plan this", "what do I build in v1", "product requirements", or any request to structure a product idea before writing code.
6og-image
Set up dynamic Open Graph image generation and all required meta tags so links look professional when shared on Twitter/X, LinkedIn, Slack, or anywhere that renders link previews. Triggers on requests like "OG image", "open graph", "social preview", "link preview", "Twitter card", "meta tags for sharing", "my links look broken when I share them", or any mention of how links appear when shared on social media.
6segment-users
Read your database schema, generate behavioral user segments with exact queries, and recommend targeted actions per segment. Use when the user wants to understand their user base, find power users, identify churn risk, build email cohorts, or understand usage patterns. Triggers on requests like "segment users", "who are my power users", "find churned users", "user cohorts", "churn analysis", "inactive users", "behavioral segmentation", "who's about to leave", or any mention of grouping users by activity, usage, or lifecycle.
6