Technical SEO & AEO Checklist for Developers
Most SEO guides are written for marketers. This one is written for you — the developer who actually ships the fixes. Below is a concrete technical SEO checklist you can work through in a single sprint, complete with code snippets and verification steps.
1. Crawlability & Indexing
Search engines can only rank pages they can find. Start here.
robots.txt
Your robots.txt should live at the site root and explicitly allow the pages you want indexed:
User-agent: *
Allow: /
Disallow: /api/
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
Verify: Run curl -s https://yoursite.com/robots.txt and confirm it returns the expected rules. Use Google Search Console's robots.txt tester for edge cases.
XML Sitemap
Generate your sitemap dynamically so it stays in sync with your pages. In Next.js, export a sitemap.ts in your app directory:
export default function sitemap() {
return [
{ url: "https://example.com", lastModified: new Date() },
{ url: "https://example.com/blog", lastModified: new Date() },
// Add all public routes
];
}
Verify: Submit your sitemap in Google Search Console under Sitemaps. Check the "Discovered" vs "Indexed" counts.
Canonical Tags
Every page needs a canonical URL to prevent duplicate content issues. Next.js handles this via the metadata export:
export const metadata = {
alternates: { canonical: "https://example.com/page" },
};
2. Core Web Vitals
Google uses three metrics — LCP, INP, and CLS — as ranking signals. Here is how to hit good scores.
Largest Contentful Paint (LCP < 2.5s)
- Preload hero images with
priorityin Next.js<Image>:<Image src="/hero.webp" alt="Hero" priority width={1200} height={630} /> - Eliminate render-blocking CSS — inline critical styles or use
next/fontto self-host fonts. - Use a CDN for static assets. Vercel and Cloudflare Pages do this automatically.
Interaction to Next Paint (INP < 200ms)
- Keep main-thread JavaScript under 50ms per task. Break long tasks with
requestIdleCallbackorscheduler.yield(). - Avoid layout thrashing — batch DOM reads and writes.
- Use
React.lazy()and dynamic imports to keep initial bundle lean.
Cumulative Layout Shift (CLS < 0.1)
- Always set explicit
widthandheighton images and videos. - Avoid injecting content above the fold after initial paint.
- Use CSS
aspect-ratiofor responsive media containers.
Verify: Run Lighthouse in Chrome DevTools, or use the CrUX dashboard for field data.
3. Meta Tags & Open Graph
Each page needs unique, descriptive meta tags. Use your framework's metadata API:
export const metadata = {
title: "Your Page Title — Brand",
description: "A concise 150-160 character description with target keywords.",
openGraph: {
title: "Your Page Title",
description: "Same or similar description for social sharing.",
images: [{ url: "/og-image.png", width: 1200, height: 630 }],
},
};
Key rules:
- Title: 50-60 characters, primary keyword near the front
- Description: 150-160 characters, include a call to action
- OG image: 1200×630px, text legible at thumbnail size
4. Structured Data (JSON-LD)
Structured data earns rich results in search. Add JSON-LD to your pages:
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
headline: "Your Article Title",
datePublished: "2026-03-24",
author: { "@type": "Person", name: "Author Name" },
};
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
Common types: Article, SoftwareApplication, FAQPage, HowTo, BreadcrumbList, Organization.
AEO bonus: FAQPage and HowTo schemas are especially valuable for AEO (Answer Engine Optimization). AI answer engines like ChatGPT, Perplexity, and Google AI Overviews use these schemas to extract structured answers directly. Pages with FAQPage JSON-LD have 2.7x higher AI citation rates.
Verify: Use Google's Rich Results Test at search.google.com/test/rich-results.
5. Performance & Rendering
Server-Side Rendering vs Static Generation
- Static (SSG): Use for content that changes infrequently (blogs, docs, landing pages). Best for SEO because pages are pre-rendered and served instantly.
- SSR: Use when content depends on the request (personalized pages, dashboards).
- Avoid client-only rendering for pages you want indexed. Googlebot can execute JavaScript, but it is slower and less reliable than serving HTML directly.
Image Optimization
- Use WebP or AVIF formats — 30-50% smaller than JPEG/PNG.
- Implement responsive images with
srcsetor Next.js<Image>. - Lazy-load below-the-fold images with
loading="lazy".
6. URL Structure & Internal Linking
- Use descriptive, hyphenated slugs:
/blog/technical-seo-checklistnot/blog/post?id=123. - Keep URLs shallow — fewer than 3 directory levels when possible.
- Link between related pages to distribute page authority. Every important page should be reachable within 3 clicks from the homepage.
7. HTTPS, Mobile, & Accessibility
- HTTPS everywhere. No excuses — it is a ranking signal and a trust signal.
- Mobile-first. Google indexes the mobile version of your site. Test with Chrome's device emulator and ensure tap targets are at least 48×48px.
- Semantic HTML. Use
<main>,<nav>,<article>,<h1>–<h6>correctly. Screen readers and search engines both benefit.
8. AEO (Answer Engine Optimization)
As AI answer engines (ChatGPT, Perplexity, Google AI Overviews) increasingly drive traffic, optimizing for citation is now as important as optimizing for ranking.
Key AEO Signals
- Schema markup: Add FAQPage, HowTo, Article, and Speakable JSON-LD to every applicable page
- Concise answers: Write short paragraphs (5-50 words) directly after headings — these are what AI engines extract
- Definitions: Use "X is..." patterns — AI systems frequently quote these verbatim
- Lists and tables: Structured data (ol/ul, tables) is preferred by AI for extraction
- External citations: Link to authoritative sources to signal trustworthiness
- Short sentences: Keep average sentence length under 15 words for easier AI parsing
- Heading hierarchy: Maintain proper H1→H2→H3 nesting without skipping levels
- Date modified: Include
dateModifiedin JSON-LD or<time>tags for freshness signals
Check Your AEO Score
$ xyle crawl --url https://yoursite.com/post --json
# Returns 13 AEO signals: schema detection, content structure, quality metrics
$ xyle analyze --url https://yoursite.com/post --content "..." --json
# Returns aeo_score (0-1) and up to 5 actionable aeo_recommendations
Or use the Xyle dashboard analysis page for a visual view with score rings and a signal checklist.
Automate Your SEO Workflow
Manually checking all of this is tedious. Tools like Xyle connect to Google Search Console, run AI-powered SEO and AEO analysis, and surface exactly what needs fixing — including AEO signals, dual scores, and actionable recommendations — all from your terminal or dashboard.
$ npm install -g @xyleapp/cli
$ xyle login
$ xyle queries --site yoursite.com
$ xyle rewrite --query "technical seo checklist"
Whether you use a checklist or a tool, the key is making SEO and AEO part of your development workflow — not an afterthought. Ship these fixes incrementally, measure with real data, and iterate. Optimizing for AI answer engines today means your content gets cited tomorrow.
Ready to optimize your search rankings?
Xyle connects to Google Search Console, analyzes content gaps with AI, and gives you actionable fixes — from the terminal or dashboard.