Экспорт и анализ Telegram-чата: 2 способа выгрузить историю
Как выгрузить историю Telegram-чата или канала и отдать её ИИ: экспорт в JSON за 10 минут или MCP-коннектор к API для просмотров и статистики канала.

Есть два способа выгрузить и проанализировать Telegram-чат, канал или группу с помощью ИИ. Первый — экспорт из десктопного клиента: десять минут, ничего настраивать не нужно. Второй — коннектор к API: полчаса разовой настройки, зато доступны просмотры, пересылки, участники и выгрузка сразу по всем чатам.
Как выбрать способ
Если нужен один чат или канал — экспорта из клиента достаточно. Если нужны сразу все чаты, статистика своего канала или метрики, которых в обычном экспорте нет (просмотры, пересылки, комментарии), — придётся завести коннектор к API.
| Вариант 1. Экспорт из клиента | Вариант 2. Коннектор к API | |
|---|---|---|
| Настройка | нет | ~30 минут, разово |
| Один чат или канал | идеально | избыточно |
| Сразу все чаты | невыносимо вручную | единственный способ |
| Тексты, реакции, медиа | есть | есть |
| Просмотры, пересылки, комментарии | нет | есть |
| Участники группы | нет | есть |
| Статистика своего канала | нет | есть (окно 93 дня) |
| Повторяемость | руками каждый раз | скриптом, инкрементально |
Этот гайд можно не читать, а отдать ИИ. Загрузите этот текст в Claude Desktop, Claude Code, Codex или другого агента с доступом к компьютеру и напишите одну фразу:
«Прочитай гайд. Мне нужно проанализировать [свой канал / чат / всю переписку]. Определи по гайду подходящий вариант, задай мне недостающие вопросы и проведи меня по шагам: что скачать, что нажать, какие команды выполнить в терминале.»
Дальше агент сам: либо ведёт по экспорту из клиента (вариант 1), либо собирает MCP-коннектор (вариант 2, промпт для него готовый — ниже). Ваша часть — вставлять команды в терминал и вводить код из Telegram: пароли и коды агенту не показывают, их вводите только вы.
Вариант 1. Экспорт из клиента
Шаг 1. Поставить нужный клиент
Экспорт есть только в Telegram Desktop. У нативного macOS-клиента такого пункта нет.
Скачать: desktop.telegram.org
В Mac App Store Telegram Desktop называется «Telegram Lite» — чтобы не конфликтовать с нативным «Telegram». То есть «облегчённый» на вид клиент и есть полноценный.
Различить в доке проще всего по иконке. Оба значка — белый самолётик на синем, но фон разный:
Шаг 2. Открыть экспорт
Чат, канал или группа → ⋮ справа вверху → Export chat history.
Подписываться на канал не нужно — экспорт доступен и там, где вы не участник.
Шаг 3. Настроить
- Формат — переключить на JSON. По умолчанию в диалоге стоит Format: HTML. Эта строка кликабельная: нажать на неё и выбрать JSON — в нём даты, авторы, реакции и id сообщений лежат отдельными полями, и нейросеть или скрипт с ними работают. HTML годится только полистать глазами: распарсить его потом не выйдет.
- Медиа — снять все галочки. Photos включён по умолчанию, и это главная причина, почему экспорт идёт часами вместо минут: картинки и видео весят кратно больше текста, а для анализа переписки не нужны. У Files свой ползунок Size limit (8 МБ) — он режет вложения, не сообщения; тексты выгрузятся целиком в любом случае.
- Диапазон. From: the oldest message, to: present кликабельно, открывает календарь. Сброс — Reset.
Папка. Path по умолчанию Downloads/Telegram Desktop.
Дальше — Export.
Шаг 4. Дождаться
- Первый в жизни экспорт Telegram задерживает примерно на сутки и шлёт подтверждение на другое устройство. Обойти нельзя — не планировать на день дедлайна.
- Скорость равна скорости API: 8 000 сообщений — минуты, канал на 100 тысяч с медиа — часы.
- Клиент должен оставаться открытым, экспорт не фоновый.
На выходе — result.json (или .html) и папки photos/, video_files/, voice_messages/.
Шаг 5. Отдать выгрузку агенту
Файл result.json перетащить в Claude, Codex, ChatGPT или другого ассистента с чтением файлов и сформулировать задачу. Выгрузка на несколько десятков тысяч сообщений в контекст целиком не влезет — в этом случае просить агента считать по файлу кодом (питоном), а не «прочитать всё»: цифры тогда воспроизводимы и не выдуманы.
Примеры запросов — брать как заготовку и править под себя.
Разбор своего или чужого канала
Вот выгрузка Telegram-канала (result.json). Посчитай по ней кодом, не на глаз:
частоту публикаций по неделям; лучшее время и день по вовлечённости; топ-10 и антитоп-10 постов
с цифрами; какие темы и форматы систематически выше среднего, какие ниже; динамику за период.
Учти: посты из нескольких картинок — это одно сообщение, склей по grouped_id до подсчётов,
иначе счётчик завышается в полтора раза. Если текст пуст, ищи его в rich_message.blocks.
Ответ: таблица с цифрами + пять выводов, что делать с контент-планом.
Тон голоса (tone of voice) для дальнейших текстов
Это выгрузка нашего канала. Собери описание авторского тона, чтобы по нему можно было писать
новые посты: структура типичного поста, длина, как начинается и чем заканчивается, обращение
к читателю, лексика и характерные обороты, отношение к эмодзи и форматированию, чего автор
не делает никогда. Подтверди каждый пункт двумя-тремя дословными цитатами из выгрузки.
Отдельно — пять анти-примеров: фразы, которые в этом канале звучали бы чужеродно.
Личная переписка: договорённости и хвосты
Вот выгрузка личной переписки с человеком. Собери хронологию: о чём договаривались, какие
обещания давали обе стороны, что из этого выполнено и что повисло без ответа. Отдельно —
список открытых вопросов, адресованных мне, с датой и цитатой. Не пересказывай бытовое общение
и не интерпретируй эмоции, только факты и договорённости.
Рабочий чат или группа
Вот выгрузка рабочего чата. Выдели: принятые решения с датой и автором; поручения и на ком они;
повторяющиеся темы, которые всплывают снова и снова (признак нерешённой проблемы);
кто из участников реально ведёт обсуждение, а кто только читает. Каждый пункт — со ссылкой
на id сообщения, чтобы можно было проверить.
Дашборд по результатам
По посчитанным цифрам собери одностраничный HTML-дашборд, который открывается двойным кликом
без интернета: ключевые метрики крупно, график динамики, таблица топ-постов. Никаких внешних
библиотек и ссылок — всё внутри файла.
Что в выгрузке есть и чего нет
| Есть | Нет |
|---|---|
| Тексты, даты, авторы, ответы, форварды | Просмотры |
| Реакции с разбивкой по эмодзи | Пересылки |
| Хештеги, ссылки, упоминания | Комментарии к постам канала |
| Медиафайлы (если отметили) | Приток и отток подписчиков |
Комментарии лежат в привязанной группе и тянутся отдельно.
Две ловушки парсинга
Пустое поле text. У сообщений с форматированием текст лежит в rich_message.blocks, а text — пустая строка. Наивный парсер их теряет. Правило: text пуст и медиа нет — идти в blocks.
Альбомы. Несколько картинок — это несколько сообщений: подпись и реакции на первом, остальные пустые. Без склейки по grouped_id счётчик постов завышается примерно в полтора раза, а «постов без реакций» — в десятки. Склеивать нужно до подсчётов.
Вариант 2. Коннектор к API
Даёт то, чего нет в выгрузке: просмотры, пересылки, комментарии, участников, статистику своего канала и обход всех чатов разом. Логика простая: вы получаете ключ приложения, дальше коннектор пишет ИИ, а вы запускаете четыре команды в терминале. Программировать не нужно.
Шаг 1. Получить api_id и api_hash
Открыть: my.telegram.org → API development tools
- Номер телефона в международном формате. Код придёт в сам Telegram, не по SMS.
- Форма «Create new application»: App title (любое), Short name (латиница, 5–32 символа), Platform — Desktop. URL можно оставить пустым.
- Забрать App api_id и App api_hash. Второй раз их удобно не покажут — сохранить сразу.
Если рабочая пара уже есть — новую заводить не нужно. api_id идентифицирует приложение, а не пользователя: одной парой можно логиниться под любым аккаунтом.
ERROR без объяснений — это почти всегда сеть, а не блокировка аккаунта. Заграничный VPN даёт рассинхрон: страна IP не совпадает со страной кода номера. Заходить с IP страны номера, в инкогнито. После нескольких попыток включается rate-limit на час-другой, выглядит он так же — подождать.
Практическая рекомендация. Проверено в июле 2026 года. Если форма не поддаётся, самый надёжный способ — оказаться в стране, откуда она открывается: Армения, Грузия, Казахстан. Достаточно одной поездки, приложение создаётся один раз и работает дальше отовсюду.
Второй вариант, без поездки, — попросить создать приложение друзей или родственников, которые уже там. Это безопасно:
api_idидентифицирует приложение, а не человека. Доступа к вашему аккаунту такая пара не даёт — чтобы подключиться, всё равно нужно ввести одноразовый код из Telegram и облачный пароль, а они приходят только вам.
Шаг 2. Отдать сборку коннектора ИИ
Открыть Claude Code или Codex в терминале (либо Claude Desktop с доступом к файлам) и вставить промпт целиком. api_id и api_hash в промпт не вписывать — агент спросит их отдельно или попросит положить в переменные окружения.
Собери мне локальный MCP-сервер к Telegram, чтобы ассистент мог читать мои чаты и каналы.
Я не программист: объясняй по шагам и давай команды, которые я просто вставлю в терминал.
ЧТО ДОЛЖНО ПОЛУЧИТЬСЯ
· Python-сервер на библиотеках Telethon (MTProto) и mcp[cli]>=1.0.0,<2 — версию 2.0 не ставить,
в ней вырезан FastMCP и сервер не поднимется.
· Живёт локально, вне облачных и расшаренных папок:
~/Library/Application Support/Claude/mcp-servers/telegram-read/
(Windows: %APPDATA%Claudemcp-servers elegram-read)
· Рядом run.sh (run.bat), который создаёт venv, ставит зависимости и запускает сервер.
ДОСТУПЫ И СЕКРЕТЫ
· api_id и api_hash спроси у меня и пропиши в env запуска или в Keychain — не в код,
не в git, не в общие папки. api_hash — секрет, api_id — нет.
· Файл сессии (.session) = ключ от моего аккаунта: держать рядом с сервером, в .gitignore,
никуда не копировать.
· Первый вход интерактивный: номер → код из Telegram → облачный пароль, если включена 2FA.
Команду для входа дай мне отдельно, я выполню её сам в терминале.
ИНСТРУМЕНТЫ (только чтение)
· get_me — проверка, под кем вошли
· list_dialogs(limit, only_unread, include_archived) — список чатов, тип и число участников;
дефолтный лимит обрезает по активности, для полноты ставь limit>=4000
· get_chat_history(chat, limit, offset_date) — история: текст, дата, автор, ответы, форварды,
и для постов канала публичные счётчики views / forwards / reactions / comments
· search_in_chat(chat, query, limit) — поиск внутри чата
· get_participants(chat) — участники группы, с троттлингом по FLOOD_WAIT
· export_history(chat, out_path) — выгрузка всей истории чата в локальный SQLite,
инкрементально: читать от последнего сохранённого id, чтобы обрыв не начинал заново
Никаких пишущих операций: не отправлять сообщения, не вступать, не удалять. Если нужен черновик —
только save_draft (кладёт текст в поле ввода, наружу ничего не уходит).
ПОДВОДНЫЕ КАМНИ, УЧЕСТЬ СРАЗУ
· Долгие запросы выносить в фоновую задачу — иначе вызов обрывается по таймауту.
· Глобальный поиск не умеет сдвиг по дате: старое искать по выгруженной истории.
· Если Telegram блокируется провайдером, нужен зарубежный прокси: Telethon принимает его
ТОЛЬКО словарём (python-socks), кортеж старого формата молча игнорируется.
· client.is_connected() возвращает True без обращения к серверу — проверять живым запросом
(например GetNearestDcRequest).
ФИНАЛ
Зарегистрируй сервер в конфиге клиента (claude_desktop_config.json / .mcp.json),
скажи, что мне перезапустить, и проверь связь вызовом get_me.
Дальше агент пишет файлы сам. Ваша часть — следующий шаг.
Шаг 3. Четыре команды в терминале
Страшно выглядит только в первый раз. Терминал — обычное окно, куда вставляют строку и жмут Enter; ничего печатать вручную не нужно, точные команды даст агент. Открыть: ⌘ + пробел → «Терминал» (Windows: Пуск → PowerShell).
По смыслу шагов будет четыре:
- Установка зависимостей — одна команда, минуту качает библиотеки.
- Первый вход в аккаунт — запуск скрипта входа. Спросит номер, потом код из Telegram (приходит в сам мессенджер, не по SMS), потом облачный пароль, если включена двухфакторная. Вводить только вам: агент этих данных не видит.
- Регистрация сервера в конфиге клиента — обычно делает агент, вам остаётся подтвердить.
- Перезапуск Claude — коннекторы подхватываются только при старте.
Типичные заминки первого входа:
- Вход зависает — значит, запустили не в интерактивном терминале, а внутри скрипта. Повторить руками.
Invalid password— просит облачный пароль двухфакторной защиты, а не код из сообщения.- Упало сразу после
Signed in successfully— вход всё равно прошёл, сессия создана, повторять не нужно. database is locked— сессию держит другой процесс: работать одним или сделать копию сессии для скриптов.
Шаг 4. Проверить, что заработало
Перезапустить клиент и попросить ассистента: «покажи мой профиль в Telegram» — должен ответить get_me. Дальше — обычные человеческие запросы: «выгрузи историю канала за три месяца и посчитай вовлечённость», «кто в этой группе», «собери все чаты, где обсуждали проект».
Что становится доступно
- История с метаданными — просмотры, пересылки, ответы, реакции; пагинация и фильтр по датам.
- Комментарии к постам. Связь с постом — через форвард-копию в группе комментариев:
fwd_from.channel_post= id поста в канале. - Участники группы. У каналов-broadcast список обычно скрыт.
- Вступления и выходы из служебных сообщений — считается отток.
- Статистика своего канала: приток и отток раздельно, источники подписок и просмотров. Окно — 93 дня. По чужому каналу недоступна никогда.
- Поиск по чату и глобальный, скачивание вложений.
Если что-то пошло не так
Таблицу можно показать агенту целиком — он поймёт, что чинить.
| Симптом | Причина | Что делать |
|---|---|---|
| В списке диалогов не хватает чатов | лимит обрезает по активности | лимит от 4000, вглубь — пагинация по дате |
FLOOD_WAIT при запросе участников | метод тяжёлый | троттлить, продолжать с возвращённого offset |
| Долгий запрос обрывается | таймаут вызова | выносить в фоновую задачу |
| Глобальный поиск не находит старое | не умеет сдвиг по дате | выгружать историю и искать локально |
ValueError при обращении к чату | устаревший кэш сущностей в копии сессии | резолвить по username, не по id |
| Сервер не поднимается после установки | приехал mcp 2.0 без FastMCP | пин mcp[cli]>=1.0.0,<2, пересоздать venv |
| Клиент «висит» там, где Telegram блокируется | прокси передан кортежем | передавать словарём (python-socks) |
Полный архив, если вопрос «по всей переписке»
Когда чатов тысячи, история выгружается фоновой задачей в локальный SQLite, а аналитика дальше — обычным SQL, без обращений к Telegram. Схему можно передать агенту как есть:
dialogs (chat_id PK, kind, title, username, members, last_date)
messages (chat_id, msg_id, date, sender_id, out, reply_to, fwd_from, media, text)
progress (chat_id PK, last_id, msgs, status, updated, error)
- Сначала личные чаты, потом группы. Диалоги обходятся от свежих к старым, и один мегачат на сто тысяч сообщений съедает часы, пока личка ждёт в хвосте.
- Возобновление бесплатно. Чат читается от старых к новым с последнего сохранённого id. Обрыв не страшен, повторный запуск дозабирает только новое.
- Диалог с самим собой («Избранное») и ботов из аналитики исключать.
- Понадобилось новое поле — не перевыгружать архив целиком: добавить колонку через
ALTER TABLEи добрать значения поmsg_idбатчами.
Безопасность
- Файл сессии — ключ от аккаунта. Не класть в общие папки, облака и репозитории.
- api_hash — в системное хранилище секретов, не в код.
api_idне секрет. - Код коннектора не хранить в расшаренных папках — подменённый скрипт выполнится у владельца с доступом к его аккаунту.
- Выгрузки участников — персональные данные. Не заливать в общие хранилища и сторонние сервисы.
- Наружу через пользовательскую сессию не писать. Автономные действия — отдельным ботом на Bot API.
Читайте также

Вайб-кодинг, ИИ-агенты и безопасность: куда движется ИИ в разработке
Практический взгляд Veai: кейсы из банков, нефтегаза и Stripe — что работает в проде.
Редакция AI Factory · 29.04.2026
Как ИИ ускоряет проверку и согласование договоров
Кейс noroots: проверка рисков в 2,8 раза быстрее и автоматизация согласования.
Редакция AI Factory · 24.04.2026
AI-прогнозирование спроса снизило OOS на 28%: кейс OSMI IT
FBO, 11 000 SKU, точность 91% — как устроена ML-система для маркетплейсов.
Редакция AI Factory · 31.03.2026Обсудить, как это применить у вас?
Покажем, что из этого работает в вашем контуре, и с чего начать.