Твоя переписка Telegram — как река: интерактивные визуализации твоей жизни из твоего собственного экспорта. Всё считается локально — ни одно сообщение не покидает твой компьютер.
Из полного экспорта Telegram ты получаешь четыре страницы:
| Артефакт | Что показывает |
|---|---|
Ngram Viewer (out/ngram-viewer.html) |
частота любого слова в твоей речи по месяцам за все годы; рождение и смерть слов |
Река общения (out/river.html) |
с кем текла твоя переписка: русла-люди, подсветка, твои реплики из прошлого при наведении, «температура» отношений, режим «слабые связи», экспорт постера |
Эмоциональная дуга (out/emo-arc.html) |
средний эмоциональный тон твоих сообщений месяц за месяцем через все годы + состав эмоций; требует опционального LLM-шага |
Языковой двойник Big5 (out/big5.html) |
твой личностный тест против 10+ лет твоего реального языка: что сходится, что нет |
Слабые связи (out/weak-ties.html) |
долгоживущие тонкие контакты по Грановеттеру: пунктиры из бусин, кто жив на орбите и чей пунктир оборвался — кандидаты на возрождение |
Хочешь сначала посмотреть, как это выглядит? Живые примеры из полностью синтетического корпуса (вымышленные люди, сгенерированные тексты) — открывай прямо в браузере: Река общения · Эмоциональная дуга · Ngram Viewer · Big5-двойник · Слабые связи. Твои страницы будут такими же, только про тебя (и останутся у тебя на диске — в отличие от этих примеров, никуда не выкладываются).
Первый вопрос перед запуском: что ты готов делать со своими данными. Три пакета, от параноидального к быстрому. Приватность каждого — прямым текстом в колонке «что покидает компьютер».
| Уровень 1 · только скрипты | Уровень 2 · + локальная LLM | Уровень 3 · + облачная LLM | |
|---|---|---|---|
| Что получаешь | Ngram Viewer, Река (температура по простым словарям), Big5-двойник, Слабые связи (серые бусины) | всё то же + Эмоциональная дуга, честная LLM-температура и цветные бусины слабых связей | то же, что уровень 2, только быстро |
| Что нужно | Python 3.10+ | + LM Studio и модель gemma-3-12b-it (~8 ГБ на диске, Mac/PC с 16+ ГБ RAM) | + аккаунт OpenRouter с парой долларов |
| Время (архив ~100 тыс. твоих сообщений) | минуты | бережный дефолт ~0.5–1.5 сообщ/с → сутки-трое (чекпоинт: можно ночами по частям; 10 тыс. — за вечер); мощная машина: --workers 4 --pause 0 — в разы быстрее |
5–12 сообщ/с → 3–7 часов; ~$2–4 за 100 тыс. (реальный прогон автора: 112 тыс. за $2.31) |
| Что покидает компьютер | ничего | ничего (модель крутится на твоей машине) | твои собственные сообщения, по одному, без реплик собеседников — уходят провайдеру модели через OpenRouter |
| Команды | шаги 1–4 ниже | + python scripts/05_annotate_llm.py и python scripts/06_emo_arc.py |
+ те же два шага с переменными CHATRIVER_LLM_* (см. шапку скрипта 05) |
Уровень можно повышать потом: начни с первого, дуга добавится, когда дозреешь.
Подробный разбор приватности — PRIVACY.md.
Если у тебя есть Claude Code, ChatGPT (desktop с доступом к файлам / Codex CLI) или любой агент, умеющий запускать команды, — просто скажи ему:
Прочитай AGENT.md в этой папке и сделай всё по инструкции. Мой экспорт лежит в <путь>.путь>
Агент покажет примеры, поможет с экспортом, установит зависимости, прогонит скрипты и отдаст тебе готовые HTML-файлы. Инструкция для агента написана так, что он не читает твои сообщения — только запускает готовые скрипты и смотрит на счётчики.
Сделай полный экспорт Telegram — пошаговая инструкция со всеми галочками:
EXPORT.md. Три главные вещи: экспорт есть только в настольном
Telegram на движке tdesktop (на macOS это Telegram Lite из App Store или
Telegram Desktop с telegram.org — в «обычном» маковском Telegram кнопки нет);
у Private groups/channels сними галочку «Only my messages»; формат —
Machine-readable JSON. На выходе — папка с файлом result.json.
pip install -r requirements.txt
python scripts/01_prepare.py "/path/to/DataExport/result.json"
python scripts/02_ngram.py && python scripts/03_river.py && python scripts/04_big5.py && python scripts/07_weak_ties.py
Готово: открывай файлы из out/ в браузере.
Для двойника Big5 сначала пройди тест на bigfive-test.com
и впиши баллы в my_big5.md (скопируй из templates/big5-results-template.md).
Без него 04_big5.py построит страницу только с корпусной половиной.
Каждое твоё сообщение прогоняется через LLM и получает оценку эмоционального тона; из оценок складывается дуга твоих лет — где было холодно, где теплело, где просело.
Уровень 2 (локально): поставь LM Studio, скачай в нём gemma-3-12b-it, включи Local Server и запусти:
python scripts/05_annotate_llm.py
python scripts/06_emo_arc.py
Скрипт печатает скорость и ETA; чекпоинт после каждого ответа — прерывай и
перезапускай сколько угодно, прогресс не теряется. Дефолт бережный (1 поток,
пауза 0.2 с); мощная машина — добавь --workers 4 --pause 0, и если LM Studio
начнёт таймаутить, просто уменьши.
Уровень 3 (облако, быстро): те же две команды, но перед ними — три переменные
окружения (CHATRIVER_LLM_URL/MODEL/KEY, разобрано в шапке скрипта). Помни, что
этим ты отправляешь свои сообщения провайдеру — уровень выбирается осознанно.
python scripts/00_make_demo.py && python scripts/01_prepare.py demo/result.json
Дальше те же скрипты 02–07; для шага 05 на демо используй суррогатный флаг:
python scripts/05_annotate_llm.py --synthetic (без LLM). Именно так собраны
страницы в examples/.
Коротко: всё локально. Базовые скрипты не имеют сетевого кода; страницы
самодостаточны (данные зашиты внутрь HTML) и содержат ТОЛЬКО твои собственные
сообщения — реплики собеседников не попадают ни в какой выходной файл. Опциональный
LLM-шаг по умолчанию тоже локальный (LM Studio); облачный режим включается только
вручную и осознанно. Подробнее — PRIVACY.md.
Помни: готовые HTML содержат твои цитаты и имена чатов — не публикуй их бездумно.
Пакет вырос из исследовательского проекта «text-as-data на личном 11-летнем архиве» (1,1 млн сообщений): слепой протокол, пре-регистрация, change-point-анализ, валидация LLM-разметки против ручного золотого стандарта. Научная часть и методология — в статьях автора (ссылки появятся здесь).
Лицензия: MIT (код). Автор: Егор Смирнов.