NewsArticle
The NewsArticle schema type identifies journalistic content — breaking news, analysis, opinion, and investigative reporting. It is the gateway to Google News surfaces, the Top stories carousel, and prominent citation in AI overviews.
About NewsArticle
For Top stories eligibility Google requires three image aspect ratios (16x9, 4x3, and 1x1) at ≥ 1200 px wide, plus a clearly attributed author and publisher. Always include dateModified when an article is updated — this is the primary signal Google uses to refresh listings. For clearly subjective columns and op-eds, use the dedicated OpinionNewsArticle subtype, and for evergreen editorial content prefer the more general Article type instead.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
headline | string | ✓ | Article headline (≤ 110 characters recommended). |
description | text | ✓ | Article summary or standfirst. |
image | url | ImageObject | — | Lead image. Provide multiple aspect ratios for Top stories eligibility. |
author | url | Person | — | The reporter or byline author. |
publisher | url | Organization | — | The publishing newsroom. |
datePublished | datetime | — | Publication date and time (ISO 8601). |
dateModified | datetime | — | Last update date and time (ISO 8601). |
articleSection | string | — | The section of the publication this article belongs to (e.g. "Breaking News", "Sports"). |
Plugin Registration
import { defineConfig } from 'sanity'
import { schemaOrgNewsArticlePlugin } from 'sanity-plugin-seofields/schema'
export default defineConfig({
plugins: [
schemaOrgNewsArticlePlugin(),
],
})Schema Usage
Add the schemaOrgNewsArticle field to any document schema:
import { defineField, defineType } from 'sanity'
export default defineType({
name: 'newsStory',
title: 'News Story',
type: 'document',
fields: [
defineField({
name: 'schemaOrgNewsArticle',
title: 'NewsArticle Schema',
type: 'schemaOrgNewsArticle',
}),
],
})GROQ Query
*[_type == "newsStory"][0]{
schemaOrgNewsArticle {
headline,
description,
image,
author,
publisher,
datePublished,
dateModified,
articleSection
}
}Next.js Component
import { NewsArticleSchema } from 'sanity-plugin-seofields/schema/next'
export default function Page({ data }) {
return <NewsArticleSchema data={data.schemaOrgNewsArticle} />
}JSON-LD Output
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "City Council Approves Landmark Climate Plan",
"description": "After months of debate, the council unanimously passed a 2030 net-zero target.",
"image": [
"https://example.com/news/climate-16x9.jpg",
"https://example.com/news/climate-4x3.jpg",
"https://example.com/news/climate-1x1.jpg"
],
"author": {
"@type": "Person",
"name": "Maria Chen",
"url": "https://example.com/staff/maria-chen"
},
"publisher": {
"@type": "Organization",
"name": "The Daily Chronicle",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2025-03-12T08:30:00Z",
"dateModified": "2025-03-12T14:15:00Z",
"articleSection": "Politics"
}Was this page helpful?