Skip to content
Content modellingCMMF 1.2.0

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.

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 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.yaml
models/
article.yaml
person.yaml
seo-metadata.yaml
page.yaml

The 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.

examples/manifest.yaml
specVersion: "1.2.0"
namespace: headlessco.content-model-master
modelsPath: ./models
defaults:
required: false
localisation: false

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.

examples/models/article.yaml
id: article
name: Article
kind: entry
description: Editorial article content type.
tags:
- editorial
fields:
- 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: stable

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.