Skip to main content
seofields
docs

Article

The Article schema type represents a written piece of content such as a news article, editorial, or investigative report. It enables Google to display rich results with headline, author byline, publish date, and thumbnail images.

About Article

Article markup is one of the most impactful schema types for content publishers. Google uses it to power Top Stories carousels, article rich results, and author attribution in search. Providing accurate author and publisher information strengthens E-E-A-T signals and helps establish content credibility. The datePublished field is used for freshness signals in ranking. For blog posts specifically, consider using the more specific BlogPosting type instead.

Fields

FieldTypeRequiredDescription
headlinestringThe headline or title of the article. Should be concise and under 110 characters.
descriptionstringA short summary or excerpt of the article content.
imagestringURL of the article's main image or thumbnail.
author.namestringThe name of the article's author.
publisher.namestringThe name of the publishing organization.
publisher.logo.urlstringURL of the publisher's logo image.
datePublisheddateThe date the article was originally published (ISO 8601 format).

Plugin Registration

sanity.config.ts
import { defineConfig } from 'sanity'
import { schemaOrgArticlePlugin } from 'sanity-plugin-seofields/schema'

export default defineConfig({
  // ... your sanity config
  plugins: [
    schemaOrgArticlePlugin(),
  ],
})

Schema Usage

Add theschemaOrgArticle field to any document schema:

schemas/page.ts
import { defineField, defineType } from 'sanity'

export default defineType({
  name: 'page',
  title: 'Page',
  type: 'document',
  fields: [
    // ... your other fields
    defineField({
      name: 'schemaOrgArticle',
      title: 'Article Schema',
      type: 'schemaOrgArticle',
    }),
  ],
})

GROQ Query

GROQ query
*[_type == "yourDocument"][0]{
  schemaOrgArticle {
    headline,
    description,
    image,
    author {
      name
    },
    publisher {
      name,
      logo {
        url
      }
    },
    datePublished
  }
}

Next.js Component

app/layout.tsx
import { ArticleSchema } from 'sanity-plugin-seofields/schema/next'

export default function Layout({ data }) {
  return <ArticleSchema data={data.schemaOrgArticle} />
}

JSON-LD Output

Generated JSON-LD
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Implement Structured Data for SEO",
  "description": "A comprehensive guide to adding Schema.org markup to your website for better search visibility.",
  "image": "https://example.com/images/structured-data-guide.jpg",
  "author": {
    "@type": "Person",
    "name": "Jane Doe"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Acme Publishing",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2025-01-15"
}

Was this page helpful?