La página está publicada. Nadie sabe que existe.
Una página puede renderizar perfecto, estar enlazada desde el índice y aun así nunca ser rastreada, porque el archivo que lista tus URLs nunca se actualizó. Aquí está la costura y cómo revisarla en diez minutos.
Publicas un post. Lo abres en el navegador y se ve bien. Aparece en el índice del blog con su título y su fecha correctos. Tres semanas después alguien busca ese mismo titular y no encuentra nada. La página funciona. Simplemente no está en ninguna lista que un crawler lea.
Es la categoría de bug más aburrida del trabajo web y la más cara para un negocio pequeño, porque nada te avisa. Un deploy roto grita. Una página que renderiza pero que nunca se registró en ningún lado no hace ruido. Publicar es una cadena de cuatro o cinco pasos independientes, y cualquiera de ellos puede fallar en silencio mientras los demás siguen funcionando.
Dónde está la costura en nuestro propio build
Nuestro sitio es HTML estático, sin framework. Las páginas del blog se generan desde una lista de posts en un script de build: agregas la entrada, corres el script y obtienes la página más el índice actualizado. Esa parte tiene una sola fuente de verdad y es difícil equivocarse. El sitemap es otra historia. El bloque de URLs de los demos lo reescribe su propio script, y todo lo demás en ese archivo se mantiene a mano.
Es decir: el build puede producir una página de la que el sitemap nunca se enteró, y nada va a protestar. El archivo es XML válido. La página devuelve 200. El índice la enlaza. Existen dos listas que dicen describir el mismo sitio, y solo una se genera sola.
Un sitemap no hace que nada se indexe. Es una pista. Pero cuando está desactualizado, suele ser el síntoma de que tu registro de lo publicado ya no coincide con lo que está en el servidor.
Cómo revisarlo en unos diez minutos
Hazlo después de cada publicación hasta que te salga solo, o hasta que un script lo haga por ti. No hace falta más herramienta que un navegador y curl.
- Abre sitemap.xml directo en el navegador y cuenta las URLs. Compara ese número con las páginas que realmente subiste.
- Trae la página con curl y lee el HTML crudo. Confirma que el enlace desde el índice está en el código fuente y no solo después de que corra el JavaScript.
- Lee robots.txt línea por línea. Un Disallow suelto bloquea un directorio completo y no se nota en nada dentro del sitio.
- Verifica que la página responda 200 directo, y no a través de una cadena de redirects que termine en otro lado.
- Compara la etiqueta canonical de la página contra la URL del sitemap, carácter por carácter. Tienen que ser la misma cadena.
- Una semana después, busca el título exacto con el prefijo site: en Google. Si no aparece nada, la cadena está rota más arriba.
Esa revisión del canonical atrapa una trampa propia de los sitios con URLs limpias. Nuestra configuración de Apache sirve la misma página en dos direcciones, con y sin el .html. Si el sitemap usa una forma, los enlaces internos usan la otra y el canonical nombra una tercera, le enseñaste al crawler que tienes tres páginas de contenido idéntico y ninguna opinión sobre cuál vale.
Cómo se ve bien hecho
- Sitemap editado a mano
- Dos listas, un sitio
- Desfase que nadie ve
- 404 anunciados
- Una sola fuente de verdad
- Sitemap generado en la misma corrida
- Carpeta de deploy comparada con el sitemap
- El build falla en voz alta
Una sola lista. Lo que genera tus páginas debe generar también las líneas del sitemap, desde los mismos datos y en la misma corrida. Si agregar un post obliga a editar dos archivos, tarde o temprano alguien edita uno solo. Eso no es falta de disciplina, es un problema de diseño, y se arregla sacando el segundo archivo de las manos humanas.
Debajo de eso, agrega una verificación que falle en voz alta. Recorre la carpeta de deploy, junta cada archivo HTML que deba ser público, extrae las URLs del sitemap y compara los dos conjuntos. Lo que esté en disco y no en el sitemap es un error. Lo que esté en el sitemap y no en disco es peor todavía, porque significa que estás anunciando un 404.
Si eres el dueño y no el ingeniero, te basta una pregunta: qué genera el sitemap. Si la respuesta es una persona, ya sabes lo que va a pasar la semana en que esa persona ande ocupada. Si la respuesta es el mismo script que genera las páginas, pide ver la verificación que los compara. Ambas respuestas se dan en menos de un minuto, y la diferencia entre las dos es si tus últimos seis meses de publicaciones se pueden encontrar o no.
