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

Ссылки, скриншоты, статьи, заметки на ходу, важные сообщения — всё это появляется спонтанно, быстро, в разных местах. А потом так же быстро теряется. Закладки, «Избранное» в Telegram, «Посмотреть позже» — удобны в моменте, но со временем превращаются в захламлённые корзины. И главное — всё это разбросано по разным сервисам.

Я искал инструмент, который позволял бы мне фиксировать все интересное быстро, удобно и централизованно. И таким инструментом стал Google Keep — инбокс, точка входа для всего. Расскажу, почему выбрал именного его и как сделал интеграцию с Telegram.

Почему именно Google Keep

Сразу уточню: для ведения заметок, размышлений и структурирования знаний я использую Obsidian. Google Keep в моей системе — это не про долговременное хранение, а про скорость. Это инструмент, чтобы зафиксировать что‑то на ходу, не потерять в моменте.

Полезные ссылки, статьи, видео — всё это часто отправляется в закладки браузера, избранное Telegram или «Посмотреть позже» на YouTube. Основная проблема заключается в том, что это все распылено по разным сервисам и со временем превращается в кладбище забытой информации, в которой найти что‑то уже почти нереально.

Моя цель — собрать всю важную информацию в одном месте. Google Keep отлично справляется с этой задачей: просто, быстро, универсально. Главная метрика здесь — минимальное время от появления мысли до её фиксации.

  • Увидел интересную статью — жму «Поделиться», отправляю в Keep.

  • Фрагмент из видео? Скриншот — и в Keep.

  • Отрывок из текста? Расширение для Chrome позволяет Сохранить выделенное за секунду.

Расширение Google Keep для Chrome
Расширение Google Keep для Chrome

На телефоне я настроил двойной тап по крышке на открытие Keep — можно сразу надиктовать или записать мысль.

Всё: статьи, скриншоты, идеи — собирается в одном месте. Это даёт контроль и уверенность, что ничего не ускользнёт.

Чего на хватало: интеграция с Telegram

Telegram — мой основной мессенджер. Каналы, чаты, личка — постоянно появляется что‑то, что хочется сохранить. Но «Избранное» давно превратилось в свалку: файлы, ссылки, заметки вперемешку, ничего не найти. Возвращаясь к основной мысли статьи — нужен единый инбокс для хранения такой информации. Мне нужен был способ быстро и удобно перекидывать важные сообщения из Telegram в Google Keep.

К своему удивлению, готового решения, которое устраивает меня и работает, я не нашел. Более того, у Google Keep нет публичного API — доступ дается только для корпоративных аккаунтов.

Наткнулся на неофициальную библиотеку для Python — gkeepapi, которая работает с приватным API Android‑приложения. Для ее использования нам потребуется master-токен.

  1. Переходим на страницу https://accounts.google.com/EmbeddedSetup, входим в аккаунт.

  2. При помощи любого средства для просмотра cookie ищем наш oauth_token (скриншот приведем ниже)

  3. Используя библиотеку gpsoauth получаем master token (я использовал Docker, команда приведена ниже)

Нас интересует oauth_token, который начинается с 'oauth2_4/'
Нас интересует oauth_token, который начинается с 'oauth2_4/'

Docker команда для получение master-токена (начинается с aas_et/), указываем почту, полученный раннее oauth токен, Android Id оставляем пустым:

docker run --rm -it --entrypoint /bin/sh python:3.8 -c 'pip install gpsoauth; python3 -c '\''print(__import__("gpsoauth").exchange_token(input("Email: "), input("OAuth Token: "), input("Android ID: ")))'\'

После того, как мы получили токен, можно приступать к написанию самого Telegram бота, в этом абсолютно нет ничего сложного. Бот должен сохранять обычные сообщения от пользователя, пересланные сообщения от других пользователей и каналов, чатов.

import asyncio
import logging

from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.dispatcher.middlewares.base import BaseMiddleware
from typing import Callable, Dict, Any, Awaitable
import gkeepapi

from config import *


# Настройка логов
logging.basicConfig(level=logging.INFO)

# Инициализация Google Keep
keep = gkeepapi.Keep()
success = keep.authenticate(GOOGLE_EMAIL, MASTER_TOKEN)

# Инициализация бота
bot = Bot(token=TELEGRAM_BOT_TOKEN)
dp = Dispatcher()


# Middleware, который пропускает только сообщения от владельца бота
class OnlyUserMiddleware(BaseMiddleware):
    def __init__(self, allowed_user_id: int):
        self.allowed_user_id = allowed_user_id

    async def __call__(
        self,
        handler: Callable[[Message, Dict[str, Any]], Awaitable[Any]],
        event: Message,
        data: Dict[str, Any]
    ) -> Any:
        if event.from_user.id != self.allowed_user_id:
            return  # Игнорируем сообщение
        return await handler(event, data)


