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

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)

validator.schema.org

2. Rich Results Test (Google)

search.google.com/test/rich-results

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.

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