- BlogPosting é o schema mais importante de qualquer blog — viabiliza Article rich results no Google e citação por IAs
- Mínimo válido: headline, image, datePublished, author (Person). Recomendado: + dateModified, publisher, mainEntityOfPage
- Combinar BlogPosting + FAQPage no mesmo @graph duplica o espaço visual na SERP
BlogPosting é o schema mais importante pra qualquer blog. Sem ele, seu artigo perde rich results no Google e fica invisível pra ChatGPT, Perplexity e Gemini. Esse guia mostra o código completo, valida cada campo e ensina a implementar em WordPress sem plugin.
O que é BlogPosting
BlogPosting é um subtipo de Article no Schema.org criado especificamente pra posts de blog. Em maio de 2026, o Google reconhece BlogPosting pra:
- Article rich results (cartão visual com imagem grande na SERP)
- Top stories carousel (em queries de notícia)
- Site links search box (busca interna dentro do resultado)
- AI Overviews citations (citação em respostas Gemini)
- Featured snippets (resposta destacada)
E pra LLMs (ChatGPT, Perplexity, Claude), BlogPosting com @id e author cruzado é o que viabiliza citação direta.
Estrutura mínima válida
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Título exatamente como aparece na página",
"image": "https://seusite.com/imagem-destaque.webp",
"datePublished": "2026-05-14T09:00:00-03:00",
"author": {
"@type": "Person",
"name": "Nome do Autor"
}
}
Isso é o bare minimum que o Google aceita. Mas pra rich results, precisa mais.
Estrutura completa (recomendada)
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://seusite.com/post-slug/#article",
"headline": "Título do Post (máximo 110 caracteres)",
"alternativeHeadline": "Subtítulo opcional",
"description": "Meta description do post em 120-155 caracteres",
"image": [
{
"@type": "ImageObject",
"url": "https://seusite.com/imagem-16x9.webp",
"width": 1200,
"height": 675
},
{
"@type": "ImageObject",
"url": "https://seusite.com/imagem-4x3.webp",
"width": 1200,
"height": 900
},
{
"@type": "ImageObject",
"url": "https://seusite.com/imagem-1x1.webp",
"width": 1200,
"height": 1200
}
],
"datePublished": "2026-05-14T09:00:00-03:00",
"dateModified": "2026-05-14T09:00:00-03:00",
"author": {
"@type": "Person",
"@id": "https://seusite.com/sobre/#autor",
"name": "Renan Farinácio",
"url": "https://seusite.com/sobre/"
},
"publisher": {
"@type": "Organization",
"@id": "https://seusite.com/#organization",
"name": "SkylineLab",
"logo": {
"@type": "ImageObject",
"url": "https://seusite.com/logo.png",
"width": 512,
"height": 512
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://seusite.com/post-slug/"
},
"articleSection": "SEO",
"keywords": ["seo", "schema.org", "blogposting"],
"wordCount": 1850,
"inLanguage": "pt-BR",
"isPartOf": {
"@type": "Blog",
"@id": "https://seusite.com/blog/#blog",
"name": "Blog SkylineLab"
}
}
Campos explicados um por um
Obrigatórios
| Campo | Descrição | Exemplo |
|---|---|---|
@context |
Sempre “https://schema.org” | “https://schema.org” |
@type |
“BlogPosting” | “BlogPosting” |
headline |
Título visível, ≤ 110 chars | “Schema BlogPosting…” |
image |
URL absoluta da imagem destaque | “https://…” |
datePublished |
ISO 8601 com timezone | “2026-05-14T09:00:00-03:00” |
author |
Person com name | { “@type”: “Person”, “name”: “…” } |
Altamente recomendados
| Campo | Por quê |
|---|---|
@id |
Pra cross-referencing dentro do site |
dateModified |
Google prioriza conteúdo atualizado |
publisher |
Mostra a empresa por trás do post |
mainEntityOfPage |
Ajuda Google entender que esse é o artigo principal da URL |
description |
Resumo pra rich results |
image em múltiplos aspect ratios |
Maior chance de rich result |
Opcionais mas valiosos
| Campo | Função |
|---|---|
articleSection |
Categoria/seção |
keywords |
Lista de palavras-chave |
wordCount |
Indica densidade do artigo |
inLanguage |
Especifica idioma |
isPartOf |
Linka ao Blog (entidade pai) |
articleBody |
Texto do post (raramente vale o peso) |
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 adicionar no WordPress
Opção 1: Rank Math (plugin)
Rank Math adiciona BlogPosting automaticamente se você tiver:
1. Pillar tag preenchida
2. Autor configurado no post
3. Imagem destacada definida
Pra customizar campos extras, vai em Rank Math → Configurações → Schema Templates → BlogPosting.
Limitação: Rank Math não adiciona @id cruzado entre Person e Organization. Pra isso, complementa manual.
Opção 2: Manual no functions.php (avançado)
Adiciona no functions.php do tema child:
add_action('wp_head', function() {
if (!is_single()) return;
global $post;
$author_id = $post->post_author;
$schema = [
'@context' => 'https://schema.org',
'@type' => 'BlogPosting',
'@id' => get_permalink() . '#article',
'headline' => get_the_title(),
'image' => get_the_post_thumbnail_url($post, 'full'),
'datePublished' => get_the_date('c'),
'dateModified' => get_the_modified_date('c'),
'author' => [
'@type' => 'Person',
'@id' => home_url('/sobre/#autor'),
'name' => get_the_author_meta('display_name', $author_id),
'url' => home_url('/sobre/')
],
'publisher' => [
'@type' => 'Organization',
'@id' => home_url('/#organization')
],
'mainEntityOfPage' => get_permalink(),
'description' => get_the_excerpt(),
'wordCount' => str_word_count(strip_tags(get_the_content())),
'inLanguage' => 'pt-BR'
];
echo '<script type="application/ld+json">'
. wp_json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)
. '</script>';
});
Opção 3: Tema custom em HTML puro
Se você desenvolve seu próprio tema (sem page builder), adiciona o JSON-LD direto no <head> do template single.php.
Validação obrigatória
Antes de publicar, sempre valida em:
1. Schema Markup Validator (sintaxe)
- Cola URL ou JSON
- Não pode ter erros
- Warnings analisar caso a caso
2. Rich Results Test (Google)
search.google.com/test/rich-results
- Mostra se o Google reconhece
- Identifica qual rich result é elegível
- Aponta campos faltantes pra rich result completo
3. URL Inspection no GSC
GSC → Inspecionar URL → “Live Test” → veja a renderização e dados estruturados detectados.
Rich results que BlogPosting pode ganhar
1. Article rich result (mais comum)
Cartão visual com:
– Imagem grande
– Título do artigo
– Nome do autor
– Data de publicação
– Logo do site
Aumenta CTR em 20-30% em média.
2. Top Stories carousel
Pra queries de notícia, BlogPosting com datePublished recente pode entrar.
3. AI Overviews citation
Quando AI Overview responde uma pergunta, BlogPosting bem estruturado tem 3-5x mais chance de ser citado como fonte.
4. Featured snippet
Não depende só de schema, mas BlogPosting com FAQ embutido (FAQPage juntos) maximiza chance.
Erros comuns
1. Author como string em vez de Person object
"author": "Renan Farinácio"
❌ Google aceita mas LLMs ignoram. Sempre use objeto Person.
2. Imagem sem dimensões
"image": "https://..."
✅ Vai funcionar mas perde aspect ratio matching:
"image": {
"@type": "ImageObject",
"url": "https://...",
"width": 1200,
"height": 675
}
3. datePublished sem timezone
"datePublished": "2026-05-14"
❌ Google aceita mas LLMs preferem ISO 8601 completo:
"datePublished": "2026-05-14T09:00:00-03:00"
4. dateModified = datePublished sempre
Quando você não atualiza o post, dateModified igual ao published mostra que o conteúdo está estagnado. Quando atualizar, mude o dateModified.
5. Publisher.logo sem dimensões
Google exige logo com altura mínima de 60px e proporção até 600×60px. Logo quadrado 512×512 funciona universal.
BlogPosting + FAQPage juntos
Pra artigos com FAQ no final, combina os dois schemas:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"@id": "https://seusite.com/post-slug/#article",
...
},
{
"@type": "FAQPage",
"@id": "https://seusite.com/post-slug/#faq",
"mainEntity": [
{
"@type": "Question",
"name": "Pergunta?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Resposta."
}
}
]
}
]
}
Resultado: rich result Article + FAQ accordion na SERP. Duplica espaço visual.
Perguntas frequentes
Posso usar Article em vez de BlogPosting?
Pode. BlogPosting é subtipo, herda tudo de Article. Pra posts de blog, BlogPosting é semanticamente mais preciso.
Plugin Rank Math sobrescreve meu schema manual?
Pode. Pra evitar conflito, desativa schema do Rank Math pra posts ou customiza tudo lá.
Quantas imagens listar no array image?
3 é o ideal (16:9, 4:3, 1:1). Google pega a melhor pro contexto.
Schema duplicado prejudica?
Se for o mesmo @id duplicado, Google escolhe um. Se for content schemas conflitantes (BlogPosting + Article na mesma URL), pode confundir. Use só um por URL.
Quanto tempo até o Google reconhecer o schema novo?
Depois do próximo crawl: 24-72h. Pra acelerar: GSC → Inspecionar URL → Solicitar Indexação.
Conclusão
BlogPosting bem implementado é o que separa blog que ganha tráfego orgânico de blog que fica invisível. Em 2026, fazer só meta description não basta.
A SkylineLab implementa o stack schema completo em todos os projetos. Auditoria gratuita do schema do seu site.
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 →
