Blog

SEO 8 min de leitura

Dados estruturados JSON-LD: exemplos prontos para uso e um gerador PHP

JSON-LD é o formato recomendado pelo Google para dados estruturados. Este guia explica o que marcar, mostra exemplos prontos para cópia dos tipos mais úteis schema.org e o pequeno padrão PHP que usamos para gerar marcações válidas em cada página sem escrever JSON à mão.

Imagem de capa: Dados estruturados JSON-LD: exemplos prontos para uso e um gerador PHP

Em resumo

  • JSON-LD é um bloco <script type="application/ld+json"> na página que o descreve para máquinas, usando o vocabulário schema.org.
  • Marque apenas o que os usuários podem ver na página. A marcação que não corresponde ao conteúdo arrisca uma ação manual e não ganha nada.
  • Comece com Organization, BreadcrumbList e Article ou Product; adicione FAQPage, Service ou LocalBusiness onde eles couberem.
  • Gere JSON em PHP a partir de arrays com json_encode, um @graph por página, com valores @id estáveis.
  • Valide modelos com o Rich Results Test e o Schema Markup Validator e monitore os relatórios de melhorias Search Console.

Os dados estruturados JSON-LD são uma forma de informar aos motores de busca, de forma legível por máquina, o que é uma página: um artigo, um produto com um preço, uma empresa com dados de contato, uma lista de perguntas e respostas. É invisível para os visitantes, não substitui um bom conteúdo e por si só não aumenta a classificação. O que ele faz é tornar uma página elegível para resultados aprimorados, ajudar os mecanismos a conectar suas páginas à entidade certa e fornecer à pesquisa baseada em IA uma fonte mais limpa para leitura. Nós o geramos em todas as páginas do integrono.com e de nossos demais sites, e este guia é a versão prática desse trabalho.

JSON-LD vs Microdata vs RDFa

O vocabulário do Schema.org pode ser incorporado em três sintaxes. Microdata e RDFa colocam atributos em suas tags HTML, o que confunde a marcação com os modelos. JSON-LD reside em um bloco de script, separado do layout, por isso é mais fácil de gerar, testar e alterar. O Google afirma que recomenda JSON-LD e é o que usamos em todos os lugares.

Princípios antes de exemplos

  • Descreva o conteúdo visível. Se o preço, classificação ou FAQ não estiver na página, não coloque na marcação.
  • Use URLs absolutos e o URL canônico da página.
  • Preencha as propriedades obrigatórias e adicione as recomendadas quando tiver dados reais.
  • Use @id para vincular entidades. O autor do artigo é a organização definida uma vez com um @id, e não uma nova cópia a cada vez.
  • Use datas na ISO 8601 (2026-10-28 ou com hora e fuso horário).
  • Não invente avaliações ou classificações. Dados falsos AggregateRating são uma causa comum de ações manuais.

Exemplo 1. Organização (e site)

Coloque isso na página inicial ou em um gráfico de todo o site. Ele define a entidade à qual outra marcação se refere.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Example Studio",
  "url": "https://example.com/",
  "logo": "https://example.com/images/logo.png",
  "email": "[email protected]",
  "sameAs": [
    "https://github.com/example",
    "https://www.linkedin.com/company/example"
  ]
}

Exemplo 2. BreadcrumbList

A marcação breadcrumb permite que o Google mostre o caminho da página em vez de um URL bruto nos resultados. Deve corresponder às migalhas visíveis.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/"},
    {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog"},
    {"@type": "ListItem", "position": 3, "name": "JSON-LD guide", "item": "https://example.com/blog/json-ld-guide"}
  ]
}

Exemplo 3. Artigo

Para postagens de blog e guias. As propriedades que importam: título, datas, autor, editor, imagem e URL da página.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "JSON-LD structured data: examples",
  "description": "Short summary of the article.",
  "url": "https://example.com/blog/json-ld-guide",
  "mainEntityOfPage": "https://example.com/blog/json-ld-guide",
  "inLanguage": "en",
  "datePublished": "2026-08-23",
  "dateModified": "2026-10-28",
  "author": {"@id": "https://example.com/#organization"},
  "publisher": {"@id": "https://example.com/#organization"},
  "image": {"@type": "ImageObject", "url": "https://example.com/images/blog/json-ld.webp", "width": 1200, "height": 630}
}

Altere dateModified somente quando o conteúdo realmente mudar. Acertar em cada implantação é uma maneira silenciosa de perder a confiança.

Exemplo 4. Produto com Oferta

Para páginas de produtos com preço visível. Incluir disponibilidade e moeda; adicione aggregateRating ou review apenas se comentários reais forem mostrados na página.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example product",
  "description": "What it is and who it is for.",
  "image": ["https://example.com/images/product.webp"],
  "sku": "EX-001",
  "brand": {"@type": "Brand", "name": "Example"},
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/product/ex-001",
    "priceCurrency": "EUR",
    "price": "49.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

Exemplo 5. Serviço com Oferta

Para serviços pagos, como auditoria de preço fixo ou consulta por hora. Usamos esse padrão em nossas próprias páginas de serviço.

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Architecture review",
  "serviceType": "Software architecture analysis",
  "provider": {"@id": "https://example.com/#organization"},
  "areaServed": "Worldwide",
  "offers": {
    "@type": "Offer",
    "price": "200",
    "priceCurrency": "EUR",
    "url": "https://example.com/services/architecture-review"
  }
}

Exemplo 6. Página de perguntas frequentes

