Не дай умереть своим лучшим текстам в Telegram

 Публичный пост
1 марта 2026  482

У каждого автора есть такие посты, в которые вложено много сил, много времени, которые собирали реакции и комментарии, которые пересылались друзьям и коллегам. Но проходит месяц, пост безвозвратно улетает вверх по ленте и никто никогда его больше не увидит. Да, они всё еще доступны, но найти их сможет разве что сам автор.

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

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

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

Совсем недавно я узнал про фичу, которой начали баловаться многие авторы. Она есть только в Telegram Desktop — это экспорт канала в JSON. Многие тут же свернули не туда: стали загружать выгрузку в LLM с промтом «напиши пост в моем стиле». Я же подумал, что ну уж точно кто-нибудь сделал конвертер из этого JSON в нормальный markdown. Идея лежит на поверхности. Ведь это может быть удобно как для генерации блога на Astro, так и просто для сохранения постов в Obsidian. И я нашел такое решение — Jimmy.

В описании всё гладко, под капотом питон, заявлена поддержка не только Telegram, а вообще практически всех платформ с текстами. Но есть нюанс, он не работает на экспорте из канала. Я даже issue завел. И есть шансы что разрабы этот дефект поправят когда-то.

А я хочу сейчас и ровно так, как я хочу!

Короче, я взял и написал свой конвертор. Ну как я, мне помогали Opus и Sonnet. От формирования требований, до альфы прошло несколько часов. Затем я всё это отрефакторил, покрыл тестами, настроил CD, красиво оформил в npm-пакет и опубликовал.

Попробуйте:


npx tg2md

Инструмент не просто генерирует md-файлы. Он еще и добавляет frontmatter с мета информацией, которую могут использовать плагины в Obsidian или Astro. Более подробно можно почитать в ReadMe Это очень удобно!

Чтобы перенести посты в блог нужно просто скопипастить результат и не читая его опубликовать. Получится точно лучше, чем ничего. Но я считаю, что всё-таки нужно еще постараться. Тексты для телеграма не подходят для веба. В них много личного, есть ограничение по длине, а в вебе стоит размещать полноценные статьи, которые решают какую-то человеческую проблему. Поэтому каждый пост всё равно приходится перечитывать и адаптировать, объединять части в единое целое и менять призывы к действию. Вот посмотрите какая получилась статья про TypeScript из пяти постов канала. Но это лишь мой подход.

Пользуйтесь, пишите issue, ставьте звезды. Репа tg2md тут. Спасите свои тексты от забвения!

Связанные посты
6 комментариев 👇

Можно пойти дальше и автоматизировать эту выгрузку.

У меня пока не получилось - проблема в том, что дампить источник в телеграме можно только через десктоп-приложение и никак иначе (если я ошибаюсь, поправьте).
Я пробовал через агента на сервере поднимать LXD-контейнер с интерфейсом, маунтить туда папку с пре-авторизованным телеграмом, через гуй заходить в нужный чат, нажимать на кнопочки и получать файл выгрузки регулярно по расписанию.
Результат таким образом, в принципе, получить можно, но это довольно хрупкое решение.
Может быть есть лучше?

  Развернуть 1 комментарий

@sergeykalenikov, да, можно.
Можно написать бота и добавить в канал и любой твой пост будет сразу прилетать к нему. Останется только преобразовать его как тебе угодно и сохранить куда хочется.
Можно даже автообновление сайта на Astro сделать таким образом.
Можно, но зачем?

А вообще хорошая идея. Это только же я считаю что посты для телеграма не стоит публиковать без редактирования в вебе. Многих устроит просто иметь зеркало телеги в еще одном месте.

Сделать связку бот -> md -> Astro не так уж и сложно.

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

Но проходит месяц, пост безвозвратно улетает вверх по ленте и никто никогда его больше не увидит

Эту проблему попытался решить у себя в блоге с помощью яркого закреплённого поста, который вроде как притягивает внимание и придаёт какую-то структуру телеграм-каналу. Я сортирую посты по субъективной "полезности" для большинства людей, так что вроде должно работать:

У меня есть сайт на Hugo для длиннопостов, то есть телеграм-посты наоборот ведут на сайт чтобы люди читали длинный пост с картинками там. Но туда, как и написано в посте, не хочется публиковать телеграм-посты 1 в 1, потому что формат другой. А писать только длиннопосты не вариант, формат телеги мне идеально подходит. Да и читать посты в вебе, по моим догадкам, никто не будет. Поэтому для себя пока не вижу смысла переносить всё в веб

  Развернуть 1 комментарий

@m-danya, мне вот например наоборот неудобно читать длинные посты в Телеграм, в том числе, потому что они не всегда появляются вовремя.

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

А, впрочем ссылки на посты в Телеграм кажется можно тоже через веб читать, надо попробовать.

  Развернуть 1 комментарий

Кажется, эту задачу можно решить через Telegram Client API (не Telegram Bot Api).
Например, либой telethon как тут.
Она как раз дает выгружать содержимое канала (любого) в json, в том числе полную историю.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб