Привет! В этой статье я расскажу, как решил одну, казалось бы, простую на раздражающую проблему — как быстро сохранить информацию из разных источников в одно место, чтобы ничего не терялось.
Ссылки, скриншоты, статьи, заметки на ходу, важные сообщения — всё это появляется спонтанно, быстро, в разных местах. А потом так же быстро теряется. Закладки, «Избранное» в Telegram, «Посмотреть позже» — удобны в моменте, но со временем превращаются в захламлённые корзины. И главное — всё это разбросано по разным сервисам.
Я искал инструмент, который позволял бы мне фиксировать все интересное быстро, удобно и централизованно. И таким инструментом стал Google Keep — инбокс, точка входа для всего. Расскажу, почему выбрал именного его и как сделал интеграцию с Telegram.
Почему именно Google Keep
Сразу уточню: для ведения заметок, размышлений и структурирования знаний я использую Obsidian. Google Keep в моей системе — это не про долговременное хранение, а про скорость. Это инструмент, чтобы зафиксировать что‑то на ходу, не потерять в моменте.
Полезные ссылки, статьи, видео — всё это часто отправляется в закладки браузера, избранное Telegram или «Посмотреть позже» на YouTube. Основная проблема заключается в том, что это все распылено по разным сервисам и со временем превращается в кладбище забытой информации, в которой найти что‑то уже почти нереально.
Моя цель — собрать всю важную информацию в одном месте. Google Keep отлично справляется с этой задачей: просто, быстро, универсально. Главная метрика здесь — минимальное время от появления мысли до её фиксации.
Увидел интересную статью — жму «Поделиться», отправляю в Keep.
Фрагмент из видео? Скриншот — и в Keep.
Отрывок из текста? Расширение для Chrome позволяет Сохранить выделенное за секунду.

На телефоне я настроил двойной тап по крышке на открытие Keep — можно сразу надиктовать или записать мысль.
Всё: статьи, скриншоты, идеи — собирается в одном месте. Это даёт контроль и уверенность, что ничего не ускользнёт.
Чего на хватало: интеграция с Telegram
Telegram — мой основной мессенджер. Каналы, чаты, личка — постоянно появляется что‑то, что хочется сохранить. Но «Избранное» давно превратилось в свалку: файлы, ссылки, заметки вперемешку, ничего не найти. Возвращаясь к основной мысли статьи — нужен единый инбокс для хранения такой информации. Мне нужен был способ быстро и удобно перекидывать важные сообщения из Telegram в Google Keep.
К своему удивлению, готового решения, которое устраивает меня и работает, я не нашел. Более того, у Google Keep нет публичного API — доступ дается только для корпоративных аккаунтов.
Наткнулся на неофициальную библиотеку для Python — gkeepapi, которая работает с приватным API Android‑приложения. Для ее использования нам потребуется master-токен.
Переходим на страницу https://accounts.google.com/EmbeddedSetup, входим в аккаунт.
При помощи любого средства для просмотра cookie ищем наш oauth_token (скриншот приведем ниже)
Используя библиотеку gpsoauth получаем master token (я использовал Docker, команда приведена ниже)

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 — буду рад предложениям по улучшению работы бота!