Как использовать notion с telegram
Перейти к содержимому

Как использовать notion с telegram

  • автор:

Telegram бот, отправляющий задачи в Notion

Я уже писал ранее, что Notion выпустили свое API и я написал интеграцию с Telegram (подробнее тут) и я был несказанно рад этой новости! Писал я про это уже 4 месяца назад и я, сразу-же, сделал себе на коленке небольшого бота, который ставит мне задачи и через которого другие люди также могут ставить мне задачи.

У данного поста есть видео версия. Посмотреть можно прямо здесь или перейдя по ссылке.

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

Но я для себя заметил, что добавление задач отнимает много времени — зайти в notion, открыть нужную доску, дождаться пока загрузится страница, добавить задачу. Разумеется, мой ленивый разум быстро нашел в этом причину чтобы не вести задачи. Но потом появилось API и я быстро накидал себе бота, который добавляет задачу на каждое сообщение в Telegram.

В рамках данного поста я поделился своим способом достижения этого результата на Typescript.

Первая версия бота

Первое, что я сделал с его появлением — простого Telegram бота, через которого мне можно ставить задачи. Работает он простым образом:

  1. Я пишу Telegram боту любой текст
  2. В notion, в моем списке задач, создается карточка, в названии которого лежит текст сообщения
  3. В ответ бот присылает мне оповещение о том, что задача создана и передает ссылку на карточку
  4. Также боту может написать человек, которому я дал право ставить мне задачи. Это тоже приводит к созданию карточки задачи с пометкой автора задачи.

Дальше этого бота расширять можно сколь угодно много. Но сегодня мы с вами сделаем простую базовую версию.

Подключение к Notion API

Для начала нужно получить token для работы. Сделать это можно по инструкции здесь. Также опишу этот процесс здесь:

    переходим по этой ссылке
  • Нажимаем New Integration
  • Придумываем название интеграции
  • Попадаем на страницу с вашим токеном

Дальше этот токен можно скопировать кнопкой Copy и использовать его в своем приложении.

Создаем базу данных задач

Дальше нужно в любом удобном вам месте в Notion создать базу данных с Kan Ban представлением, добавить поля статуса и источника задачи. Или можете просто скопировать мой тестовый список задач и использовать его как шаблон.

Кнопка для дублирования в качестве шаблона

Отлично! Теперь у нас есть база задач, которую вы можете наполнять руками через Notion! Но мы здесь с вами не для этого. Теперь нам необходимо настроить интеграцию между notion и telegram ботом.

Заготовка Telegram бота на typescript

Я подготовил проект, в котором реализовал базовую логику интеграции. Вы можете посмотреть его код на GitHub (версия 0.0.1). Внутри есть readme.md, в котором описано как запускать бота, а я пройдусь по основным моментам работы интеграции.

Базовая инициализация бота

В рамках данной инициализации мы используем следующие переменные:

  • TELEGRAM_BOT_TOKEN — токен, который мы получили через @BotFather
  • TELEGRAM_OWNER_ID — Мой личный Telegram Id, чтобы можно было идентифицировать меня, как администратора
  • TELEGRAM_ALLOW_IDS — строка, где, через запятую, перечислены Telegram ID людей, которым доступна постановка мне задач.

Обработка входящего сообщения

Сообщение, которое мы отправляем боту, приходит на наш сервер в виде объекта Context, у которого есть поле message с полями:

  • id сообщения
  • текст сообщения
  • информация об отправителе: имя, username и, самое главное, id

Разумеется есть много чего еще, но нам достаточно этого набора полей.

Подготовка объекта на отправку в notion

Для отправки задачи в Notion мы создаем объект

На 3 строчке есть переменная taskDb , туда нам необходимо разместить ID вашей базы данных. Получить её можно из ссылки. Где её взять можете увидеть из скрина ниже.

Расположение ID базы данных

На 23 строчке в примере в переменную tgAuthor , в моем примере, подставляется username пользователя, чтобы потом можно было сообразить. Также можно увидеть другие поля в этом объекте:

  • Name — название задачи,
  • TGAuthor — автор задачи,
  • Status — статус, в который мы отправляем задачу. В нашем примере это Backlog,
  • Source — источник задачи. Проставляем Telegram.

После подготовки объекта мы отправляем POST запрос на метод создания страницы (документация тут). Поскольку мой пример написан на Typescript, я использую NPM пакет @notionhq/client.

