En esta entrada veremos cómo generar el sitemap.xml de nuestro blog de WordPress y enviarlo a Google automáticamente.
Índice de contenido
¿Qué es el sitemap.xml?
El sitemap es un fichero en xml (lenguaje de marcas extensible) que contiene una lista de todas las urls o páginas que queremos que Google indexe. Cada vez que enviamos una nueva versión de este fichero a Google mediante la Google Search Console, le estamos diciendo algo así como «oye, Google, he actualizado mi sitio y estas son todas las urls que quiero que aparezcan en tu buscador».
¿Cómo generar el sitemap automáticamente?
Tiempo atrás no existían herramientas para este propósito, por lo que todo webmaster debía modificar el archivo y resubirlo al Search Console cada vez que añadía una url. Hoy en día, hay plugins específicos para ello, como Yoast Seo, que es el que utilizaremos en esta ocasión.
Yoast Seo es un plugin de WordPress orientado a darnos consejo de posicionamiento SEO en nuestro panel de administración, por ejemplo, es muy útil a la hora de escribir entradas, ya que te dice la cantidad de palabras que llevas, número de párrafos, etc. Además de que te permite personalizar el meta-title y la meta-description de cada post individualente. Pero, lo que nos interesa en este momento, es la creación del sitemap, y es aquí cuando viene lo bueno, ya que símplemente con instalar el plugin desde el panel de administración de WordPress, el sitemap de nuestro sitio se habrá generado automáticamente.
Si vamos a https://[MI_SITIO]/sitemap.xml , podremos ver algo como esto:

Podemos apreciar que se hace referencia a 5 ficheros xml, los cuales corresponden con los sitemaps de nuestras entradas, páginas, autores… etc.
Listo, ya tenemos el sitemap generado, ahora, tenemos dos opciones para dárselo a conocer a Google, manual o automáticamente. Es un sitemap que incluye a otros 5 sitemaps «hijos», por llamarlos de algún modo.
Subir el sitemap de forma manual
En este caso simplemente hemos de ir a la Google Search Console , pulsar sobre la opción sitemaps y en la url escribir el nombre del fichero generado anteriormente. Una vez pulsemos en enviar Google registrará nuestra solicitud:


Enviar el sitemap.xml automáticamente
La forma anterior no está mal, es más, siempre habremos de hacerlo así la primera vez, al menos, pero, ya que el sitemap se va actualizando automáticamente cada vez que creamos una entrada, ¿por qué no aprovechar del todo la automatización, y lo enviamos también sin necesidad de nuestra intervención? Por ejemplo, podríamos programar una tarea para enviarlo una vez por semana, por día, por mes… depende de nuestra asiduidad escribiendo.
Preparando la url
Para empezar, hemos de preparar la url a la que invocaremos, como especifica Google en su documentación, construiremos algo así:
http://www.google.com/ping?sitemap=https://[TU WEB]/sitemap_index.xml
Si esta misma dirección nos la llevamos al navegador, veremos un mensaje de recepción de petición como este:

Podemos hacer esto mismo vía consola con la utilidad curl (siglas provenientes de Client URL):
curl -o resultado_envio.html http://www.google.com/ping?sitemap=https://[TU WEB]/sitemap_index.xml
Con la opción «-o» estamos indicando a curl que guarde el resultado de la petición en el fichero «resultado_envio.html», si abrimos este fichero nos encontraremos con lo siguiente:

Creando una tarea cron para ejecutar curl
Una vez tenemos la instrucción a ejecutar, podemos crear una tarea en nuestro sistema, en este caso Linux, que la ejecute con la frecuencia que queramos.
Primero hemos de crear una nueva tarea, ejecutaremos el siguiente comando para editar el fichero correspondiente a las tareas programadas:
crontab -e
Se nos abrirá un editor en la consola y al final del fichero escribiremos algo como esto:
00 00 1 * * curl [nuestra url] > /dev/null 2>&1

El primer 00 indica los minutos
El siguiente 00 los minutos
El 1 el día del mes
El * los meses, todos
El siguiente * indica el día de la semana
En este caso, se ejecutará el día 1 de cada mes, esta parametrización podemos cambiarla según nos convenga.
Con la última parte > /dev/null 2>&1 estamos especificando que toda salida de esta instrucción se «deseche», ya que, al ser una tarea programada, no vamos a recibir feedback del resultado por pantalla.
Ya estaría listo, tendríamos configurado nuestra creación y envío del sitemap a Google automáticamente.
Actualización: Han pasado varios días desde el envío automático del sitemap y en el apartado «sitemaps» del Search Console no aparecen registros, no sé si los habría tenido en cuenta al hacer el envío automático sin haberlo hecho manual al menos una vez antes.
Saludos!