Schema for Recipes in Feeds: Standardizing Ingredients, Steps and Nutrition for Syndication
standardsrecipesschema

Schema for Recipes in Feeds: Standardizing Ingredients, Steps and Nutrition for Syndication

ffeeddoc
2026-04-19
9 min read

Standardize recipe data in feeds: actionable schema, JSON-LD and Microdata examples using the pandan negroni to map ingredients, steps, nutrition and media.

Stop losing recipe value in feeds — a practical schema for syndication

Feeds are where publishers and platforms exchange content, but recipe data often arrives fragmented: ingredient lists in free text, steps mashed into a single blob, nutrition missing or inconsistent, images scattered across CDNs. That fragmentation costs engineering time, breaks integrations with CMSs and voice assistants, and kills discoverability. In 2026, with richer search and voice features and rising demand for recipe syndication, you need a reliable, feed-friendly recipe schema — one that maps ingredients, prep steps, media and nutrition into predictable, machine-readable fields.

The opportunity in 2026: why recipes in feeds matter now

Recent trends (late 2025 → early 2026) accelerated two forces that make standardizing recipes in feeds urgent:

  • Search & discovery: Search engines and assistants continue to reward structured recipe data with rich results, structured cards and voice-readable instructions.
  • Multi-channel syndication: More publishers deliver recipes to apps, fridge screens, kitchen assistants and meal-planning services via feeds (RSS/Atom/JSON Feed/ActivityPub).
  • AI-driven transformations: Generative tools increasingly rely on clean, structured inputs to create scaled variations (dietary swaps, portion scaling, step-by-step video cue generation).

That combination makes it both possible and necessary to standardize recipe markup at the feed level — before content reaches consumers.

Principles for a feed-friendly recipe schema

Design a schema around these practical constraints:

  • Minimal, consistent primitives: quantity, unit, ingredient, prep, optional flag.
  • Denormalized but linkable: each ingredient and step should be addressable (IDs or sequence numbers) so consumers can reference them individually.
  • Machine- and human-friendly: maintain a human-friendly text blob plus structured arrays for each logical element.
  • Feed-level embedding: schema must fit safely inside RSS/Atom and JSON feeds (use CDATA or JSON-in-HTML where needed).
  • Security & provenance: signed, versioned payloads and canonical URLs for licensing and analytics.

Core schema fields — the actionable mapping

Below is an actionable, feed-ready schema. Use JSON-LD when possible; provide Microdata fallback inside HTML; and expose a compact JSON object for machine consumers (JSON Feed extension or application/json enclosure).

Top-level metadata

  • recipeId — stable identifier (UUID or slug)
  • version — semver or timestamp
  • title, summary, canonicalUrl
  • author — {name, url, authorId}
  • yield — servings or quantity (with unit)
  • cuisine, course, keywords

Ingredients (structured array)

Each ingredient is an object so apps can scale and filter precisely:

  • ingredientId (optional)
  • name — canonical name
  • rawText — original line as published
  • quantity, unit — standardized units using a canonical list (ml, g, tsp, tbsp, oz)
  • preparation — chop, crushed, zested
  • optional — boolean
  • allergenTags — ["nuts","dairy"]
  • linkedProduct — optional URL or SKU (for commerce)

Steps (ordered array)

  • stepId
  • position — 1-based index
  • text — human readable instruction
  • duration — ISO 8601 (PT5M) or seconds
  • tools — ["blender","mixer"]
  • media — images or short video clips tied to the step
  • temperature — numeric + unit where relevant
  • perServing — {calories, fat, carbs, protein, fiber, sugar, sodium}
  • total — same shape as perServing
  • calculationMethod — tool or source used

Media

Media objects should carry resolved URLs and semantic roles:

  • media: [{url, type (image/video), role (hero/step/thumbnail), width, height, caption, license}]

Provenance & licensing

  • license (SPDX or URL)
  • source.publisher
  • created, updated timestamps
  • signatures (JWS) — recommended for sensitive syndication

JSON-LD example: the Pandan Negroni mapped

