XML Sitemap: como criar, validar e enviar
Como montar um sitemap com as URLs canônicas finais, validar as entradas e usar o arquivo junto com os links internos e o robots.txt.
Um sitemap XML é uma lista de URLs legível por máquina que ajuda os buscadores a descobrir as páginas que você quer considerar. Ele complementa os links internos rastreáveis, mas não garante a indexação. Inclua apenas URLs finais e canônicas, que sigam a política de indexação do site.
O protocolo sitemaps.org foi lançado em 2005 — o Google o adotou primeiro, e o Yandex, um ano depois. Hoje, todos os principais buscadores suportam o padrão.
O que é um sitemap XML e por que você precisa dele
Um bot de busca descobre páginas de duas formas: seguindo links internos e lendo sitemaps. O rastreamento por links funciona bem em páginas que recebem muitos links de entrada. Mas páginas sem nenhum link, conteúdos publicados recentemente ou seções com linkagem interna fraca podem passar despercebidas ou ser descobertas devagar demais. É exatamente nesses casos que o sitemap ajuda.
Acelera o rastreamento
O bot recebe a lista de URLs diretamente e não precisa percorrer os links internos página por página.
Sinaliza atualizações
O atributo lastmod informa ao buscador que a página mudou e precisa ser rastreada de novo.
Suporta sites multilíngues
Com xhtml:link, você declara as relações de hreflang diretamente no sitemap, sem duplicar tags no HTML.
Estrutura básica do arquivo
Um sitemap mínimo válido é um arquivo XML com declaração de codificação, um elemento raiz urlset e elementos url dentro dele. Cada url precisa ter pelo menos um atributo obrigatório: loc.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2026-05-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2026-04-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://example.com/blog/article-slug</loc>
<lastmod>2026-05-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
</urlset>O arquivo deve estar codificado em UTF-8. Caracteres especiais nas URLs são escapados conforme as regras do XML: & vira &, e < vira <. Um único arquivo de sitemap é limitado a 50.000 URLs e 50 MB sem compactação.
Atributos: loc, lastmod, changefreq, priority
| Atributo | Obrigatório | Formato | Descrição |
|---|---|---|---|
| loc | Sim | URL absoluta | Endereço completo da página, incluindo protocolo e domínio. Máximo de 2.048 caracteres. |
| lastmod | Não | W3C Datetime (YYYY-MM-DD) | Data da última modificação. O Google só confia nesse valor quando ele é estável e preciso. |
| changefreq | Não | always / hourly / daily / weekly / monthly / yearly / never | Dica sobre a frequência de atualização. O Google usa como um sinal, mas não segue esse valor à risca. |
| priority | Não | 0.0 – 1.0 | Importância relativa da URL dentro do seu site. Não afeta o ranqueamento nos resultados de pesquisa. |
loc — o único atributo obrigatório
A URL precisa ser absoluta e corresponder ao que o servidor realmente responde: se a página é servida por HTTPS, o loc deve usar HTTPS. Se o site usa www, o loc deve incluir www. Qualquer divergência entre o loc e o endereço real faz o Google ignorar a entrada.
lastmod — o atributo opcional mais valioso
A data precisa refletir mudanças reais no conteúdo, e não ajustes de template nem a regeneração do sitemap. Se você atualiza o lastmod a cada deploy sem mudar o conteúdo, o Google deixa de confiar no campo e o ignora. Formatos aceitos: 2026-05-15, 2026-05-15T10:30:00+03:00, 2026-05-15T07:30:00Z.
changefreq — uma dica, não uma diretiva
O changefreq não controla a programação do rastreador: é apenas uma dica. O Google declara oficialmente que usa o valor como um dos muitos sinais. O Yandex também trata o campo como informativo. Padrões práticos: página inicial — daily, posts do blog — monthly, páginas legais — yearly.
priority — importância relativa dentro do site
A prioridade de 0.0 a 1.0 informa ao buscador quais páginas você considera mais importantes, sempre em relação ao seu próprio site, e não na comparação com outros sites. Definir 1.0 para todas as páginas não faz sentido: o buscador entende isso como ausência de priorização. Um esquema razoável: página inicial 1.0, hubs de seção 0.85, artigos e produtos 0.7–0.75, páginas utilitárias 0.5.
Sitemap Index: quando um arquivo não basta
Se você tem mais de 50.000 páginas ou se o arquivo passa de 50 MB, precisa de um Sitemap Index. Trata-se de um arquivo XML que referencia sitemaps filhos, e não URLs diretamente. Cada arquivo filho é um urlset comum, limitado a 50.000 entradas.
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap/blog.xml</loc>
<lastmod>2026-05-15T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/products.xml</loc>
<lastmod>2026-05-14T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/static.xml</loc>
<lastmod>2026-04-01T00:00:00Z</lastmod>
</sitemap>
</sitemapindex>Você pode dividir por tipo de conteúdo (blog, produtos, páginas estáticas) ou por locale (ru.xml, en.xml). As duas abordagens são válidas. Dividir por locale facilita acompanhar a indexação de cada idioma separadamente.
Sitemap de imagens
Imagens podem aparecer no Google Imagens e trazer tráfego adicional. Para ajudar o rastreador a encontrá-las e entendê-las, adicione a extensão de imagem ao seu urlset comum. Cada entrada url pode conter até 1.000 imagens.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/gallery/city</loc>
<image:image>
<image:loc>https://example.com/images/city-skyline.jpg</image:loc>
<image:title>City skyline at sunset</image:title>
<image:caption>Downtown panorama taken from the observation deck, 2025</image:caption>
<image:geo_location>New York, USA</image:geo_location>
<image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
</image:image>
</url>
</urlset><url> e valores permitidos:| Tag | Obrigatório | Descrição |
|---|---|---|
| image:loc | Sim | URL absoluta da imagem. Pode estar em outro domínio, por exemplo em um CDN. |
| image:title | Não | Título da imagem. Equivale ao atributo title da tag img. |
| image:caption | Não | Legenda da imagem. Equivale ao atributo alt da tag img. |
| image:geo_location | Não | Localização geográfica do assunto na imagem. |
| image:license | Não | URL da licença da imagem. |
As imagens no sitemap não substituem o atributo alt no HTML: as duas coisas funcionam juntas. O sitemap ajuda o rastreador a descobrir a imagem; o alt descreve o significado dela.
Sitemap de vídeos
Um sitemap de vídeos permite que seu conteúdo apareça na pesquisa de vídeos do Google e em resultados avançados com prévia do vídeo. O namespace é video.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/tutorials/getting-started</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbnails/tutorial-1.jpg</video:thumbnail_loc>
<video:title>Getting started with the product</video:title>
<video:description>Step-by-step guide for first-time users</video:description>
<video:content_loc>https://example.com/videos/tutorial-1.mp4</video:content_loc>
<video:duration>183</video:duration>
<video:publication_date>2026-03-10T12:00:00+00:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>
</urlset>video:duration é informado em segundos. video:content_loc precisa apontar para um arquivo reproduzível (mp4, webm), e não para uma página de player. Para vídeos hospedados no YouTube ou no Vimeo, use video:player_loc no lugar de video:content_loc.
Sitemap de notícias
O Google News Sitemap é um formato especial para editores que participam do Google Notícias. Ele inclui apenas artigos publicados nas últimas 48 horas. Conteúdos mais antigos não devem entrar: eles saem automaticamente do índice de notícias.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>https://example.com/news/tech-breakthrough-2026</loc>
<news:news>
<news:publication>
<news:name>Example Daily</news:name>
<news:language>en</news:language>
</news:publication>
<news:publication_date>2026-05-15T09:00:00+00:00</news:publication_date>
<news:title>Technology breakthrough set to transform the industry</news:title>
</news:news>
</url>
</urlset>Localização: hreflang no sitemap
Se o seu site existe em vários idiomas ou para várias regiões, você precisa conectar as páginas correspondentes com hreflang. Isso pode ser feito de três formas: com tags link rel no HTML, com cabeçalhos HTTP Link ou diretamente no sitemap. A abordagem pelo sitemap é a mais prática para sites grandes, porque não exige mudanças nos templates das páginas.
No sitemap, o hreflang é declarado pelo namespace xhtml. Cada página deve aparecer como uma entrada url, e cada entrada deve listar todas as variantes de idioma, incluindo a própria página.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Russian version -->
<url>
<loc>https://example.com/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
<!-- English version -->
<url>
<loc>https://example.com/en/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
</urlset>O valor x-default indica a página padrão, aquela exibida para usuários que não correspondem a nenhuma configuração de idioma explícita. Normalmente, é a versão no idioma principal do site.
| Código hreflang | Uso |
|---|---|
| ru | Idioma russo, qualquer região |
| en | Idioma inglês, qualquer região |
| en-US | Inglês, região Estados Unidos |
| ru-RU | Russo, região Rússia |
| x-default | Página padrão para idioma ou região não definidos |
Robots.txt: uma linha basta
Para que o buscador saiba onde está o seu sitemap, basta adicionar uma única diretiva Sitemap no robots.txt. Se você usa um Sitemap Index, aponte para ele. O rastreador descobre todos os arquivos filhos pelo índice automaticamente.
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /
Sitemap: https://example.com/sitemap.xmlSe você tem vários arquivos de índice raiz (por exemplo, um para ru e outro para en), pode listar várias diretivas Sitemap:
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xmlDocumentação do Google e do Yandex
Documentação oficial do Google sobre sitemaps
Documentação oficial do Yandex Webmaster sobre sitemaps
O Yandex oferece suporte ao padrão sitemaps.org e, além disso, à extensão para notícias. O Yandex lê changefreq e priority, mas recomenda focar em um lastmod preciso, que é mais importante para o novo rastreamento de páginas alteradas.
Checklist
- O arquivo está em UTF-8, com <?xml version="1.0" encoding="UTF-8"?> na primeira linha
- Todas as URLs são absolutas (com protocolo e domínio) e correspondem à canonical real
- HTTPS no loc quando o site é servido por HTTPS
- O lastmod reflete a data real de mudança do conteúdo, e não a data do build
- O arquivo não ultrapassa 50.000 URLs nem 50 MB sem compactação
- Em sites grandes, use um Sitemap Index com arquivos filhos
- Para páginas multilíngues, use xhtml:link com hreflang, incluindo x-default
- Para conteúdo de mídia, use as extensões adequadas (image, video, news)
- O robots.txt contém uma diretiva Sitemap com URL absoluta
- O sitemap foi enviado no Google Search Console e no Yandex Webmaster
- Páginas com noindex não entram no sitemap
- Páginas cujo canonical aponta para outra URL não entram no sitemap
FAQ
O sitemap é obrigatório para um site pequeno?
As páginas com noindex devem entrar no sitemap?
A priority afeta o ranqueamento nos resultados de pesquisa?
Com que frequência o sitemap deve ser atualizado?
Quantos sitemaps podem ser listados no robots.txt?
Check it with SpiderHead
Free and local: run the audit on your own machine.



