Gerando Sitemap para um Blog feito com o Framework Express para Node.js

Nesse artigo explicarei superficialmente o que são sitemaps, e mostrarei como gerá-los com um pacote já existente. Os exemplos práticos serão focados para a utilização em blogs, mas podem ser facilmente estendidos para qualquer tipo de página web. Os sitemaps gerados permanecerão em cache por 24 horas (tempo esse que pode ser modificado livremente, dependendo do volume de atualização de seu blog).

Optei por utilizar o pacote sitemap, que não é específico para Express, mas que é bastante simples de utilizar e que possui um sistema de caches interessante. Há o pacote express-sitemap, para Express, mas que funciona melhor para sites compostos por páginas estáticas. Para um blog, não encontrei muitas vantagens em utilizá-lo no lugar do pacote sitemap.

Se você já sabe o básico sobre sitemaps, a primeira seção do artigo pode ser ignorada.

Introdução aos sitemaps

Sitemap é um protocolo feito para facilitar a indexação das páginas de um site pelos mecanismos de pesquisa. Ele pode consistir de apenas um arquivo de texto, em que cada linha corresponde à URL de uma página do site que você deseje indexar.

Naturalmente, o fato de uma URL não estar no sitemap não quer dizer que ela não será exibida nas páginas de busca (se é isso o que você deseja, leia sobre robots.txt), e uma URL estar em seu sitemap não quer dizer que ela aparecerá na primeira página de nenhum mecanismo de busca.

Os sitemaps servem apenas como facilitadores, assegurando que nenhuma página de seu site deixe de ser analisada pelos mecanismos de pesquisa, e permitindo que você diga, por exemplo, quais páginas considera mais importantes em seu site.

A forma mais comum de se utilizar sitemaps é através de um arquivo XML, que contém, entre outras informações, a última vez em que cada página foi atualizada e, em média, quão frequentes são essas atualizações.

Acima, a página http://www.example.com/ foi modificada pela última vez em 01/01/2015, espera-se que seja modificada mensalmente, e possui prioridade 0.8 (numa escala de 0 a 1). Uma prioridade maior não garante que sua página aparecerá mais bem posicionada nas buscas, mas diz quais páginas, dentro de seu site, você considera mais importantes.

Instalação e Configuração do Pacote Sitemap

Para instalar o pacote, adicione sitemap às dependências de seu arquivo package.json, ou execute o comando

A seguir, crie o arquivo routessitemap.js, e adicione-o a seu objeto app.

Você pode, então, criar seu objeto sitemap como a seguir.

Acesse seusite/sitemap.xml, e você verá o XML do sitemap, ainda sem a URL de nenhuma página.

Adicionando seus Posts ao Sitemap

Agora, você deve obter as URLs de seu blog, para adicioná-las ao objeto sm. Nem todas as URLs precisam ser adicionadas, mas apenas aquelas que possuam conteúdo relevante. Por exemplo, URLs de paginação ou de filtros, em geral, não possuem conteúdo novo: são apenas formas de facilitar a navegação dentro do site, para que o usuário encontre o que deseja.

Sendo assim, optei por adicionar ao sitemap apenas as URLs referentes aos posts do blog.

O método sm.toXML() verifica há quanto tempo o último XML foi gerado, para determinar se é preciso renovar o XML ou se o último gerado ainda é válido. Isso trás um ganho considerável no tempo de geração do mesmo, se seu sitemap possuir muitas páginas.

Caso você prefira utilizar o pacote express-sitemap, poucas alterações teriam de ser efetuadas. A principal é referente ao cache, que não é gerenciado pelo pacote. Assim, você poderia, por exemplo, utilizar cron jobs para gerar o XML, e salvar em public/sitemap.xml a intervalos regulares, ou salvar numa variável o timestamp da última vez que o sitemap foi gerado.