ai

Schema do tipo de conteúdo

O MetricSpot procura um `@type` em JSON-LD que combine com o que a página é — Article, Product, HowTo, FAQPage, etc. Sem ele, os agentes de IA têm de adivinhar.

O que esta verificação faz

Faz parse a cada bloco <script type="application/ld+json"> na página e verifica se pelo menos um declara um @type que combine com o propósito real da página. Um artigo de blog deve declarar Article (ou BlogPosting / NewsArticle); uma página de produto Product; um guia passo-a-passo HowTo; uma página de FAQ FAQPage. Uma página que só emita schema WebPage ou WebSite falha — esses tipos são genéricos demais para dizerem algo útil aos agentes.

Porque é importante

O JSON-LD é o andaime que os agentes de IA e os motores de busca usam para compreender uma página sem fazer parse da prosa. Quando o @type é específico, o ChatGPT, o Perplexity e o Google AI Overviews sabem que campos extrair (headline, author, datePublished para um Article; price, availability, aggregateRating para um Product) e como citar a página nas respostas.

Quando o @type está em falta ou é genérico, o agente recorre a heurísticas sobre o texto do corpo — mais lento, menos preciso e muito mais propenso a saltar a tua página a favor de uma da concorrência mais bem marcada. A mesma lógica aplica-se aos rich results do Google: só tipos específicos desbloqueiam funcionalidades da SERP (estrelas de avaliação, cartões de receita, acordeões FAQ) que aumentam o click-through.

Como corrigir

Escolhe o @type que melhor combina com a página e emite um bloco JSON-LD completo no <head>.

Article / BlogPosting / NewsArticle — para conteúdo editorial. Usa NewsArticle para notícias com data; BlogPosting para posts de blog; o Article simples é o default seguro.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Como ativar o HSTS no nginx",
  "datePublished": "2026-05-11",
  "dateModified": "2026-05-11",
  "author": {
    "@type": "Person",
    "name": "Jane Doe",
    "url": "https://example.com/authors/jane-doe"
  },
  "image": "https://example.com/og/hsts.png",
  "mainEntityOfPage": "https://example.com/blog/hsts"
}
</script>

HowTo — para guias passo-a-passo (receitas, instruções de reparação, tutoriais de configuração). Campos obrigatórios: name, step.

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Ativar o HSTS no nginx",
  "step": [
    { "@type": "HowToStep", "name": "Adiciona o cabeçalho", "text": "Adiciona `add_header Strict-Transport-Security ...` ao teu server block." },
    { "@type": "HowToStep", "name": "Recarrega o nginx", "text": "Corre `nginx -t && systemctl reload nginx`." }
  ]
}

FAQPage — apenas quando a página é genuinamente um Q&A. Vê Schema FAQ para o padrão completo.

Product — para páginas individuais de produto. Inclui offers, aggregateRating, review quando os tiveres.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "MetricSpot Premium",
  "description": "Auditorias ilimitadas, monitorização agendada, relatórios PDF.",
  "brand": { "@type": "Brand", "name": "MetricSpot" },
  "offers": {
    "@type": "Offer",
    "price": "29.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

Next.js — injeta via <Script> do App Router ou um helper de metadata:

import Script from "next/script";

export default function Post() {
  const schema = {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    headline: "Como ativar o HSTS no nginx",
    datePublished: "2026-05-11",
    author: { "@type": "Person", name: "Jane Doe" }
  };
  return (
    <Script id="ld" type="application/ld+json">
      {JSON.stringify(schema)}
    </Script>
  );
}

Astro — define o JSON-LD no <head> do teu layout:

---
const schema = { "@context": "https://schema.org", "@type": "BlogPosting", /* … */ };
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />

WordPress — Yoast SEO, Rank Math e SEOPress emitem todos automaticamente schema Article para posts. Verifica o source renderizado para confirmar que o @type é Article / BlogPosting, e não apenas WebPage. Para páginas de produto, o WooCommerce emite schema Product por defeito.

Depois de publicado, valida com o Rich Results Test do Google e com o Schema Markup Validator. Vê também: Dados estruturados JSON-LD, Schema Organization.

Perguntas frequentes

Uma página pode ter vários blocos @type?

Sim — comum e recomendado. Um post de blog geralmente envia Article + BreadcrumbList + Organization. Cada um vai no seu próprio bloco <script type="application/ld+json">, ou combina-los num array @graph. Não te contradigas (não declares a página como Article e Product ao mesmo tempo).

Devo usar Article ou BlogPosting?

BlogPosting é uma subclasse de Article — ligeiramente mais específico, sem desvantagens. Usa BlogPosting para conteúdo de blog, NewsArticle para notícias datadas, Article para conteúdo editorial evergreen ou guias técnicos. O Google trata-os de forma equivalente para rich results.

E se a minha página não encaixar em nenhum tipo de schema?

Páginas de landing genéricas podem ficar em WebPage — esta verificação assinala-o como aviso leve em vez de falha dura. Mas a maioria dos casos “não encaixa” encaixa de facto em alguma coisa: uma página de preços é Product ou Service, uma página sobre é AboutPage, uma página de contacto é ContactPage. Consulta a lista completa de tipos do schema.org antes de recorreres ao WebPage.

Fontes

Última atualização 2026-05-11