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