После отправки запроса, в Notion, создается карточка задачи, с которой уже можно работать как вам угодно.

Обработка сообщений от других пользователей

В первой же версии я захотел сделать так, чтобы мне могли ставить задачи другие люди. Для решения этой задачи я добавил в env переменные значение TELEGRAM_ALLOW_IDS, где, через запятую, перечислил идентификаторы Telegram пользователей, которые могут ставить мне задачи.

Когда они ставят мне задачу бот также создает задачу в Notion и оповещает меня о том, что кто то осчастливил меня новой задачей.

Вместо заключения

Таким образом я получил себе верного помощника, который позволяет мне забывать меньше задач, а другим быть чуть более уверенным, что я не забуду про то, о чем меня попросили.

Бот активно дорабатывается и расширяется. Так что, в ближайшее время, будет еще контент про то, как можно автоматизировать свои рутинные действия.

Сервис для отложенного постинга в Telegram каналах

Взрывная порция интеграций, которая выведет вашу продуктивность на новый уровень.

Интеграция с Notion

Что удобнее, бот или web-версия? Notion!

Администраторы Telegram каналов используют для отложенного постинга либо боты, либо web-сервисы.

Боты работают быстрее и сразу видно, как пост будет выглядеть на канале. С другой стороны, web-сервисы предлагают хороший редактор и расширенный интерфейс.

Интеграция с Notion берет лучшее из двух подходов – создаете посты и управляете контент-планом через Notion, а для постинга используете бот.

Создание постов в Notion

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

Когда работа над черновиком завершена, переходите в бот, видите ваш пост и отправляете его на публикацию.

Контент-план в Notion

При планировании Telegram постов на будущее важно визуальное представление. В Notion доступно сразу два варианта отображения графика публикаций – календарь и timeline.

Вы можете выделять сразу несколько постов и перетаскивать их на другую дату. Изменения автоматически синхронизируются с ботом.

Продуктивность в Notion

Notion – один из лидеров на рынке приложений для эффективной работы с информацией. Используйте его возможности для увеличения продуктивности при ведении Telegram каналов.

Сразу при подключении интеграции вы получите настроенный шаблон, в котором из коробки настроены:

Интеграция с Evernote

Работайте с черновиками

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

Любые типы постов

Создавайте в редакторе не только текстовые посты, но и посты с картинками или видео, альбомы и опросы.

Редактируйте опубликованные посты

Чтобы отредактировать уже опубликованный пост, внесите изменения в заметку, а потом перейдите в бот. Там увидите последнюю версию контента и предложение обновить пост на канале.

Другие интеграции

Google Календарь

Подключение с Google Календаря решает 2 основные задачи:

Google Таблицы

Хотите знать аудиторию канала? Кто нажимал на кнопки-реакции, а кто на скрытое продолжение?

Подключите интеграцию, и бот начнет выгружать информацию о кликах в Google Таблицы. Вы узнаете, какие пользователи нажимали на какие кнопки.

Постинг через бот

Оформление постов

Все боты умеют создавать посты, но только Notepost содержит полноценный редактор настроек оформления.

  • Меняйте изображения и подписи в альбомах, устанавливайте подпись под всем альбомом или под каждым файлом в альбоме.
  • Заменяйте медиа-файлы в опубликованных постах.
  • Размещайте кнопки в произвольном порядке. Что должно быть выше – кнопка «Поделиться» или URL-кнопка? Решать вам.
  • Редактируйте кнопки. Хотите изменить текст для подписчиков в скрытом продолжении или название URL-кнопки? Нет проблем.
  • Изменяйте исполнителя или название композиции в аудио-файлах.

Водяные знаки

Защищайте свой авторский медиа-контент водяными знаками.

Водяные знаки везде:

  • На изображениях;
  • На картинках под текстом;
  • На видео;
  • На анимации;
  • На фото и видео в альбомах.

Шаблоны скрытого продолжения

Часто добавляете к посту скрытое продолжение и устали каждый раз вводить название, текст для гостей и текст для подписчиков? Создайте шаблон!

При использовании шаблона скрытое продолжение создается в пару кликов, ведь вся информация установлена заранее.

Шаблоны оформления

Если посты на канале выходят в одинаковом оформлении, создайте шаблон и применяйте настройки в один клик.

Шаблон содержит автоподпись, параметры водяного знака, настройки кнопок и др.

Создавайте любое количество шаблонов.

