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 Studio import JSON 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: stableTry the model visually
Section titled “Try the model visually”Download article.models.json and follow the Studio import walkthrough.
Studio accepts individual model YAML or JSON, and a JSON/YAML { models: [...] } bundle. Import replaces the current board and can be undone. Importing a model by itself can leave its related targets unresolved; use the complete set in a bundle when inspecting the whole graph.
Studio exports model YAML in a ZIP but does not import ZIP files or a directory of files. Save a Studio workspace JSON backup for a complete layout round trip. Read the tool boundaries.