---
title: SEO e AEO
description: >-
  Como um site Blume é encontrado — por mecanismos de busca e plataformas sociais de um lado, agentes de código e assistentes de IA do outro — e onde cada superfície é configurada.
---

Mecanismos de busca e agentes de IA querem a mesma coisa da sua documentação: um relato limpo e legível por máquina do que cada página diz, como as páginas se relacionam e quem as publica. O Blume trata os dois como uma única camada de descoberta. Metadados, cartões sociais, feeds e dados estruturados servem aos crawlers que ranqueiam você; `llms.txt`, Markdown bruto, uma API JSON, um servidor MCP e manifestos de descoberta servem aos agentes que respondem perguntas sobre você — e os arquivos no meio do caminho (`robots.txt`, o sitemap, JSON-LD) são lidos por ambos.

Quase tudo isso vem ligado por padrão e não precisa de configuração. Os botões ficam sob duas chaves em `blume.config.ts`: `seo` para o que mecanismos de busca e plataformas sociais veem, e `ai` para o que os agentes veem.

```ts blume.config.ts lineNumbers
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 },
},
```

Boa parte disso fica mais afiada com uma URL absoluta do site — defina [`deployment.site`](/docs/deployment) para que feeds, imagens OG, canônicas, o sitemap, JSON-LD e todo manifesto de agente possam emitir URLs completas. Algumas superfícies (imagens Open Graph, o sitemap) ficam desligadas até que isso seja definido.

## O que o build emite [#what-the-build-emits]

| Superfície | Onde | Padrão | Guia |
| --- | --- | --- | --- |
| Metadados em `<head>`, canônicas, cartões do X | todas as páginas | ligado | [Metadados](/docs/discoverability/metadata) |
| Imagens de compartilhamento social | `/og/<route>.png` | ligado com uma URL de site | [Imagens Open Graph](/docs/discoverability/open-graph) |
| JSON-LD do schema.org | todas as páginas | ligado | [Dados estruturados](/docs/discoverability/structured-data) |
| Feeds RSS | `/<type>/rss.xml` | ligado | [Feeds RSS](/docs/discoverability/rss) |
| `sitemap.xml`, `robots.txt`, sinais de conteúdo | raiz do site | ligado | [Sitemap e robots](/docs/discoverability/sitemap-and-robots) |
| `llms.txt`, `llms-full.txt` | raiz do site | ligado | [llms.txt](/docs/discoverability/llms-txt) |
| Espelhos em Markdown bruto, negociação de conteúdo, Copiar como Markdown, Abrir no chat | `/<route>.md` | ligado | [Markdown para agentes](/docs/discoverability/markdown) |
| API JSON e sua descrição OpenAPI | `/api/docs/…`, `/openapi.json` | ligado | [API JSON](/docs/discoverability/json-api) |
| Servidor MCP | `/mcp` | opcional, saída de servidor | [Servidor MCP](/docs/discoverability/mcp) |
| `agent-readability.json`, cabeçalhos `Link`, catálogo de APIs, WebMCP, skills, Web Bot Auth | raiz do site, `/.well-known/…` | ligado | [Descoberta por agentes](/docs/discoverability/agent-discovery) |

Todo arquivo gerado cede lugar a um que você mesmo publique: coloque um `robots.txt`, `sitemap.xml`, `llms.txt`, `openapi.json` ou `agent-readability.json` em `public/` e o Blume serve o seu no lugar.

O assistente **Ask AI** dentro da página é o único recurso de IA documentado em outro lugar: ele é um recurso de produto voltado ao leitor, e não uma superfície de descoberta, então fica em [Configuração](/docs/configuration/ask-ai).

## Conferindo seu trabalho [#checking-your-work]

O [`blume audit`](/docs/reference/cli#auditing-the-built-site) percorre o site construído e gera um relatório sobre títulos, descrições, canônicas, cartões Open Graph e do X, hreflang, o sitemap, o `robots.txt` e os dados estruturados. Aponte-o para um deployment com `--url` para checar também os cabeçalhos de resposta e a [descoberta de agentes baseada em DNS](/docs/discoverability/agent-discovery#dns-based-discovery-dns-aid).
