| name | seo |
| description | Generative search engine optimization and visibility architectures — covering traditional SEO, GEO (Generative Engine Optimization), and AEO (Answer Engine Optimization) for landing pages. Use whenever the user wants to optimize content for search engines, AI answer engines (ChatGPT, Perplexity, Claude, Google AI Overviews), or write SEO/AEO-optimized landing pages. Trigger on mentions of SEO, GEO, AEO, meta tags, structured data, schema markup, search rankings, or "optimize this page for search/AI".
|
SEO / GEO / AEO — Search & AI Visibility
Traditional search optimization plus optimization for AI answer engines (2026 landscape).
The Three Layers of Visibility
| Layer | Target | Optimizes For |
|---|
| SEO | Google, Bing | Crawlers, backlinks, keyword relevance |
| AEO | Featured snippets, voice search | Direct question-answer matching |
| GEO | ChatGPT, Perplexity, Claude, AI Overviews | Being cited/quoted by LLMs |
Traditional SEO Fundamentals
Technical SEO Checklist
✓ robots.txt allows crawling of important pages
✓ sitemap.xml submitted to Search Console
✓ Canonical URLs set on every page
✓ No duplicate content (or rel=canonical pointing to original)
✓ Mobile-responsive (Google is mobile-first indexing)
✓ Core Web Vitals pass (LCP < 2.5s, INP < 200ms, CLS < 0.1)
✓ HTTPS everywhere
✓ Structured data (JSON-LD) on key page types
Metadata Template (Next.js)
import type { Metadata } from "next"
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const post = await getPost(params.slug)
return {
title: `${post.title} | YourBrand`,
description: post.excerpt.slice(0, 160),
keywords: post.tags,
alternates: {
canonical: `https://example.com/blog/${post.slug}`,
},
openGraph: {
title: post.title,
description: post.excerpt,
type: "article",
publishedTime: post.publishedAt,
authors: [post.author.name],
images: [{ url: post.ogImage, width: 1200, height: 630 }],
},
twitter: {
card: "summary_large_image",
title: post.title,
description: post.excerpt,
images: [post.ogImage],
},
}
}
Structured Data (JSON-LD)
function ArticleSchema({ post }: { post: Post }) {
const schema = {
"@context": "https://schema.org",
"@type": "Article",
headline: post.title,
description: post.excerpt,
image: post.ogImage,
datePublished: post.publishedAt,
dateModified: post.updatedAt,
author: { "@type": "Person", name: post.author.name },
publisher: {
"@type": "Organization",
name: "YourBrand",
logo: { "@type": "ImageObject", url: "https://example.com/logo.png" },
},
}
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
)
}
const faqSchema = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(faq => ({
"@type": "Question",
name: faq.question,
acceptedAnswer: { "@type": "Answer", text: faq.answer },
})),
}
AEO — Answer Engine Optimization
Goal: get your content selected as a featured snippet or voice search answer.
Question-Answer Format
## How long does it take to set up a SaaS MVP?
A typical SaaS MVP takes 4-8 weeks to launch, depending on feature scope.
The breakdown: 2-3 days for project setup, 1 week for auth and billing
integration, and 2-4 weeks for core feature development.
<!-- Direct, complete answer in the FIRST sentence — this is what gets
extracted into featured snippets and voice answers -->
AEO Content Structure
1. Question as H2/H3 heading (matches actual search queries)
2. Direct answer in first sentence (40-60 words ideal for snippets)
3. Supporting detail/context after
4. Bullet points or numbered lists for scannable answers
## What is Row-Level Security in PostgreSQL?
Row-Level Security (RLS) is a PostgreSQL feature that restricts which rows
a user can access in a table, based on policies you define. Unlike
application-level checks, RLS enforces access control at the database
layer itself.
Key benefits:
- Enforced even if application code has bugs
- Works across all database clients (not just your app)
- Reduces duplicate authorization logic
Voice Search Optimization
- Target natural language questions ("how do I...", "what is...", "why does...")
- Write answers in conversational tone — voice assistants read these aloud
- Keep primary answer under 30 words when possible (voice answers are brief)
GEO — Generative Engine Optimization (2026)
Goal: get cited, quoted, or referenced by AI systems (ChatGPT, Perplexity, Claude, Google AI Overviews).
What LLMs Look For When Citing Sources
- Clear, extractable claims — specific facts, numbers, definitions stated plainly
- Authoritative structure — proper headings, not walls of text
- Recency signals — dates, "last updated," version numbers
- Original data/research — content that can't be found elsewhere is more citable
- Clean semantic HTML —
<article>, <section>, proper heading hierarchy
GEO Content Patterns
<!-- ✅ Citable: specific, attributable claim -->
According to our 2026 survey of 500 SaaS companies, 73% use PostgreSQL
as their primary database, up from 61% in 2024.
<!-- ❌ Not citable: vague, no source -->
Most companies use SQL databases these days.
<!-- ✅ Definition format LLMs extract easily -->
**Row-Level Security (RLS)** is a PostgreSQL access-control mechanism
that filters query results based on the requesting user's identity,
enforced at the database engine level rather than in application code.
<!-- Structured for extraction: term in bold, clear definition follows -->
Author & Source Authority Signals
const authorSchema = {
"@context": "https://schema.org",
"@type": "Person",
name: "Author Name",
jobTitle: "Senior Backend Engineer",
worksFor: { "@type": "Organization", name: "Company" },
sameAs: [
"https://linkedin.com/in/author",
"https://github.com/author",
],
}
Llms.txt (Emerging Standard, 2025-2026)
# llms.txt — at your domain root, similar to robots.txt
# Signals to AI crawlers what content is most important/citable
# YourBrand
> One-line description of what your site/product does.
## Documentation
- [API Reference](https://example.com/docs/api): Full API documentation
- [Getting Started](https://example.com/docs/start): Quickstart guide
## Key Pages
- [Pricing](https://example.com/pricing): Current pricing tiers
- [Changelog](https://example.com/changelog): Recent product updates
Landing Page SEO/AEO Writer Template
# [Primary Keyword] — [Value Proposition]
<!-- H1: include primary keyword naturally, keep under 60 chars -->
[Hook paragraph: 2-3 sentences, state the problem and your solution.
Include primary keyword in first 100 words.]
## What is [Primary Keyword]?
<!-- AEO: direct definition, extractable -->
[40-60 word direct answer]
## Why [Primary Keyword] Matters
<!-- Supporting context, secondary keywords naturally woven in -->
## How [Product] Solves [Problem]
<!-- Feature breakdown with H3s for each feature -->
### [Feature 1]
[Benefit-focused description]
### [Feature 2]
[Benefit-focused description]
## Frequently Asked Questions
<!-- AEO + FAQ schema — high snippet/voice-answer potential -->
### [Question matching real search query]
[Direct answer, 40-60 words]
### [Question matching real search query]
[Direct answer, 40-60 words]
## [CTA Section]
[Clear single call-to-action]
On-Page Checklist for Landing Pages
Measuring Success
| Metric | Tool | Tracks |
|---|
| Organic traffic | Google Search Console | Traditional SEO |
| Featured snippets | Search Console + manual checks | AEO |
| AI citations | Manual prompting of ChatGPT/Perplexity/Claude | GEO |
| Core Web Vitals | PageSpeed Insights, Vercel Analytics | Technical SEO |
| Keyword rankings | Ahrefs, SEMrush | SEO |
Key Rules
- Direct answers in the first sentence — this is what gets extracted for both AEO snippets and GEO citations
- Specific, attributable facts beat vague claims — numbers, dates, named sources are more citable by LLMs
- Question-format headings — match real search queries and voice search patterns
- FAQ schema everywhere relevant — cheap to add, high AEO value
- Structured data (JSON-LD) on all key page types — Article, FAQPage, Product, Organization
llms.txt at domain root — emerging signal for AI crawler prioritization
- Core Web Vitals are non-negotiable — slow pages rank worse and convert worse
- One H1 per page, logical heading hierarchy beneath it
- Original data/research is the highest-value content for GEO — AI systems prefer unique sources
- Update dates visibly — "Last updated" signals recency to both crawlers and LLMs