> · 9 мин

Notion Workers: TypeScript-sandbox для агентов и прямой ответ на MCP

Notion Workers: TypeScript-sandbox для агентов и прямой ответ на MCP

Notion Workers: TypeScript-sandbox для агентов и прямой ответ на MCP

13 мая Notion наконец-то вышел из категории «красивый блокнот для команд» и стал платформой. Релиз называется Developer Platform, и главный его кусок — это Workers: хостинговый рантайм, в который ты кладёшь TypeScript-код, а Notion сам его запускает по крону, по вебхуку или по вызову от агента.

TL;DR: Workers — это маленькие TypeScript-программы, которые крутятся на инфре Notion. Деплой через ntn workers deploy, запуск через cron, webhook или Custom Agent. После 11 августа платишь $0.0023 за run. Notion прямо позиционирует их как детерминированную альтернативу MCP — где LLM не дёргается каждый раз, чтобы решить, что делать.

Что вообще выкатили 13 мая:

  • Workers (public beta) — TypeScript-программы в песочнице Notion. На Business и Enterprise.
  • External Agents (alpha) — в Notion теперь можно позвать Claude Code, Cursor, Codex, Decagon и работать с ними как с членами команды. Через waitlist.
  • External Agent API (private beta) — то же самое, но для агентов, которых ты сам собрал. Тоже waitlist.
  • CLI ntn — терминальный клиент. На всех планах, включая Free.
  • Agent SDK (alpha) — таскать Notion-агентов в свои приложения. Тоже waitlist.

Если коротко: релиз выглядит большим, но открытое — только Workers и CLI. Всё остальное в листе ожидания.

Notion Developer Platform launch

Что такое Worker по сути

Worker — это один TypeScript-файл. Ты импортируешь класс Worker, экспортируешь дефолт, навешиваешь на него capabilities. И всё.

// src/index.ts
import { Worker } from "@notionhq/workers";

const worker = new Worker();
export default worker;

worker.tool("sayHello", { /* ... */ });
worker.sync("customersSync", { /* ... */ });
worker.webhook("onGithubPush", { /* ... */ });

Деплой:

$ ntn workers new        # скаффолдит проект
$ ntn workers deploy     # билдит, заливает, запускает

Внутри песочница Node.js. Доступ к fetch, к секретам (через CLI), к OAuth-флоу. Никаких нативных бинарей, никакого доступа к файловой системе хоста — обычный сервлес-рантайм, только привязанный к Notion.

Всего у Worker пять типов capabilities, но в публичную бету пустили не все:

  • worker.tool() — функция, которую Custom Agent дёргает по запросу. ✅ Доступно.
  • worker.sync() — крон, который тянет данные из внешнего API в Notion-базу. ✅ Доступно.
  • worker.oauth() — обработчик OAuth-callback для коннекта со сторонними сервисами. ✅ Доступно.
  • worker.automation() — триггер от Notion-автоматизации (добавили страницу, поменяли свойство, нажали кнопку). 🚧 Private alpha.
  • worker.webhook() — приём HTTP POST по URL Worker'а. 🚧 Private alpha.

На лендинге notion.com/product/dev всё это рекламируется как launch-features, но на практике webhook ловить ты сейчас не сможешь — только если попадёшь в alpha по waitlist. Лучше держать в голове, читая маркетинг.

Workers vs MCP: главное противопоставление

Зачем вообще новый рантайм, если у Notion уже есть MCP-интеграция? Ответ прямо из блога Notion:

«MCP хорош для broad connectivity, но иногда нужен predictable execution и custom logic, которые LLM-mediated tool calls не дают».

В переводе: MCP — это когда модель решает, какой tool вызвать и с какими аргументами. Это гибко, но дорого по токенам и недетерминированно — каждый вызов идёт через LLM-рассуждение. Workers — наоборот. Ты пишешь код, агент дёргает функцию по имени, код выполняется ровно как ты написал. Без токенов на reasoning, с предсказуемым результатом.

Симон Ласт, head of AI в Notion, выразился так: «Перенос работы с GPU (языковых моделей) на CPU (песочниц) увеличивает качество для пользователей. Никакого tokenmaxing'а — и результаты надёжнее».

На практике это значит вот что. Если у тебя есть чёткий вход и выход (достать клиента из CRM по email, создать тикет в Jira, отправить SMS через Twilio), это Worker. Если задача расплывчатая и требует рассуждения, это MCP-tool, который потом дёргает Worker.

Sync — это cron с базой данных в нагрузку

Синки — самая зрелая часть платформы. По сути это cron-задача, которая льёт данные из внешнего API в Notion-базу и держит схему в коде:

