Skip to content

Add structured data (JSON-LD) for blog articles #28

@kahboom

Description

@kahboom

Problem

Blog articles currently lack structured data (Schema.org markup), which limits:

  • Rich snippet eligibility in search results
  • AI crawler understanding of content structure
  • Enhanced search result displays (author, date, reading time)
  • Article discoverability and categorization

Proposed Solution

Add JSON-LD structured data to all blog post pages with Article schema:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Article Title",
  "description": "Article description",
  "author": {
    "@type": "Organization",
    "name": "OpenThreads"
  },
  "publisher": {
    "@type": "Organization",
    "name": "OpenThreads",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.openthreads.dev/assets/logo.png"
    }
  },
  "datePublished": "2024-11-12",
  "dateModified": "2024-11-12",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://www.openthreads.dev/blog/article-slug"
  }
}

Implementation Steps

  1. Create a StructuredData component that accepts article metadata
  2. Add it to blog post template using react-helmet-async
  3. Include Article, Organization, and BreadcrumbList schemas
  4. Validate with Google's Rich Results Test
  5. Test with Schema.org validator

Additional Schemas to Consider

  • BreadcrumbList - Navigation breadcrumbs
  • Organization - Homepage
  • WebSite - Search action markup
  • FAQPage - If we add FAQ sections

Benefits

  • ✅ Eligible for rich snippets in search results
  • ✅ Better content understanding by AI crawlers
  • ✅ Enhanced search result displays
  • ✅ Improved click-through rates
  • ✅ Better content categorization

Resources

Labels

enhancement, SEO, content

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions