---
spec_name: "AEO Pack — Implementation Spec for Claude Code"
spec_version: "1.0"
last_updated: 2026-05-07
target_audience: "Designers, creative directors, business owners running websites on Webflow / WordPress / Shopify / Squarespace"
expected_outcome: "Your website becomes citable by ChatGPT, Claude, Gemini, and Perplexity within 2-4 weeks of crawl"
ai_tools_supported: [claude_code, google_antigravity, cursor]
based_on: https://mikekwal.com/blog/aeo-pack/
author: Mike Kwal
---

# AEO Pack — Implementation Spec for Claude Code

## Instructions for the AI

You are helping a website owner implement Answer Engine Optimization (AEO). Read this spec end-to-end, then apply each step to their codebase. Confirm each step before moving to the next. If the user is on a specific platform (Webflow, WordPress, Shopify, Squarespace), use the platform-specific instructions. If you don't know the platform, ASK before changing files.

For every change, explain what you're doing in one sentence so the user learns as they go.

---

## Step 1: Add `llms.txt` at site root

**What it does:** Tells AI engines (Anthropic's Claude, Perplexity, ChatGPT-search) what the site is about and where to find canonical pages.

**Where it goes:** `https://[domain]/llms.txt` — server root, public.

**Template (fill in placeholders, then save to root):**

```
# [Brand Name]

> [One-line description of what the business does]

## About
- [Value proposition in 2-3 sentences]
- [Who it serves]
- [What makes it different]

## Key Pages
- [Homepage](https://[domain]/): [Headline value prop]
- [Services](https://[domain]/services): [What's sold]
- [Blog](https://[domain]/blog): [Where thought leadership lives]

## Topics covered
- [Topic 1]
- [Topic 2]
- [Topic 3]

## Contact
- Email: [email]
- Booking: https://[domain]/book

## Updated
[YYYY-MM-DD]
```

**Platform-specific upload paths:**
- **WordPress:** Place at site root (alongside `wp-config.php`). Or use a plugin like "WPCode" to inject it. Verify reachable at `[domain]/llms.txt`.
- **Webflow:** Use Site Settings → Custom Code → host as a hosted asset, OR drop into a CMS Collection, OR use a redirect rule pointing `/llms.txt` to a hosted text file.
- **Shopify:** Apps → "Custom Pages" or "File Manager" → upload as a page asset, route `/llms.txt` to it via Liquid template.
- **Squarespace:** Settings → Advanced → Code Injection won't work for this. Use Pages → Custom Code → URL Mappings to redirect `/llms.txt` to a hosted file.

---

## Step 2: Add schema markup to every page template

**What it does:** Structured data tells AI engines what content *means* (vs. just what it says). Three schemas matter most: `Article`, `FAQPage`, `HowTo`.

### Article schema (paste into `<head>` of every blog post template)

```json
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[POST TITLE]",
  "author": {
    "@type": "Person",
    "name": "[AUTHOR NAME]",
    "url": "https://[domain]/about"
  },
  "datePublished": "[YYYY-MM-DD]",
  "dateModified": "[YYYY-MM-DD]",
  "publisher": {
    "@type": "Organization",
    "name": "[BRAND]",
    "logo": {
      "@type": "ImageObject",
      "url": "https://[domain]/logo.png"
    }
  },
  "image": "https://[domain]/[featured-image].jpg",
  "description": "[META DESCRIPTION]",
  "mainEntityOfPage": "[FULL POST URL]"
}
</script>
```

### FAQPage schema (for any page with question-answer sections)

```json
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "[QUESTION 1]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[ANSWER 1]"
      }
    },
    {
      "@type": "Question",
      "name": "[QUESTION 2]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[ANSWER 2]"
      }
    }
  ]
}
</script>
```

### HowTo schema (for any tutorial / step-by-step page)

```json
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "[HOW-TO TITLE]",
  "description": "[ONE-SENTENCE DESCRIPTION]",
  "step": [
    {
      "@type": "HowToStep",
      "name": "[STEP 1 NAME]",
      "text": "[STEP 1 INSTRUCTIONS]"
    },
    {
      "@type": "HowToStep",
      "name": "[STEP 2 NAME]",
      "text": "[STEP 2 INSTRUCTIONS]"
    }
  ]
}
</script>
```

**Platform-specific:**
- **WordPress:** Install Rank Math (free). General Settings → enable Schema for Posts (Article) and Pages. For FAQ: use the native FAQ block in Gutenberg — Rank Math wraps it in schema automatically.
- **Webflow:** CMS Collection template → custom code area → paste the JSON-LD with field bindings (e.g., `{{post.title}}`).
- **Shopify:** Theme code editor → `theme.liquid` `<head>` → paste the schema with Liquid template tags.

---

## Step 3: Restructure cornerstone content as Q&A

For the top 5-10 cornerstone pages on the site, rewrite the body using question-answer headings. Example transformation:

**Before:**
> Email automation can be powerful for Shopify stores. There are many tools you can use, and the best approach depends on factors including your tech stack...

**After:**
> ### Q: What's the best email automation tool for Shopify?
> Klaviyo is the leader for Shopify-native email automation. It connects in 5 minutes, includes pre-built flows (welcome series, abandoned cart, post-purchase), and starts free for up to 250 contacts.
>
> ### Q: How do I set up an abandoned cart email in Klaviyo?
> 1. Connect Klaviyo to Shopify via the official integration.
> 2. Navigate to Flows → Create Flow → Pre-Built.
> 3. Select "Abandoned Cart."
> 4. Customize copy and timing (default: 4 hours after abandonment).
> 5. Toggle Live.

The Q&A version is what gets cited by AI engines. The paragraph version becomes a footnote.

---

## Step 4: Add an FAQ block to every cornerstone page

At the bottom of every long-form page, add a 5-10 question FAQ block wrapped in FAQPage schema (Step 2). AI engines disproportionately cite FAQ content.

Sources for FAQ questions:
- The 5 most common sales objections from the client
- The 5 most common questions in support tickets / DMs
- Competitor pages — search "[topic] FAQ" and see what they answer

---

## Step 5: Audit existing pages for AEO-readiness

Run the AI through this checklist for each cornerstone page:

- [ ] Title tag is descriptive (not generic)
- [ ] H1 matches user intent / search query
- [ ] First paragraph answers the page's central question in 1-2 sentences (inverted pyramid)
- [ ] H2/H3 headings are questions or topics, not vague phrases
- [ ] At least one Article or FAQPage schema block in `<head>`
- [ ] Page has been "updated" within the last 6 months (date stamp visible)
- [ ] No critical content rendered only via JavaScript (server-render the important stuff)
- [ ] FAQ block at the bottom (5+ questions, schema-wrapped)
- [ ] Internal links to 2-3 related cornerstone pages
- [ ] Original data, frameworks, or named methods present (citation-worthy assets)

Flag any page failing 3+ checks. Prioritize fixing the highest-traffic pages first.

---

## Quick-start prompts for Claude Code / Google Antigravity / Cursor

Once you've installed your AI builder, paste these prompts in order:

### Prompt 1 — Generate llms.txt
```
Read the llms.txt template in this spec. Look at my homepage at https://[my-domain]/ and any About page if it exists. Generate a custom llms.txt for my site, save it to my project root, and remind me to upload it to the live site root.
```

### Prompt 2 — Add Article schema
```
Find my main blog post template (single.php for WordPress, the Collection template for Webflow, theme.liquid section for Shopify). Inject the Article schema JSON-LD from this spec, with field bindings to my actual post fields (title, author, date, image). Verify it's valid by running it through https://search.google.com/test/rich-results.
```

### Prompt 3 — Add FAQ schema to a page
```
On the page at [URL], find the existing FAQ section (or the Q&A pattern in the body). Wrap it in FAQPage schema using the template in this spec. Bind to the actual question/answer text. Confirm it parses with Google's Rich Results Test.
```

### Prompt 4 — Audit my cornerstone pages
```
Run the AEO audit checklist from Step 5 of this spec on these 5 pages: [list URLs]. Tell me which checks each page fails and what to fix first.
```

### Prompt 5 — Restructure a page as Q&A
```
Read the page at [URL]. Rewrite the body using the inverted-pyramid question-answer pattern from Step 3 of this spec. Don't change the design or visual hierarchy — only the copy structure. Show me the diff before saving.
```

---

## Verification (run after Steps 1-4 complete)

| Check | How |
|---|---|
| `llms.txt` is reachable | Open `https://[domain]/llms.txt` in a browser. Should show the file content. |
| Schema is valid | Paste the URL into [Google Rich Results Test](https://search.google.com/test/rich-results). All schemas should be green. |
| You're being cited | Ask ChatGPT (or Perplexity / Claude with web): *"Best [your niche] resources?"* — see if you appear. (Allow 2-4 weeks for AI engines to re-crawl after changes.) |
| FAQ blocks render | Visit cornerstone pages. The FAQ section should be visible AND in the page source as schema. |

---

## Need help?

Four ways to go deeper:

- **Free** — Join the [Talk-to-Build community](https://www.skool.com/talktobuild). Builders shipping AI-native AEO-ready sites together.
- **Done-for-you** — [MK-Way](https://mk-way.com) builds AEO-ready websites in 7 days.
- **Quick question** — DM Mike on [Instagram](https://www.instagram.com/mikekwal). He reads every message.
- **B2B / strategy** — Connect on [LinkedIn](https://www.linkedin.com/in/mikekwal/).

---

*This spec is the actionable implementation companion to the AEO Pack hub article: [https://mikekwal.com/blog/aeo-pack](https://mikekwal.com/blog/aeo-pack/). The hub explains the why; this spec ships the what.*

*Last updated: 2026-05-07*
