Синхронизация Notion и Todoist в реальном времени
Двусторонняя синхронизация между Notion и Todoist сохраняет актуальность ваших задач в обоих приложениях.
Показать оригинал (англ.)
Automated workflow: Realtime Notion Todoist 2-way Sync Template. This workflow integrates 29 different services: stickyNote, scheduleTrigger, merge, switch, redis. It contains 264 nodes and follows best practices for error handling and security.
Схема сценария, как в редакторе n8n: ноды и связи между ними. Кликните, чтобы рассмотреть.
- ТриггерNotion WebhookWebhook
- ДействиеBody is array?If
- ДействиеSplit out Notion changesSplit Out
- ДействиеExtract IDsSet
- ДействиеNotion trigger referenceNo Op
- ДействиеGlobals2Set
- ДействиеExecution Data5Execution Data
- ДействиеCheck if Notion ID is lockedRedis
- ТриггерNotion-Todoist Sync Setup HelperForm
- ДействиеOnly continue if not locked1Filter
- ДействиеGet Notion DatabasesNotion
- ДействиеGet Notion taskNotion
- ДействиеPrep DropdownCode
- ДействиеMap Notion to Todoist2Code
- ДействиеChoose Notion DatabaseForm
- ТриггерTodoist Webhook Setup HelperForm
- ТриггерOAuth redirectWebhook
- ДействиеExecution Data6Execution Data
- ДействиеGet Notion Database IDCode
- ДействиеGenerate security tokenCrypto
- ДействиеGet variablesCode
- ДействиеStatus is Obsolete?If
- ДействиеGet projectsHttp Request
- ДействиеStore variablesCode
- ДействиеVerify security tokenIf
- ДействиеNeither focussed nor plannedIf
- ДействиеPrep Dropdown1Code
- ДействиеRedirect to Auth PageForm
- ДействиеExchange TokensHttp Request
- ДействиеTodoist ID exists?If
- ДействиеChoose Todoist ProjectForm
- ТриггерRespond with successRespond To Webhook
- ТриггерRespond with errorRespond To Webhook
- ДействиеIf tries left1If
- ДействиеGet Todoist Project IDCode
- ДействиеSet tries1Set
- Обработка ошибокRetry limit reached1Stop And Error
- ДействиеGet sectionsHttp Request
- ДействиеGet Todoist Task2Todoist
- ДействиеGenerate configCode
- ДействиеCatch known error1If
- ДействиеReturn config JSONForm
- ДействиеWait1Wait
- ДействиеUpdate tries1Set
- ДействиеTodoist ID existsFilter
- ДействиеDifferences existFilter
- ДействиеRequires completion changeFilter
- ДействиеStatus changed but not emptyFilter
- ДействиеStatus is not DoneFilter
- ДействиеHas been completed?If
- ДействиеGenerate UUID2Crypto
- ДействиеCheck if creating flag existsRedis
- ДействиеDelete Task in Todoist2Todoist
- ДействиеUpdate task in Todoist1Http Request
- ДействиеMark as Completed in Todoist1Todoist
- ДействиеMark as Incomplete in Todoist1Todoist
- ДействиеUpdate section (Sync API)2Http Request
- ДействиеOnly continue if flag does not existFilter
- ДействиеGet todoist ID1Set
- ДействиеGet todoist IDSet
- ДействиеSet creating flagRedis
- ДействиеCreate task in Todoist1Http Request
- ДействиеLock Todoist ID4Redis
- ДействиеStore Todoist ID1Notion
- ТриггерSchedule TriggerSchedule
- ТриггерTodoist WebhookWebhook
- ТриггерExecute Workflow TriggerExecute Workflow
- ДействиеGlobalsSet
- ДействиеNotionNotion
- ДействиеTodoistTodoist
- ДействиеSwitch by projectSwitch
- ТриггерWebhookWebhook
- ДействиеMap Notion to TodoistCode
- ДействиеPick Todoist FieldsSet
- ДействиеTodoist trigger referenceNo Op
- ДействиеSwitchSwitch
- ДействиеCompare DatasetsCompare Datasets
- ДействиеGlobals1Set
- ДействиеExecution DataExecution Data
- ДействиеExecute WorkflowExecute Workflow
- ДействиеExecute Workflow1Execute Workflow
- ДействиеCheck if Todoist ID is lockedRedis
- ДействиеHandle empty dates2Code
- ДействиеHandle empty datesCode
- ДействиеLoop Over ItemsSplit In Batches
- ДействиеOnly continue if not lockedFilter
- ДействиеAdd project IDSet
- ДействиеUpdate Task in TodoistHttp Request
- ДействиеExists/Completed in NotionIf
- ДействиеGet Notion TaskNotion
- ДействиеIf event is not :deletedIf
- ДействиеIf Todoist ID existsIf
- ДействиеIf tries leftIf
- ДействиеLock Todoist ID2Redis
- ДействиеStatus changedFilter
- ДействиеPrepare summary dataSet
- ДействиеMap Notion to Todoist1Code
- ДействиеIf tries left2If
- ДействиеSet triesSet
- Обработка ошибокRetry limit reachedStop And Error
- ДействиеHandle empty dates1Code
- ДействиеSet tries2Set
- Обработка ошибокRetry limit reached2Stop And Error
- ДействиеGet Todoist TaskTodoist
- ДействиеUpdate task in Todoist before closingHttp Request
- ДействиеGet Todoist Task1Todoist
- ДействиеCatch known errorIf
- ДействиеLock Todoist ID1Redis
- ДействиеStatus is DoneIf
- ДействиеCatch known error2If
- ДействиеMark as Incomplete in TodoistTodoist
- ДействиеCreate task in TodoistHttp Request
- ДействиеWaitWait
- ДействиеMark as Completed in TodoistTodoist
- ДействиеDelete Task in TodoistTodoist
- ДействиеGet mapped item1Set
- ДействиеEnd hereNo Op
- ДействиеWait2Wait
- ДействиеUpdate task in TodoistHttp Request
- ДействиеLock Todoist IDRedis
- ДействиеStore Todoist IDNotion
- ДействиеUpdate triesSet
- ДействиеPrepare summary data1Set
- ДействиеPrepare summary data2Set
- ДействиеUpdate tries2Set
- ДействиеGet mapped itemSet
- ДействиеGet mapped item2Set
- ДействиеMap Todoist to Notion1Code
- ДействиеMergeMerge
- ДействиеExecution Data1Execution Data
- ДействиеLoop Over Items1Split In Batches
- ДействиеMerge summaryMerge
- ДействиеGet Notion Task1Notion
- ДействиеGenerate UUIDCrypto
- ДействиеFilter out status changesFilter
- ДействиеNotion Task not foundIf
- ДействиеPrepare Batching ItemsSet
- ДействиеMap Todoist to NotionCode
- ДействиеAggregateAggregate
- ДействиеMap summary fieldsSet
- ДействиеCheck if creating flag exists1Redis
- ДействиеExecution Data3Execution Data
- ДействиеUpdate section (Sync API)Http Request
- ДействиеConvert to HTML TableHtml
- ДействиеOnly continue if flag does not exist1Filter
- ДействиеSwitch by EventSwitch
- ДействиеGet Notion Task2Notion
- ДействиеGenerate email bodyHtml
- ДействиеSet creating flag1Redis
- ДействиеDifferences exist1Filter
- ДействиеDescription has changed in TodoistFilter
- ДействиеRequires completion change1Filter
- ДействиеNotion Task found1Filter
- ДействиеGmailGmail
- ДействиеGet Backlog Section IDCode
- ДействиеUpdate Description in Todoist1Todoist
- ДействиеHas not been completed?If
- ДействиеExecution Data4Execution Data
- ДействиеCreate task in NotionNotion
- ДействиеGenerate UUID1Crypto
- ДействиеDue date emptyFilter
- ДействиеNeither focussed nor planned1Filter
- ДействиеTurn Markdown into Notion BlocksCode
- ДействиеExecution Data2Execution Data
- ДействиеUpdate section (Sync API)1Http Request
- ДействиеUpdate task in NotionNotion
- ДействиеMark as Focussed in NotionNotion
- ДействиеMark as In Progress in NotionNotion
- ДействиеMark as Done in NotionNotion
- ДействиеMark as Obsolete in NotionNotion
- ДействиеHandle each block separatelySplit Out
- ДействиеUpdate Description in TodoistTodoist
- ДействиеAppend Notion BlockNotion
- ДействиеLock Notion IDRedis
Сценарий «Синхронизация Notion и Todoist в реальном времени» состоит из 174 ноды: Notion Webhook, Body is array?, Split out Notion changes, Extract IDs, Notion trigger reference, Globals2, Execution Data5, Check if Notion ID is locked и других. Интеграции: Html, Httprequest, Executiondata, Splitout, Gmail, Comparedatasets, Todoist, Splitinbatches, Executeworkflow, Redis, Server-Sent Events, Respondtowebhook, Notion, Crypto, Webhook, Form Trigger.
| Параметр | Значение | Описание |
|---|---|---|
| Учётные данные | Html · Httprequest · Executiondata · Splitout · Gmail · Comparedatasets · Todoist · Splitinbatches · Executeworkflow · Redis · Server-Sent Events · Respondtowebhook · Notion · Crypto · Webhook · Form Trigger | Для каждого сервиса нужен свой ключ/токен - впишете их в n8n после установки. |
| Объём сценария | 246 нод · продвинутый | Число нод и уровень сложности логики. Больше нод - тоньше настройка. |
| Формат | n8n workflow JSON | Готовый воркфлоу. При развороте через кнопку импортируется автоматически. |
Развернуть n8n с этим сценарием
Готовый сервер с n8n из маркетплейса Fatmetal - воркфлоу уже загружен. Рекомендованная конфигурация уже подставлена в заказ: 2 CPU · 4 ГБ · 50 ГБ. Останется вписать свои ключи, и автоматизация заработает. Нужна помощь с настройкой под нагрузку или сетью? Напишите инженеру.
n8n отдаём закрытым, а не голым
n8n часто атакуют - поэтому инстанс приезжает уже защищённым, без ручной настройки.
Владелец создан заранее
Аккаунт администратора настроен автоматически при развёртывании. Окно самостоятельной регистрации закрыто - никто не перехватит ваш инстанс в первые минуты после запуска (частый вектор атаки на self-hosted n8n).
Единый пароль с сервером
Логин в n8n - тот же пароль, что у вашей машины. Не нужно искать отдельные креды в файлах, меньше шансов оставить дефолт.
fail2ban против перебора
Автоматически банит IP после серии неудачных попыток входа по SSH. Защита от брутфорса из коробки.
HTTPS и security-заголовки
Трафик шифруется (Let's Encrypt, авто-обновление), выставлены HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy - защита от кликджекинга, MIME-снифинга и downgrade-атак.
После оплаты - сервер с готовым сценарием
Сервер создаётся автоматически за несколько минут. Ничего настраивать вручную не нужно - n8n поднимется сам, а этот сценарий уже будет внутри.
Сервер создаётся
После оплаты сервер разворачивается автоматически за несколько минут: ставится n8n, база данных и HTTPS. Дождитесь готовности в личном кабинете.
Открываете адрес
Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net. Например IP 45.15.159.10 → https://45-15-159-10.fatmetal.net/. HTTPS уже настроен. Готовый адрес также есть в личном кабинете - можно просто скопировать его оттуда.
Входите готовыми данными
Аккаунт владельца уже создан - регистрировать ничего не нужно. Логин: admin@<адрес вашего сервера> (тот же адрес, что открыли на шаге 2 - например admin@45-15-159-10.fatmetal.net). Пароль - тот же, что у вашего сервера: он в личном кабинете и в /root/n8n-credentials.txt на сервере. Войдите и при желании сразу смените пароль в настройках. Интерфейс английский - у n8n нет русской локализации.
Сценарий уже внутри
Этот сценарий уже импортирован - найдёте его в разделе Workflows. Останется вписать свои ключи для интеграций (Html, Httprequest, Executiondata) в Credentials и включить сценарий.