---
title: "NewsArticle Schema"
description: "Add Schema.org NewsArticle structured data to your Sanity-powered site with sanity-plugin-seofields. Qualify for Google News, Top stories, and AI overview citations."
canonical: https://sanity-plugin-seofields.thehardik.in/docs/schema-org/news-article
---

# 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 | Yes | Article headline (≤ 110 characters recommended). |
| `description` | text | Yes | Article summary or standfirst. |
| `image` | url \| ImageObject | No | Lead image. Provide multiple aspect ratios for Top stories eligibility. |
| `author` | url \| Person | No | The reporter or byline author. |
| `publisher` | url \| Organization | No | The publishing newsroom. |
| `datePublished` | datetime | No | Publication date and time (ISO 8601). |
| `dateModified` | datetime | No | Last update date and time (ISO 8601). |
| `articleSection` | string | No | The section of the publication this article belongs to (e.g. "Breaking News", "Sports"). |

## Plugin Registration

```typescript
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:

```typescript
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

```javascript
*[_type == "newsStory"][0]{
  schemaOrgNewsArticle {
    headline,
    description,
    image,
    author,
    publisher,
    datePublished,
    dateModified,
    articleSection
  }
}
```

## Next.js Component

```tsx
import { NewsArticleSchema } from 'sanity-plugin-seofields/schema/next'

export default function Page({ data }) {
  return <NewsArticleSchema data={data.schemaOrgNewsArticle} />
}
```

## JSON-LD Output

```json
{
  "@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"
}
```
