Skip to content

SEO: add JSON-LD structured data (Article, WebSite, Organization) #675

Description

@oalders

Problem

No page emits structured data (JSON-LD schema.org). Search engines have to infer authorship, publication date, and site structure from raw HTML. Adding Article, WebSite, Organization, and BreadcrumbList markup makes the content eligible for richer SERP treatment and clarifies the entity/author relationships.

Evidence

grep -ri 'application/ld+json\|schema.org' out/ returns nothing. The shared <head> (inc/WWW-AdventCalendar/share/templates/page.mhtml) contains no structured data. All the required fields already exist in clean form: Author: / Title: / Topic: in the POD headers (e.g. 2024/articles/2024-12-01.pod lines 1-3) and the publication date in the filename.

Impact

  • Missed rich-result eligibility (article/author/date presentation).
  • Weaker entity understanding (site, publisher, author) for search engines and AI crawlers.

Proposed fix (repo-side)

In script/seo-postprocess.pl, inject a <script type="application/ld+json"> block per page, built from out/seo-manifest.json:

  • Article pages: Article (or TechArticle) with headline, description, author (Person, from Author:), datePublished (from the date), image, mainEntityOfPage (canonical URL), and publisher (Organization = Perl Advent Calendar).
  • Optionally add BreadcrumbList (Home → Year → Article) and a site-wide WebSite + Organization node on the root/index pages.

No fork change required; all data is available in the manifest.

Acceptance criteria

  • Article pages include valid Article JSON-LD with headline, author, datePublished, image, publisher, and mainEntityOfPage.
  • Root/year pages include WebSite/Organization (and optionally BreadcrumbList).
  • Output passes the schema.org / Google Rich Results structured-data validator with no errors.

Filed as part of an SEO audit. Implementation is deferred (no work in the current branch).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Site generationTasks which should maybe happen automaticlly

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions