<!-- source: https://nodbot.ru/integrations/notion/; markdown: /llms/pages/generated/integrations-notion.md; type: IntegrationGuide -->
---
title: "Notion и n8n: контент и задачи без хаоса | Nodbot"
source_url: "https://nodbot.ru/integrations/notion/"
canonical_url: "https://nodbot.ru/integrations/notion/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 921
---

## AI summary

Problem/Solution-гайд по Notion и n8n: как превратить базу Notion в управляемый контент-пайплайн с дедлайнами, статусами, уникальным external_id, webhook-обработкой и безопасной публикацией.

## Best used for

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

## Key topics

- Notion
- n8n
- content pipeline
- database status
- idempotency
- draft publishing
- workflow JSON
- контент-план
- автоматизация редакции

# Интеграция Notion и n8n: контент-пайплайн, статусы, дедлайны и защита от дублей

Обновлено: 2026-05-30

Импортируйте JSON в n8n, замените credentials, URL API, поля CRM/БД и лимиты под вашу инфраструктуру.

- Проблема и сценарии внедрения

- Архитектура интеграции

- Контракт данных

- Code Node и нормализация

- Готовый workflow JSON

- Пошаговая настройка

- Тесты перед production

- Production-риски

- Полезные ссылки

- Критерии готовности

Проблема: Notion удобен для редакционного плана, но без правил статусов и idempotency страницы дублируются, задачи теряются, а черновики случайно уходят в публикацию.

Решение: строить интеграцию Notion и n8n как state machine: читать только карточки с нужным статусом, фиксировать external_id, валидировать обязательные поля, переводить страницу в следующий статус и сохранять ссылку на результат.


## Проблема: почему база Notion без workflow-правил превращается в хаос

Типичная ошибка — использовать Notion только как красивую таблицу. Редактор меняет статус, интегратор вручную копирует текст, маркетолог просит срочно опубликовать, а n8n не понимает, какую страницу уже обработал. В результате один и тот же материал может попасть в WordPress дважды или потерять метки кампании.

Надёжный сценарий использует Notion database как источник правды: у каждой карточки есть статус, владелец, дедлайн, canonical slug, external_id и поле для ошибки. Тогда автоматизация контента становится предсказуемой и удобной для команды.


## Архитектура workflow Notion + n8n для контент-пайплайна

| Блок | Задача | Production-проверка |

| --- | --- | --- |

| Notion Trigger / Poll | читает страницы со статусом Ready | фильтр по database_id и статусу |

| Validate properties | проверяет title, slug, owner, deadline | нет пустых обязательных полей |

| Build publishing payload | готовит Markdown/HTML и metadata | canonical, tags, excerpt, cover |

| Idempotency check | сравнивает external_id или slug | нет повторной публикации |

| Publish / create task | создаёт черновик или задачу | не публикует без review |

| Update Notion status | пишет результат и ссылку | Done, Error, Needs review |

Для редакционного процесса лучше создавать draft или задачу, а не сразу публиковать материал. Человек проверяет финальный вид, а n8n сохраняет трассировку.


## Контракт страницы Notion

```json
{
  "page_id": "notion-page-10492",
  "database_id": "content_calendar",
  "title": "Как настроить n8n с Notion",
  "slug": "n8n-notion-content-pipeline",
  "status": "Ready for automation",
  "owner": "editor@example.ru",
  "deadline": "2026-06-05",
  "tags": [
    "n8n",
    "Notion",
    "content ops"
  ],
  "external_id": "content:n8n-notion-content-pipeline"
}
```

Ключевое поле — external_id или slug. Именно оно защищает от повторного создания черновика, если карточку случайно вернули в статус Ready.


## Code Node: проверка статуса, дедлайна и external_id

