Gerador de schema BreadcrumbList em JSON-LD
Transforme uma trilha de navegação visível em dados estruturados sem numerar itens nem montar JSON aninhado manualmente.
Executar grátis
Informe nomes de páginas e URLs absolutas na ordem exibida, começando pela página mais ampla e terminando no destino atual. O gerador entrega um objeto BreadcrumbList do schema.org e um script JSON-LD completo, pronto para o cabeçalho ou corpo da página. Antes de retornar a marcação, ele valida listas vazias, linhas incorretas, rótulos ausentes e URLs não aceitas.
Prepare a trilha na ordem mostrada na página
Comece pela mesma hierarquia que a pessoa visitante encontra na página. A primeira linha normalmente representa a página inicial ou a seção mais abrangente; depois vêm páginas progressivamente mais específicas, e a última linha identifica a página atual. Cada linha precisa de um nome visível e conciso e de uma URL absoluta HTTP ou HTTPS. URLs absolutas eliminam ambiguidades para rastreadores e tornam a marcação reutilizável em modelos, domínios de teste e sistemas de conteúdo. Mantenha os rótulos coerentes com as páginas vinculadas, sem enchê-los de palavras-chave. A ferramenta preserva exatamente a ordem informada e atribui posições a partir de um, portanto reorganizar linhas muda o sentido da trilha. Ela não rastreia o site, não deduz a hierarquia e não compara os itens com a navegação renderizada em HTML. Confira redirecionamentos, escolhas canônicas, grafia e capitalização antes de gerar o bloco. Uma lista vazia é recusada porque não comunica um caminho útil e geralmente indica um modelo com defeito ou uma solicitação incompleta.
Entenda o JSON-LD produzido
O resultado contém um objeto de schema para uso programático e um script completo para inserção direta em uma página. No nível superior, o contexto aponta para schema.org e o tipo é BreadcrumbList. Cada par informado vira um ListItem com posição iniciada em um, nome sem espaços nas pontas e URL na propriedade item. A formatação indentada facilita revisões e gera resultados estáveis para entradas idênticas. O gerador também escapa caracteres de menor que nos valores serializados, impedindo que um texto fornecido encerre antecipadamente o elemento script quando incorporado ao HTML. A validação aceita somente nomes preenchidos e URLs absolutas HTTP ou HTTPS; esquemas como javascript, data e mailto, além de caminhos relativos, são recusados. O algoritmo é determinístico e não faz solicitações de rede, por isso não confirma se a URL responde nem se a página pode ser indexada. Use o objeto schema quando outro aplicativo cuidar da serialização ou o campo jsonld quando você precisar da marcação completa sem montagem adicional.
Publique e verifique a marcação de navegação
Adicione um único script gerado à página representada pela trilha, no cabeçalho do documento ou no corpo, conforme o sistema de publicação permitir JSON-LD. Mantenha a trilha estruturada coerente com links que as pessoas realmente conseguem ver e acessar. Se o sistema já produzir dados estruturados de breadcrumb, substitua ou desative o bloco antigo em vez de publicar versões concorrentes com posições ou URLs diferentes. Gere novamente a marcação sempre que uma página mudar de endereço, uma seção for renomeada ou as URLs canônicas forem alteradas. Depois da publicação, inspecione o HTML renderizado, e não apenas o modelo-fonte, pois temas, gerenciadores de tags e plugins de otimização podem duplicar, remover ou modificar scripts. Em seguida, use uma ferramenta de teste de dados estruturados ou de inspeção do buscador para encontrar problemas externos ao gerador, como destinos indisponíveis, tags canônicas conflitantes ou marcação na página errada. JSON-LD válido é um requisito técnico, não uma garantia de exibição especial. A API custa US$ 0,002 por solicitação, e o navegador executa a mesma lógica sem enviar os dados pela rede.
Casos de uso
Adicionar marcação a um modelo
Converta a trilha ordenada de um modelo em um script BreadcrumbList pronto para incorporar.
Padronizar a saída do CMS
Gere a mesma estrutura JSON-LD para artigos, produtos, categorias e áreas de documentação.
Corrigir dados estruturados ausentes
Crie marcação substituta quando há breadcrumbs visíveis, mas nenhuma trilha legível por máquinas.
Perguntas frequentes
O que acontece se a lista estiver vazia?
A solicitação falha com erro de entrada inválida, pois BreadcrumbList deve conter pelo menos um item útil.
Qual ordem devo usar?
Informe as páginas do nível mais abrangente até a página atual. O gerador preserva essa ordem e numera a partir de um.
Posso usar URLs relativas?
Não. Cada item deve ter uma URL absoluta HTTP ou HTTPS para que os dados estruturados não sejam ambíguos.
O gerador verifica se as páginas existem?
Não. Ele não acessa a rede; valida sintaxe e esquema, mas não status, indexação, redirecionamentos nem tags canônicas.
Onde devo colocar o bloco gerado?
Insira o script no cabeçalho ou corpo conforme seu sistema de publicação e garanta que não exista marcação duplicada.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A mesma transformação determinística também pode rodar 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/breadcrumb-schema-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}'const res = await fetch("https://api.kit.forhosting.com/web/breadcrumb-schema-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/breadcrumb-schema-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/breadcrumb-schema-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"breadcrumbs":[{"name":"Home","url":"https://example.com/"},{"name":"Guides","url":"https://example.com/guides"},{"name":"Technical SEO","url":"https://example.com/guides/technical-seo"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/breadcrumb-schema-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
{
"breadcrumbs": [
{
"name": "Home",
"url": "https://example.com/"
},
{
"name": "Guides",
"url": "https://example.com/guides"
},
{
"name": "Technical SEO",
"url": "https://example.com/guides/technical-seo"
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.breadcrumb_schema_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
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |