AEO Ultimate for EmDash Is Live

AEO Ultimate for EmDash is live. It is a free, MIT-licensed plugin for EmDash, Cloudflare’s open-source CMS. It turns each page into one connected Schema.org graph — Organization, WebSite, WebPage, Article, Service, FAQ and breadcrumbs — and manages Open Graph and Twitter cards from the same screen. It runs in EmDash’s plugin sandbox, makes no outbound network calls, and costs nothing to run.

Why EmDash?

EmDash was built for agents from the start: MCP access, Agent Skills, and sandboxed plugins that declare exactly what they can touch. That makes it a natural home for answer-engine optimization, which is about making a site legible to machines. The baseline JSON-LD EmDash emits on its own is a set of disconnected islands — a BlogPosting here, a WebSite there. Answer engines do better with one graph where the page, the article, the business behind it and its services all reference each other.

What does the plugin do?

Schema

One connected graph per page

The plugin contributes its graph under EmDash’s primary JSON-LD id, so it replaces core’s baseline rather than stacking a second block beside it. Every claim in it traces to a field someone filled in: your business details in AEO Settings, Service rows mapped to page paths, and FAQ pairs from a repeater field on the entry. It never sniffs headings and calls them questions — wrong FAQ markup is worse than none.

Social

Open Graph and Twitter cards, with bulk fills

The Social & Schema screen audits coverage across your collections and fills the gaps in one click: social descriptions cut on word boundaries from the page’s own content, missing titles, share images taken from featured and embedded media, and image alt text. Any page can be overridden individually.

Indexing

A report that names its blind spots

The Indexing screen lists pages hidden from search engines — and, just as important, any collection it could not check because SEO is switched off for it. It tells you it could not look rather than reporting those pages as clean.

What does it cost, and what does it touch?

It is free and MIT licensed. It declares two capabilities — content:read and content:write — and an empty allowedHosts list, so EmDash’s sandbox stops it from calling out to anything. There is no account, no API key and no AI spend. Settings and per-page overrides live in the plugin’s own storage, not in your content tables.

How do I install it?

npm install aeoultimate-emdash

Add aeoUltimate to the plugins array of the emdash() integration in astro.config.mjs, restart, and fill in Admin › Plugins › AEO Settings. The EmDash docs have the full walkthrough. The package also ships an Agent Skill, so a coding agent working on your site can do the setup for you.

Questions

Does it work with any EmDash theme?

Any theme that renders <EmDashHead> in its layout, which every stock EmDash template does. A hand-built layout without it will show no plugin metadata.

Will it duplicate the JSON-LD EmDash already outputs?

No. It contributes under the same primary id as EmDash’s baseline and replaces it. If you see two blocks, something else — usually a theme component — is emitting its own.

Can it generate llms.txt?

Not on EmDash. Sandboxed plugins cannot serve files at the site root, so /llms.txt and /robots.txt remain yours to add.

Is the source available?

Yes, on GitHub under the MIT license. Security reports go through the repository’s security advisories.