CMS calendar_today Apr 19, 2026

Headless CMS для Astro: Как управлять контентом в 2026 году

Подробный обзор систем управления контентом для Astro. Сравниваем Keystatic, Sanity, Strapi, Storyblok и Notion API. Архитектура, плюсы, минусы и сценарии использования.

person
Журналист
Автор
Схема работы Headless CMS с Astro

Astro.js потрясающе работает с локальными Markdown и MDX-файлами. Для разработчика писать посты прямо в VS Code — сплошное удовольствие. Но как только к проекту подключаются редакторы, маркетологи или клиенты, возникает неизбежная проблема: им нужен удобный визуальный интерфейс, а не текстовый редактор с синтаксисом --- и ##.

Решение — Headless CMS (Системы управления контентом без фронтенда). В отличие от монолитных CMS вроде WordPress, Headless CMS предоставляет только административную панель и хранилище данных. Astro подключается к ней через API или файловую систему и генерирует красивый сайт.

В 2026 году рынок Headless CMS созрел. Есть четкие категории решений для каждого типа проекта. Разберем их детально.


Категория 1: Git-based CMS (контент в вашем репозитории)

Эти системы не требуют отдельных серверов или баз данных. Контент сохраняется прямо в Git-репозиторий в виде Markdown/MDX/JSON файлов. Это абсолютная победа для DevOps: история изменений контента — это история Git-коммитов.

Keystatic — фаворит экосистемы Astro

Keystatic

— продукт команды Thinkmill (авторы Keystone.js), созданный в тесном партнерстве с командой Astro. Это не просто интеграция — это эталонное решение для Git-based управления контентом.

Как работает: Keystatic добавляет в ваш Astro-проект административную панель по адресу /keystatic. Когда редактор создает или правит статью через этот UI, Keystatic автоматически делает коммит в GitHub-репозиторий с соответствующим Markdown/MDX файлом.

code
// keystatic.config.ts
import { config, fields, collection } from '@keystatic/core';

export default config({
  storage: {
    kind: 'github',
    repo: { owner: 'your-org', name: 'your-astro-site' },
  },
  collections: {
    articles: collection({
      label: 'Статьи',
      slugField: 'title',
      path: 'src/content/articles/*',
      entryLayout: 'content',
      format: { contentField: 'content' },
      schema: {
        title: fields.slug({ name: { label: 'Заголовок' } }),
        description: fields.text({ label: 'Описание', multiline: true }),
        date: fields.date({ label: 'Дата публикации' }),
        cover: fields.image({ label: 'Обложка', directory: 'src/assets' }),
        content: fields.mdx({ label: 'Текст статьи' }),
      },
    }),
  },
});
check

Плюсы Keystatic

Бесплатно. Контент в Git (история изменений, ветки, ревью через PR). Локально без задержек. Красивый современный интерфейс. Поддержка MDX с компонентами прямо в редакторе.

close

Минусы Keystatic

Не подходит для проектов с тысячами страниц (файловая система ограничена). Нет встроенного поиска по контенту в панели.

Decap CMS — проверенная классика

Decap CMS

(бывшая Netlify CMS) работает по аналогичному принципу, добавляя Git-based админку по пути /admin. Decap добавляет ценную функцию Editorial Workflow: черновик → на проверку → опубликовано. Это идеально для редакций с несколькими авторами и редакторами.


Категория 2: API-based облачные CMS

Эти системы хранят контент в облаке и отдают его через API (REST или GraphQL). Astro запрашивает данные во время сборки (getCollection через лоадер) или в режиме SSR по каждому запросу.

Sanity — корпоративный уровень с Visual Editing

Sanity

— самая технически продвинутая Headless CMS на рынке. Данные хранятся в облаке в формате структурированного JSON, а запросы пишутся на языке GROQ (Graph-Relational Object Queries).

Главная суперсила Sanity в 2026 году — Live Visual Editing. Редактор видит свой Astro-сайт прямо в интерфейсе Sanity Studio и кликает на любой элемент для редактирования. Изменения отображаются мгновенно.

code
// src/lib/sanity.ts
import { createClient } from '@sanity/client';

export const client = createClient({
  projectId: 'your-project-id',
  dataset: 'production',
  apiVersion: '2026-04-22',
  useCdn: true, // CDN кэш для быстрых ответов
});

