База знаний

Notion Status — управляющий слой пайплайна через API и MCP

Как использовать Status-свойства Notion как управляющий слой пайплайна: опции, группы, создание и обновление через API и MCP, и как превратить Notion из хранилища в рабочий процесс.

Опубликовано Обновлено

Status-свойство в Notion — это не просто «Select с иконками». Оно поддерживает группы (To-do / In progress / Complete), формирует базу для автоматизации и превращает Notion из хранилища в управляющий слой пайплайна: idea → draft → review → publish. Разбираем, как работать со статусами через API и MCP и какие у них есть ограничения.


Целевая архитектура: Status как управляющий слой

Ниже — базовая схема пайплайна на Status, который я использую в контент-базах pimenov.ai:

Notion image

Один столбец Status — это одновременно:

  • визуальный индикатор в интерфейсе (канбан, группировка в таблице),
  • фильтр для вьюх и дашбордов,
  • триггер для Notion Automations, webhooks, интеграций,
  • контракт для ИИ-агентов и внешних систем.
📌
Главная идея: если Status просто «krasivenkiy badge» — вы используете 1% его силы. Привяжите к нему переходы работы — и он становится стержнем всего процесса.

Как устроен Status в схеме данных

Status — свойство data source с тремя уровнями:

  1. Property — сама колонка со своим именем.
  2. Options — конкретные статусы (Idea, Draft, Review, Published).
  3. Groups — три фиксированные группы: To-do, In progress, Complete. Каждая опция принадлежит ровно одной группе.
{
  "Status": {
    "id": "...",
    "name": "Status",
    "type": "status",
    "status": {
      "options": [
        { "id": "...", "name": "Idea",      "color": "gray"   },
        { "id": "...", "name": "Draft",     "color": "yellow" },
        { "id": "...", "name": "Review",    "color": "orange" },
        { "id": "...", "name": "Published", "color": "green"  }
      ],
      "groups": [
        { "id": "...", "name": "To-do",       "color": "gray",   "option_ids": ["..."] },
        { "id": "...", "name": "In progress", "color": "blue",   "option_ids": ["...", "..."] },
        { "id": "...", "name": "Complete",    "color": "green",  "option_ids": ["..."] }
      ]
    }
  }
}
⚠️
Группы нельзя изменить через API — только в UI Notion. Их всегда ровно три, как в дефолтном шаблоне Notion. Через API можно только добавлять опции в уже существующие группы.

Создание Status через API

C обновления весны 2026 года Status-свойства можно создавать прямо через API — раньше это было возможно только в UI.

По умолчанию (Not started / In progress / Done)

POST /v1/databases
{
  "parent": { "page_id": "..." },
  "title": [{ "text": { "content": "Контент-пайплайн" } }],
  "initial_data_source": {
    "properties": {
      "Name":   { "title": {} },
      "Status": { "status": {} }
    }
  }
}

Пустой объект { "status": {} } создаёт свойство с дефолтными опциями (“Not started”, “In progress”, “Done”) и тремя стандартными группами.

C кастомными опциями

"Status": {
  "status": {
    "options": [
      { "name": "Idea",      "color": "gray"   },
      { "name": "Draft",     "color": "yellow" },
      { "name": "Review",    "color": "orange" },
      { "name": "Published", "color": "green"  }
    ]
  }
}

При создании Notion сам распределит опции по группам (первая попадёт в To-do, последняя — в Complete, остальные — в In progress). Чтобы перераспределить вручную — открывайте базу в UI и перетаскивайте опции между группами.


Добавление опций в существующий Status

Эндпоинт Update a data source теперь понимает добавление опций в status — по той же схеме, что и для select/multi_select.

PATCH /v1/data_sources/{data_source_id}
{
  "properties": {
    "Status": {
      "status": {
        "options": [
          { "name": "Backlog",    "color": "gray"   },
          { "name": "Scheduled",  "color": "blue"   }
        ]
      }
    }
  }
}
⚖️
При PATCH нужно передавать полный желаемый набор опций, а не только новые. Иначе опции, которых нет в запросе, будут удалены. Сначала читайте текущий список, потом добавляйте новые элементы в конец и отправляйте целиком.

Что нельзя через API

  • Перенести опцию в другую группу.
  • Создать, удалить или переименовать группы. Их ровно три и это базовый фреймворк Notion.
  • Поменять тип свойства со Status на другой и обратно — редактирование типа для Status не поддерживается.

Ставим статус странице

Для изменения статуса карточки используется Update page и page property value с именем или ID опции.

PATCH /v1/pages/{page_id}
{
  "properties": {
    "Status": {
      "status": { "name": "Review" }
    }
  }
}

Или по ID опции — устойчивее к переименованию:

"Status": { "status": { "id": "ff8e9269-9579-47f7-8f6e-83a84716863c" } }

Чтобы очистить статус — передайте null:

"Status": { "status": null }
💡
Имя опции регистрозависимо и должно точно совпадать с тем, что хранится в схеме. Для любой продакшен-интеграции лучше хранить ID опций и обновлять их раз в сутки, а не ловить редкие опечатки в production.

Неочевидные ограничения

ОперацияAPIMCPUI
Создать Status с дефолтными опциями
Создать Status с кастомными опциями
Добавить опцию в Status
Удалить/переименовать опцию⚠️ через полный PATCH⚠️
Перенести опцию в другую группу
Создать/удалить группу❌ (ровно 3)
Поменять тип со Status на другой
Обновить статус карточки
🔴
Официальные доки всё ещё упоминают status в списке «не обновляемых типов» — это устаревшая предосторожность про группы. Добавление опций работает. Изменение структуры групп — нет.