# Регистрируем middleware
dp.message.middleware(OnlyUserMiddleware(TELEGRAM_OWNER_ID))


# Обработка текстовых и пересланных сообщений
@dp.message()
async def save_note(message: Message):
    content = message.text or message.caption
    if not content or content.startswith("/"):
        return  # Игнорируем команды и пустые тексты

    header = "Заметка из Telegram"

    if message.forward_from:
        username = message.forward_from.username or ''
        full_name = f"{message.forward_from.first_name or ''} {message.forward_from.last_name or ''}".strip()
        sender_info = f"@{username}" if username else full_name
        header = f"Переслано от пользователя: {sender_info}"

    elif message.forward_sender_name:
        header = f"Переслано от: {message.forward_sender_name}"

    elif message.forward_from_chat:
        chat = message.forward_from_chat
        sender_info = f"@{chat.username}" if chat.username else chat.title or "Неизвестный канал"
        header = f"Переслано из канала: {sender_info}"

    note = keep.createNote(header, content)
    note.color = gkeepapi.node.ColorValue.Blue
    keep.sync()

    await message.reply("Заметка сохранена в Google Keep!")


# Запуск
async def main():
    await dp.start_polling(bot)


if __name__ == "__main__":
    asyncio.run(main())

Для удобства я еще создал Dockerfile, тут тоже нет ничего сложного. Исходный код опубликован в GitHub и доступен каждому.

Пример работы
Пример работы

Что дальше

Google Keep — это лишь точка входа. Заметки сами по себе ничего не решают, если они не будут осмысленны и обработаны в дальнейшем. В моем случае Google Keep — просто инбокс, который наполняется и чистится регулярно. Раз в неделю я выделяю время, просматриваю содержимое Keep, переношу важное в Obsidian, удаляю остальное.

Касаемо Obsidian — я пробовал разные решения для экспорта заметок из Google Keep, но все они основаны на разовом импорте через архив, как я понял, и это мне не подходит. В будущем обязательно хочу написать свой плагин, который упростил разбор инбокса.

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

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

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

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

https://github.com/kiwiz/gkeepapi — билиотека для работы с Google Keep
https://github.com/simon‑weber/gpsoauth — библиотека для получения master‑токена
https://github.com/rukins/gpsoauth‑java/blob/b74ebca999d0f5bd38a2eafe3c0d50be552f6385/README.md#first‑way — получение oauth токена

Мой репозиторий на GitHub — буду рад предложениям по улучшению работы бота!

Комментарии (21)


  1. Turbo_Pascal_55
    26.05.2025 06:04

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

    Сделать папку-помойку (многие называют её "Indox"), и потом разгребать её раз в неделю.


    1. selfdoor Автор
      26.05.2025 06:04

      Проблема в том, что нет удобных средств для того, чтобы сохранять понравившиеся материалы напрямую в обсидиан. Я ценю Google Keep за то, что могу отправить в инбокс статью с телефона, скриншот, выделить что-то на сайте. Вторая проблема подхода, что вы описали, заключается в том, что нет нормальной синхронизации клиента Obsidian на телефоне и на компьютере (либо платный вариант от самого Obsidian, либо syncthing, с которым у меня постоянные проблемы).


      1. noncinque
        26.05.2025 06:04

        Fit для мобильных, Git для ПК.


        1. Antas_Santa
          26.05.2025 06:04

          Объясните что вы имели в виду?) что такое fit? И гит это имеете в виду гитхаб? Там хранить заметки?


  1. AlexGorky
    26.05.2025 06:04

    Что ж, с учетом того, что PocketIt закрывается...


  1. mopsicus
    26.05.2025 06:04

    Скорее всего скоро такую лазейку закроют, если нет публичного API. Да и как выше написали, можно сразу в Обсидиан класть, есть же плагины и боты.


    1. selfdoor Автор
      26.05.2025 06:04

      Библиотека gkeepapi существует довольно давно и я надеюсь, что способ будет рабочий. Касаемо "сразу класть в Обсидиан" написал ответ к комментарию автора. Может предложите варианты плагинов и синхронизации?


      1. PVV07
        26.05.2025 06:04

        Рассмотрите плагин "Remotly Save" для Obsidian, можно настроить хранение информации через "Яндекс диск", например. После настройки можно будет синхронизировать данные нажатием одной кнопки


        1. selfdoor Автор
          26.05.2025 06:04

          Спасибо, ознакомлюсь! Так же одна из причин, по которым я не использую Obsidian на телефоне - это громоздкий интерфейс, банально лично мне не удобно. Думаю лучше скачать md редактор.


      1. mopsicus
        26.05.2025 06:04

        Ну так через поделиться в Обсидиан точно также сохраняется . Есть вебклиппер для браузера. Чтобы синхронизироваться есть несколько вариантов, официальный платный, через гугл диск, через гитхаб, через syncthing. Я настроил через syncthing, всё хранится только на моем сервере и синхронизируется на все устройства.


        1. selfdoor Автор
          26.05.2025 06:04

          поделиться в Обсидиан точно также сохраняется

          Да, вы правы и такой вариант пригоден, однако:

          1. Я читаю ленту новостей и хочу сохранить статью: жму "Поделиться", выбираю Obsidian и мне предлагается на выбор: вставить текст в "" (открытая заметка), выберите файл для вставки (надо выбрать существующий файл), вставить текст в ежедневную заметку. Мне бы же хотелось просто создать новую заметку и вставить в нее, накидав сразу пару мыслей, избегая лишних действий с созданием заметки. В случае Google Keep это делать гораздо удобнее.

          2. Если я делаю скриншот на телефоне, обвожу что-то и хочу поделиться в Obsidian, то мне он вставит этот скриншот как обычный файл, а не как заметку с картинкой, что тоже не удобно в том случае, если я хочу сразу написать что-то про скриншот.

          Касаемо вебклиппера - не изучал, посмотрю, спасибо.

          По синхронизации - тестировал некоторые варианты, в том числе и syncthing, не зашло.


          1. mopsicus
            26.05.2025 06:04

            Штош, каждый выбирает как ему удобнее)


          1. CypoBblu
            26.05.2025 06:04

            Вебклипер можно настроить, там есть разные темплейты - хочешь будет а сущ. заметку класть, хочешь будет новую создать. Темплейты можно готовые найти и скачать, там и под Ютуб и под разные сайты. С телефона можно через Телеграм в Обсидиан отправлять заметки, плагин для Обсидиан есть https://github.com/soberhacker/obsidian-telegram-sync


      1. Antas_Santa
        26.05.2025 06:04

        https://habr.com/ru/articles/912396/

        Вот соседняя статья может поможет. А вообще.... Я конечно тоже пользуюсь Гугл кип но получается такая же помойка как и в избранном ТГ. По мне так уже удобнее всего как я сделал: создал просто в ТГ у себя свой чат личный групповой типо. Сделал себе группы и уже по разным группам кидаю ссылки которые нужны. Но опять таки ТГ закроют ( и всё ваше уже не ваше). Не закроют конечно но могут) так же и Гугл может обанкротиться >)))


      1. sashikutkin
        26.05.2025 06:04

        Лично использую плагин https://github.com/soberhacker/obsidian-telegram-sync


  1. login40k
    26.05.2025 06:04

    Создать ТГ бота, которому писать в личку в любом виде. Под него кинуть мультимодальную ллм можно её запускать раз в неделю и просить пробежаться по чату и адаптировать в формат обсидиан то что отмечено каким-то емодзи. На выходе у тебя готовая пачка на вставку в обсидиан без наркомании с кипом.


    1. selfdoor Автор
      26.05.2025 06:04

      Как вариант - да. Как другой вариант - есть плагин для Obsidian для LLM, которая анализирует твои заметки и это звучит как более классное решение, но надо экспортировать из кип в Obsidian (тут вы правы, это проблемно)

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

      Вся моя мысль сводится к тому - что у Google Keep уже есть возможность "поделиться в него" и это подкупает. Телеграм и мой бот - это всего лишь один новый такой "экспортер".

      Ну и не стоит забывать, что Google Keep имеет и другой функционал, порой пользуюсь для списка покупок или виджеты на рабочий экран + работает оффлайн в мобильной версии.


      1. Antas_Santa
        26.05.2025 06:04

        Если бы в Гугл кип сделали ХОТЯ БЫ папки это уже бы решило много проблем а то что сейчас..... Как я уже говорил выше это та же очередная мусорка. Просто тупо все в одном списке. Теги это ерунда. Ведь хочется же как то понимать что здесь лежит одно а там другое. Ну хотя бы папки..... Гугл.......


  1. ktibr0
    26.05.2025 06:04

    Хм...тем, у кого избранное в Телеграм превратилось в помойку, напомню про способ организации заметок в телеграм, как приватный чат с темами.

    Создаете приватный чат. Добавляете в настройках "Темы" - вуаля, у вас есть записная книжка с возможностью группировки мыслей, заметок, документов и всего того, что в избранном было кучкой, по любой удобной тематической логике. Более того, с учётом возможности ставить теги (#), появляется еще один аналитический слой (слои) в теме.

    Просто вместо "отправить в избранное" у вас действие "отправить в.." и выбрать тему частного чата.

    И да, можно сделать еще чат(ы), добавив туда кого то из близких, превращая такие тематические пространства еще и доступными для нескольких пользователей.

    Кстати, очень удачно статья появилась. подходы к работе очень глубокие, но общая логика - классификация в телеграм может кому то пригодится https://habr.com/ru/companies/nspk/articles/900858/


    1. Dementor
      26.05.2025 06:04

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


  1. denic2409
    26.05.2025 06:04

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