Gere um sitemap XML a partir de uma lista de URLs
Crie um documento sitemap.xml completo a partir de uma lista estruturada de páginas, sem depender de rastreador, plugin de CMS ou XML escrito à mão.
Executar grátis
Cada registro exige uma URL HTTP ou HTTPS absoluta e também pode incluir a data da última modificação, a frequência de alteração e a prioridade relativa. O gerador valida os valores informados, escapa com segurança caracteres especiais de XML e retorna um documento determinístico pronto para salvar, publicar, testar ou usar em outra etapa da implantação.
Prepare um inventário preciso de URLs
Comece pelas URLs públicas canônicas que os mecanismos de busca devem descobrir. Cada registro precisa de um endereço completo iniciado por HTTP ou HTTPS, com nome do host e caminho desejado. Caminhos relativos como <code>/produtos</code> são rejeitados porque um leitor de sitemap não consegue deduzir a origem. Inclua strings de consulta somente quando as páginas parametrizadas forem resultados canônicos e úteis por si mesmas; variantes de rastreamento normalmente não pertencem ao sitemap. O gerador preserva o texto da URL enviada e escapa caracteres sensíveis ao XML, como o e comercial, mantendo o significado da consulta sem quebrar o documento. Um sitemap aceita até 50,000 entradas, conforme o limite do protocolo. A ferramenta não rastreia domínios, verifica respostas, infere links canônicos nem remove duplicatas. Assim, a lista de entrada permanece autoritativa e o resultado é previsível. Monte essa lista a partir do roteador, banco de dados, saída do site estático ou inventário de conteúdo e filtre páginas privadas, redirecionadas, duplicadas, bloqueadas ou não canônicas antes da geração.
Use metadados opcionais com honestidade
Adicione <code>lastmod</code> apenas quando souber quando o conteúdo da página foi alterado. O campo aceita uma data como YYYY-MM-DD ou um timestamp ISO 8601 com fuso horário explícito. O valor deve descrever a própria página, não o instante em que você executou o gerador. <code>changefreq</code> aceita o vocabulário padrão de sitemaps: always, hourly, daily, weekly, monthly, yearly ou never. Os mecanismos de busca tratam esse campo como uma sugestão, e não como agenda, portanto escolha uma frequência coerente com a publicação real. <code>priority</code> é outra indicação opcional, expressa como número finito de zero a um. Ela compara URLs dentro do seu próprio site; não torna o domínio mais importante que outro nem garante classificação ou rastreamento. Omitir metadados incertos é melhor do que preencher elementos com padrões inventados. O gerador emite somente os elementos opcionais fornecidos em cada registro, mantém o XML conciso e valida cada valor incluído antes de retornar qualquer resultado.
Publique e mantenha o documento gerado
O resultado contém a declaração XML, o namespace oficial do sitemap, um elemento URL para cada registro de entrada e uma contagem útil nos logs de automação. Salve o XML retornado como <code>sitemap.xml</code> em UTF-8 e disponibilize-o em um endereço público estável, normalmente na raiz do site correspondente. Você pode mencionar esse endereço no robots.txt e enviá-lo pelas ferramentas dos mecanismos de busca que utiliza. A geração é determinística: entradas idênticas produzem saídas idênticas, sem requisição de rede, consulta ao horário atual, ordenação aleatória ou normalização oculta. Essa propriedade torna o recurso adequado a builds e pipelines de implantação, pois as diferenças no controle de versão representam mudanças no inventário fornecido. Gere novamente o documento quando URLs canônicas publicadas ou seus metadados confiáveis mudarem; depois valide a resposta implantada e confirme que ela não exige autenticação. Em sites muito grandes, divida os registros em arquivos compatíveis com o protocolo e crie um índice pelo fluxo apropriado. A execução no navegador é grátis, enquanto requisições automatizadas pela API usam o preço-base publicado de US$ 0,002.
Casos de uso
Gere um sitemap durante a implantação
Converta as rotas canônicas produzidas pelo build em XML determinístico antes de publicar a nova versão.
Exporte páginas de um banco de conteúdo
Transforme registros publicados e suas datas confiáveis de modificação em um sitemap pronto para buscas.
Substitua o XML manual e frágil
Mantenha uma lista estruturada de URLs enquanto o gerador cuida da validação, ordem e escape de XML.
Perguntas frequentes
Quais dados o gerador exige?
Forneça um array não vazio de registros. Cada registro exige uma URL HTTP ou HTTPS absoluta e pode incluir lastmod, changefreq e priority.
Ele rastreia meu site?
Não. O XML é gerado somente a partir dos registros fornecidos, sem requisições de rede ou descoberta automática de páginas.
Como o gerador trata o e comercial e outros caracteres especiais?
Caracteres sensíveis ao XML nas URLs são escapados na saída, impedindo que strings de consulta válidas criem XML malformado.
Quais formatos de lastmod são aceitos?
Use YYYY-MM-DD ou um timestamp ISO 8601 completo que inclua Z ou um deslocamento numérico explícito de fuso horário.
A priority pode melhorar a classificação de uma página?
Não. A prioridade é uma indicação relativa dentro do seu sitemap, não uma garantia de classificação nem comparação com outros sites.
Quanto custa a geração pela API?
O preço-base da API é US$ 0,002 por requisição. O mesmo gerador determinístico pode ser usado gratuitamente no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/web/sitemap-xml-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"urls":[{"url":"https://example.com/","lastmod":"2026-07-25","changefreq":"weekly","priority":1},{"url":"https://example.com/about?from=site&lang=en","changefreq":"monthly","priority":0.6}]}'const res = await fetch("https://api.kit.forhosting.com/web/sitemap-xml-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"urls": [
{
"url": "https://example.com/",
"lastmod": "2026-07-25",
"changefreq": "weekly",
"priority": 1
},
{
"url": "https://example.com/about?from=site&lang=en",
"changefreq": "monthly",
"priority": 0.6
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/sitemap-xml-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"urls": [
{
"url": "https://example.com/",
"lastmod": "2026-07-25",
"changefreq": "weekly",
"priority": 1
},
{
"url": "https://example.com/about?from=site&lang=en",
"changefreq": "monthly",
"priority": 0.6
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/sitemap-xml-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"urls":[{"url":"https://example.com/","lastmod":"2026-07-25","changefreq":"weekly","priority":1},{"url":"https://example.com/about?from=site&lang=en","changefreq":"monthly","priority":0.6}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"urls":[{"url":"https://example.com/","lastmod":"2026-07-25","changefreq":"weekly","priority":1},{"url":"https://example.com/about?from=site&lang=en","changefreq":"monthly","priority":0.6}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/sitemap-xml-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"urls": [
{
"url": "https://example.com/",
"lastmod": "2026-07-25",
"changefreq": "weekly",
"priority": 1
},
{
"url": "https://example.com/about?from=site&lang=en",
"changefreq": "monthly",
"priority": 0.6
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.sitemap_xml_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 50000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |