SEO Técnico
Google News e Top Stories, o que de fato decide aparecer
Candidatura ao Google News acabou em 2019, AMP deixou de ser obrigatório em 2021, e Top Stories nem usa o índice do Google News. As 12 coisas que decidem indexação rápida e citação em carrossel, com news-sitemap dinâmico, schema completo e hook de IndexNow no publish.
· 14 min de leitura
Resposta curta: Google News e Top Stories são dois produtos distintos. Top Stories é onde está 90% do tráfego de notícia, usa o índice principal do Google e não exige aprovação em lugar nenhum. Pra entrar, o que decide é news-sitemap dinâmico das últimas 48h, schema NewsArticle com datePublished/dateModified em ISO 8601 com timezone, autoria com sameAs apontando pra perfil real, SSR do schema, link da home pra URL nova, três aspect ratios de imagem, e hook automático de IndexNow + URL Inspection API no publish.
Resposta detalhada: a maior parte do que se lê em PT-BR sobre Google News é de 2019 a 2022, fala de candidatura (acabou) e AMP (deixou de ser obrigatório em junho/2021). O que realmente move ponteiro hoje é (1) entender que Top Stories usa o índice normal e Google News usa um índice próprio, (2) news-sitemap separado com regra dura de 48h, (3) NewsArticle renderizado server-side, não client-side, (4) consistência entre header HTTP Last-Modified e dateModified do JSON-LD (quando divergem, Google ignora), (5) imagem em 16:9, 4:3 e 1:1 porque cada superfície escolhe diferente, (6) crawl budget priorizado pra URLs frescas via robots.txt agressivo nos arquivos antigos, (7) janela de relevância em horas, então hook de IndexNow + URL Inspection API no publish_post é não-negociável.
A confusão que custa caro, Google News ≠ Top Stories ≠ Discover
Três produtos diferentes, três caminhos pra otimizar. Misturar os três é o motivo mais comum de cliente reclamar que "investiu em Google News e não viu retorno".
Google News é o app/aba dedicada (news.google.com). Tem índice próprio, audiência menor mas qualificada (jornalistas, analistas, gente que já busca notícia direto). Pra entrar, configurar Publisher Center ajuda, mas não é obrigatório desde 2019.
Top Stories é o carrossel que aparece no SERP normal do google.com em queries de notícia. Usa o índice principal do Google, não o índice do Google News. Não tem candidatura, é elegibilidade técnica. É onde está cerca de 90% do tráfego de news em sites comerciais.
Discover é o feed mobile no app do Google e na home do Chrome Android. Não é busca, é recomendação. Otimização separada (imagem grande de alta qualidade pesa mais, intent não importa). Discover entrega volume de tráfego de marca como nenhum outro canal, mas é instável.
Implicação prática: se o seu blog é de marca (não veículo), foque Top Stories e Discover. Google News dedicado é pra portal puro-sangue.
O que mudou desde 2019, e os guides desatualizados não contam
Antes de qualquer checklist, descarte mentalmente o que ficou pra trás:
- Candidatura ao Google News acabou em dezembro/2019. Hoje é auto-discovery via crawl. Quem ainda vende "aprovação no Google News" tá vendendo placebo.
- AMP deixou de ser obrigatório no Top Stories em junho/2021. Continua funcional, mas não dá mais boost. Se você ainda mantém AMP só por isso, pode tirar.
- Standout markup foi descontinuado. Não use, ignora silenciosamente.
- Subscriber-only content via structured data substitui o cloaking pra paywall. Use
isAccessibleForFree+cssSelectorapontando pro bloco premium. - IndexNow virou caminho prático pra acelerar descoberta. Bing aceita oficialmente, Google ainda não confirma, mas vale o ping pelo custo zero.
News-sitemap, a regra dura de 48 horas
O sitemap de notícias é separado do principal e tem três regras que não podem ser quebradas:
- Só URLs publicadas nas últimas 48 horas. URL com mais que isso é ignorada e queima a confiança no arquivo. Se o sitemap consistentemente serve URLs velhas, Google reduz frequência de leitura.
- No máximo 1.000 URLs por arquivo. Acima disso, divide em sitemap-index dedicado pra news.
- Atualizar a cada publicação. Sitemap de news estático que regenera de hora em hora perde 30 a 50 minutos de janela em cada matéria. Em news, isso é a diferença entre entrar no Top Stories ou não.
Estrutura mínima do XML:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>https://exemplo.com.br/noticia/slug-da-materia/</loc>
<news:news>
<news:publication>
<news:name>Nome do Veículo</news:name>
<news:language>pt</news:language>
</news:publication>
<news:publication_date>2026-05-08T09:30:00-03:00</news:publication_date>
<news:title>Título exato da matéria</news:title>
</news:news>
</url>
</urlset>No WordPress, o gerador dinâmico vive como rota custom registrada via add_rewrite_rule, com query filtrando posts dos últimos dois dias. Um esqueleto:
add_action('init', function () {
add_rewrite_rule('^news-sitemap\.xml$', 'index.php?news_sitemap=1', 'top');
});
add_filter('query_vars', fn($v) => array_merge($v, ['news_sitemap']));
add_action('template_redirect', function () {
if (!get_query_var('news_sitemap')) return;
header('Content-Type: application/xml; charset=UTF-8');
$posts = get_posts([
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1000,
'date_query' => [['after' => '48 hours ago']],
]);
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" '
. 'xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">';
foreach ($posts as $p) {
$date = get_the_date('c', $p);
printf(
'<url><loc>%s</loc><news:news>'
. '<news:publication><news:name>%s</news:name>'
. '<news:language>pt</news:language></news:publication>'
. '<news:publication_date>%s</news:publication_date>'
. '<news:title>%s</news:title></news:news></url>',
esc_url(get_permalink($p)),
esc_html(get_bloginfo('name')),
esc_html($date),
esc_html(get_the_title($p))
);
}
echo '</urlset>';
exit;
});Em Next.js, a mesma lógica vive num route handler em app/news-sitemap.xml/route.ts com revalidate baixo (60 segundos é razoável) e o mesmo filtro de 48h aplicado à fonte de dados.
NewsArticle schema, o que importa de verdade
Schema Article serve pra blog post comum. Pra matéria de notícia, use NewsArticle ou ReportageNewsArticle (esse último pra reportagem original). O motor distingue, e Top Stories prioriza explicitamente NewsArticle.
Os campos que decidem inclusão:
datePublishededateModifiedem ISO 8601 com timezone.2026-05-08T09:30:00-03:00e não2026-05-08. Sem timezone, Google trata como UTC e a matéria parece ter sido publicada três horas antes ou depois do que de fato.authorcomoPersoncom@idesameAs. Apontar pra página de autor interna e perfis externos verificáveis (LinkedIn, X). Mais sobre isso na seção de E-E-A-T.publishercom logo em URL pública direta. Não pode ser CDN com auth, não pode ser sprite, não pode ser imagem por trás de redirect. Proporção máxima 600x60px.imagecomo array com três aspect ratios. 16:9, 4:3, 1:1. Detalhe na seção dedicada.headlinecom no máximo 110 caracteres. Regra silenciosa, headline maior que isso pode ser ignorada e Google usa otitletag.articleSectioncom a editoria principal (Saúde, Tecnologia, Negócios). Reforça contexto temático.
JSON-LD canônico pra colar no <head>:
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Título exato com no máximo 110 caracteres",
"datePublished": "2026-05-08T09:30:00-03:00",
"dateModified": "2026-05-08T09:30:00-03:00",
"author": {
"@type": "Person",
"@id": "https://exemplo.com.br/autores/maria-silva/#person",
"name": "Maria Silva",
"url": "https://exemplo.com.br/autores/maria-silva/",
"sameAs": [
"https://www.linkedin.com/in/mariasilvarealperfil/",
"https://twitter.com/mariasilvareal"
]
},
"publisher": {
"@type": "Organization",
"name": "Nome do Veículo",
"logo": {
"@type": "ImageObject",
"url": "https://exemplo.com.br/logo-publisher.png",
"width": 600,
"height": 60
}
},
"image": [
"https://exemplo.com.br/img/materia-16x9.jpg",
"https://exemplo.com.br/img/materia-4x3.jpg",
"https://exemplo.com.br/img/materia-1x1.jpg"
],
"articleSection": "Saúde",
"description": "Resumo de 150 a 160 caracteres",
"mainEntityOfPage": "https://exemplo.com.br/noticia/slug-da-materia/"
}Os contra-intuitivos, onde a maioria queima sem perceber
1. Top Stories e AI Overviews disputam o mesmo pixel
Quando AI Overview dispara numa query, o carrossel de Top Stories costuma sumir ou descer pra abaixo da dobra. Isso muda a estratégia: otimizar pra Top Stories em queries informacionais virou jogo perdedor. O ouro hoje é query transacional, query local, query de evento (eleição, jogo, lançamento) e breaking news verdadeira, onde AIO ainda não dispara por questão de latência e responsabilidade. Mapeie suas queries por SERP feature antes de investir.
2. A trap do dateModified
Atualizar uma matéria já publicada perde freshness. Google trata como "republished" e a matéria pode sair do Top Stories antes do esperado. Estratégia contra-intuitiva pra atualização substancial: republicar em URL nova com 301 da antiga, preservando sinal de "matéria nova" no índice de news. Pra correção pequena (typo, ajuste factual), atualizar in-place está ok, mas não inflar dateModified pra ganhar boost, é detectado e penaliza.
3. Last-Modified do header HTTP vence o dateModified do schema
Quando os dois divergem, Google prioriza o header HTTP. WordPress com cache mal configurado serve a página com header de duas horas atrás enquanto o JSON-LD diz que foi atualizada agora. Resultado, Google ignora a "atualização" e a notícia perde freshness sem ninguém perceber.
Cheque o header com curl -I https://exemplo.com.br/materia/. Se o Last-Modified não bate com a data real do post, é problema de cache. Em WordPress, o hook publish_post precisa fazer purge da página, do feed RSS e do news-sitemap em uma operação atômica.
4. O período de quarentena não-documentado
Domínios novos não entram em Top Stories nas primeiras quatro a oito semanas mesmo fazendo tudo certo do lado técnico. Não está em nenhuma documentação oficial, mas é consistente em casos observados. Importante setar expectativa do cliente, "vamos publicar com tudo certo desde o dia 1, mas o tráfego de Top Stories só começa a aparecer no segundo mês".
5. Mobile-first crawler + schema client-side = invisível
Se o seu schema NewsArticle é injetado por JavaScript depois do DOMContentLoaded, o Googlebot mobile pode não pegar pra Top Stories. SSR ou SSG do JSON-LD não é luxo, é requisito. Em Next.js, isso significa renderizar via metadata API ou inline no componente do server. Em WordPress, hookar em wp_head com echo direto, não enfileirar script.
Os subestimados, sinais que pesam mais do que parecem
Imagem em três aspect ratios não é vaidade
Cada superfície do Google escolhe um aspect ratio diferente:
- Top Stories desktop usa 4:3 ou 16:9.
- Top Stories mobile usa 16:9.
- Discover usa 1:1 ou imagens largas com no mínimo 1200px de largura, marcadas com
max-image-preview:large. - Google News app usa thumbnail quadrado.
Faltar uma proporção = sumir daquela superfície. Em editor WordPress, isso vira upload obrigatório de três variações no momento do publish, ou um pipeline de geração automática via Sharp/ImageMagick a partir de uma master image.
Link da homepage pro novo post é mais forte que IndexNow
Internal link da home pra URL recém-publicada é um dos sinais mais fortes de "isso é breaking, indexa agora". Por isso todo portal de notícia tem bloco "últimas notícias" no header, não é UX, é arquitetura de SEO de news. Se a sua home tem cinco notícias visíveis, o sexto post fica órfão até alguém clicar na categoria. Implicação: bloco dinâmico de últimas dez ou últimas quinze, com link direto, sem JS.
sameAs no autor muda ranking
Google verifica se o autor existe fora do site. Person schema com sameAs apontando pra LinkedIn ativo, X ativo e (idealmente) ORCID ou outro perfil profissional ranqueia diferente de byline anônima. Isso cresce em peso quando o tema é YMYL (saúde, finanças, jurídico).
Anti-padrão clássico: criar autores fictícios com bio inventada e foto de stock. Detectado por reverse image search e por ausência de pegada externa. Resultado: rebaixamento do domínio inteiro, não só da matéria.
Velocidade de TTFB importa muito mais em news que em web normal
Janela de relevância de uma notícia é em horas, às vezes minutos. Durante surge de tráfego (quebra de notícia grande), Googlebot abandona crawl em sites lentos antes de pegar a matéria. Core Web Vitals não captura isso, porque CWV é métrica do usuário final pós-cache; o que importa pra crawler de news é TTFB de origem em pico de tráfego. Stress test antes do próximo evento previsível.
Os ignorados, onde tem alavanca grande
Crawl budget priorizado pra URLs frescas
Em sites grandes, Googlebot perde tempo em paginação infinita, tag pages, archive de autor e parâmetros de filtro. Cada URL não-news que ele crawleia é uma URL fresca que ele não crawleia. Robots.txt agressivo bloqueando tudo que não é matéria libera budget pra news:
User-agent: *
Disallow: /tag/
Disallow: /author/
Disallow: /page/
Disallow: /*?s=
Disallow: /*?page=
Disallow: /*?utm_
Sitemap: https://exemplo.com.br/sitemap.xml
Sitemap: https://exemplo.com.br/news-sitemap.xmlEm sites com volume editorial alto (algumas centenas de matérias por dia), essa é a diferença entre indexar matéria nova em 30 minutos ou em 6 horas.
Site Reputation Abuse Policy (mar/2024)
Política do Google que pune marca publicando conteúdo "parasita" sob domínio principal pra rankear em temas que não tem a ver com a marca core. Relevante pra qualquer SaaS ou B2B que decide criar /noticias/ pra capturar tráfego informacional sem ter linha editorial real. Aplicada com mão pesada desde maio/2024.
Como evitar, três regras: (1) o conteúdo precisa ser produzido por equipe interna ou parceiros com vínculo declarado, não por agência terceirizada por palavra; (2) tema precisa ter nexo com a área de atuação da marca; (3) autoria real, com bio e credencial verificáveis.
CDN cache servindo dateModified velho
Cenário comum: você atualiza a matéria, a origem tem o JSON-LD novo, mas o CDN serve a versão cacheada com dateModified antigo por mais 10 minutos. Google entra, vê inconsistência entre header HTTP Last-Modified (que veio do CDN) e dateModified do schema (idem, velho), e a "atualização" vira fantasma.
Solução: hook automático de purge no publish_post e save_post chamando a API do CDN (Cloudflare, Fastly, BunnyCDN) pra invalidar a URL específica e o news-sitemap. Sem manual.
Search Console, aba "Notícias" em tipo de busca
Em Performance → tipo de busca, existe a opção "Notícias" separada de "Web". Quase ninguém olha. Mostra exatamente queries que trouxeram tráfego do Google News (não Top Stories, esse aparece em Web). Use pra calibrar editoria, identificar tópicos com tração e cortar tópicos com zero retorno.
Velocidade publish-to-index, onde a corrida é decidida
Em news, o ranking é decidido em 30 minutos a 2 horas após publicação. Quem chega depois pega o resto. Três alavancas pra acelerar descoberta:
- Ping de news-sitemap via
https://www.google.com/ping?sitemap=https://exemplo.com.br/news-sitemap.xml. Ainda funciona pra news (deixou de funcionar pra sitemap normal em 2023). - URL Inspection API do Search Console, força recrawl programático da URL específica.
- IndexNow via Bing (oficial) e via Yandex. Google ainda não confirma uso, mas o ping é gratuito e cobre Bing News, que tem distribuição via Microsoft Start.
Hook em WordPress que dispara as três no publish:
add_action('publish_post', function ($post_id, $post) {
if ($post->post_type !== 'post') return;
$url = get_permalink($post_id);
// 1. Ping de news-sitemap
wp_remote_get(
'https://www.google.com/ping?sitemap=' . urlencode(home_url('/news-sitemap.xml')),
['timeout' => 5, 'blocking' => false]
);
// 2. IndexNow (Bing)
wp_remote_post('https://api.indexnow.org/indexnow', [
'headers' => ['Content-Type' => 'application/json'],
'body' => wp_json_encode([
'host' => parse_url(home_url(), PHP_URL_HOST),
'key' => INDEXNOW_KEY,
'urlList' => [$url],
]),
'timeout' => 5,
'blocking' => false,
]);
// 3. Purge CDN (exemplo Cloudflare)
wp_remote_post(
'https://api.cloudflare.com/client/v4/zones/' . CF_ZONE . '/purge_cache',
[
'headers' => [
'Authorization' => 'Bearer ' . CF_TOKEN,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode(['files' => [$url, home_url('/news-sitemap.xml')]]),
'timeout' => 5,
'blocking' => false,
]
);
}, 10, 2);URL Inspection API é mais chata (OAuth + biblioteca Google), mas vale pro time de SEO ter um botão de "forçar reindexação" no painel admin pra matéria que não foi pega após 30min.
YMYL pra news, o filtro extra que ninguém comenta
Top Stories aplica filtro de credibilidade mais agressivo em temas YMYL (Your Money or Your Life), saúde, finanças, jurídico, eleição. Não basta ter NewsArticle e bom schema, precisa de:
- Autor com credencial declarada via
hasCredential. Pra saúde, CRM, CRP, CRO ou similar como propriedade doPerson. - Revisor médico/jurídico nomeado e linkado. Schema
reviewedByé underused, mas válido. - Citação de fonte primária. Em saúde, PubMed, Ministério da Saúde, sociedade médica brasileira da especialidade. Em finanças, Banco Central, B3, fonte oficial.
- Data de revisão visível no corpo, não só no schema.
- Política editorial pública. Página explicando processo de revisão e correção.
Conteúdo médico, jurídico ou financeiro sem essa camada raramente entra em Top Stories mesmo fazendo tudo do checklist técnico. E quando entra, sai rápido na primeira reavaliação algorítmica.
Checklist final, em ordem de prioridade
Cole no editorial. Itens 1 a 5 são bloqueadores, 6 a 9 são sinais de força, 10 a 12 são otimização fina.
Bloqueadores
- News-sitemap separado, dinâmico, só URLs das últimas 48h, máximo 1.000 URLs.
NewsArticlerenderizado server-side, comdatePublishededateModifiedem ISO 8601 com timezone.- Author como
PersoncomsameAsapontando pra perfis externos verificáveis. - Imagem em três aspect ratios (16:9, 4:3, 1:1), todas em URL pública direta.
- Header HTTP
Last-Modifiedconsistente comdateModifieddo schema.
Sinais de força
- Hook automático de IndexNow + ping de news-sitemap + purge de CDN no publish.
- Bloco "últimas notícias" na home com link direto, no HTML, sem JS.
- Robots.txt bloqueando paginação, archives e parâmetros de filtro.
- Página de autor por pessoa, com bio real, foto, credencial e link externo.
Otimização fina
- Publisher Center configurado (vale se você quer Google News app).
- Stress test de TTFB de origem em pico de tráfego.
- URL Inspection API exposta como botão admin pra recrawl manual de matérias atrasadas.
O que NÃO vale o esforço em 2026
- AMP. Deprecated pro Top Stories, sem boost. Mantém só se já tem instalado e funciona, não cria novo.
- Standout markup. Descontinuado.
- Re-submeter URLs antigas. Não acelera nada, só queima budget.
- Pagar consultoria que promete "aprovação no Google News". Não existe candidatura desde 2019.
- Schema duplicado pra "garantir". Dois
NewsArticlena mesma página confundem o motor, escolha um e mantenha.
Perguntas frequentes
Meu blog de marca pode aparecer no Top Stories?
Pode. Top Stories não exige ser veículo de notícia, só elegibilidade técnica e tema com tração de news. Marca que publica conteúdo editorial sério em ritmo previsível, com autoria real e schema completo, entra. O risco é a Site Reputation Abuse Policy se o conteúdo for descolado da área de atuação da marca.
Preciso publicar todo dia pra entrar em Top Stories?
Não. Mas precisa de regularidade previsível, três a cinco matérias por semana é suficiente em nicho. Publicar em rajada e sumir queima sinal de "fonte ativa de news". Calendário editorial estável pesa mais que volume.
Quanto tempo até aparecer?
Com tudo certo do lado técnico, descoberta acontece em 5 a 30 minutos por matéria. Inclusão no Top Stories pode levar de 4 a 8 semanas se o domínio é novo (período de quarentena não-documentado). Domínio com histórico bom indexa e aparece no mesmo ciclo.
AMP ainda ajuda?
Não pra ranking, sim pra UX em mobile lento se você não tem CWV verde de outro jeito. Em 2026 é mais fácil resolver CWV de origem do que manter AMP paralelo. Quem cria site novo hoje, não cria com AMP.
Top Stories e AI Overviews vão coexistir?
Coexistem hoje no mesmo SERP, mas competem pelo mesmo espaço acima da dobra. AI Overview tende a aparecer em query informacional ampla, Top Stories em query de notícia recente, evento ou nome próprio. A leitura prática é: monitorar SERP feature por query e escolher pelo que aparece, não pelo que você quer que apareça.
Vale a pena configurar Publisher Center se foco é Top Stories?
Não como prioridade. Publisher Center serve Google News app/aba, que é fração pequena do tráfego de news. Configure se quiser cobrir o canal completo, mas Top Stories não depende disso.
Como meço se entrei no Top Stories?
Search Console em Performance → Aparência da pesquisa filtra por "Notícias" e por "Top Stories" (esse último em "tipos de resultado"). Em paralelo, monitorar logs de servidor por Googlebot-News user-agent dá pista da frequência de leitura. Pra validação manual, rodar conjunto fixo de queries de notícia em janela anônima e verificar presença no carrossel.
Pra fechar a trilha técnica, o guia de sitemap dinâmico em escala resolve o sitemap principal (separado do news-sitemap), e o guia de Core Web Vitals em WordPress cobre a base de TTFB e renderização que o Top Stories assume como ponto de partida.