Выберите шаблон по умолчанию, чтобы настройки применялись автоматически для новых постов.

Профили настроек

Профили содержат настройки публикации по умолчанию: тихий режим, закрепление поста, отключение комментариев, автоповтор публикации, копирование в несколько каналов и др.

Создавайте профили для каждого типа постов и применяйте настройки в один клик.

Примеры профилей:
1) «Обычные посты» – тихий режим, копировать в 10 каналов;
2) «Реклама 1/24» – час в топе, сутки на канале, закреп и отключение комментариев.

Расписание выхода постов

Чтобы каждый раз при создании поста не вводить время вручную, настройте расписание.

Когда установите график выхода постов, откроются 2 новых возможности:

  • Сможете планировать посты на ближайшее свободное время в один клик;
  • В контент-плане сможете переносить посты на другое время в один клик.

Сценарии публикации

Нужно за раз отправить боту 100 постов? Создайте сценарий, запустите его и просто отправляйте боту контент. Посты будут запланированы в соответствии с настроенным расписанием.

Другой пример применения сценариев – создание постов в один клик. Если посты на канале выходят с одинаковыми настройками, зачем их устанавливать каждый раз? Используйте сценарий.

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

Автоповтор публикации

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

Вы можете настроить любое количество повторений.

Архив контента

Весь контент, отправленный боту, хранится в разделе заметок. Вы найдете тут черновики, опубликованные посты, креативы и шаблоны.

Чтобы найти заметку, используйте фильтры по каналу, автору, типу контента или поиск по названию.

Перейдя в заметку, вы можете ее продублировать или создать новый пост.

Короткие ссылки

Если опция включена, то все URL в посте автоматически сокращаются и к ним добавляются UTM-метки. Это полезно, если вы хотите:

Как появилась идея?

На самом деле я до последнего момента не понимал фишку чат-ботов. Ну блин, люди еще в 90-х согласились что формат текстового общения с машиной (это же консоль, Карл!) хуже чем визуальный интерфейс. Зачем снова вот это всё? Особенно меня бомбило когда боты начали появляться прямо НА САЙТАХ!

Уважаемый пользователь! У тебя перед глазами все возможности в виде ссылок и кнопок! Зачем тебе эта бото-командная-строка с одной задачей в единицу времени? Ох.

На это еще накладывается то, что приходится шизофренически притворяться что ты беседуешь с живым существом. "Привет, друг! Я бот Вильям. Как твои дела, как жена?".
Вы серьёзно?

И вообще ЧАТЫ! Я наивно думал что мы оставили их в прошлом. Если нужно отправить сообщение — ты шлёшь смс. Если нужно большое сообщение/картинку — открываешь приложение соц сети и высылаешь.

В момент когда Дуров решил делать мессенджер после ВКонтакте я подумал что его карьера закатилась и он начал сходить с ума.

Телеграм

Но время шло и к Телеграму я, таки, проникся симпатией, как и мы все. Пути технологий не исповедимы, подумал я. Но вот с чатботами время ситуацию не меняло совсем.

К счастью, волна хайпа на боты закончилась лет 5 назад. Я с облегчением выдохнул, решив что был прав, а моё ментальное спокойствие начало уравновешиваться.

Наши дни

И тут, буквально недавно, произошло просветление. Я ходил забирать посылку из почтомата. Пол часа мучался у шкафчика пытаясь авторизироваться в глючном приложении. Нервничал. Звонил и ругался в поддержку. А когда девушка холодно посоветовала воспользоваться чатботом — мысленно пожелал им банкротства.

После чего за минуту оформил в боте заявку и заветная дверка открылась.

Новая вера

Короче это сложно обьяснить логически, но я, вдруг, почувствовал, что есть что-то приятное и даже магическое в работе через чат. Такая себе концентрированная лаконичность.

Ну и, конечно же, этот опыт закрепился после нахождения в клубе. Через бота в можно плюсануть комент! Шок!

Похоже, всё наше представление о космических интерфейсах будущего (когда человек водит руками по 3д проекции) не реалистично. Возможно наше будущее — это всего лишь чатики с ботом. Разве что, общение станет голосовым. Хотя, подождите, это же Алекса? Хм. Вот будущее и наступило.

Так в чём проблема?

Всё началось с личного. Телеграм я стал активно использовать для общения, а потом и для сохранения небольших заметок. Открывается быстро. Нажал и сразу пишешь. То что нужно.

