The Closing Window
Agente: ¿Entiendes las palabras que salen de mi boca? image
Photo by Jason Rosewell on Unsplash

Agente: ¿Entiendes las palabras que salen de mi boca?

AI Insights

TL;DR

Tu sitio web probablemente es invisible para motores de respuesta de AI como Perplexity. Al agregar un puñado de archivos estáticos (llms.txt, archivos markdown por post, JSON feeds) y algunas etiquetas HTML (Schema.org JSON-LD, enlaces hreflang, descubrimiento de sitemap), puedes hacer que tu contenido sea fácilmente descubrible, analizable y citable por agentes de AI. Nada de esto requiere un framework o servicio de terceros — solo plantillas que se ejecutan una vez y cubren cada post futuro.

Hace unas semanas, cuando empecé a escribir más sobre AI, pensé que lo que estaba publicando en la web debería ser fácilmente accesible por la misma tecnología sobre la que estaba escribiendo. Hice que Claude Code revisara la estructura de mi sitio web y me diera sugerencias sobre cómo hacerlo más amigable para agentes de AI.

También agregué traducciones automatizadas a otros tres idiomas en mi proceso de publicación. Además de hacer el contenido más accesible para más personas, tiene el beneficio secundario de aparecer en búsquedas de agentes de AI en esos idiomas.

Esta mañana me encontré con el post de Julia Solorzano sobre optimización para motores de respuesta, que me dio algunas ideas adicionales. Su post lo aborda desde un ángulo ligeramente diferente, y eso me hizo darme cuenta de que esta información podría ser útil para otros.

Así que esto es lo que he aprendido: los agentes de AI y motores de respuesta (piensa en Perplexity) son cada vez más la forma en que las personas encuentran información. Si tu sitio no está configurado para ellos, podrías estar perdiéndote visitantes adicionales. Esto es lo que necesitas hacer, en orden de impacto. Si usas un agente de AI para programar, hay un prompt listo para pegar al final para implementar todo esto por ti.

1. Agrega llms.txt y llms-full.txt

Sirve dos archivos de texto plano desde la raíz de tu dominio siguiendo el estándar llms.txt.

  • /llms.txt — Descripción del sitio seguida de una lista de cada página con título, URL, descripción y palabras clave. Lo suficientemente ligero para que cualquier agente lo obtenga en una sola petición.
  • /llms-full.txt — Misma estructura, pero incluye el contenido completo de la página en línea. Establece un límite de tamaño (100KB es razonable) y recurre a título + descripción para las páginas restantes cuando se exceda.

Estos le dan a los agentes de AI una vista general rápida y estructurada de todo tu sitio sin necesidad de rastreo.

2. Sirve Markdown crudo para cada post

Genera un archivo .md independiente para cada página publicada en un patrón de URL predecible (por ejemplo, /blog/{slug}.md). Incluye front matter YAML con título, fecha, descripción, idioma, palabras clave, URL canónica y cualquier enlace de traducción, seguido del cuerpo en markdown crudo.

Configura tu servidor para servir archivos .md como text/plain para que se muestren en línea en los navegadores y sean trivialmente analizables por máquinas.

Luego agrega una etiqueta de descubrimiento en el <head> HTML de cada post:

<link rel="alternate" type="text/markdown" href="/blog/{slug}.md" />

Esto permite que cualquier agente que lea tu HTML descubra la versión legible por máquinas sin conocer tu convención de URLs.

3. Agrega Schema.org JSON-LD

BlogPosting en cada página de post

Incrusta un esquema BlogPosting en <head> con headline, fecha de publicación, URL, descripción, imagen y palabras clave. El autor debe ser una Person con name, url y enlaces sameAs a tus perfiles sociales (LinkedIn, GitHub, Bluesky, etc.). El publisher debe ser una Organization con el nombre de tu sitio.

Esto ayuda a los motores de respuesta a atribuir contenido a ti y construir conexiones en el knowledge graph.

Person en tu página de inicio

Agrega un esquema Person independiente a tu página raíz con nombre, URL, título del puesto y enlaces sameAs a todas tus propiedades web. Esto le da a los motores de respuesta un nodo de identidad canónico para anclarte a través de la web.

El post de Julia Solorzano también recomienda un esquema CollectionPage con elementos CreativeWork para páginas de portafolio — vale la pena considerarlo si muestras proyectos.

4. Proporciona feeds estructurados

JSON Feed

Sirve un endpoint JSON Feed v1.1 con contenido completo tanto en HTML (content_html) como en texto plano (content_text), además de resumen, imagen, tags y adjuntos que enlacen al archivo .md de cada post.

Agrega auto-descubrimiento en <head>:

<link rel="alternate" type="application/feed+json" title="My Blog (JSON Feed)" href="/feed.json" />

Índice de posts

Sirve un archivo posts.json que contenga todos los posts con metadatos: slug, título, fecha, descripción, categoría, imagen, palabras clave, URL del markdown y enlaces de traducción. Esto le da a los agentes un catálogo estructurado de todo sin analizar feeds.

Atom/RSS Feed

Un feed estándar Atom o RSS con contenido HTML completo. Muchos agentes todavía buscan esto primero.

5. Dale la bienvenida a los crawlers de AI en robots.txt

Permite explícitamente los principales crawlers de AI por user-agent:

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: GoogleOther
Allow: /

User-agent: Amazonbot
Allow: /

User-agent: Applebot-Extended
Allow: /

User-agent: Meta-ExternalAgent
Allow: /

User-agent: Bytespider
Allow: /

User-agent: cohere-ai
Allow: /

Incluye la URL de tu sitemap al final. La lista anterior cubre los principales a principios de 2026 — revisa periódicamente si hay nuevos crawlers.

