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
Filed as part of an SEO audit. Implementation is deferred (no work in the current branch).
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, andBreadcrumbListmarkup 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.podlines 1-3) and the publication date in the filename.Impact
Proposed fix (repo-side)
In
script/seo-postprocess.pl, inject a<script type="application/ld+json">block per page, built fromout/seo-manifest.json:Article(orTechArticle) withheadline,description,author(Person, fromAuthor:),datePublished(from the date),image,mainEntityOfPage(canonical URL), andpublisher(Organization = Perl Advent Calendar).BreadcrumbList(Home → Year → Article) and a site-wideWebSite+Organizationnode on the root/index pages.No fork change required; all data is available in the manifest.
Acceptance criteria
ArticleJSON-LD with headline, author, datePublished, image, publisher, and mainEntityOfPage.WebSite/Organization(and optionallyBreadcrumbList).Filed as part of an SEO audit. Implementation is deferred (no work in the current branch).