Но планирование и более детальные записи ведутся в Ноушене.

Проблема была в том, что каждый раз, когда нужно собрать мысли воедино, это даётся тяжело. Что-то записано в Телеге, что-то в Ноушене. А там где два места, там и третье появляется в виде заметок на телефоне и т.п.

Даже если просто на десктопе скопировать сообщения из Телеграма получается такие письмена, которые нужно править:

Решение

Тут, собственно, всё и сошлось. Со свежим ощущением, что боты — это не так уж зазорно, появилсь идея сделать копирование ботом сразу в Ноушен.

И чё, так можно было? Таки можно! При этом, нет необходимости давать доступ ко всему аккаунту. Достаточно просто расшарить нужную страничку с емейлом. Удобно.

Начало работы и сомнения

ps. Этот раздел будет технический. Если вы не получите удовольствия от перечисления тех. деталей можно идти к следующему.

Ввиду своей биологической склонности к индихакерству я всю жизнь менял технологии на которых работаю. Игры были с AS3 и C#. Cайты с RoR и PHP. Приложения со Swift. Система для управлением магазином с 1С.

Разные технологии — это, конечно, весело, но проблема в том, что не получается глубоко погрузиться ни в одну из них, чтобы, хоть как-то, оптимизировать скорость работы.

Видя это безобразие я решил, что хватит! Последняя технология с которой уже не слезу — это Flutter. Я надеялся что раз он собирается сразу под все платформы он сможет покрыть самые безумные идеи.

Но, увы, для бота оказался нужен стек с Python, который, блин, я в своей жизни как раз, абсолютно обошел стороной.

Ну, думаю, ладно, посмотрю по-быстрому синтаксис языка, сложностей возникнуть не должно. За пару вечеров справлюсь.
А потом, понеслось.

Технологии

Дело в том, что я прям не умею программировать быстро. Мне надо чтобы была хоть какая-то архитектура и расширяемость на будущее.

Применимо к боту — нельзя просто взять и сделать его по туториалу. Там на голубом глазу советуют делать запросы к базе на голом SQL. В жизни с таким подходом первый хацкер-школьник за переменку уничтожит все ваши труды. Нужна какая-то ORM с базовой защитой от "разработчика-дурака".

И вот к голому Питону с телеграм библиотечкой добавился Django целиком. Какая-никакая защита тут есть: https://docs.djangoproject.com/en/3.1/topics/security/

Для удобной работы с Django — нужен выделенный сервер. В облаках могут быть внезапные лимиты, плюс вопрос приватности нужно учитывать. Пришлось вспомнить как настроить выделенный сервер.

Так добавился VDS от Hetzner.

Для сервера — нужен удобный деплой. Зачем-то уже на уровне инстинкта продумываешь ситуацию переезда на другой хостинг.

Так добавился Docker.

Конфигурировать его оказалось не так просто для новичка. Бывало пытаешься выяснить почему не удаляется какой-нибудь volume из контейнера и рабочий день как корова слизала.

Короче вместо бота на пару дней, выучился полновесный стэк.

Благо есть клуб, где можно посмотреть в исходники спросить совета.

В итоге на разработку чат-бота ушло, стыдно сказать, полтора месяца почти фултайма.

Но, overall, это было довольно приятное времяпровождение. =)

1. Несколько страниц одновременно:

Первом делом стало понятно, что нужно будет привязывать много страниц. Одну — для инбокса, одну для конспектов книги, одну для заметок по работе и т.п.

Телеграм подкинул для этого очень лаконичное решение. Бота можно добавить в приватную группу на 1 человека.
Удобство: Бот будет автоматом менять название чата, при отправке ему новой страницы:

Так это выглядит у меня. Несколько чатов в папке с иконкой:

Кстати, так совпало что сегодня появился отличный пост про организацию заметок Телеграме по такой же схеме. Можете ознакомиться для лучшего понимания. Удобно даже без бота.
https://vas3k.club/post/8982

2. Markdown для форматирования.

Далее, обратил внимание, что часто использую заметки для записи мыслей во-время прогулок с аудиокнигой. Стало понятно что надо добавить форматирование. В итоге такая запись в чате

превращается в такую красоту в Ноушене

3. Минимальность интерфейса

Сила брата в правде, а чата в скорости.

Какие были нюансы:
Ноушен отвечает долго. Пока сообщение сохраняется, ценная мысль юзера улетит. Пришлось сделать отдельный Thread, который неспешно пересылает сообщения, в то время главый мгновенно принимает записи добавляя их в очередь. Тут нужно было повозиться, стандартные средства не подошли.

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

