Телеграм‑бот «Второй мозг»: голосовые сообщения превращаются в структурированные записи в Google Таблицах.
Whisper делает транскрибацию, GPT — маршрутизацию и извлечение данных по колонкам.
- Голос → таблица: расшифровка, выбор категории из Settings, запись в нужный лист и Inbox.
- Намерение из голоса (для коротких сообщений): бот понимает, это добавление, вопрос или удаление.
- Thinking‑mode для длинных голосовых (>2 мин): бот структурирует мысли и просит подтвердить сохранение в лист «Прочее» (если листа нет — сохранит в Inbox).
- Поиск по базе: задайте вопрос голосом — бот ответит по данным всех листов категорий.
- Удаление: бот покажет список найденных записей и попросит подтверждение.
- Обязательные поля: добавьте
*к заголовку (напримерПриоритет*) — бот попросит уточнение. - Сводки: ежедневные/еженедельные отчеты из Inbox.
- Свои промпты: можно менять через
/settings(лист Prompts).
- Голос → Whisper → текст.
- Если голос длиннее 2 минут → Thinking‑mode:
- бот приводит мысли в порядок,
- показывает структуру,
- просит подтвердить сохранение в «Прочее».
- Если голос короткий → определяется намерение:
- add → запись в нужный лист + Inbox,
- ask → ответ по базе,
- delete → выбор кандидата и удаление.
- Python 3.10+
- Telegram Bot Token (получить у @BotFather)
- OpenAI API Key
- Google Sheets + Service Account (JSON‑ключ)
Создайте таблицу и дайте доступ на редактирование email сервисного аккаунта.
Обязательные листы:
- Settings — A: название категории (имя листа), B: описание категории.
- Inbox — резервная копия каждой записи.
- Прочее — лист для длинных голосовых (Thinking‑mode).
Опционально:
- Prompts — для кастомных промптов из
/settings.
Категорийные листы:
- По одному листу на категорию (название как в Settings, колонка A).
- Первая строка — заголовки.
- Обязательные поля помечайте
*(напримерПриоритет*).
Файл .env лежит в корне проекта. Пример в .env.example.
| Переменная | Описание |
|---|---|
TELEGRAM_TOKEN |
токен бота |
OPENAI_API_KEY |
ключ OpenAI |
GOOGLE_SHEET_ID |
ID таблицы из URL |
ALLOWED_USER_IDS |
Telegram ID (через запятую) |
ALLOWED_USERNAMES |
usernames без @ (через запятую) |
Также положите service_account.json в корень проекта.
git clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
cp .env.example .env
# заполните .env и положите service_account.json в корень
python3 -m venv .venv
.venv/bin/pip install aiogram openai gspread python-dotenv
.venv/bin/python main.pygit clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
copy .env.example .env
# заполните .env и положите service_account.json в корень
python -m venv .venv
.venv\Scripts\pip install aiogram openai gspread python-dotenv
.venv\Scripts\python main.pyВ панели Beget загрузка архива часто очень долгая из‑за большого количества файлов.
Самый быстрый путь — git clone через консоль.
После покупки сервера Beget присылает IP и пароль на почту.
Mac / Linux:
ssh root@ВАШ_IPWindows (PowerShell):
ssh root@ВАШ_IPmkdir -p /root/second-brain-bot
cd /root/second-brain-bot
git clone https://github.com/morf3uzzz/second-brain-telegram-bot.git .cp .env.example .env
# заполните .env
# загрузите service_account.json в корень проекта
bash setup.shСкрипт setup.sh:
- ставит зависимости,
- создаёт systemd‑сервис,
- включает автозапуск.
Проверка:
systemctl status second-brain-bot
journalctl -u second-brain-bot -fПросто загрузите файл в корень проекта.
Mac / Linux:
scp /путь/к/service_account.json root@ВАШ_IP:/root/second-brain-bot/Windows PowerShell:
scp C:\путь\к\service_account.json root@ВАШ_IP:/root/second-brain-bot/cd /root/second-brain-bot
git pull
systemctl restart second-brain-botMIT. См. LICENSE.
Телеграм-бот для продуктивности: голосовые сообщения превращаются в структурированные записи в Google Таблицах. Использует OpenAI Whisper для транскрибации и GPT для категоризации и извлечения данных. Поддерживает поиск по базе, удаление по намерению, ежедневные и еженедельные сводки и настраиваемые промпты.
- Голос → таблица: отправьте голосовое — бот расшифрует, выберет категорию из Settings, заполнит строку по заголовкам листа и запишет в целевой лист и Inbox.
- Намерение из голоса: для коротких сообщений бот сам понимает, хотите ли вы добавить запись, задать вопрос по данным или удалить запись — кнопки не нужны.
- Thinking‑mode для длинных голосовых: если сообщение длиннее 2 минут, бот структурирует мысли и предлагает подтвердить сохранение в «Прочее» (если листа нет — сохранит в Inbox).
- Поиск: задайте вопрос голосом — бот ответит на основе всех листов категорий.
- Удаление: скажите, что нужно удалить — бот найдёт кандидатов, вы выберете запись; удаление идёт из листа категории и из Inbox.
- Обязательные поля: в заголовке колонки поставьте
*(напримерПриоритет*); если значение пустое, бот спросит уточнение одним сообщением (формат:Поле=значение; Поле=значениеили просто значение для одного поля). - Ежедневные и еженедельные сводки: краткие сводки из Inbox в выбранный чат, время и таймзона настраиваются в
/settings. - Свои промпты: редактирование промптов роутера и извлечения через
/settings(хранятся в листе Prompts).
- Python 3.10+
- Токен бота Telegram (@BotFather)
- API-ключ OpenAI (Whisper и GPT)
- Проект в Google Cloud с включённым Sheets API и сервисным аккаунтом (JSON-ключ)
- Создайте таблицу и дайте доступ на редактирование email сервисного аккаунта из JSON-ключа.
- Листы:
- Settings: колонка A — категория (название листа), колонка B — описание для роутера.
- Inbox: копия каждой заметки (Дата, Категория, Текст). Создаётся/используется ботом.
- Прочее: свалка для длинных голосовых из Thinking‑mode (рекомендуется).
- Prompts (необязательно): ключ / значение для своих промптов. Создаётся при сохранении промпта из
/settings. - По одному листу на категорию (название как в Settings, колонка A). Первая строка — заголовки. Для обязательных колонок добавьте
*(напримерПриоритет*).
# Клонирование
git clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
# Переменные окружения
cp .env.example .env
# Заполните .env: TELEGRAM_TOKEN, OPENAI_API_KEY, GOOGLE_SHEET_ID, ALLOWED_USER_IDS, ALLOWED_USERNAMES
# Ключ сервисного аккаунта положите как service_account.json (или service_account.json.json) в корень проекта
# Виртуальное окружение и запуск
python3 -m venv .venv
.venv/bin/pip install aiogram openai gspread python-dotenv
.venv/bin/python main.pygit clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
cp .env.example .env
# Добавьте .env и service_account.json
bash setup.shСкрипт setup.sh ставит зависимости, создаёт systemd-сервис и включает его. Логи: journalctl -u second-brain-bot -f.
| Переменная | Описание |
|---|---|
| TELEGRAM_TOKEN | Токен бота от BotFather |
| OPENAI_API_KEY | API-ключ OpenAI |
| GOOGLE_SHEET_ID | ID таблицы из URL |
| ALLOWED_USER_IDS | ID пользователей Telegram через запятую |
| ALLOWED_USERNAMES | Юзернеймы без @ через запятую |
- Добавить запись: отправьте голосовое — бот добавит в нужный лист и Inbox.
- Длинное голосовое (>2 мин): бот сначала структурирует мысли и попросит подтвердить сохранение в «Прочее» (или в Inbox, если листа нет).
- Вопрос: отправьте голосовое с вопросом — бот ответит по вашим таблицам.
- Удалить: скажите, например, «удали задачу про X» — выберите из списка; строка удалится из листа и Inbox.
- Настройки: команда
/settings— промпты, чат для сводок, время и таймзона ежедневных/еженедельных сводок.
MIT. См. LICENSE.
A productivity Telegram bot that turns voice messages into structured notes in Google Sheets. Uses OpenAI Whisper for transcription and GPT for categorization and data extraction. Supports search over your data, deletion by intent, daily/weekly summaries, and customizable prompts.
- Voice → Sheet: Send a voice message; the bot transcribes it, picks a category from your Settings, fills the row by sheet headers, and writes to the target sheet + Inbox.
- Intent from voice: For short messages, the bot infers whether you want to add, ask, or delete—no buttons required.
- Thinking mode for long voice: If a message is longer than 2 minutes, the bot structures your thoughts and asks to confirm saving to Прочее (or Inbox if the sheet is missing).
- Search: Ask questions in voice; the bot answers using data from all category sheets.
- Delete: Say you want to remove something; the bot finds candidates and lets you pick one to delete (from both the category sheet and Inbox).
- Required fields: Mark columns with
*in the header (e.g.Приоритет*); if empty, the bot asks for values in one round (e.g.Поле=значение; Поле=значениеor just the value for a single field). - Daily / weekly summaries: Optional summaries from Inbox, sent to a chat you choose, with configurable time and timezone in
/settings. - Custom prompts: Edit router and extract prompts via
/settings(stored in the Prompts sheet).
- Python 3.10+
- Telegram Bot Token (@BotFather)
- OpenAI API key (Whisper + GPT)
- Google Cloud project with Sheets API enabled and a service account (JSON key)
- Create a spreadsheet and share it with the service account email (Editor).
- Sheets:
- Settings: Col A = Category (sheet name), Col B = Description (for the router).
- Inbox: Backup of every note (Date, Category, Transcript). Created/used by the bot.
- Прочее: Catch‑all for long voice messages from Thinking mode (recommended).
- Prompts (optional): Key / Value for custom prompts. The bot can create it when you save a prompt from
/settings. - One sheet per category (same name as in Settings Col A), first row = column headers. Use
*for required columns (e.g.Приоритет*).
# Clone
git clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
# Env
cp .env.example .env
# Edit .env: TELEGRAM_TOKEN, OPENAI_API_KEY, GOOGLE_SHEET_ID, ALLOWED_USER_IDS, ALLOWED_USERNAMES
# Service account key as service_account.json (or service_account.json.json) in project root
# Venv + run
python3 -m venv .venv
.venv/bin/pip install aiogram openai gspread python-dotenv
.venv/bin/python main.pygit clone https://github.com/morf3uzzz/second-brain-telegram-bot.git
cd second-brain-telegram-bot
cp .env.example .env
# Add .env and service_account.json
bash setup.shsetup.sh installs dependencies, creates a systemd service, and enables it. Logs: journalctl -u second-brain-bot -f.
| Variable | Description |
|---|---|
| TELEGRAM_TOKEN | Bot token from BotFather |
| OPENAI_API_KEY | OpenAI API key |
| GOOGLE_SHEET_ID | Spreadsheet ID from the sheet URL |
| ALLOWED_USER_IDS | Comma-separated Telegram user IDs |
| ALLOWED_USERNAMES | Comma-separated usernames (without @) |
- Add a note: Send a voice message; the bot adds it to the right sheet and Inbox.
- Long voice (>2 min): The bot structures the thoughts and asks to confirm saving to Прочее (or Inbox if missing).
- Ask: Send a voice message that is a question; the bot answers from your sheets.
- Delete: Say something like “удали задачу про X”; choose from the list, then the row is removed from the sheet and Inbox.
- Settings: Send
/settingsto configure prompts, summary chat, daily/weekly time and timezone.
MIT License. See LICENSE.