worker.sync("zendeskTickets", {
  schedule: "5m",          // от "1m" до "7d", или "continuous" / "manual"
  mode: "incremental",     // или "replace" — полный пересбор
  database: {
    properties: {
      ticketId: { type: "title" },
      status:   { type: "select" },
      priority: { type: "select" },
    },
  },
  async run(ctx) {
    const tickets = await fetchZendesk(ctx.secrets.ZENDESK_TOKEN);
    for (const t of tickets) {
      yield {
        ticketId: t.id,
        status: t.status,
        priority: t.priority,
      };
    }
  },
});

Два режима:

  • replace — каждый цикл возвращает весь датасет. Что не пришло — удаляется из Notion. Подходит для маленьких таблиц до 1000 строк.
  • incremental — отдаёт только то, что изменилось с прошлого запуска. Для удалений нужно явно слать tombstones. Подходит для больших датасетов и API с change tracking.

Дефолтный интервал — 30 минут. Минимум — 1 минута, максимум — 7 дней. Есть continuous (back-to-back) и manual (только по CLI). Pacer внутри SDK rate-лимитит исходящие запросы, чтобы ты не упёрся в квоты внешних API.

Цена: считаем перед августом

До 11 августа 2026 Workers бесплатны. После — $0.0023 за один run. Один run = один запуск sync, один tool call, один webhook event. Из $10 кредитов выходит примерно 4348 runs. Custom Agent calls идут отдельно по своим тарифам.

Что это значит на практике для разных сценариев:

  • Sync каждые 30 минут — 1440 runs/мес ≈ $3.30 за один синк. Жить можно.
  • Sync каждую минуту — 43 200 runs/мес ≈ $99 за один синк. Уже больно.
  • Tool, который дёргает агент 100 раз в день — 3000 runs/мес ≈ $7. Терпимо.
  • Webhook от GitHub на каждый push в активном репо — легко 5000+ events/мес = $11+. Прибавляй за каждый сервис.

Для сравнения: Cloudflare Workers платный план — $5/мес flat за первые 10 миллионов запросов. Notion-цена при равной нагрузке проигрывает раз в 20-30. Но Cloudflare не даст тебе integration с Custom Agents и managed-базой — за это, собственно, и платишь.

Внешние агенты: красивая идея, ограниченный доступ

Вторая большая фича релиза — External Agents. Идея простая: подключаешь Claude Code, Cursor, Codex или Decagon, и они появляются в Notion как Custom Agent. Можно @mention'нуть в странице, дать таску в комментарии, отслеживать прогресс. Под капотом — три эндпоинта:

POST  /sessions/{id}
POST  /sessions/{id}/messages
GET   /sessions/{id}/events

Но: External Agents — alpha, External Agent API — private beta, оба через waitlist. То есть прямо сейчас ни одна команда вне закрытого круга это не запустит. Notion и тут позиционирует функцию как launch, но «launch» в их терминологии означает анонс, а не доступность.

Подводные камни

Workers недоступны на Free и Plus. Только Business ($20/seat/month) и Enterprise. CLI ntn работает на всех планах, но без Workers это просто терминальный клиент к API — то же самое, что было через REST. Если ты соло-разработчик на Plus, забудь.

После 11 августа 2026 кран закрывают. Бесплатная бета закончится, и каждый run будет стоить $0.0023. Минутные синки уйдут в $99/мес за каждый. Бесплатная бета — отличный способ построить продакшен-зависимость и через три месяца получить счёт. Cloudflare Workers за $5/мес flat в этой математике выглядят честнее.

TypeScript only. Никакого Python, Go или Rust. Если твоя интеграция написана на Python и таскает pandas, переписывай. Это серьёзный фильтр для дата-команд, которые могли бы быть основной аудиторией для синков.

automation() и webhook() — в private alpha. На лендинге Workers их рекламируют как launch-фичи. На деле — waitlist. Если строишь архитектуру вокруг webhook-триггера от GitHub или Stripe, проверь доступность раньше, чем напишешь дизайн-док.

Lock-in на @notionhq/workers. Код привязан к классу Worker и его API. Перенести Worker на свой сервер или на Cloudflare без переписывания не получится. Это не Docker-контейнер, это специфический SDK. Если решишь уйти, переписывать всё.

Унаследованный rate limit Notion API: 3 req/sec, 30 search/min. Worker крутится на Notion-инфре, но при обращениях к Notion API в него упрётся. Если синкаешь 50 000 строк в replace режиме каждые 5 минут, будь готов к 429-кам и Retry-After. SDK включает Pacer для исходящих запросов наружу, но внутренние лимиты Notion никуда не делись.

История безопасности Notion. В апреле 2026 нашли четырёхлетнюю дыру в Public API, которая палила email-ы всех редакторов каждой публичной страницы. Notion отреагировал тихо. Это не дисквалифицирует Workers, но если планируешь синкать PII через них, добавь это в threat model.

