SitemapMaker

A criação e manutenção de sitemaps é um requisito essencial para SEO moderno. Sites com grande volume de conteúdo ou atualizações frequentes precisam gerar sitemaps de forma automatizada e consistente. Para atender essa necessidade de forma leve e programável, desenvolvi o SitemapMaker, uma biblioteca PHP voltada para gerar sitemaps XML seguindo rigorosamente o protocolo oficial definido em sitemaps.org.

Este artigo descreve a arquitetura interna, os fluxos de uso e os detalhes técnicos da biblioteca.

Arquitetura da Biblioteca

O SitemapMaker segue uma estrutura simples, modular e extensível:

1. Classe Sitemap

Responsável por:

  • Gerenciamento das entradas (URLs)
  • Armazenamento da timezone (importante para formatação correta do lastmod)
  • Construção final do XML
  • Exportação do conteúdo (write-to-file, return-string)

A decisão de manter o objeto como um container autônomo permite integração com qualquer camada — controllers, comandos CLI, cronjobs ou workers.

2. Classe URL

Cada instância representa uma URL dentro do sitemap, incluindo:

  • loc (obrigatório pelo protocolo)
  • lastmod
  • changefreq
  • priority

A classe contém constantes pré-definidas para frequências (daily, weekly, monthly, etc.) e prioridades (1.0, 0.5, etc.), garantindo padronização e evitando valores inválidos.

3. Gerador XML interno

A biblioteca utiliza DOMDocument nativo do PHP, garantindo:

  • Conformidade XML
  • Suporte total a encoding UTF-8
  • Validação estrutural automática
  • Maior compatibilidade com crawlers (Google, Bing, Yandex)

Essa escolha elimina dependências externas e garante performance ideal.

Compatibilidade com o Protocolo Oficial de Sitemaps

O SitemapMaker segue as regras de sitemaps.org, incluindo:

Requisitos obrigatórios

  • A tag <loc> deve sempre conter uma URL absoluta válida.
  • A versão do XML deve ser 1.0 com UTF-8.

Tags opcionais suportadas

  • <lastmod>: aceita datas ISO-8601 (YYYY-MM-DD)
  • <changefreq>: valores permitidos (always, hourly, daily, weekly, monthly, yearly, never)
  • <priority>: valores entre 0.0 e 1.0

Considerações de desempenho

  • Google aceita até 50.000 URLs por arquivo.
  • Tamanho máximo permitido: 50MB descompactado.
  • Não há limite de número de arquivos, desde que indexados por um sitemap index.

A biblioteca foi desenhada para lidar com esses limites, permitindo geração de múltiplos sitemaps em sistemas externos caso seja necessário.

Exemplo Técnico de Uso

use Flores\SitemapMaker\Sitemap;

use Flores\SitemapMaker\URL;

$sitemap = new Sitemap();

// Geração baseada em dados dinâmicos

$articles = $database->query(“SELECT slug, updated_at FROM articles”);

foreach ($articles as $article) {

    $url = new URL(“https://example.com/articles/” . $article[‘slug’]);

    $url->setLastMod($article[‘updated_at’]);

    $url->setChangefreq(URL::$CHANGEFREQ_DAILY);

    $url->setPriority(URL::$PRIORITY_HIGH);

    $sitemap->add($url);

}

$sitemap->save(“public/sitemap.xml”);

Esse exemplo demonstra como integrar a biblioteca diretamente ao banco de dados, permitindo geração automatizada via cronjob.

Casos de Uso Avançados

1. Geração Automática por Cronjob

Ideal para sites atualizados frequentemente:

0 * * * * php artisan sitemap:generate

2. Streaming direto do sitemap

Útil para aplicações headless ou APIs:

$sitemap->stream();

O método define automaticamente headers adequados:

Content-Type: application/xml

3. Integração com filas e jobs

Para sites grandes, é possível gerar múltiplos sitemaps por worker, fragmentando automaticamente por volume.

Vantagens Técnicas

  • Zero dependências — compatível com qualquer projeto PHP >= 7
  • Baixo acoplamento — fácil de integrar a qualquer arquitetura (MVC, API REST, microserviço)
  • Foco em performance — geração usando DOMDocument é altamente eficiente
  • Flexível — suporta vários padrões de data, timezone configurável e múltiplas URLs
  • Manutenção simples — código limpo e documentação clara

O SitemapMaker foi projetado para oferecer uma solução leve e moderna para geração programática de sitemaps em PHP. Graças à sua arquitetura modular, padrões bem definidos e total compatibilidade com o protocolo oficial, a biblioteca atende desde pequenos sites até aplicações complexas com grande volume de URLs.

Código, documentação e exemplos completos estão disponíveis em:
https://github.com/nelson-flores/SitemapMaker

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *