Gere JSON-LD FAQ
Transforme suas perguntas e respostas aprovadas em dados estruturados FAQPage prontos para colar: as perguntas sobre prazo de entrega e sobre alterar um pedido viram um único bloco, na ordem em que você as escreveu. Nada é inventado nem reescrito. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
O gerador valida cada par, preserva a ordem escolhida e entrega um objeto estruturado e um bloco script completo para a página correspondente. Ele não inventa afirmações nem reescreve seu conteúdo, portanto os dados estruturados continuam alinhados ao texto realmente visível para os visitantes.
Prepare primeiro perguntas e respostas visíveis
Comece pelo conteúdo de perguntas frequentes que os visitantes realmente conseguem ver na página. Cada linha precisa de uma pergunta completa e da resposta correspondente; nenhuma delas pode estar vazia ou conter somente espaços. O gerador não redige, amplia nem verifica esse material.
Essa separação é importante porque dados estruturados devem representar a página, e não criar uma segunda versão oculta. Revise afirmações, políticas, preços, datas e critérios com as pessoas responsáveis antes de gerar o bloco. Use uma redação clara e específica, compreensível sem menus ou texto promocional.
Caso duas perguntas tratem do mesmo assunto, resolva a duplicidade na FAQ visível. Organize os pares na ordem desejada: a lista mainEntity preserva exatamente essa sequência. Sempre que uma resposta mudar, mantenha o conteúdo visível e os dados estruturados sincronizados.
Gere uma marcação segura e padronizada
Em seguida, aninha uma Answer em acceptedAnswer e coloca a resposta em text. O retorno inclui esse objeto para automações e um bloco application/ld+json formatado para inserção direta no HTML. Espaços externos são removidos, enquanto pontuação, maiúsculas e formatação interna permanecem sob seu controle.
A serialização é determinística: entradas idênticas sempre produzem saídas idênticas, sem rede, aleatoriedade, modelo ou horário. Caracteres que poderiam interferir no elemento script do HTML são codificados com segurança.
Publique, confira e mantenha o resultado
Coloque o bloco script retornado no HTML da página cuja FAQ visível contém as mesmas perguntas e respostas. Evite distribuir o bloco por um modelo global em páginas sem relação: a marcação descreve uma página específica e deve acompanhar seu conteúdo. Depois da publicação, inspecione o código renderizado para confirmar que o elemento application/ld+json está presente e não foi exibido como texto comum.
Teste então a URL pública com as ferramentas de validação dos mecanismos de busca relevantes. Sintaxe válida não promete uma aparência especial, pois cada serviço define seus próprios critérios.
Casos de uso
Publique uma FAQ de suporte
Converta perguntas revisadas da central de ajuda em marcação FAQPage consistente para o mesmo artigo público.
Substitua esquemas manuais
Remova aninhamento e aspas frágeis do fluxo editorial sem alterar o texto aprovado.
Perguntas frequentes
O que o gerador retorna?
Ele retorna um objeto de esquema e um bloco script application/ld+json completo com os mesmos dados FAQPage.
Ele escreve perguntas ou respostas para você?
Não. Ele apenas valida e estrutura o texto fornecido; não gera, reescreve nem verifica afirmações.
O que acontece se uma pergunta ou resposta estiver vazia?
A solicitação falha com um erro de entrada inválida que identifica a posição do campo vazio.
Uma marcação FAQPage válida garante resultado enriquecido?
Não. O gerador cria uma estrutura válida, mas cada buscador decide elegibilidade e apresentação segundo suas políticas.
Onde coloco o bloco gerado?
Na página cuja seção de perguntas visível mostra essas mesmas perguntas e respostas, no cabeçalho ou no corpo. Não o adicione a páginas sem relação por meio de um modelo global, porque a marcação descreve uma página específica.
Ferramentas relacionadas
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/faq-schema-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pairs":[{"question":"How long does delivery take?","answer":"Standard delivery takes three to five business days."},{"question":"Can I change my order?","answer":"Yes. Contact support before the order is dispatched."}]}'const res = await fetch("https://api.kit.forhosting.com/web/faq-schema-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pairs": [
{
"question": "How long does delivery take?",
"answer": "Standard delivery takes three to five business days."
},
{
"question": "Can I change my order?",
"answer": "Yes. Contact support before the order is dispatched."
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/faq-schema-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pairs": [
{
"question": "How long does delivery take?",
"answer": "Standard delivery takes three to five business days."
},
{
"question": "Can I change my order?",
"answer": "Yes. Contact support before the order is dispatched."
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/faq-schema-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pairs":[{"question":"How long does delivery take?","answer":"Standard delivery takes three to five business days."},{"question":"Can I change my order?","answer":"Yes. Contact support before the order is dispatched."}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pairs":[{"question":"How long does delivery take?","answer":"Standard delivery takes three to five business days."},{"question":"Can I change my order?","answer":"Yes. Contact support before the order is dispatched."}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/faq-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
{
"pairs": [
{
"question": "How long does delivery take?",
"answer": "Standard delivery takes three to five business days."
},
{
"question": "Can I change my order?",
"answer": "Yes. Contact support before the order is dispatched."
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.faq_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. |
Notas técnicas
Transforme uma lista aprovada de perguntas e respostas em marcação FAQPage do schema.org sem escrever JSON aninhado manualmente.
Gere uma marcação segura e padronizada
Para cada par fornecido, o gerador cria uma Question do schema.org e armazena a pergunta em name. Esses registros formam o array mainEntity de um objeto FAQPage com o contexto do schema.org. O JSON ainda recupera o texto original, mas o bloco não pode encerrar seu próprio script antes da hora.
Publique, confira e mantenha o resultado
Em geral, JSON-LD pode ficar no head ou no body, mas seu gerenciador de conteúdo talvez ofereça um campo específico para dados estruturados. Trate o bloco como conteúdo mantido: quando uma resposta visível for alterada, removida ou reordenada, gere novamente o JSON-LD e publique as duas mudanças juntas.
Casos de integração
Automatize páginas de destino
Gere JSON-LD determinístico a partir de registros de FAQ no gerenciador de conteúdo em cada compilação.
Perguntas técnicas
É seguro colar o bloco script no HTML?
Sim. Caracteres sensíveis ao HTML são escapados durante a serialização JSON, impedindo o fechamento antecipado do script.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A ferramenta web pode executar localmente a mesma lógica determinística.