Ну и т.п. Не буду перечислять, было много проб-ошибок и всегда есть над чем работать.

Бонус!

Если в названии страницы поставить вертикальную черту, то после неё можно писать команды через запятую.

Да, прямо команды!

Таким образом какбы программировать бот.
Выглядит это так: "Прекрасное название | diary, at 16:00"

Сейчас работают такие команды:

upward — все новые сообщение будут записываться сверху. Удобно для "инбокса", чтобы не нужно было потом скролить вниз к последним записям.

diary — сообщения будут разделяться датами. Удобно для разных дневников. И вообще, полезно чтобы не превращать страницу в сплошную стену текста.

Чуть позже добавлю команду "at"

  • at 17:00 — бот каждый день будет присылать сообщение в 17:00 с напоминанием добавить запсь. Командой "at 17:00 12345" можно установить это напоминание только по будням.

Будущее

Пока тема таблиц Ноушена не раскрыта. Хочу сделать отдельного бота для этого. Он будет предлагать по очереди ввести данные в каждое из полей. И можно будет еще активнее его "программировать".

Например, если будет таблица с тремя полями "Настроение | at 10:00", "Настроение | at 15:00" и "Настроение | at 19:00", то бот трижды в нужное время будет спрашивать уровень настроения и добавлять ответы в соответствующую строку.

Потом, конечно же, можно будет сгенерировать график прогресса за неделю-месяц.

Это может быть полезно для отслеживания действия лекарств, трекинга физических упражнений, уровня энергии, выполненной работы т.п.
На десктопе на трекинг забиваешь спустя пару дней, но если бот прожужжит и попросит быстро ввести одну циферку — уже не отвертишься.

Каждый сможет задизайнить трекер своих самых экстравагантных привычек, наконец!

Я верю в концепцию "конструктора", которая есть у Ноушена. При этом меня сильно напрягают прескриптивные приложения в сфере продуктивности. Это когда некий анонимный разработчик решает сколько мне нужно пить воды и сколько медитировать. Я хочу слушать как мне жить от экспертов в этом деле, а не от выгоревших программистов )

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

Аргументы в пользу платности:

  1. Частота использования. Да, бот — это небольшой сервис, но если пользователь будет его использовать как я — это, будет несколько раз в день. Поэтому даже мелкие недоработки, или проблемы интерфейса умножатся на количество раз. Также умножится и польза.
  2. Сохранность данных. Не всех устраивает ситуация, когда самые передовые ИИ с идеальной памятью и логическими связями, которые не снились Шерлоку Холмсу, копаются в личной информации. Если сервис оплачен, то можно рассчитывать, что разработчик будет стараться ответственно относиться к сохранности данных.

Предложение:

Первая 1000 сообщений бесплатно. Далее 1$ в месяц, или 15$ лайфтайм.

Тысяча сообщений — это много. Если каждый день отправлять по несколько заметок этого хватит на целый год. А если с перерывами — то и на два. Но зато формат платности позволит приложению существовать.

Я руководствуюсь принципом, что хорошо потратить деньги зачастую — выгоднее чем не потратить. Особенно если это касается оптимизации времени. 1$ — это стоимость общественного транспорта. Кажется никто не сомневается что потратить 1$ на транспорт лучше чем экономить и идти 40 минут пешком. Но с онлайн сервисами такое сопоставление пока не всегда очевидно.

Instantly send content from Telegram to Notion

The missing integration between Telegram and Notion

Collect information without leaving Telegram

Stay in Telegram and stay productive, simply send anything you want to add to Notion

Transfer and send any type of content

Transfer and send images, files, gifs, videos. from Telegram to Notion

Blazingly fast

No waiting time, just write or transfer content as you would do it to your Telegram contacts

Are you ready to upgrade your workflow?

Telegram to Notion is a Bot that will save you precious time. Send your content to the bot and automatically saved it in your Notion.

Frequently asked questions

Is this secured?

Yes, we securely connect your Notion with Telegram, we do not save any of your credentials.

Do you store any information I send?

No, we do not read or store any information you send through this bot. The information directly goes to Notion.

Is it free?

All users can send any type of content 10 times for free.

Do you offer refunds?

Yes, we offer a 30 day moneyback guarantee, if you are not 100% delighted with our service.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *