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