Sitemap XML: cómo crearlo, validarlo y enviarlo

Cómo crear un sitemap con las URL canónicas finales, validar sus entradas y usarlo junto con el enlazado interno y robots.txt.

Un sitemap XML es una lista de URL en formato legible por máquinas que ayuda a los buscadores a descubrir las páginas que quieres que se tengan en cuenta. Complementa los enlaces internos rastreables, pero no garantiza la indexación: incluye solo URL finales y canónicas que cumplan la política de indexación del sitio.

El protocolo sitemaps.org se presentó en 2005. Google lo adoptó primero y Yandex lo siguió un año después. Hoy todos los grandes buscadores admiten el estándar.

Cómo usa Googlebot un sitemap: obtiene la lista de URL directamente y rastrea las páginas sin recorrer los enlaces internos.

Qué es un sitemap XML y para qué lo necesitas

Un bot de búsqueda descubre páginas de dos formas: siguiendo los enlaces internos y leyendo los sitemaps. El rastreo por enlaces funciona bien con páginas que reciben muchos enlaces entrantes. Pero las páginas sin ningún enlace, el contenido publicado hace poco o las secciones con poco enlazado interno pueden pasar desapercibidas o descubrirse con demasiado retraso. Ahí es donde ayuda un sitemap.

Acelera el rastreo

El bot recibe la lista de URL directamente y no tiene que recorrer los enlaces internos página por página.

Señala las actualizaciones

El atributo lastmod indica al buscador que una página ha cambiado y que hay que volver a rastrearla.

Admite sitios multilingües

Con xhtml:link puedes declarar las relaciones hreflang directamente en el sitemap, sin duplicar etiquetas en el HTML.

Los sitemaps son especialmente útiles para: sitios nuevos sin enlaces entrantes; sitios grandes (miles de páginas); páginas con contenido multimedia (imágenes, vídeo); sitios multilingües con hreflang.

Estructura básica del archivo

Un sitemap mínimo válido es un archivo XML con la declaración de codificación, un elemento raíz urlset y elementos url dentro. Cada url debe contener al menos un atributo obligatorio: loc.

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-05-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/about</loc>
    <lastmod>2026-04-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://example.com/blog/article-slug</loc>
    <lastmod>2026-05-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.75</priority>
  </url>
</urlset>

El archivo debe estar codificado en UTF-8. Los caracteres especiales de las URL se escapan según las reglas de XML: & pasa a ser &amp; y < pasa a ser &lt;. Un solo archivo sitemap admite como máximo 50 000 URL y 50 MB sin comprimir.

Atributos: loc, lastmod, changefreq, priority

AtributoObligatorioFormatoDescripción
locSíURL absolutaDirección completa de la página, con protocolo y dominio. Máximo 2048 caracteres.
lastmodNoW3C Datetime (YYYY-MM-DD)Fecha de la última modificación. Google solo la tiene en cuenta si el valor es estable y preciso.
changefreqNoalways / hourly / daily / weekly / monthly / yearly / neverPista sobre la frecuencia de actualización. Google la usa como una señal, pero no la sigue al pie de la letra.
priorityNo0.0 — 1.0Importancia relativa de la URL dentro de tu sitio. No afecta a las posiciones en los resultados de búsqueda.

loc: el único atributo obligatorio

La URL debe ser absoluta y coincidir con lo que devuelve realmente el servidor: si la página se sirve por HTTPS, loc debe usar HTTPS. Si el sitio usa www, loc debe incluir www. Si loc no coincide con la dirección real, Google ignora la entrada.

lastmod: el atributo opcional más valioso

La fecha debe reflejar cambios reales en el contenido, no actualizaciones de la plantilla ni la regeneración del sitemap. Si cambias lastmod en cada despliegue sin modificar el contenido, Google deja de confiar en el campo y lo ignora. Formatos admitidos: 2026-05-15, 2026-05-15T10:30:00+03:00, 2026-05-15T07:30:00Z.

No pongas automáticamente la fecha de hoy en cada compilación. La fecha solo debe cambiar cuando cambie de verdad el contenido principal de la página.

changefreq: una pista, no una directiva

changefreq no controla la frecuencia de rastreo: es solo una pista. Google indica oficialmente que usa el valor como una de muchas señales. Yandex también trata el campo como informativo. Valores habituales: página de inicio, daily; entradas del blog, monthly; páginas legales, yearly.

priority: importancia relativa dentro del sitio

