SEO and AEO
How a Blume site gets found — by search engines and social platforms on one side, coding agents and AI assistants on the other — and where each surface is configured.
Search engines and AI agents want the same thing from your docs: a clean, machine-readable account of what each page says, how the pages relate, and who publishes them. Blume treats the two as one discoverability layer. Metadata, social cards, feeds, and structured data serve the crawlers that rank you; llms.txt, raw Markdown, a JSON API, an MCP server, and discovery manifests serve the agents that answer questions about you — and the files in between (robots.txt, the sitemap, JSON-LD) are read by both.
Almost all of it is on by default and needs no configuration. The knobs live under two keys in blume.config.ts: seo for what search engines and social platforms see, and ai for what agents see.
seo: {
og: { enabled: true },
rss: { enabled: true, types: ["blog", "changelog"] },
sitemap: true,
robots: true,
structuredData: true,
x: { handle: "@acme" },
},
ai: {
llmsTxt: true,
mcp: { enabled: false },
},
Most of this is sharper with an absolute site URL — set deployment.site so feeds, OG images, canonicals, the sitemap, JSON-LD, and every agent manifest can emit full URLs. A few surfaces (Open Graph images, the sitemap) stay off until it’s set.
What the build emits
| Surface | Where | Default | Guide |
|---|---|---|---|
<head> metadata, canonicals, X cards |
every page | on | Metadata |
| Social share images | /og/<route>.png |
on with a site URL | Open Graph images |
| schema.org JSON-LD | every page | on | Structured data |
| RSS feeds | /<type>/rss.xml |
on | RSS feeds |
sitemap.xml, robots.txt, content signals |
site root | on | Sitemap and robots |
llms.txt, llms-full.txt |
site root | on | llms.txt |
| Raw Markdown mirrors, content negotiation, Copy as Markdown, Open in chat | /<route>.md |
on | Markdown for agents |
| JSON API and its OpenAPI description | /api/docs/…, /openapi.json |
on | JSON API |
| MCP server | /mcp |
opt-in, server output | MCP server |
agent-readability.json, Link headers, API catalog, WebMCP, skills, Web Bot Auth |
site root, /.well-known/… |
on | Agent discovery |
Every generated file yields to one you ship yourself: drop a robots.txt, sitemap.xml, llms.txt, openapi.json, or agent-readability.json in public/ and Blume serves yours in its place.
The in-page Ask AI assistant is the one AI feature documented elsewhere: it’s a reader-facing product feature rather than a discovery surface, so it lives under Configuration.
Checking your work
blume audit crawls the built site and reports on titles, descriptions, canonicals, Open Graph and X cards, hreflang, the sitemap, robots.txt, and structured data. Point it at a deployment with --url to also check response headers and DNS-based agent discovery.