- Schema.org JSON-LD é o formato preferido em 2026 — 91% de adoção entre sites profissionais
- O segredo é o @id cruzado: Organization, Person, Service e BlogPosting conectados por referência
- Stack mínimo de uma agência: Organization (home), Person (sobre), Service (serviços), BlogPosting (cada post)
Em maio de 2026, Schema.org não é mais opcional. AI Overviews, ChatGPT, Perplexity e Bing Copilot dependem de dados estruturados pra te citar. Esse guia mostra o stack mínimo que uma agência de SEO precisa ter, com código JSON-LD pronto pra colar.
Por que JSON-LD (e não Microdata ou RDFa)
Três formatos existem oficialmente. Em 2026, JSON-LD é o vencedor:
| Formato | Adoção 2026 | Recomendação Google |
|---|---|---|
| JSON-LD | 91% | Preferido |
| Microdata | 6% | Aceito |
| RDFa | 3% | Aceito mas legado |
JSON-LD fica num <script> separado, não polui o HTML. Vai dentro do <head> ou final do <body>.
A regra do @id cruzado
Aqui está o segredo que separa schema básico de schema profissional: @id cruzado.
Quando você define @id num node e referencia em outro, você está dizendo pro Google: “esse Person e essa Organization são entidades conectadas que existem em outras páginas também”.
Sem @id, cada página tem entidades isoladas. Com @id, você cria um knowledge graph do seu próprio site.
Stack mínimo de uma agência de SEO
1. Organization (na home)
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://skylinelab.online/#organization",
"name": "SkylineLab",
"alternateName": "Skyline Lab",
"url": "https://skylinelab.online",
"logo": {
"@type": "ImageObject",
"url": "https://skylinelab.online/wp-content/uploads/logo.png",
"width": 512,
"height": 512
},
"founder": {
"@id": "https://skylinelab.online/sobre/#renan"
},
"foundingDate": "2025-09",
"areaServed": "BR",
"sameAs": [
"https://www.linkedin.com/company/skylinelab",
"https://instagram.com/skylinelab"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+55-14-99731-9070",
"contactType": "customer service",
"areaServed": "BR",
"availableLanguage": ["Portuguese", "English", "Spanish"]
}
}
2. Person (na página /sobre/)
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://skylinelab.online/sobre/#renan",
"name": "Renan Farinácio",
"jobTitle": "Founder",
"image": "https://skylinelab.online/wp-content/uploads/renan.png",
"url": "https://skylinelab.online/sobre/",
"worksFor": {
"@id": "https://skylinelab.online/#organization"
},
"knowsAbout": [
"Search Engine Optimization",
"Generative Engine Optimization",
"Technical SEO",
"Web Development",
"AI Agents"
],
"sameAs": [
"https://www.linkedin.com/in/renanfarinacio",
"https://instagram.com/renan.fari"
]
}
Note o worksFor apontando pro @id da Organization. Esse é o cruzamento.
3. Service (nas páginas de serviço)
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://skylinelab.online/servicos/seo-tecnico/#service",
"name": "Consultoria de SEO Técnico",
"description": "Auditoria, otimização e implementação de SEO técnico para sites WordPress e custom.",
"provider": {
"@id": "https://skylinelab.online/#organization"
},
"areaServed": {
"@type": "Country",
"name": "Brasil"
},
"offers": {
"@type": "Offer",
"priceCurrency": "BRL",
"price": "1800",
"url": "https://skylinelab.online/servicos/seo-tecnico/"
}
}
4. BlogPosting (em cada artigo)
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://skylinelab.online/SLUG-DO-POST/#article",
"headline": "Título do Post",
"description": "Meta description do post",
"image": {
"@type": "ImageObject",
"url": "https://skylinelab.online/wp-content/uploads/imagem.webp",
"width": 1200,
"height": 630
},
"datePublished": "2026-05-14T09:00:00-03:00",
"dateModified": "2026-05-14T09:00:00-03:00",
"author": {
"@id": "https://skylinelab.online/sobre/#renan"
},
"publisher": {
"@id": "https://skylinelab.online/#organization"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://skylinelab.online/SLUG-DO-POST/"
},
"articleSection": "SEO",
"wordCount": 1500
}
Observa: author referencia o Person via @id. publisher referencia Organization. Tudo conectado.
5. FAQPage (em páginas com FAQ)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Pergunta 1?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Resposta clara e completa."
}
},
{
"@type": "Question",
"name": "Pergunta 2?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Resposta."
}
}
]
}
FAQ schema dá rich snippets no Google e é uma das estruturas que ChatGPT mais cita.
6. BreadcrumbList (em páginas internas)
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://skylinelab.online/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://skylinelab.online/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Título do Post",
"item": "https://skylinelab.online/slug-do-post/"
}
]
}
Quer ajuda pra implementar isso no seu site? A SkylineLab faz auditoria técnica gratuita e te entrega diagnóstico em 24h com plano de ação priorizado — sem compromisso.
Como agrupar tudo num único @graph
Em vez de múltiplos <script> separados, agrupa tudo num @graph. Google e LLMs entendem melhor:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://skylinelab.online/#organization",
...
},
{
"@type": "Person",
"@id": "https://skylinelab.online/sobre/#renan",
...
},
{
"@type": "WebPage",
"@id": "https://skylinelab.online/sobre/",
"about": {
"@id": "https://skylinelab.online/sobre/#renan"
}
}
]
}
Validar antes de publicar
Sempre passa pelos validadores antes de subir:
- Schema Markup Validator (schema.org/validator) — valida sintaxe e tipo
- Rich Results Test (search.google.com/test/rich-results) — mostra se o Google reconhece e quais rich results você pode ganhar
- JSON Schema Validator (jsonschemavalidator.net) — só pra validar JSON puro se der erro de parse
Onde colocar o schema no HTML
Convenção em 2026:
- JSON-LD: dentro do
<head>é melhor pra LLMs (lêem só o head em fetches rápidos) - Múltiplos scripts: válido, mas prefira agrupar em
@graph - No final do
<body>: aceitável mas LLMs comhead only fetchpodem perder
<head>
<!-- ... outras meta tags ... -->
<script type="application/ld+json">
{"@context":"https://schema.org","@graph":[...]}
</script>
</head>
Erros comuns que invalidam schema
- URL no @id que não existe — sempre real, não placeholder
- JSON com vírgula trailing (
,]antes de fechar) — JS aceita, JSON puro não - Aspas curvas em vez de retas (
"vs") — colar de Word quebra - Tipo errado (
"Person"minúsculo em vez de"Person") — case sensitive - @id duplicado dentro do mesmo @graph — cada @id deve ser único no grafo
- Referenciar @id que não existe — Google ignora silenciosamente
Schema para SEO local (LocalBusiness)
Pra agência com endereço físico ou cidade de atuação clara:
{
"@type": "ProfessionalService",
"@id": "https://skylinelab.online/#localbusiness",
"name": "SkylineLab",
"image": "https://skylinelab.online/logo.png",
"address": {
"@type": "PostalAddress",
"addressLocality": "São Paulo",
"addressRegion": "SP",
"addressCountry": "BR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -23.5505,
"longitude": -46.6333
},
"priceRange": "R$1.800 - R$15.000",
"telephone": "+55-14-99731-9070",
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
}
Perguntas frequentes
Schema.org garante rich results?
Não. É pré-requisito mas Google decide. Mesmo sites com schema perfeito podem não ganhar rich results se não tiverem autoridade.
Preciso pagar pra usar Schema.org?
Não. Schema.org é padrão aberto, gratuito, sem royalty. Único custo é tempo pra implementar.
Plugin do WordPress (Rank Math, Yoast) já gera schema?
Gera o básico. Mas o @id cruzado e a estrutura mais profunda raramente. Pra GEO sério, complementa manual.
Qual a diferença entre Article e BlogPosting?
BlogPosting é subtipo de Article. Pra blog use BlogPosting. Pra notícia ou matéria jornalística use NewsArticle.
Se eu errar schema, prejudica meu ranking?
Não, só não ganha rich results. Google ignora schema malformado em silêncio. Mas se for spam (schema mentindo sobre o conteúdo da página), pode penalizar.
Conclusão
Schema.org bem implementado é o que separa site amador de site profissional pra SEO em 2026. Agência sem schema técnico no próprio site não tem autoridade pra cobrar pelo serviço.
Quer que eu audite o schema do seu site? Manda pelo WhatsApp.
Auditoria gratuita do seu site em 24h
Diagnóstico técnico, SEO e GEO completo. Plano de ação priorizado. Sem compromisso, sem cláusula de fidelidade.
Falar com Renan no WhatsApp →