// Запрос статей через GROQ
export async function getArticles() {
  return client.fetch(`
    *[_type == "article"] | order(publishedAt desc) {
      title,
      "slug": slug.current,
      description,
      publishedAt,
      "coverUrl": cover.asset->url,
    }
  `);
}

Кому подойдет: Крупным медиа-изданиям, e-commerce с богатым контентом, корпоративным порталам, где контент используется одновременно на сайте, в мобильном приложении и рассылках.

Storyblok — визуальный редактор блоков

Storyblok

— уникальная CMS с концепцией «компонентного» контента. Редактор не пишет текст в редакторе, а собирает страницу из заранее заготовленных блоков (Hero, Features, Testimonials) — как конструктор Lego.

Это идеально для маркетинговых лендингов, где маркетолог должен самостоятельно создавать новые страницы без помощи разработчика. Каждый блок в Storyblok соответствует компоненту в Astro.


Категория 3: Self-hosted (на своем сервере)

Strapi — Open-Source мощь

Strapi

— самая популярная Open-Source Headless CMS на Node.js. Устанавливается на собственный VPS (идеально через Coolify), полностью под вашим контролем. Автоматически генерирует REST и GraphQL API на основе созданных типов контента.

Почему это важно для РФ-проектов: Strapi решает проблему с 152-ФЗ (закон о персональных данных). Все данные пользователей хранятся на ваших серверах в российском дата-центре.

PocketBase как Headless CMS

PocketBase

— единый исполняемый файл на Go, который включает в себя базу данных SQLite, REST API, авторизацию и… встроенную панель администратора. По сути, PocketBase может выступать в роли легковесной Headless CMS для небольших и средних проектов.


Категория 4: Notion как CMS

Благодаря Astro Content Loaders (появились в Astro 4.14), теперь можно использовать Notion как полноценную CMS. Если ваша команда уже ведет все заметки и базы знаний в Notion, зачем учить новый инструмент?

code
// content.config.ts — пример с Notion Loader
import { defineCollection } from 'astro:content';
import { notionLoader } from 'notion-astro-loader';

const blog = defineCollection({
  loader: notionLoader({
    auth: process.env.NOTION_TOKEN,
    database_id: process.env.NOTION_DATABASE_ID,
    filter: {
      property: 'Status',
      select: { equals: 'Published' },
    },
  }),
});

export const collections = { blog };

Кому подойдет: Стартапам и командам, уже живущим в Notion. Быстрый запуск корпоративного блога или страницы вакансий без дополнительных инструментов.


Итоговое сравнение

CMSХранениеЦенаДля кого
KeystaticGit (GitHub)БесплатноРазработчики, небольшие блоги
Decap CMSGitБесплатноРедакции с ревью-процессом
SanityОблако SanityFree / $99+/месКорпоративные порталы, медиа
StoryblokОблако SBFree / €90+/месМаркетинговые сайты
StrapiСвой серверБесплатно (Self-hosted)Проекты с требованиями к данным
PocketBaseСвой серверБесплатноНебольшие и средние проекты
Notion APIОблако NotionСтоимость NotionКоманды в экосистеме Notion

Читайте также

Портрет автора Дмитрий Соколов

Senior Frontend Engineer / Tech Writer

Senior Frontend Engineer с 9-летним опытом. Специализируется на Astro.js и JAMstack.

Комментарии (4)

АГ
18 апр 2026

Попробовал перенести проект с Next.js на Astro. Оказалось, что статическая генерация (SSG) и islands architecture действительно ускоряют загрузку (PageSpeed стал 95+). Подход с частичной гидратацией просто отличный!

МЕ
19 апр 2026

Подскажите, а как лучше настроить SSR адаптер для деплоя Astro на Vercel или Cloudflare? Вроде бы Node.js адаптер тоже подходит, но хочется использовать edge functions для максимальной скорости.

ПЗ
20 апр 2026

Спасибо за разбор! Особенно полезна часть про интеграцию Tailwind CSS v4 и работу с MDX коллекциями (content collections) через схемы Zod. Строгая типизация контента очень помогает при разработке.

ВЛ
21 апр 2026

Подключила PocketBase к Astro по вашей схеме. View Transitions (плавные переходы между страницами) работают шикарно, но возник вопрос: как правильно кэшировать запросы к БД на этапе сборки статического сайта?

Оставить комментарий

Оставляя комментарий, вы соглашаетесь с правилами.

Рекомендуем к прочтению