6. Haz que tu sitemap sea descubrible de dos formas

No dependas solo de robots.txt. Agrega una etiqueta link en <head> en cada página:

<link rel="sitemap" type="application/xml" href="/sitemap.xml" />

De esta forma, los crawlers que leen HTML de la página (no solo robots.txt) también pueden encontrar tu sitemap.

7. Escribe meta descriptions reales

Cada página necesita un <meta name="description"> único en <head>. Esta es la oración que los motores de respuesta usan para decidir si vale la pena citar tu página. No la dejes vacía, y no uses la misma descripción genérica en múltiples páginas.

Si tus posts tienen palabras clave, agrega también <meta name="keywords"> y muestra esas palabras clave en tu Schema.org JSON-LD, feeds, llms.txt y front matter de .md. La consistencia a través de todas estas superficies refuerza tus señales de tema. Mantén las descripciones por debajo de 160 caracteres y hazlas específicas.

8. Traduce tu contenido y agrega enlaces hreflang

Los motores de respuesta prefieren citar contenido que ya existe en el idioma consultado en vez de traducir inglés sobre la marcha. Si puedes traducir tus posts — incluso mediante traducción con AI con una revisión humana — hazlo. Cada idioma multiplica tu superficie en consultas específicas de ese idioma.

Asegúrate de que tus páginas traducidas reciban el mismo tratamiento que las en inglés: sus propios archivos .md en URLs predecibles (por ejemplo, /{lang}/{slug}.md), inclusión en tus feeds y llms.txt. La traducción no debería ser un ciudadano de segunda clase — debería ser igual de descubrible y legible por máquinas que el original.

Luego agrega etiquetas <link rel="alternate" hreflang="{lang}"> en <head> para cada traducción para que los agentes de AI puedan descubrir todas las versiones de idioma desde cualquier página.

Quick Reference

Feature What to Add Why
llms.txt Plain-text site overview at domain root Fast agent discovery without crawling
Per-post .md files Raw markdown at predictable URLs Machine-readable content
Markdown link tag <link rel="alternate" type="text/markdown"> HTML discovery of .md files
BlogPosting JSON-LD Schema in <head> on post pages Structured authorship + content metadata
Person JSON-LD Schema on homepage Canonical identity node
JSON Feed Feed endpoint with full content Structured feed for agents
Post index posts.json with all post metadata Full catalog without feed parsing
Atom/RSS feed Standard XML feed Legacy agent compatibility
robots.txt Explicit Allow for AI crawlers Clear permission signal
Sitemap link <link rel="sitemap"> in <head> Dual-path sitemap discovery
Meta descriptions Unique per page, under 160 chars Citation decision input
Meta keywords In HTML, JSON-LD, feeds, llms.txt, .md Consistent topic signals
Translations + hreflang Full posts in target languages + <link rel="alternate" hreflang> Surface area in non-English queries

Eso es todo. No se requiere framework, no se necesita servicio de terceros. La mayoría de estos son archivos estáticos y etiquetas HTML que cualquier generador de sitios estáticos puede producir. La parte más difícil es la configuración inicial — una vez que está hecha la plantilla, cada nuevo post obtiene todo esto automáticamente.

Prompt para tu agente de AI

Si usas un agente de AI para programar, pega el siguiente prompt para que audite tu sitio e implemente estas funcionalidades por ti.

Audit my website for AI agent discoverability and implement the following features. Analyze my existing setup first and skip anything already in place.

1. **llms.txt + llms-full.txt** — Generate two plain-text files at the domain root following the llms.txt standard (https://llmstxt.org/). llms.txt: site description + list of pages with title, URL, description, keywords. llms-full.txt: same but with full page content inline, with a 100KB size cap (fall back to title + description when exceeded). Both should auto-generate from existing content.

2. **Per-post markdown files** — For every published page, generate a .md file at a predictable URL (e.g., /blog/{slug}.md). Include YAML front matter (title, date, description, language, keywords, canonical URL, markdown URL, translation links) followed by the raw markdown body. Configure the server to serve .md as text/plain. Add `<link rel="alternate" type="text/markdown" href="...">` in <head> on every post page.

3. **Schema.org JSON-LD** — Add BlogPosting schema in <head> on every post with: headline, datePublished, url, description, image, keywords. Author as Person with name, url, sameAs (social profile URLs). Publisher as Organization. Add a standalone Person schema on the homepage with name, url, jobTitle, sameAs links to all web properties.

4. **Structured feeds** — JSON Feed v1.1 endpoint with content_html, content_text, summary, image, tags, and attachments linking to .md files. Add feed auto-discovery in <head>. A posts.json index with all posts and metadata (slug, title, date, description, category, image, keywords, markdown URL, translation links). Atom or RSS feed with full HTML content.

5. **robots.txt** — Explicitly Allow / for these user-agents: GPTBot, ClaudeBot, PerplexityBot, GoogleOther, Amazonbot, Applebot-Extended, Meta-ExternalAgent, Bytespider, cohere-ai. Include Sitemap URL.

6. **Sitemap discovery** — Add `<link rel="sitemap" type="application/xml" href="/sitemap.xml">` in <head> on every page (in addition to robots.txt Sitemap directive).

7. **Meta descriptions + keywords** — Ensure every page has a unique <meta name="description"> (under 160 chars). Add <meta name="keywords"> where keywords exist. Surface keywords consistently in JSON-LD, feeds, llms.txt, and .md front matter.

8. **Translations + hreflang** — If the site has translations, ensure they get equal treatment: their own .md files, hreflang cross-references, inclusion in feeds and llms.txt. Add `<link rel="alternate" hreflang="{lang}">` tags in <head> for each translation.

Present a plan showing what already exists vs. what needs to be added before making changes.

Powered by Buttondown.