Priority, de 0.0 a 1.0, indica al buscador qué páginas consideras más importantes, en relación con tu propio sitio y no frente a otros sitios. Poner 1.0 en todas las páginas no tiene sentido: el buscador lo interpreta como si no hubiera ninguna priorización. Un esquema razonable: página de inicio 1.0; hubs de sección 0.85; artículos y productos 0.7–0.75; páginas de servicio 0.5.

Sitemap Index: cuándo un solo archivo no basta

Si tienes más de 50 000 páginas o el archivo supera los 50 MB, necesitas un Sitemap Index. Es un archivo XML que enlaza a sitemaps hijos en lugar de enlazar URL directamente. Cada archivo hijo es un urlset normal, limitado a 50 000 entradas.

xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap/blog.xml</loc>
    <lastmod>2026-05-15T00:00:00Z</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap/products.xml</loc>
    <lastmod>2026-05-14T00:00:00Z</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap/static.xml</loc>
    <lastmod>2026-04-01T00:00:00Z</lastmod>
  </sitemap>
</sitemapindex>

Puedes dividir el sitemap por tipo de contenido (blog, productos, páginas estáticas) o por idioma (ru.xml, en.xml). Ambos enfoques son válidos. Dividir por idioma facilita revisar la indexación de cada idioma por separado.

En robots.txt basta con indicar solo el Sitemap Index raíz; no hace falta listar cada archivo hijo por separado. El buscador los encuentra a través del índice.

Sitemap de imágenes

Las imágenes pueden aparecer en Google Imágenes y generar tráfico adicional. Para que el rastreador las encuentre y las entienda, añade la extensión image a tu urlset habitual. Cada entrada url puede contener hasta 1000 imágenes.

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/gallery/city</loc>
    <image:image>
      <image:loc>https://example.com/images/city-skyline.jpg</image:loc>
      <image:title>City skyline at sunset</image:title>
      <image:caption>Downtown panorama taken from the observation deck, 2025</image:caption>
      <image:geo_location>New York, USA</image:geo_location>
      <image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
    </image:image>
  </url>
</urlset>
Atributos de la etiqueta <url> y valores admitidos:
EtiquetaObligatorioDescripción
image:locSíURL absoluta de la imagen. Puede estar en otro dominio (por ejemplo, en una CDN).
image:titleNoTítulo de la imagen. Equivale al atributo title de img.
image:captionNoLeyenda de la imagen. Equivale al atributo alt de img.
image:geo_locationNoUbicación geográfica del objeto de la imagen.
image:licenseNoURL de la licencia de la imagen.

Las imágenes del sitemap no sustituyen al atributo alt del HTML: ambos funcionan en conjunto. El sitemap ayuda al rastreador a descubrir las imágenes; alt describe su significado.

Sitemap de vídeo

Un sitemap de vídeo permite que tu contenido aparezca en la búsqueda de vídeos de Google y en resultados enriquecidos con vista previa de vídeo. El namespace es video.

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url>
    <loc>https://example.com/tutorials/getting-started</loc>
    <video:video>
      <video:thumbnail_loc>https://example.com/thumbnails/tutorial-1.jpg</video:thumbnail_loc>
      <video:title>Getting started with the product</video:title>
      <video:description>Step-by-step guide for first-time users</video:description>
      <video:content_loc>https://example.com/videos/tutorial-1.mp4</video:content_loc>
      <video:duration>183</video:duration>
      <video:publication_date>2026-03-10T12:00:00+00:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
    </video:video>
  </url>
</urlset>

video:duration se indica en segundos. video:content_loc debe apuntar a un archivo reproducible (mp4, webm), no a una página con reproductor. Para vídeos alojados en YouTube o Vimeo, usa video:player_loc en lugar de video:content_loc.

Sitemap de noticias

Google News Sitemap es un formato especial para editores que participan en Google News. Incluye solo los artículos publicados en las últimas 48 horas. El contenido más antiguo no debe incluirse: se elimina automáticamente del índice de noticias.

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
  <url>
    <loc>https://example.com/news/tech-breakthrough-2026</loc>
    <news:news>
      <news:publication>
        <news:name>Example Daily</news:name>
        <news:language>en</news:language>
      </news:publication>
      <news:publication_date>2026-05-15T09:00:00+00:00</news:publication_date>
      <news:title>Technology breakthrough set to transform the industry</news:title>
    </news:news>
  </url>
</urlset>
El formato News Sitemap no sirve para blogs normales. Está pensado exclusivamente para editores de noticias aprobados por Google News. Usar el formato sin participar en el programa no aporta ningún beneficio.

Localización: hreflang en el sitemap

Si tu sitio existe en varios idiomas o para varias regiones, tienes que conectar las páginas correspondientes con hreflang. Hay tres formas de hacerlo: con etiquetas link rel en el HTML, con cabeceras HTTP Link o directamente en el sitemap. El sitemap es la opción más práctica para sitios grandes, porque no requiere cambios en las plantillas de las páginas.