```javascript
const src = $json.body ?? $json;
const title = String(src.title ?? src.properties?.Title?.title?.[0]?.plain_text ?? '').trim();
const slug = String(src.slug ?? src.properties?.Slug?.rich_text?.[0]?.plain_text ?? '').trim().toLowerCase();
const status = String(src.status ?? src.properties?.Status?.select?.name ?? '').trim();
const deadline = String(src.deadline ?? src.properties?.Deadline?.date?.start ?? '').trim();
if (!title || !slug) throw new Error('Notion page requires title and slug');
if (!/^[-a-z0-9]+$/.test(slug)) throw new Error(`Invalid slug: ${slug}`);
if (!['Ready for automation','Ready to publish'].includes(status)) {
  return [{ json: { action: 'skip', reason: 'wrong_status', status, page_id: src.page_id ?? src.id } }];
}
const externalId = String(src.external_id ?? `notion:${slug}`);
return [{ json: {
  action: 'create_draft', page_id: src.page_id ?? src.id, external_id: externalId,
  title, slug, deadline, tags: src.tags ?? [], status,
  idempotency_key: externalId,
  publish_payload: { title, slug, status: 'draft', source: 'notion', deadline }
}}];
```

Если workflow ориентируется на статус в базе, команда может управлять публикацией без доступа к n8n. Это снижает риск ручных запусков и дублирования черновиков.


## Готовый workflow JSON: скачать и импортировать

Скачать готовый workflow JSON Скачать тестовый payload

```json
{
  "name": "Nodbot - Notion content pipeline with idempotency",
  "nodes": [
    {
      "name": "Notion Ready Trigger",
      "type": "n8n-nodes-base.notionTrigger",
      "purpose": "Найти карточки Ready"
    },
    {
      "name": "Validate Notion properties",
      "type": "n8n-nodes-base.code",
      "purpose": "Проверить title, slug, status"
    },
    {
      "name": "Check idempotency",
      "type": "n8n-nodes-base.if",
      "purpose": "Не создавать дубль"
    },
    {
      "name": "Create draft or task",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Создать черновик/задачу"
    },
    {
      "name": "Update Notion status",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Записать результат"
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "purpose": "Вернуть summary"
    }
  ],
  "connections": "Notion Ready Trigger → Validate Notion properties → Check idempotency → Create draft or task → Update Notion status → Respond"
}
```


## Пошаговая настройка Notion database, n8n и публикации

- Создайте Notion integration и выдайте доступ только нужной базе.

- Добавьте поля Status, Slug, Owner, Deadline, External ID, Result URL и Error.

- Импортируйте workflow JSON и замените database_id, credentials и target-систему.

- Настройте фильтр только на статус Ready for automation.

- Протестируйте повторный запуск одной карточки и запись ошибки обратно в Notion.


## Тесты перед production

```bash
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/integration-notion-n8n-content-ops" \
  -H "Content-Type: application/json" \
  --data @integration-notion-n8n-content-ops-payload.json
```

- Карточка без slug должна падать с понятной ошибкой.

- Карточка в статусе Draft должна быть пропущена.

- Повторный external_id не создаёт второй черновик.

- Ошибка target-системы записывается в Notion Error.

- После успеха статус меняется на Done или Needs review.


## Production-риски

- Статусы не формализованы. Workflow реагирует на случайные значения и запускается не вовремя.

- Нет idempotency. Возврат карточки в Ready создаёт новый draft.

- Публикация без review. Непроверенный текст уходит на сайт или в рассылку.

- Слишком широкие права Notion token. Интеграция видит лишние базы.

- Ошибки не пишутся обратно. Редактор не понимает, почему автоматизация остановилась.


## Полезные ссылки и смежные материалы

- Notion API reference

- n8n Notion node

- Notion → WordPress draft workflow

- Content factory SEO briefs

- WordPress и n8n


## Критерии готовности

- У каждой карточки есть slug, owner, deadline и external_id.

- Workflow читает только согласованные статусы.

- Повторный запуск не создаёт дубль.

- Ошибки target-системы возвращаются в Notion.

- Публикация идёт через draft/review, если нет отдельного бизнес-правила.

Nodbot настроит Notion + n8n под вашу редакцию: статусы, дедлайны, idempotency, генерацию черновиков, уведомления и контроль публикации.
