O que são os dados estruturados
Uma máquina que lê o teu site vê texto, mas nem sempre percebe o que é cada coisa. Os dados estruturados põem-lhe etiquetas: isto é um produto, isto é o seu preço, isto é uma pergunta frequente, este é o autor. O vocabulário padrão chama-se schema.org e é usado tanto pelos motores de busca como pelos modelos de IA. Este guia explica porque ajudam a que te citem, que tipos pôr em cada página com exemplos completos, os erros que tiram credibilidade e como verificar que estão bem.
JSON-LD, a forma fácil
Há várias maneiras de escrever schema, mas a recomendada é JSON-LD: um bloco de script em formato JSON que colocas no cabeçalho ou no corpo da página. Não muda nada do que o utilizador vê e fica separado do HTML visível, por isso é fácil de gerar e rever. Se usas Cursor, Bolt ou Lovable, pedir à tua IA que gere o JSON-LD de uma página concreta é questão de um prompt. A alternativa, os microdados embutidos nas etiquetas HTML, funciona igual mas é mais difícil de manter.
Porque ajuda a que te citem
Quando um modelo tem de resumir a tua página, o schema reduz a ambiguidade. Em vez de inferir que um número é um preço, sabe. Em vez de adivinhar quem escreveu o artigo, lê. Em vez de deduzir que "Scanaris" é uma empresa e não uma pessoa, tem-no declarado. Menos adivinhar significa mais confiança, e mais confiança significa mais probabilidade de ser usado como fonte. Além disso, o schema liga o teu site ao resto da internet: o campo sameAs aponta para os teus perfis e o modelo percebe que tudo fala da mesma entidade.
Que tipos acrescentar e com que propriedades
- Organization na home: nome, logótipo, URL, descrição numa frase e
sameAscom os teus perfis públicos. - SoftwareApplication (ou Product) na página de produto ou preços: nome, descrição, categoria, sistema operativo ou plataforma, e
offerscom preço e moeda. - FAQPage onde houver perguntas e respostas reais e visíveis.
- Article ou BlogPosting nos posts, com autor, data de publicação e de modificação.
- BreadcrumbList para dar contexto de onde encaixa cada página.
- WebSite na home, com o nome do site, que ajuda a que apareça corretamente nos resultados.
Não os acrescentes todos só porque sim. Marca apenas o que está mesmo na página.
Um exemplo completo para uma app
É assim que fica o bloco da home de um produto de software, com a organização e a aplicação num mesmo grafo:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://oteudominio.com/#org",
"name": "O Teu Produto",
"url": "https://oteudominio.com",
"logo": "https://oteudominio.com/logo.png",
"description": "O Teu Produto é um [o que é] para [quem] que [o que consegue].",
"sameAs": [
"https://github.com/oteuproduto",
"https://www.linkedin.com/company/oteuproduto",
"https://x.com/oteuproduto"
]
},
{
"@type": "SoftwareApplication",
"name": "O Teu Produto",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Web",
"url": "https://oteudominio.com",
"description": "O Teu Produto é um [o que é] para [quem] que [o que consegue].",
"publisher": { "@id": "https://oteudominio.com/#org" },
"offers": {
"@type": "Offer",
"price": "24",
"priceCurrency": "EUR",
"url": "https://oteudominio.com/pricing"
}
}
]
}
</script>
Repara que a descrição é a mesma frase nos dois blocos, e devia ser a mesma que aparece na home, na meta descrição e no llms.txt. Essa repetição exata é o que os modelos acabam por citar.
E um para as perguntas frequentes
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "O Teu Produto modifica o meu site?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Não. Faz verificações só de leitura sobre informação pública."
}
}
]
}
</script>
Cada pergunta do JSON tem de existir, com o mesmo texto, na parte visível da página.
Os erros mais comuns
- Marcar o que não se vê. Perguntas frequentes que não aparecem na página, avaliações inventadas, um preço no JSON diferente do da página. Tira credibilidade e pode trazer-te uma ação manual do Google.
- Dados desatualizados. Mudas o preço na página e esqueces-te do schema. Gera o JSON-LD a partir da mesma fonte de dados que a página, não à mão.
- Nome inconsistente. "O Teu Produto" na home, "OTeuProduto" no schema, "o-teu-produto" nos perfis. Escolhe uma grafia e usa-a em todo o lado.
- Tipo errado. Um
Productfísico para um serviço web, ou umArticlenuma página de preços. - JSON inválido. Uma vírgula a mais e o bloco inteiro é ignorado em silêncio.
Onde o pôr consoante a tua framework
Em Next.js, um elemento script com type="application/ld+json" no layout ou na página, com o JSON serializado a partir de um objeto. Em Nuxt, com useHead e um script do mesmo tipo. Numa SPA de Vite, no index.html se o bloco for estático, ou injetado no prerender se variar por página. O importante é que chegue no HTML inicial: um JSON-LD que só existe depois de executar JavaScript não é lido pelos bots que não renderizam.
Como verificar que está bem
Pede a tua página com curl e procura o bloco:
curl -s https://oteudominio.com/ | grep -o 'application/ld+json' | wc -l
Se der zero, não chega no HTML. Depois valida o conteúdo com a ferramenta de resultados enriquecidos do Google ou com o validador do schema.org, que te assinalam erros de sintaxe e propriedades desconhecidas. E lê-o tu: diz o mesmo que a página? Se não, um dos dois está a mentir.
O Scanaris revê o teu schema
O pilar de visibilidade para IA do Scanaris deteta se tens dados estruturados, de que tipo, se chegam no HTML sem JavaScript e se fazem sentido para a página, e dá-te um fix prompt com o JSON-LD sugerido para colar na tua IA. É uma verificação só de leitura sobre o HTML público do teu site. Faz parte do guia de AEO e da revisão de SEO e AEO na mesma página.
Perguntas frequentes
O Google penaliza schema incorreto?
O schema com erros de sintaxe é simplesmente ignorado. O schema enganador (marcar avaliações ou perguntas que não existem) pode receber uma ação manual que te tira os resultados enriquecidos. Marca só o visível.
JSON-LD ou microdados?
JSON-LD. É o que o Google e o schema.org recomendam, gera-se a partir de dados sem tocar no HTML visível e é muito mais fácil de manter.
É preciso em todas as páginas?
Nas públicas que queres que se percebam: home, produto, preços, blog, perguntas frequentes. O painel privado não precisa porque ninguém externo o lê.