Delivery emits no structured data, so an article is not eligible for news placements
- Dominant language
- C#
- Stars
- 6
- Forks
- 7
- Avg merge
- 4h 42m
- Merged PRs (30d)
- 307
Description
A news site is read by Google News, Discover, Facebook and Slack before it is read by a person, and every one of them wants structured data. Delivery emits none. `Features/Seo` covers titles and descriptions; there is no `schema.org` JSON-LD anywhere.
Without it an article is a generic web page: no headline, no author, no publish date, no section, no image, and no eligibility for the placements that carry news traffic.
## What to add
A JSON-LD block on delivery responses, built from the content type's field mapping rather than from hard-coded field names. Which field is the headline, which is the author, which is the publish date, and which type to emit (`Article`, `NewsArticle`, `Product`, `Event`) is per content type and belongs on the definition.
`ContentTypeDefinition` already carries the field list, and `FieldTypeRegistry` already has the types this needs, including `datetime`, `richtext` and `reference`.
## What it must not become
A second copy of the masking rules. The block goes through `PublicDelivery.ToPublic` like every other public read, or a masked field leaks into the structured data where nobody thinks to look for it.
## Done when
- A content type can declare its `schema.org` type and which field fills each role.
- The delivery response carries valid JSON-LD, checked against Google's structured data test or an offline validator in CI.
- A masked field never appears in the block, proven by a test.
- A content type that declares nothing emits nothing, rather than guessing.
Contributor guide
Research direction
Start by reading ContentTypeDefinition and FieldTypeRegistry to see how field mappings and supported types are represented. Trace delivery responses through PublicDelivery.ToPublic and review Features/Seo for existing delivery conventions. Done means declared schema metadata produces validated JSON-LD, masking is preserved, tests cover masked fields, and undeclared types emit nothing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100