En el sitemap, hreflang se declara a través del namespace xhtml. Cada página debe aparecer como entrada url, y cada entrada debe listar todas las variantes de idioma, incluida ella misma.

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <!-- Russian version -->
  <url>
    <loc>https://example.com/blog/seo-guide</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
  </url>
  <!-- English version -->
  <url>
    <loc>https://example.com/en/blog/seo-guide</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
  </url>
</urlset>

El valor x-default indica la página de reserva: la que se muestra a los usuarios que no encajan con ninguna configuración de idioma explícita. Normalmente es la versión en el idioma principal del sitio.

Regla de reciprocidad: si la página A apunta a la página B con hreflang, la página B tiene que apuntar a la A. Google trata como errores las declaraciones unidireccionales de hreflang y las ignora.
Código hreflangUso
ruRuso, cualquier región
enInglés, cualquier región
en-USInglés, región EE. UU.
ru-RURuso, región Rusia
x-defaultPágina predeterminada para un idioma o región no determinados

Robots.txt: basta con una línea

Para que los buscadores encuentren tu sitemap, añade una sola directiva Sitemap a robots.txt. Si usas un Sitemap Index, apunta a él. El rastreador descubre automáticamente todos los archivos hijos a través del índice.

text
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /

Sitemap: https://example.com/sitemap.xml

Si tienes varios índices raíz (por ejemplo, uno separado para ru y otro para en), puedes indicar varias directivas Sitemap:

text
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xml
Además de robots.txt, envía el sitemap a Google Search Console (sección Sitemaps) y a Yandex Webmaster (Indexing → Sitemap files). Así se acelera el procesamiento inicial y obtienes estadísticas de las URL descubiertas e indexadas.

Documentación de Google y Yandex

Documentación oficial de Google sobre sitemaps

Documentación oficial de Yandex Webmaster sobre sitemaps

Yandex admite el estándar sitemaps.org y, además, la extensión para noticias. Yandex lee changefreq y priority, pero recomienda centrarse en un lastmod preciso, que es más importante para volver a rastrear las páginas actualizadas.

Lista de comprobación

  • El archivo está codificado en UTF-8 y tiene <?xml version="1.0" encoding="UTF-8"?> en la primera línea
  • Todas las URL son absolutas (con protocolo y dominio) y coinciden con la URL canónica real
  • HTTPS en loc si el sitio funciona con HTTPS
  • lastmod refleja la fecha real del cambio en el contenido, no la fecha de compilación
  • El archivo no supera las 50 000 URL ni los 50 MB sin comprimir
  • En sitios grandes, un Sitemap Index con archivos hijos
  • En páginas multilingües, xhtml:link con hreflang, incluido x-default
  • En contenido multimedia, las extensiones correspondientes (image, video, news)
  • robots.txt contiene una directiva Sitemap con una URL absoluta
  • El sitemap está enviado a Google Search Console y a Yandex Webmaster
  • Las páginas con noindex no se incluyen en el sitemap
  • No se incluyen las páginas con una canonical que apunte a otra URL

FAQ

¿Es obligatorio un sitemap para un sitio pequeño?
Técnicamente, no. Si el sitio está bien enlazado internamente y todas las páginas se alcanzan desde la página de inicio, el bot las encontrará por su cuenta. Pero un sitemap siempre es útil: acelera el rastreo y te da control sobre lo que se indexa.
¿Hay que incluir en el sitemap las páginas con noindex?
No. Las páginas con una etiqueta meta noindex o con X-Robots-Tag: noindex no deben aparecer en el sitemap; la contradicción confunde a los buscadores. Incluye solo las páginas que quieras ver indexadas.
¿Afecta priority a las posiciones en los resultados?
No. Priority es una pista de priorización del rastreo dentro de tu sitio, no una señal de posicionamiento. Ayuda al bot a decidir qué páginas visitar con más frecuencia, pero no influye en la posición en los resultados de búsqueda.
¿Con qué frecuencia hay que actualizar el sitemap?
Cada vez que se añadan o eliminen páginas. En sitios dinámicos (blog, tienda online) lo mejor es regenerar el sitemap automáticamente en cada compilación. Los sitios estáticos lo actualizan a mano cuando cambia la estructura.
¿Cuántos sitemaps se pueden indicar en robots.txt?
El estándar no limita el número de directivas Sitemap en robots.txt. Pero la buena práctica es un solo Sitemap Index, desde el que Google y Yandex encuentran todos los demás archivos.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it