Notion MCP и Status

MCP-сервер Notion (хостится на mcp.notion.com) даёт AI-агентам прямой доступ к workspace. Работа со Status идёт через три инструмента:

  • notion-create-database — принимает тип колонки STATUS в схеме базы.
  • notion-update-data-source — позволяет добавлять опции в Status по той же схеме, что и select/multi_select.
  • notion-update-page — меняет статус конкретной карточки по имени или ID опции.

Практически это означает, что вы можете сказать агенту в Claude Code или Cursor: «Добавь в контент-базу статусы Idea, Draft, Review, Published и переведи все черновики старше недели в Review» — и он сам соберёт вызовы API.

⚠️
Известный баг: в MCP иногда не распознаются опции из группы in_progress, особенно с кастомными именами. Если агент «не видит» статус — проверьте в schema по сырому API и передайте агенту ID опции явно.

Пайплайн на практике: idea → draft → review → publish

Шаг 1. Проектируем статусы

Разложите этапы по трём группам сразу:

  • To-do: Idea, Backlog
  • In progress: Draft, Review, Cover
  • Complete: Scheduled, Published, Archived

Это сразу даёт вам бесплатную визуальную группировку в канбане и возможность фильтровать «всё в работе» одним условием.

Шаг 2. Привязываем автоматизацию

На каждый переход статуса вешается действие:

  • Idea → Draft — агент генерирует outline и складывает в тело страницы.
  • Draft → Review — в Telegram-бот летит уведомление «проверьте черновик» с ссылкой.
  • Review → Published — публикация в CMS, запись в лог, анонс в канале.

Триггерами могут быть Notion Automations внутри workspace, внешний webhook через n8n или собственный бэкенд.

Шаг 3. Организуем вьюхи

  • Доска: группировка по Status, карточки летят по этапам.
  • Таблица «На сегодня»: фильтр Status в группе In progress.
  • Список «Готово к публикации»: фильтр Status = Scheduled.
  • Архив: фильтр Status = Archived, скрыт из основных вьюх.

Шаг 4. Даём агенту правила

В инструкции контент-агента явно фиксируется, какие статусы он может ставить, а какие — только человек:

  • Агент может: Idea → Draft, Draft → Review.
  • Человек: Review → Scheduled → Published.

Так вы разделяете автоматические и ручные этапы и не получаете «сюрприз в проде» от слишком ретивого агента.


Эталонный JSON: контент-пайплайн одним запросом

POST /v1/databases
{
  "parent": { "page_id": "..." },
  "title": [{ "text": { "content": "Контент-пайплайн" } }],
  "initial_data_source": {
    "properties": {
      "Name": { "title": {} },
      "Owner": { "people": {} },
      "Due": { "date": {} },
      "Source": {
        "select": {
          "options": [
            { "name": "Idea",     "color": "gray"   },
            { "name": "Briefing", "color": "blue"   },
            { "name": "Repost",   "color": "purple" }
          ]
        }
      },
      "Status": {
        "status": {
          "options": [
            { "name": "Idea",      "color": "gray"   },
            { "name": "Backlog",   "color": "default"},
            { "name": "Draft",     "color": "yellow" },
            { "name": "Review",    "color": "orange" },
            { "name": "Cover",     "color": "pink"   },
            { "name": "Scheduled", "color": "blue"   },
            { "name": "Published", "color": "green"  },
            { "name": "Archived",  "color": "brown"  }
          ]
        }
      }
    }
  }
}

После создания откройте базу в UI и раз один перераспределите опции по группам вручную. Дальше этого делать уже не придётся.


Антипаттерны

  • ❌ Использовать Select вместо Status «по привычке». Теряете группы, канбан без движения, автоматизацию и понятный контракт для агентов.
  • ❌ Делать 12 статусов «на всякий случай». Оптимально — 4–6 этапов, каждый из которых отражает реальный переход работы.
  • ❌ Обновлять Status по имени с опечатками («Опубликвоано»). API вернёт ошибку валидации — храните ID.
  • ❌ Шлать при PATCH только новые опции. Остальные будут удалены. Всегда отправляйте полный желаемый список.
  • ❌ Рассчитывать, что агент сам «догадается» про разделение ручных и автоматических этапов. Явно пропишите это в инструкции.
  • ❌ Менять имена статусов, когда на них уже завязаны webhook'и. Сначала переведите автоматизацию на ID, потом меняйте имена.

Чеклист быстрой проверки

В базе используется именно Status, а не Select
Статусов 4–6, они отражают реальные этапы работы
Распределение по группам To-do / In progress / Complete выровнено вручную в UI
Для каждого ключевого перехода описано действие (автоматизация или ручное)
Все интеграции и агенты используют ID опций, а не имена
В PATCH-запросах на status отправляется полный список опций
Вьюхи сгруппированы по Status, а не «всё всё в одной таблице»
Архивный статус скрыт из основных вьюх, чтобы не забивать интерфейс

Ссылки


По теме

Status — это самый дешёвый способ превратить Notion в рабочий процесс и дать ИИ-агентам понятный контракт «что сейчас делать». Если хочется разобрать контент-пайплайн, CRM или внутренние процессы на Status-свойствах и автоматизации поверх них — напишите, обсудим.

📢 Telegram-канал: t.me/pimenov_ru · ✉️ Личка: t.me/pimenov