Below is a compact JSON-LD object you can embed inside a feed entry’s HTML (e.g., inside an RSS <content:encoded> CDATA). It demonstrates how to use the core fields and keeps both human and machine-friendly content.

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "recipeId": "bunhouse-pandan-negroni-2026-01",
  "name": "Pandan Negroni",
  "description": "A pandan-infused twist on the classic Negroni from Bun House Disco.",
  "author": {"@type": "Person", "name": "Linus Leung", "url": "https://bun.house/"},
  "recipeYield": "1",
  "recipeIngredient": [
    {"name":"pandan leaf","rawText":"10g piece fresh pandan leaf, green part only","quantity":10,"unit":"g","preparation":"green part only","optional":false},
    {"name":"rice gin (infused)","rawText":"25ml pandan-infused rice gin","quantity":25,"unit":"ml","optional":false},
    {"name":"white vermouth","rawText":"15ml white vermouth","quantity":15,"unit":"ml","optional":false},
    {"name":"green chartreuse","rawText":"15ml green chartreuse","quantity":15,"unit":"ml","optional":false}
  ],
  "recipeInstructions": [
    {"@type":"HowToStep","position":1,"text":"Roughly chop the pandan leaf and blitz with 175ml rice gin in a blender. Strain through a fine sieve lined with muslin.","duration":"PT5M","tools":["blender","sieve"],"media":[{"url":"https://i.guim.co.uk/.../pandan-blend.jpg","type":"image","role":"step"}]},
    {"@type":"HowToStep","position":2,"text":"Measure 25ml pandan-infused gin, 15ml white vermouth and 15ml green chartreuse into a tumbler. Stir and serve.","duration":"PT2M","tools":["jigger","tumbler"]}
  ],
  "image": [{"@type":"ImageObject","url":"https://i.guim.co.uk/.../pandan-negroni.jpg","caption":"Bun House Disco’s pandan negroni","license":"https://creativecommons.org/licenses/by/4.0/"}],
  "nutrition": {"@type":"NutritionInformation","calories":"220 kcal"},
  "keywords": "cocktail, pandan, negroni, Bun House Disco"
}

Embedding tips

  • In RSS/Atom: include the JSON-LD inside <content:encoded> so parsers can extract it reliably.
  • In JSON Feed: include the schema in an extension object (e.g., extensions["/open-cookbook"]), or put the JSON-LD inside content_html.
  • Always retain the rawText lines for human editors — those are essential for legal fidelity and readability.

Microdata fallback for HTML feed entries

If you serve feed entries as HTML (common in atom/xhtml or web syndication), add Microdata so non-JSON-LD parsers can read the fields:

<article itemscope itemtype="https://schema.org/Recipe">
  <h2 itemprop="name">Pandan Negroni</h2>
  <div itemprop="author" itemscope itemtype="https://schema.org/Person">
    <span itemprop="name">Linus Leung</span>
  </div>
  <ul>
    <li itemprop="recipeIngredient">10g piece fresh pandan leaf, green part only</li>
    <li itemprop="recipeIngredient">25ml pandan-infused rice gin</li>
  </ul>
  <ol itemprop="recipeInstructions">
    <li itemscope itemtype="https://schema.org/HowToStep" itemprop="itemListElement">
      <span itemprop="text">Roughly chop the pandan leaf, blitz with gin and strain.</span>
    </li>
  </ol>
</article>

Packaging schema inside typical feeds

Different feed formats need slightly different packaging strategies:

RSS / Atom

  • Embed JSON-LD in the content block and use CDATA to avoid XML escaping.
  • Optionally add a machine-readable enclosure with type="application/json+recipe" pointing to a separate JSON payload.

JSON Feed

  • Add an extension namespace at the feed or item level (e.g., extensions["https://opencookbook.example/schema"]).
  • Include a compact JSON recipe object for rapid consumption.

Nutrition, allergens and dietary flags — practical guidance

Nutrition is often calculated differently across publishers. To keep it useful:

  1. Always provide a calculationMethod field: the library or database used (e.g., USDA API v4) and the date of calculation.
  2. Include explicit allergen flags and a machine-readable list of allergenTags for each ingredient.
  3. Offer consistent units — recommend SI units with optional imperial equivalents.

Versioning, provenance and licensing

Feeds are distributed and cached across many systems. Use explicit fields so consumers can reconcile updates:

  • version and updated timestamps for diffs.
  • canonicalUrl as the single source of truth — necessary for SEO and copyright.
  • license (SPDX expression recommended) so syndicators can legally republish or transform.

Security & integrity: signing and rate governance

Standards without integrity invite abuse. Practical measures for feeds in 2026:

  • JWS signatures for item-level signing: include a detached JWS header to let consumers verify content integrity.
  • HTTPS + HSTS for feed endpoints.
  • Rate limits & API keys for enrichment endpoints (nutrition calculators, product linking).
  • Content hashing (SHA-256) in metadata so downstream caches can validate freshness.

Open Cookbook: a proposal for feed extensions

To accelerate interoperability, we propose an Open Cookbook feed extension with these characteristics:

  • Namespace URL (e.g., https://opencookbook.org/schemas/feed/1.0) providing JSON schema and JSON-LD context.
  • Compact JSON representation for fast ingest and a full JSON-LD representation for semantic consumers.
  • Optional signing and provenance standards (JWS + SPDX licenses).
  • Specification for embedding images/video and step-level media with CORS policy recommendations.

Publishers and platforms can adopt this incrementally: start by emitting recipeIngredient arrays and recipeInstructions, then add nutrition and provenance fields in subsequent versions.

Practical implementation checklist (quick wins)

  1. Audit your current recipe posts: extract ingredient raw lines and steps into structured arrays.
  2. Choose a canonical unit list and normalize measurements (ml ↔ oz conversion table).
  3. Embed JSON-LD inside feed item HTML; provide a compact JSON payload via enclosure for API consumers.
  4. Start signing items with JWS and publish public keys at /.well-known/ for consumers to verify.
  5. Expose a versioned schema URL (your Open Cookbook extension) and maintain a changelog.
  6. Build validation into your CI: JSON schema + schema.org Recipe checks + unit tests for ingredient parsing.

Validation & tooling

Use a combination of validators:

  • JSON Schema validators for feed extensions.
  • JSON-LD Playground and CLI tools to validate context and @type compliance.
  • Automated tests that rehydrate steps and ingredients into the UI as a smoke test — if a UI render fails, schema probably broke.

Advanced strategies & future predictions (2026+)

Looking forward, expect these developments:

  • AI-assisted normalization: tools that parse free-text ingredient lines into structured primitives with high accuracy — useful to bootstrap legacy content.
  • Real-time personalization: feeds will expose variant recipes (low-sugar, dairy-free) as linked recipeIds, letting clients pull variants rather than reconstruct them.
  • Micropayment & commerce links: recipe feeds will support product linking and affiliate tags standardized in the schema for transparent monetization.
  • Edge-hosted recipe transforms: CDN edge functions that serve scaled ingredient lists and dynamic nutrition calculations based on consumer settings.

Case study: converting the Guardian-style Pandan Negroni into a feed-friendly object

We mapped the original article’s human-friendly content into the schema above. Key lessons from that conversion:

  • Keep the original raw ingredient lines as rawText — they preserve editorial voice and provenance.
  • Normalize units (e.g., "a 10g piece" → quantity:10 unit:g) to enable scaling.
  • Add step-level media: the Guardian image can be tagged as hero and step imagery with license metadata.
  • When nutrition is unknown (cocktails often don’t list full nutrition), include at least approximate calories and a calculationMethod to help downstream services.

Actionable takeaways

  • Start with structure: extract ingredients and steps into arrays — that delivers 70% of downstream value.
  • Embed JSON-LD into feed content, and provide a compact JSON enclosure for programmatic consumers.
  • Use JWS signing and canonical URLs to protect provenance and improve trust.
  • Adopt a versioned Open Cookbook extension to make incremental, backwards-compatible schema changes.
“Structured recipes are not just SEO — they’re the plumbing for scalable syndication, discoverability and monetization.”

Next steps — implement a pilot in 30 days

  1. Week 1: Inventory recipe posts, extract ingredient and step rawText.
  2. Week 2: Normalize units and build a JSON-LD template for your feed items.
  3. Week 3: Add signing (JWS) and expose a test envelope in JSON Feed or an RSS enclosure.
  4. Week 4: Validate with consumers (search console, aggregator) and iterate.

Call to action

If you publish or syndicate recipes at scale, standardizing your feed schema is a high-ROI engineering project. Start by exporting 10 representative recipes (including a cocktail like the pandan negroni) and convert them with the schema above. If you want a faster path, Feeddoc provides schema mapping, JSON-LD generation and feed signing toolchains designed for publishers and platforms. Reach out to pilot an Open Cookbook feed integration and see how structured recipes improve discovery, integrations and revenue.

Related Topics

#standards#recipes#schema
f

feeddoc

Contributor

Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.

2026-06-03T07:25:05.498Z