Альтернативы

  • MCP (Model Context Protocol) — портабельный стандарт, работает с десятками AI-инструментов. Хорош для широкой connectivity и поиска. Плох, когда нужна детерминированность и токены жалко: каждый tool call идёт через LLM-рассуждение. Notion прямо строит Workers как «то, что MCP не закрывает».

  • Cloudflare Workers + Notion API напрямую — портабельно, $5/мес flat за 10M запросов, никакого вендор-лока. Но интеграцию с Custom Agents надо строить руками, managed database из коробки нет, и Notion API rate limit всё равно прилетит. Лучший выбор, если ты не на Business/Enterprise или планируешь уходить от Notion.

  • Vercel Edge Functions / AWS Lambda — те же serverless-TypeScript-функции, портабельность ещё лучше. Цены выше у Vercel, ниже у Lambda. Но Custom Agent integration ты собираешь сам.

  • Zapier / Make / n8n — no-code-автоматизация. Шире коннекторы, проще для не-разработчиков, дороже на масштабе. Используй, если задача — раз в неделю переложить строки из Sheets в Notion-базу, а не построить агентскую инфру.

Вердикт

Если ты уже на Business или Enterprise и строишь Custom Agents с custom-логикой, ставь ntn сегодня и трогай Workers, пока бесплатно. Sync external data и tool() — две зрелые ветки, на них реально можно опереться. К августу будешь понимать свой ценник и сможешь решить, оставаться или съезжать на Cloudflare.

Если ты на Free/Plus или нужна портабельность, пиши Cloudflare Worker + клиент к Notion API. Заняло чуть дольше, зато $5/мес и никакого «август закрывает кран». MCP-интеграция Notion при этом никуда не делась, ты её всё равно можешь использовать.

Если рассчитывал на webhook'и или automation(), проверь, есть ли тебе доступ к private alpha, и не начинай дизайн архитектуры с этих примитивов до подтверждения. Маркетинг Notion и реальность доступа сейчас расходятся.

Как попробовать

  1. Поставить CLInpm install -g @notionhq/ntn (или установка из developers.notion.com/cli/get-started/overview).

  2. Аутентифицироватьсяntn auth login. Откроет браузер, выдаст токен, сохранит локально.

  3. Создать первый Workerntn workers new my-first-worker. Скаффолдит TypeScript-проект с src/index.ts и примерами. Шаблон уже содержит /sync skill для Claude Code/Cursor — попроси своего coding-агента дописать sync с GitHub-issues, он справится без открытия документации.

  4. Деплойntn workers deploy. После апдейта в дашборде Notion появится управление синками и тулзами Worker'а.

  5. Подключить к Custom Agent — в настройках агента выбрать tool из деплоенного Worker'а. Дальше агент сам зовёт функцию, когда надо.

Полные доки — developers.notion.com/workers/get-started/overview. Keynote с разбором на YouTube — youtube.com/live/rpE2rzKO6L0. Cookbook с примерами синков и инструментов — github.com/makenotion/notion-cookbook.

$ ls ./related/

Похожие статьи

plasmate-browser-agents-som.md
Plasmate — браузерный движок на Rust, который режет токены AI-агентов на 94%
> · 6 мин

Plasmate — браузерный движок на Rust, который режет токены AI-агентов на 94%

Plasmate компилирует HTML в Semantic Object Model — структурированный JSON для LLM. 4-5 мс на страницу, 94% экономии токенов, подключение к Claude Code за одну строку. Apache-2.0, проект одного человека.

ai open-source claude-code mcp
symphony-linear-orchestrator.md
Symphony — OpenAI выложила оркестратор, который превращает Linear в очередь для AI-агентов
> · 8 мин

Symphony — OpenAI выложила оркестратор, который превращает Linear в очередь для AI-агентов

OpenAI тихо выложила Symphony — open-source оркестратор на Elixir, который мониторит твою Linear-доску и сам берёт тикеты в работу через Codex. 17.1K звёзд за два месяца, +500% к мёржам PR (по данным OpenAI). Разбираем архитектуру, подводные камни и альтернативы.

openai codex open-source orchestration
oh-my-codex-codex-teams.md
Oh My codeX — параллельные агенты для Codex CLI, tmux worktrees и HUD, который показывает, что делает каждый бот
> · 8 мин

Oh My codeX — параллельные агенты для Codex CLI, tmux worktrees и HUD, который показывает, что делает каждый бот

OMX — это oh-my-zsh для OpenAI Codex CLI. За 2 минуты npm-установки получаешь 33 агента, 36 скиллов, команды, которые гоняют по три Codex-сессии в параллельных git worktrees, и HUD, который показывает, чем они заняты прямо сейчас.

ai agents codex open-source
subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe