Resumo rápido
  • 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:

  1. Schema Markup Validator (schema.org/validator) — valida sintaxe e tipo
  2. Rich Results Test (search.google.com/test/rich-results) — mostra se o Google reconhece e quais rich results você pode ganhar
  3. 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:

<head>
  <!-- ... outras meta tags ... -->
  <script type="application/ld+json">
    {"@context":"https://schema.org","@graph":[...]}
  </script>
</head>

Erros comuns que invalidam schema

  1. URL no @id que não existe — sempre real, não placeholder
  2. JSON com vírgula trailing (,] antes de fechar) — JS aceita, JSON puro não
  3. Aspas curvas em vez de retas (" vs ") — colar de Word quebra
  4. Tipo errado ("Person" minúsculo em vez de "Person") — case sensitive
  5. @id duplicado dentro do mesmo @graph — cada @id deve ser único no grafo
  6. 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.

Pronto pra começar?

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 →
Resposta em até 24h · Sem compromisso · 100% remoto
Renan Farinácio
Escrito por
Renan Farinácio

Founder da SkylineLab. Especialista em SEO técnico, GEO (Generative Engine Optimization) e agentes de IA. Content creator com mais de 4 milhões de horas assistidas no YouTube.

LinkedIn Instagram