- name
- aeo-ify
- description
- Make a website easy for AI answer engines (Meta Muse, ChatGPT, Claude, Perplexity) to read, trust and recommend, using 11 AEO optimizations. Fixes what it can in the site's code and reports back as one short HTML page. Use when the user types /aeo-ify or asks to optimize a site for AEO or AI search.
*Last edited: 2026-10-20*
# AEO-ify
Built on [this tweet](https://x.com/RobHoffman_/status/2112212215583658420): Meta Muse is now recommending a product as the best option on the market, then pushing people to sign up. Here's how to get there first.
Start with the pages that sell: home, pricing, product pages, and any "X vs Y" pages. Fetch each one with `curl` (no JavaScript); that is what AI crawlers see. If you have a browser tool, also read the page's accessibility tree; that is how Muse reads it. If the site's code is in this folder, fix it there on a new git branch. If you only have a URL, don't change anything; write the exact changes for the user to paste. If `curl` gets back an empty shell or "Loading…", find out why the page isn't rendered on the server. That is usually the biggest fix.
1. **Update the accessibility tree.** Name every icon button (`aria-label="Open menu"` on the hamburger). Give every form field a `<label>` ("Phone", "First name", "Email"). Write alt text as if you were describing the image to a blind person ("overhead view of a white horse running"). Don't put important context in images. Everything must be machine readable. Label any hidden spam-trap field "Leave this empty", or an agent signing someone up will fill it in and the signup will silently fail.
2. **Put key product info in the raw HTML.** If pricing, proof or product specs load with a `<script>`, AI crawlers can't read them. Good: `<p>light and pro plans on beehiiv take 0% of paid subscription revenue</p>`. Bad: an empty `<div id="price">` that JavaScript fills in.
3. **Make the reader's main question the first H2**, right below the H1, in plain English, written the way the reader would actually type it. On an "X vs Y" page: "Which is better, X or Y?"
4. **Then answer "it depends" in 100 words or less.** Don't say the product is best for everything; say who each option is best for. Example: "If you care about keeping all your subscription revenue, beehiiv is the better choice: beehiiv takes 0% of paid subscriptions, and Substack takes 10%. Substack works if you want a built-in network to get more readers, and monetizing isn't a concern."
5. **Replace slogans with clear definitions.** Not "Your inbox, reimagined." Instead: "AgencyMax is a CRM for SEO agencies that tracks leads, proposals, and existing clients on a single dashboard." It should answer: What is it? Who's it for? What does it do?
6. **Put testimonials in plain text**, not images or JavaScript. Quick test: if you can't highlight it with your mouse, AI likely can't read it.
7. **Add "as of" dates to key facts** like pricing, features, G2 ratings and number of users: "[Product] has 13,231 active subscribers, as of 2026."
8. **Let Meta's crawler in.** Add this to `/robots.txt`:
```
User-agent: meta-webindexer
Allow: /
```
A crawler follows only the group that names it, so copy any `Disallow` lines from the `User-agent: *` group that should still apply. Also check the file doesn't block other AI search crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) by accident.
9. **Fix broken links.** They stop AI crawlers from exploring the site and lower its trust. Crawl the site's internal links yourself, check each status code, then update, redirect or remove the broken ones. For a very large site, Screaming Frog does the same crawl.
10. **Use semantic HTML.** `<nav>` instead of `<div class="nav">`, `<header>` instead of `<div class="header">`, `<button>Book now</button>` instead of `<div>Book now</div>`. Any `<div>` doing the job of a button, link, nav or header is a place agents will struggle.
11. **Keep content fresh.** Update it every 30 to 90 days, and put "Published [date]" and "Updated [date]" lines at the top of each article, below the byline.
Never invent a number, rating, price or fact about a competitor. Use only what the site or the user gives you, and leave a clear placeholder for anything missing. Don't deploy. If a fix needs a rebuild (like adding server rendering to a single-page app), put it under "Needs you" instead. After fixing, rerun the same checks on a local build to prove the fixes worked, without submitting forms or calling anything that writes data or sends email.
Report back with one short HTML page, opened for the user. Use headers that say exactly what's below them ("Fixed", "Needs you", "Already good"), and show the before and after for each fix.
View on GitHub