Create an SEO and AI Search Checklist Skill for AEO

Published 15 June 2026 by Yanni Papoutsis

TL;DR: Search optimisation fails through inconsistency: one page has perfect schema while the next is missing a canonical URL, and AI search engines quietly skip the pages without extractable answers. The fix is a checklist skill with five buckets that load whenever Claude touches web content. Meta: unique 50 to 60 character title, 150 to 160 character description with a call to action, self-referencing canonical, single H1. Schema: JSON-LD matching the page type, BreadcrumbList, FAQPage where Q&As exist, real authors and dates. OG: Open Graph and Twitter card tags with a 1200 by 630 image. AEO: llms.txt routing, a TL;DR block, question-format H2s, and a quotable direct-answer paragraph for answer engines. Rendering QA: no raw markdown artefacts, broken tables, or duplicate sections in the built page. Build steps, the SKILL.md template, and the bucket details are below.

An SEO checklist skill is a Claude skill that enforces a fixed list of search and AI-search checkpoints on every page Claude creates or edits: meta tags, structured data, Open Graph images, AEO assets like llms.txt and TL;DR blocks, and a rendering QA pass. Instead of remembering best practice per page, you encode it once, and Claude refuses to call a page done until every bucket passes.

What should an SEO checklist skill cover?

Five buckets, checked in order: meta fundamentals, structured data, social tags, AEO assets, and rendering QA. The first three serve classic search engines, the fourth serves answer engines like AI assistants, and the fifth catches the build bugs that silently destroy both.

Bucket Core checks
Meta title length, meta description with CTA, canonical, one H1, keyword placement
Schema page-type JSON-LD, BreadcrumbList, FAQPage, author Person, dates
OG and social og:title, og:description, og:image at 1200x630, twitter:card
AEO llms.txt entry, TL;DR block, question H2s, direct-answer paragraph
Rendering QA no raw markdown leaking, valid tables, no duplicate sections

The AEO bucket is the 2026 differentiator. AI search engines reward pages they can quote: a self-contained 40 to 60 word answer under the first heading, headings phrased as real questions, and an llms.txt file routing crawlers to your best content.

How do you build the checklist skill step by step?

Create the skill folder, write the SKILL.md with the five buckets as hard gates, add reference templates for the JSON-LD blocks, and optionally add a validator script. Here is the build.

Step 1: Create the folder

mkdir -p seo-ai-checklist/{references/templates,validators}
seo-ai-checklist/
  SKILL.md
  references/
    criteria.md            # full definition of every checkpoint
    templates/
      faqpage.json         # JSON-LD blocks ready to adapt
      breadcrumb.json
  validators/
    seo_validate.py        # optional automated checks

Step 2: Write the SKILL.md

---
name: seo-ai-checklist
description: SEO and AI search checklist for ALL web content. Trigger on: creating or editing HTML, blog posts, landing pages, metadata, schema, sitemaps, llms.txt, or any task mentioning SEO, AEO, indexing, or publishing. Never ship a page without passing every bucket.
---

# SEO + AI Search Checklist

Run every bucket before declaring any page done.

## A. Meta
- Title 50-60 chars, keyword in first 40, unique across site
- Meta description 150-160 chars with a call to action, unique
- Self-referencing canonical; exactly one H1 with the keyword
- Keyword in the first 100 words

## B. Schema
- JSON-LD @type matches page type (Article, HowTo, FAQPage)
- BreadcrumbList with absolute URLs
- Author as Person, publish and modified dates in ISO 8601
- Never invent ratings or reviews

## C. Open Graph
- og:title, og:description, og:url, og:type
- og:image 1200x630, unique per page; twitter:card set

## D. AEO
- Page listed in llms.txt; TL;DR block near the top
- At least two H2s phrased as questions
- One quotable 40-60 word direct answer under the first H2
- 3+ outbound citations to official sources

## E. Rendering QA
- No raw markdown artefacts (**, ##, pipe tables) in output
- No duplicate sections, no broken code fences
- Tables, lists, and FAQ blocks render as real HTML

Step 3: Add the JSON-LD templates

Templates stop Claude improvising schema syntax. Keep one file per block type in references/templates/, for example a FAQPage skeleton:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "QUESTION_TEXT",
      "acceptedAnswer": { "@type": "Answer", "text": "ANSWER_TEXT" }
    }
  ]
}

Step 4: Wire it into your publishing flow

Package and install the skill (mechanics in the pillar on building a Claude plugin from scratch), then make it unavoidable: my Cowork navigator loads it on any task touching web content, and stage 03 of the 21-agent GTM pipeline treats its buckets as the gate criteria for every published page. The citation requirement in bucket D pairs with the anti-hallucination skill, which guarantees cited sources actually exist.

Step 5: Verify on the rendered site, not the draft

Markdown that looks right can still build wrong, so the final check runs against the deployed page. On an Astro site the loop is quick:

npm run build
npx astro preview
# then spot-check: curl the page, grep for canonical, og:image, FAQPage
curl -s http://localhost:4321/technical-documentation/my-post/ | grep -c "FAQPage"

Astro's content tooling is documented at docs.astro.build, and if you deploy on Cloudflare Pages the build and headers behaviour is covered in the Cloudflare Pages docs.

Why does AEO deserve its own bucket?

Because answer engines consume pages differently from classic crawlers: they extract and quote rather than rank and list, and they read AI-specific files. Optimising for them is mostly about extractability, and the bucket D items map one-to-one to how AI assistants choose citations.

Three items carry most of the weight. First, llms.txt: a plain-text index at your site root that routes AI crawlers to your canonical content. Second, the TL;DR block: a 100 to 200 word summary that gives answer engines a safe quote. Third, question-format H2s with a direct answer in the first sentence beneath them, which is precisely the shape this article uses. Guidance on how Claude-family crawlers and assistants consume web content lives in the Claude documentation and at anthropic.com.

Frequently asked questions

What is the difference between SEO and AEO?

SEO optimises for ranked lists of links; AEO (answer engine optimisation) optimises for being quoted inside AI-generated answers. They share foundations, clean meta, schema, and crawlability, but AEO adds extractable answers, question headings, and AI-crawler assets like llms.txt.

Does the skill apply to existing pages or only new ones?

Both, and audits of old pages are where it earns fastest: run the five buckets against your highest-traffic pages first, fix the failures, then enforce the checklist on everything new so the gap never reopens.

What belongs in llms.txt?

A short, sectioned index: what the site is, who writes it, and a curated list of your canonical URLs with one-line descriptions. Treat it as your pitch to AI crawlers rather than a full sitemap dump.

Can the checklist run automatically?

Partially. Length checks, canonical presence, schema parsing, and rendering QA automate well in a validator script; judgement calls like answer quality and citation choice stay with Claude under the skill's rules, with you reviewing the gate output.

About the author

Yanni Papoutsis builds AI products, automation pipelines, and technical documentation with Claude, and publishes free tooling and guides at yanni.uk.

Next step: Pair this with the website checklist skill so pages pass UX gates too, and explore 1,000+ free AI tools at yanni.uk/category/all/.

Sources