From 50c124491fcefe3abce3f6cbe74c8d18338eba36 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 16:32:10 +0000 Subject: [PATCH] Static site (3): SEO and Recipe structured data Add schema.org Recipe JSON-LD to every recipe page (name, author, category, ingredients, step instructions, keywords, yield, image), plus canonical, Open Graph, and Twitter-card meta site-wide (recipe pages use their own photo and article type; others use the biscotti image). Add a generated sitemap.xml (507 URLs) and robots.txt. All absolute URLs use the github.blimacake.com domain. Verified: JSON-LD parses and carries the right fields; recipes with a photo expose it in JSON-LD and OG image; sitemap and robots build. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01HpG2vky2XhDtfc6y16TRis --- CHANGELOG.md | 8 ++++++++ eleventy.config.js | 22 ++++++++++++++++++++++ site/_includes/base.njk | 8 ++++++++ site/recipe.njk | 3 +++ site/robots.njk | 8 ++++++++ site/sitemap.njk | 14 ++++++++++++++ 6 files changed, 63 insertions(+) create mode 100644 site/robots.njk create mode 100644 site/sitemap.njk diff --git a/CHANGELOG.md b/CHANGELOG.md index b6e7eb2..f6f20d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,14 @@ Recipe imports are logged both here (summary) and in ### Added +- **Static site: SEO and Recipe structured data (ADR 0003, PR 3 of the site phase).** + Each recipe page now carries schema.org `Recipe` JSON-LD (name, author, category, + ingredients, step-by-step instructions, keywords, yield, and image) so search + engines can show rich results. Added canonical, Open Graph, and Twitter-card meta to + every page (recipe pages use their own photo and an `article` type; other pages use + the biscotti image). Added a generated `sitemap.xml` (507 URLs) and `robots.txt` + pointing at it. All absolute URLs use the `github.blimacake.com` domain. + - **Static site: full-text search (ADR 0003, PR 2 of the site phase).** Added a `/search/` page powered by [Pagefind](https://pagefind.app/), a static search index built from the site output (`npm run build` now runs `eleventy && pagefind`). Only diff --git a/eleventy.config.js b/eleventy.config.js index 7ac3eb4..0a0e190 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -17,6 +17,28 @@ export default function (eleventyConfig) { eleventyConfig.addFilter("limit", (arr, n) => (arr || []).slice(0, n)); + // schema.org/Recipe structured data for a recipe, as an escaped JSON string + // safe to drop into a