---
title: "Sitio web preparado para agentes de IA: qué sí sirve — Dardo"
description: "Qué necesita un sitio web preparado para agentes de IA, según lo que hicimos en dardo.studio: markdown, llms.txt, robots.txt, servidor MCP y A2A."
url: "https://dardo.studio/es/blog/sitio-web-preparado-para-agentes-de-ia/"
language: "es"
translation: "https://dardo.studio/en/blog/agent-ready-website/"
updated: "2026-10-09T20:38:51.639Z"
---

[Blog](https://dardo.studio/es/blog/)

# Sitio web preparado para agentes de IA: lo que construimos en dardo.studio y lo que de verdad sirve

Preparamos dardo.studio para que los agentes de IA lo lean y lo consulten, capa por capa. Te contamos qué hace cada capa, quién documenta que la usa hoy y cuáles volveríamos a construir.

Por [Nicolás Cerón](https://dardo.studio/es/estudio/) ·9 de octubre de 2026 · [Read in English](https://dardo.studio/en/blog/agent-ready-website/)

![Un pequeño robot con ruedas sigue una línea guía carmesí por una galería de museo de noche, hacia una escultura iluminada.](https://dardo.studio/_astro/01M4GYDFZJP0ZV0S7JSNMWYADG_ZB09f9.webp)

## La respuesta corta

Un sitio web preparado para agentes de IA cumple tres condiciones. Los agentes pueden llegar a él. Pueden leerlo sin tropezar con menús, banners y scripts. Y, cuando tiene sentido, pueden usar unas pocas herramientas declaradas en vez de adivinar qué botón oprimir.

Construimos las tres en dardo.studio a comienzos de octubre de 2026. Aquí te contamos qué publicamos y cuánto de eso documentan usar hoy las grandes plataformas de IA, verificado contra el sitio en vivo el 8 de octubre de 2026.

La conclusión es poco llamativa. Lo que más pesa es lo más viejo: que los rastreadores puedan entrar y que el HTML sea claro y semántico. Las copias en markdown y el llms.txt son comodidades baratas. MCP, A2A y WebMCP son protocolos reales, pero ninguna documentación de rastreadores de OpenAI, Anthropic, Perplexity o Google que citamos dice que sus asistentes encuentren solos las herramientas de un sitio.

## Primero, el acceso: robots.txt y la CDN

Nuestro [robots.txt](https://dardo.studio/robots.txt) repite el mismo bloque para el agente por defecto (`*`) y para cada rastreador de búsqueda con IA y agente de usuario que nombramos:

```
User-agent: OAI-SearchBot
Allow: /
Disallow: /api/
Content-Signal: search=yes, ai-input=yes
```

Las mismas reglas aplican a ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User y Bingbot. Solo `/api/` está cerrado.

### Rastreadores de búsqueda y de entrenamiento no son lo mismo

Las grandes empresas ya documentan identificadores separados:

- **OpenAI.** OAI-SearchBot muestra sitios en la búsqueda de ChatGPT; si lo bloqueas, quedas fuera de esas respuestas, aunque puedes seguir apareciendo como enlace de navegación. GPTBot recoge datos para entrenamiento. ([OpenAI](https://developers.openai.com/api/docs/bots))
- **Anthropic.** Claude-SearchBot indexa para búsqueda, ClaudeBot recoge datos de entrenamiento y Claude-User visita páginas cuando alguien le pregunta algo a Claude. ([Anthropic](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler))
- **Perplexity.** PerplexityBot muestra y enlaza sitios en sus resultados y no se usa para entrenar modelos fundacionales de IA. ([Perplexity](https://docs.perplexity.ai/docs/resources/perplexity-crawlers))
- **Google.** Google-Extended controla el entrenamiento de Gemini y el _grounding_ en otros productos de Google. No afecta la inclusión ni el ranking en la Búsqueda. ([Google](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers?hl=es))

Los agentes que actúan por pedido de una persona son otra cosa. OpenAI dice que robots.txt puede no aplicar a ChatGPT-User; Perplexity-User y los [agentes activados por usuarios de Google](https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers?hl=es) en general lo ignoran. Actúan en tiempo real para una persona; cuando un bloqueo funciona, sobre todo impide que su asistente lea tu página.

Nuestro archivo no nombra a los rastreadores de entrenamiento, así que caen en `*` y están permitidos. Es una decisión de negocio que los proveedores documentan como un control aparte: bloquear GPTBot o ClaudeBot no es salir de sus índices de búsqueda.

### Content Signals: una línea, ningún compromiso

La línea `Content-Signal` viene de la [política Content Signals de Cloudflare](https://blog.cloudflare.com/content-signals-policy/), que nombra tres usos: `search`, `ai-input` (entregar contenido a un modelo al responder) y `ai-train`. Dejamos `ai-train` por fuera, lo que según la política no concede ni restringe ese uso. Cloudflare aclara que las señales no bloquean nada y que algunas empresas pueden ignorarlas. Ninguna de las páginas de rastreadores citadas aquí las menciona. Cuesta una línea; no esperes nada de ella por ahora.

### Revisa la CDN, no solo el archivo

robots.txt declara una política; la CDN decide qué pasa. El 2 de octubre, el Browser Integrity Check de Cloudflare respondía 403 al cliente HTTP por defecto de Python (`Python-urllib`) y a `libwww-perl`, aunque robots.txt lo permitía todo. Los scripts que escriben los agentes de programación suelen usar ese cliente tal cual.

Agregamos una regla en Cloudflare que exime las solicitudes GET y HEAD al contenido público; `/api/` sigue en 403. También vimos que los `.txt` salían sin charset y algunos clientes leían "Bogotá" como "BogotÃ¡". Se arregló con `charset=utf-8`.

Prueba con solicitudes reales bajo cada user agent; eso muestra que nada bloquea el nombre, no que el rastreador real te visitó.

## HTML semántico: la capa de la que dependen todos los agentes

La [guía de optimización para IA de Google](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide?hl=es) describe agentes de navegador que analizan capturas de pantalla, inspeccionan el DOM e interpretan el árbol de accesibilidad, y remite a la [guía de web.dev](https://web.dev/articles/ai-agent-site-ux?hl=es). Esa guía es, en el fondo, [accesibilidad](https://dardo.studio/es/servicios/accesibilidad-web/): `<button>` y `<a>` en vez de `<div>` con estilos, cada etiqueta conectada a su campo y un diseño que no se mueva bajo una captura.

En dardo.studio cada página tiene un solo `<main>` y zonas `<nav>` con nombre. Los botones de menú y tema son botones reales que informan su estado con `aria-expanded` y `aria-pressed`, y los menús cerrados quedan `inert`. Cada campo del formulario de contacto va dentro de su `<label>`, que le da un nombre accesible; web.dev sugiere el atributo `for`, y envolver el campo cumple la misma función.

Esto ya ayuda a quienes usan lectores de pantalla.

## Una copia limpia en markdown de cada página

Los agentes pagan por cada token que leen, y una página renderizada trae navegación, banner de cookies, scripts y gráficos. Antes, si pedías nuestras páginas con `Accept: text/markdown`, recibías todo eso en HTML.

Ahora cada build escribe un `index.md` junto a cada página indexable. Empieza con metadatos (título, descripción, URL canónica, idioma, versión en el otro idioma y fecha de actualización) y sigue con el contenido de `<main>`, sin scripts, botones, imágenes decorativas ni índice interno. Las preguntas frecuentes se conservan. Los formularios se vuelven una lista de campos y opciones, así un agente puede decirle a una persona qué pide el formulario sin tocarlo.

Hay tres formas de obtener la copia:

- Enviar `Accept: text/markdown` a la URL normal. La respuesta lleva `Vary: Accept` para que las cachés no mezclen versiones.
- Pedir el archivo: `/es/servicios/seo/index.md`.
- Agregar `.md` a la ruta (`/es/servicios/seo.md`). Para las URL que terminan en barra, la [propuesta llms.txt](https://llmstxt.org/) usa `index.md`, la forma anterior.

Además, cada página HTML enlaza su copia con `<link rel="alternate" type="text/markdown">`.

### Que los buscadores le den el crédito al HTML

Google aclara que puede rastrear e indexar muchos tipos de archivo además del HTML, sin trato especial. Para que una copia no compita con su página, cada respuesta en markdown declara el HTML como canónico:

```
$ curl -sI https://dardo.studio/es/servicios/seo/index.md
content-type: text/markdown; charset=utf-8
link: <https://dardo.studio/es/servicios/seo/>; rel="canonical", ...
```

¿Quién lee estas copias? Cloudflare creó [Markdown for Agents](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/) para convertir HTML cuando una solicitud prefiere markdown, lo que sugiere que los agentes lo piden. No dice qué clientes envían el encabezado, y nosotros tampoco tenemos una lista verificada. Si usas esa función, ten en cuenta que Cloudflare agrega `Content-Signal: ai-train=yes, search=yes, ai-input=yes` salvo que tu servidor defina otro. Nosotros generamos las copias en el build para que coincidan con la página.

## llms.txt: qué es, qué hace y qué no

llms.txt es una [propuesta de Jeremy Howard](https://llmstxt.org/) de septiembre de 2024, todavía abierta a la comunidad: un archivo markdown en `/llms.txt` con el nombre del sitio, un resumen y listas de enlaces útiles para un agente.

El nuestro, en [/es/llms.txt](https://dardo.studio/es/llms.txt) y [/llms.txt](https://dardo.studio/llms.txt), se genera con los mismos datos de las páginas, así que no se desactualiza. Incluye los datos del estudio (Bogotá, fundado en 2026, equipo de tres, cómo se cotizan los proyectos, contacto), servicios, proyectos y cómo pedir las copias en markdown. `llms-full.txt` reúne el texto completo de estudio, servicios, proyectos y contacto.

Una línea aclara qué negocios con nombres parecidos no somos nosotros: el 2 de octubre encabezaban los resultados de "dardo studio".

El estado real:

- **Google** dice que no necesitas llms.txt para aparecer en la Búsqueda ni en sus funciones de IA, que la Búsqueda lo ignora y que tenerlo no ayuda ni perjudica.
- **OpenAI, Anthropic y Perplexity** no dicen en su documentación de rastreadores que lean el llms.txt de otros sitios. Los sitios de documentación de OpenAI, Anthropic y Perplexity sí publican uno propio, para quien lee sus docs.

Mantenlo si se genera solo y es exacto. Sirve a herramientas que lo buscan, pero no da visibilidad.

## Servidor MCP, A2A y catálogo de APIs: herramientas para agentes

Publicamos dos herramientas de solo lectura:

- `**list_services**` devuelve los servicios publicados, su alcance, entregables y URLs de origen en español o inglés, con filtro opcional por palabra clave.
- `**get_project_brief**` devuelve las preguntas que conviene responder antes de escribirnos y el enlace de contacto para ese servicio.

Una sola implementación atiende varias puertas:

| Puerta           | Dirección en dardo.studio                          | Estándar y estado                                                                                                                                                                                                     |
| ---------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Servidor MCP     | /mcp, tarjeta en /.well-known/mcp/server-card.json | [MCP](https://modelcontextprotocol.io/specification/2025-11-25/basic/transports) con Streamable HTTP; la tarjeta es una [propuesta en borrador](https://modelcontextprotocol.io/community/working-groups/server-card) |
| Agente A2A       | /a2a, tarjeta en /.well-known/agent-card.json      | [A2A 1.0](https://a2a-protocol.org/latest/specification/), JSON-RPC                                                                                                                                                   |
| Endpoint JSON    | /agent/services.json, descrito en OpenAPI          | HTTP simple                                                                                                                                                                                                           |
| Catálogo de APIs | /.well-known/api-catalog                           | [RFC 9727](https://www.rfc-editor.org/rfc/rfc9727.html), estándar del IETF                                                                                                                                            |

Cada respuesta HTML y markdown envía un encabezado `Link` hacia el catálogo, el índice de skills y las dos tarjetas, así que cualquier página lleva al resto.

### Reglas de diseño que repetiríamos

- **Solo lectura, solo datos públicos.** Las herramientas MCP declaran `readOnlyHint: true` y leen el mismo catálogo que el HTML, sin base de datos detrás. `get_project_brief` no envía, no agenda ni cotiza; una persona revisa y envía.
- **Entradas acotadas.** Tope de 8 KiB por solicitud, validación del encabezado `Origin` (la especificación de MCP lo exige) y límite de frecuencia propio.
- **Sin estado.** El agente A2A responde de inmediato, no guarda tareas ni descarga archivos o URLs que le envíen.
- **Reglas claras.** [/auth.md](https://dardo.studio/auth.md) dice que no se necesitan credenciales y que leer datos públicos no autoriza a enviar mensajes ni a pagar.

Dejamos por fuera los protocolos de comercio y el descubrimiento OAuth que revisan los escáneres de preparación para agentes. No vendemos con checkout ni protegemos recursos; publicarlos describiría capacidades que no existen.

¿Quién usa hoy estas herramientas? Clientes MCP que alguien conectó a `/mcp` y clientes A2A con nuestra tarjeta. Para un estudio, el valor es modesto: responder bien "¿qué hace Dardo y qué le tengo que enviar?". Pesa más en un sitio con datos vivos, como inventario, disponibilidad o documentación de producto. Si los agentes van a escribir datos, necesitas autenticación y revisión; eso ya es [automatización con IA](https://dardo.studio/es/servicios/automatizacion-con-ia/).

## WebMCP: las mismas herramientas en el navegador

[WebMCP](https://webmachinelearning.github.io/webmcp/) permite que una página registre herramientas para un agente de IA en el navegador. Es un borrador de un grupo comunitario del W3C y aclara que no es un estándar del W3C. Según web.dev, está en desarrollo activo, puede cambiar y se puede probar en Chrome con una prueba de origen.

Nuestras páginas registran las mismas dos herramientas con `document.modelContext` (o `navigator.modelContext` en versiones preliminares). Sin la API, el navegador no ejecuta nada extra. Fueron unas 40 líneas. Tómalo como experimento.

## Cada capa, y si vale la pena

| Capa                                          | Qué es                                       | Quién la lee hoy                                                      | ¿Vale la pena?                       |
| --------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------ |
| HTML semántico y formularios con etiquetas    | Botones, enlaces, zonas y etiquetas reales   | Navegadores, tecnologías de asistencia y agentes de navegador         | Sí. Es lo primero                    |
| robots.txt para búsqueda y agentes de usuario | Reglas que separan búsqueda de entrenamiento | OpenAI, Anthropic, Perplexity y Google documentan sus identificadores | Sí. Y prueba en la CDN               |
| Content Signals                               | Preferencias search, ai-input, ai-train      | Ninguna empresa de IA que revisamos documenta respetarlas             | Una línea. No esperes nada           |
| Copias en markdown con canónica               | Texto limpio de cada página                  | Agentes que piden markdown; sin lista pública                         | Sí, con encabezado canónico          |
| llms.txt y llms-full.txt                      | Índice curado y texto completo               | Google lo ignora; ningún rastreador documenta leerlo                  | Si se genera solo. No da visibilidad |
| Servidor MCP (solo lectura)                   | Herramientas declaradas                      | Clientes MCP que alguien conecta                                      | Solo con datos o acciones útiles     |
| Tarjeta de agente A2A                         | Descripción de un agente para máquinas       | Clientes A2A que apuntan a ella                                       | Especulativo para casi todos         |
| Catálogo de APIs (RFC 9727)                   | Lista conocida de tus APIs públicas          | Herramientas que lo buscan                                            | Barato si ya tienes APIs             |
| WebMCP                                        | Herramientas registradas en el navegador     | Chrome, con prueba de origen                                          | Experimento                          |

## Lo que volveríamos a construir

En este orden: HTML semántico, acceso de rastreadores probado, copias en markdown con canónica, un llms.txt generado y herramientas solo cuando haya algo que consultar. Después, mide: los logs del servidor muestran qué agentes piden markdown o llaman a `/mcp`. Una visita no es una cita, y nada de esto garantiza [que una IA te mencione](https://dardo.studio/es/blog/aparecer-en-respuestas-de-ia/).

La preparación para agentes es parte de nuestro servicio de [SEO para IA](https://dardo.studio/es/servicios/seo-para-ia/), junto con el contenido y la medición que deciden si las respuestas de IA te citan. Si quieres llevarla a tu sitio web, [cuéntanos tu proyecto](https://dardo.studio/es/contacto/).

[Nicolás Cerón](https://dardo.studio/es/estudio/)

Nicolás Cerón es el fundador de Dardo, un estudio de marca, diseño y desarrollo web en Bogotá, Colombia.

## Sigue explorando.

- [Servicio · **SEO para IA: aparece en ChatGPT, Google AI Mode y Perplexity**](https://dardo.studio/es/servicios/seo-para-ia/)

- [Tu proyecto · **Inicia una conversación**](https://dardo.studio/es/contacto/)
