The Article model set
Four complete models show reusable authors, embedded SEO metadata and ordered relationships between pages and articles.
An article links to a reusable Person and embeds SEO Metadata. A Page can link to an ordered list of related Articles. These are model definitions, rather than sample authored content.
Included models
Section titled “Included models”| Model | Kind | Main relationships |
|---|---|---|
| Article | entry |
Links to Person; embeds SEO Metadata; permits Person embeds in rich text |
| Person | entry |
Reusable profile for authorship |
| SEO Metadata | object |
Embedded structure with article-specific or page-specific values |
| Page | entry |
Embeds SEO Metadata; links to an ordered list of Articles |
Download the complete set
Section titled “Download the complete set”Download the complete Article project ZIP. It includes the manifest, all four models, the pinned schema, a local validator and a combined JSON model file. After extracting, use Node 22.12+ to run npm ci and npm run validate in that folder.
Individual canonical files are also available below.
Preserve this structure and download all five files into a model project:
manifest.yamlmodels/ article.yaml person.yaml seo-metadata.yaml page.yamlThe site checks the complete set against the pinned 1.2.0 schema, its manifest version and relationship targets during every production build. These checks do not validate authored content or a particular CMS implementation.
The manifest
Section titled “The manifest”specVersion: "1.2.0"namespace: headlessco.content-model-mastermodelsPath: ./modelsdefaults: required: false localisation: falseThe Article definition
Section titled “The Article definition”The author is linked because their profile has separate identity. SEO values are embedded because they belong to the article, even though their structure can be reused.
id: articlename: Articlekind: entrydescription: Editorial article content type.tags: - editorialfields: - id: title name: Title type: string required: true validations: minLength: 5 maxLength: 100
- id: slug name: Slug type: slug required: true editorial: helpText: Used in URLs.
- id: summary name: Summary type: text validations: maxLength: 250
- id: body name: Body type: richText required: true richTextConfig: marks: - bold - italic - link blocks: - paragraph - heading-2 - heading-3 - unordered-list - ordered-list - quote embeds: - kind: asset - kind: reference targets: - person
- id: hero_image name: Hero Image type: asset validations: mimeTypes: - image/jpeg - image/png
- id: author name: Author type: reference targets: - person relation: ownership: linked
- id: seo name: SEO type: object objectType: seo-metadata translationHints: preferredRepresentation: embedded
editorial: labelField: title preview: title: title description: summary image: hero_image
governance: owner: platform-team status: active maturity: stableWork with the combined model set
Section titled “Work with the combined model set”Download article.models.json to inspect all four model definitions in one JSON file. After editing the YAML, run npm run bundle in the extracted project to regenerate models.json from the validated model files.