Каждая статья в GitHub CMS начинается с YAML frontmatter-блока — метаданных, которые определяют заголовок, описание, дату, автора, категорию, теги, тип схемы и SEO-параметры. Валидатор проверяет frontmatter при каждом push и не пропускает невалидные статьи в production.
Канонические поля
| Поле | Обязательное | Формат | Пример |
|---|---|---|---|
title |
Да | Строка, ≤70 символов | "Frontmatter контракт" |
description |
Да | Строка, ≤160 символов | "Описание статьи..." |
slug |
Да | kebab-case, ≤200 символов | frontmatter-contract-guide |
date |
Да | YYYY-MM-DD | 2026-05-05 |
author |
Да | Строка | GitHub CMS Team |
category |
Да | Строка | Документация |
tags |
Да | YAML массив строк | [frontmatter, yaml] |
schema_type |
Да | Article, BlogPosting, HowTo, etc. | Article |
layout |
Да | article | article |
cover_image |
Нет | URL изображения (PixInLink) | https://pixinlink.com/... |
updated |
Нет | YYYY-MM-DD | 2026-05-07 |
geo |
Нет | YAML массив строк | [entity1, entity2] |
Legacy-алиасы (только для миграции)
| Legacy | Каноническое | Примечание |
|---|---|---|
publish_date |
date |
Миграционный алиас |
categories |
category |
Миграционный алиас |
Валидатор принимает legacy-поля, но предупреждает о необходимости миграции.
FAQ
Q: Что будет если не указать обязательное поле?
A: Валидатор (npm run validate:content) вернёт ошибку и заблокирует деплой. Статья не попадёт в production.
Q: Можно ли использовать HTML в frontmatter? A: Нет. Frontmatter — это YAML метаданные. HTML разрешён только в Markdown-теле статьи и проходит через sanitizer.
Q: Как добавить изображение-обложку?
A: Укажите поле cover_image с публичным PixInLink URL. Изображение будет использовано в Open Graph и Twitter Cards.
Проверьте свой frontmatter
Запустите npm run validate:content перед каждым push. Автоматическая валидация в GitHub Actions защитит production от битых статей.