A marcação de FAQ descreve uma lista de perguntas e respostas visíveis na página. Esteja ciente de que, desde 2023, o Google mostra resultados aprimorados de perguntas frequentes apenas para um conjunto limitado de sites confiáveis, portanto, não espere respostas expansíveis nos resultados. A marcação ainda é válida, ainda pode ser lida por outros mecanismos de pesquisa e sistemas de IA, e mantém o FAQ estruturado de forma que as máquinas possam citar.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need structured data to rank?",
      "acceptedAnswer": {"@type": "Answer", "text": "No. It is not a ranking requirement, but it can make pages eligible for rich results."}
    }
  ]
}

Combine tudo em um @graph

Uma página raramente possui apenas uma entidade. Coloque todos eles em um script usando @graph e consulte as entidades compartilhadas por @id:

{
  "@context": "https://schema.org",
  "@graph": [
    {"@type": "Organization", "@id": "https://example.com/#organization", "name": "Example Studio"},
    {"@type": "Article", "headline": "...", "author": {"@id": "https://example.com/#organization"}},
    {"@type": "BreadcrumbList", "itemListElement": []},
    {"@type": "FAQPage", "mainEntity": []}
  ]
}

Gerando JSON-LD com segurança em PHP

Não concatene JSON manualmente. Uma citação em um título quebra todo o script e o mecanismo de pesquisa a ignora silenciosamente. Construa um array PHP e codifique-o. Duas bandeiras são importantes: manter o Unicode legível e proteger o contexto HTML escapando de barras e tags.

function jsonLdScript(array $graph): string
{
    $data = ['@context' => 'https://schema.org', '@graph' => $graph];
    $json = json_encode(
        $data,
        JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP | JSON_THROW_ON_ERROR
    );
    return '<script type="application/ld+json">' . $json . '</script>';
}

$graph = [
    ['@type' => 'Organization', '@id' => $site . '/#organization', 'name' => 'Example Studio', 'url' => $site . '/'],
    [
        '@type'         => 'Article',
        'headline'      => $title,
        'url'           => $canonical,
        'datePublished' => $published,
        'dateModified'  => $modified,
        'author'        => ['@id' => $site . '/#organization'],
    ],
];
echo jsonLdScript($graph);

JSON_HEX_TAG transforma < e > em sequências de escape para que o conteúdo do usuário nunca possa fechar a tag de script antecipadamente. Alimente o gerador com os mesmos dados que renderizam a página (título, preço, datas), para que a marcação e o conteúdo visível não possam se separar. Em um site multilíngue, traduza os campos de texto e defina inLanguage por localidade; é assim que os artigos deste blog e a marcação de FAQ são produzidos.

Validar e monitorar

  1. Rich Results Test para elegibilidade dos tipos de pesquisa aprimorada do Google.
  2. Schema Markup Validator para sintaxe geral schema.org de qualquer tipo.
  3. Relatórios de melhorias Search Console (localização atual, produtos, perguntas frequentes e assim por diante) para erros e avisos em grande escala, depois que o Google rastreou suas páginas.
  4. Um teste de unidade que renderiza cada modelo e verifica se o JSON-LD analisa e contém as chaves necessárias evita regressões após refatorações.

Erros que custam caro

  • Marcação para conteúdo que não está na página (FAQ ocultas, classificações inventadas, preços diferentes do preço visível).
  • Vários blocos conflitantes de um plugin e um modelo, cada um com uma Organization diferente.
  • URLs relativos, datas erradas ou @id ausente.
  • JSON quebrado devido à construção manual de strings e aspas sem escape.
  • Tratar o esquema como um truque de classificação. É uma ferramenta de clareza; a página ainda precisa merecer uma classificação.

Como podemos ajudar

Os dados estruturados são uma parte do nosso trabalho técnico de SEO: projetamos o esquema para seus modelos, implementamos o gerador em sua pilha e configuramos a validação para que permaneça correta após os lançamentos. Se você quiser uma visão geral do que está errado em seu site, comece com nossa lista de verificação técnica de auditoria de SEO ou agende uma consulta.

Perguntas frequentes

O que são dados estruturados JSON-LD ?

JSON-LD é um bloco de script que contém dados schema.org no formato JSON que descreve o conteúdo de uma página para mecanismos de pesquisa, por exemplo, um artigo, produto, organização ou FAQ.

Os dados estruturados melhoram as classificações?

Não diretamente. Ajuda os mecanismos de pesquisa a entender a página e pode torná-la elegível para resultados aprimorados, o que pode melhorar a taxa de cliques, mas não é um requisito de classificação.

Onde coloco o script JSON-LD ?

Em qualquer lugar no cabeçalho ou corpo HTML da página; a maioria dos sites coloca isso na cabeça. Ele deve estar presente no HTML renderizado que o Google busca, portanto a geração no lado do servidor é a abordagem mais segura.

Ainda vale a pena adicionar a marcação FAQPage?

O Google agora mostra resultados aprimorados de FAQ apenas para um conjunto limitado de sites, mas a marcação de FAQ válida permanece legível por outros mecanismos de pesquisa e sistemas de IA. Adicione-o apenas para perguntas e respostas visíveis na página.

Como faço para testar dados estruturados?

Use Rich Results Test do Google para resultados aprimorados qualificados, o Schema Markup Validator para sintaxe geral e os relatórios de aprimoramento Search Console para rastrear erros em todo o site.

Chamada de descoberta gratuita

Traga uma stack desordenada ou uma integração parada - a Integrono mapeia o primeiro passo mais inteligente.

Recebe uma leitura senior sobre armadilhas de orçamento, dependências e se convém comprar, colar ou construir - antes de começar o trabalho pago. O CEO permanece no loop.