OpinionNewsArticle
The OpinionNewsArticle schema type identifies opinion, editorial, and op-ed content — a dedicated subtype of NewsArticle . Labelling commentary as opinion (rather than reported news) sends a clear E-E-A-T signal to Google Discover, Google News, and AI answer surfaces about the nature and authorship of the piece.
About OpinionNewsArticle
Use OpinionNewsArticle for clearly subjective content — columns, editorials, and op-eds — and reserve NewsArticle for reported journalism. To maximise E-E-A-T, attribute the piece to a real author using the Person variant with a jobTitle and sameAs links to their authoritative profiles, and use the backstory field to document the sources and context behind the opinion. As with all news content, include three image aspect ratios (16x9, 4x3, and 1x1) at ≥ 1200 px wide and keep dateModified current.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
headline | string | ✓ | Opinion headline (≤ 110 characters recommended). |
description | text | — | Summary or standfirst of the opinion piece. |
image | url | ImageObject | — | Lead image. Provide multiple aspect ratios for news surface eligibility. |
author | url | Person | — | The columnist or byline author. Use the Person variant with jobTitle and sameAs for E-E-A-T. |
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 (e.g. "Opinion", "Editorial"). |
articleBody | text | — | The actual body text of the opinion piece. |
dateline | string | — | The location from which the piece was filed (e.g. "Washington, D.C."). |
printColumn | string | — | The number of the column in which the article appears in the print edition. |
printEdition | string | — | The edition of the print product in which the article appears. |
printPage | string | — | The exact name of the print page on which the article is found (e.g. "A5", "B18"). |
printSection | string | — | The print section in which the article appeared. |
backstory | text | — | Sources, context, and provenance behind the opinion piece — a strong E-E-A-T signal. |
Plugin Registration
import { defineConfig } from 'sanity'
import { schemaOrgOpinionNewsArticlePlugin } from 'sanity-plugin-seofields/schema'
export default defineConfig({
plugins: [
schemaOrgOpinionNewsArticlePlugin(),
],
})Schema Usage
Add the schemaOrgOpinionNewsArticle field to any document schema:
import { defineField, defineType } from 'sanity'
export default defineType({
name: 'opinionPiece',
title: 'Opinion Piece',
type: 'document',
fields: [
defineField({
name: 'schemaOrgOpinionNewsArticle',
title: 'OpinionNewsArticle Schema',
type: 'schemaOrgOpinionNewsArticle',
}),
],
})GROQ Query
*[_type == "opinionPiece"][0]{
schemaOrgOpinionNewsArticle {
headline,
description,
image,
author,
publisher,
datePublished,
dateModified,
articleSection,
articleBody,
dateline,
printColumn,
printEdition,
printPage,
printSection,
backstory
}
}Next.js Component
import { OpinionNewsArticleSchema } from 'sanity-plugin-seofields/schema/next'
export default function Page({ data }) {
return <OpinionNewsArticleSchema data={data.schemaOrgOpinionNewsArticle} />
}JSON-LD Output
{
"@context": "https://schema.org",
"@type": "OpinionNewsArticle",
"headline": "Why the Council's Climate Plan Doesn't Go Far Enough",
"description": "The 2030 target is a start, but our columnist argues it sidesteps the hardest choices.",
"image": [
"https://example.com/opinion/climate-16x9.jpg",
"https://example.com/opinion/climate-4x3.jpg",
"https://example.com/opinion/climate-1x1.jpg"
],
"author": {
"@type": "Person",
"name": "Maria Chen",
"jobTitle": "Senior Opinion Columnist",
"url": "https://example.com/staff/maria-chen",
"sameAs": [
"https://twitter.com/mariachen",
"https://www.linkedin.com/in/mariachen"
]
},
"publisher": {
"@type": "Organization",
"name": "The Daily Chronicle",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2025-03-12T09:00:00Z",
"dateModified": "2025-03-12T16:40:00Z",
"articleSection": "Opinion",
"backstory": "Based on the author's coverage of three prior council climate votes and interviews with two policy analysts."
}Was this page helpful?