Пообещал коллеге инструкцию — и собрал open-source skill для Telegram из голосовых, статей и YouTube

Два реальных rich-поста: публикация в основном канале и тестовый пример с цитатой и списком.
Два реальных rich-поста: публикация в основном канале и тестовый пример с цитатой и списком.

Как превратить Codex или Claude Code в нормального редактора: с источниками, локальной транскрибацией, вашим голосом и публикацией, которую нельзя случайно отправить не туда.

Сегодня показывал Роману Тарасенко, как ИИ-агент может собирать в Telegram не очередную простыню с эмодзи, а нормальный структурированный материал: с заголовками, таблицами, раскрывающимися блоками, сносками и медиа.

Роману понравилось. Я пообещал после созвона скинуть инструкцию для его Codex и Claude Code.

Можно было написать двадцать страниц про BotFather, переменные окружения и команды в терминале. Но тут проснулся мой внутренний перфекциОнанист: если этот процесс нужен одному человеку, почему не собрать его так, чтобы установить мог любой?

Так появился Telegram Rich Content Skill — открытый проект под MIT:

От генератора текста — к редакционному процессу

У большинства «ИИ-копирайтеров» схема короткая: дали тему — получили текст. На слайде выглядит красиво. В реальной работе быстро начинаются вопросы.

Откуда взялся этот факт? Что именно сказал герой видео? Где закончился источник и началась интерпретация автора? Почему агент решил сократить важный кусок? Какая версия ушла в тестовый канал? И главное — какого хрена черновик вообще оказался в основном канале?

Я собрал другой маршрут:

  1. Исходник.
  2. Транскрипт, если он нужен.
  3. Карта фактов и утверждений.
  4. Короткий бриф: аудитория, задача, позиция, призыв, риски.
  5. Обычная и rich-версия поста.
  6. Техническая и редакторская проверка.
  7. Приватный тест.
  8. Отдельное подтверждение боевой публикации.

Каждый материал живёт в своей папке. Можно открыть её через неделю и понять не только что написал агент, но и на чём он это собрал.

Маршрут материала: источник → транскрипт → факты → бриф → пост → проверка → тест → публикация.
Маршрут материала: источник → транскрипт → факты → бриф → пост → проверка → тест → публикация.

Что можно дать агенту

Входом может быть:

  • сырая мысль, которую вы наговорили голосом;
  • голосовое или длинная запись;
  • статья, документ или публичная ссылка;
  • своё или чужое YouTube-видео;
  • несколько источников, которые нужно соединить в один самостоятельный материал.

Агент не обязан всегда делать Rich Message. Иногда лучший формат — обычный пост. Иногда — альбом. Иногда длинному разбору действительно помогают таблица, раскрывающийся блок, сноски или слайды. Формат должен улучшать чтение, а не демонстрировать, что у нас тут завёлся ещё один технологический павлин.

Длинное аудио — без поминутной оплаты API

Для транскрибации используется локальный faster-whisper. На Apple Silicon можно подключить mlx-whisper. Аудио не нужно отправлять в OpenAI Speech-to-Text и платить за каждую минуту.

«Локально» не значит «из воздуха». При первом запуске загружаются веса модели, а скорость зависит от компьютера и выбранного размера модели. Зато после установки остаётся понятная граница: запись обрабатывается на вашей машине, доступны таймкоды, субтитры, контрольные точки и продолжение после прерывания.

Для YouTube есть отдельный помощник на yt-dlp: он забирает публичные метаданные, оригинальную обложку, доступные субтитры или только аудио. Если субтитров нет — дальше включается локальная расшифровка.

Как агент узнаёт ваш стиль

Я не стал добавлять магический «процент похожести на автора». Обычно такой показатель выглядит научно ровно до первого вопроса: а что именно он измеряет?

Вместо этого вы даёте 3–5 одобренных материалов. Агент собирает редактируемый профиль: аудитория, ритм, словарь, прямота, юмор, длина абзацев, отношение к эмодзи, способ работать с доказательствами, привычные призывы и запрещённые штампы.

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

Почему публикация специально неудобная

Чтобы отправить сообщение в Telegram, нужно создать отдельного бота через BotFather, добавить его сначала в приватный тестовый канал и выдать минимальное право Post Messages.

Токен хранится в локальном .env, а не в промпте и не в GitHub. Обычный запуск publisher'а ничего не отправляет. Для реальной сети нужны отдельный флаг --send и точное подтверждение ID канала. Для production есть ещё один независимый режим.

Да, это несколько лишних движений. Именно поэтому черновик сложнее случайно отправить клиенту, в основной канал или вообще не туда.

Rich-разметка до сети проходит строгую проверку: разрешённые теги и атрибуты, ссылки, лимиты, вложенность, сущности и соответствие медиа. Есть приблизительный браузерный preview, но он честно называется приблизительным. Финальный судья — Telegram Desktop и мобильный клиент.

Что уже лежит в репозитории

  • skill для Codex и Claude Code;
  • установка по функциям и диагностика окружения;
  • локальный Whisper и YouTube-процесс;
  • шаблоны брифа и профиля голоса;
  • обычный пост, альбом и Rich Message;
  • строгий валидатор и локальный preview;
  • безопасные publisher'ы;
  • русский и английский README;
  • синтетический пример полного пути от источника до проверки;
  • тесты, архитектура, модель безопасности и список честных ограничений.

Проект не является облачным сервисом. Код, инструкции и зависимости можно проверить до установки. Сейчас это версия 1.0.0, Python 3.11+, MIT.

Где проходит граница

Skill не должен превращаться в машину контентного спама. Он не обходит paywall, не оправдывает копирование чужой статьи или полного транскрипта и не публикует материал сам по себе.

Rich Messages требуют свежих клиентов Telegram. Для широкой аудитории всё равно нужен обычный fallback. Диаризация спикеров намеренно не встроена: это отдельный тяжёлый контур с дополнительными моделями и лицензиями.

И ещё одна граница, которая мне нравится больше всего: агент может ускорить редактуру, но не получает право выдумывать позицию автора. Если исходников не хватает для важного решения — он должен спросить.

Как попробовать

Для Codex:

git clone https://github.com/shromarketing/telegram-rich-content-skill.git \ ~/.codex/skills/telegram-rich-content

Для Claude Code:

git clone https://github.com/shromarketing/telegram-rich-content-skill.git \ ~/.claude/skills/telegram-rich-content

После перезапуска агента можно дать простую задачу:

Используй telegram-rich-content. Преврати этот материал в подробный Telegram-пост в моём согласованном голосе. Сохрани факты, подготовь обычную и rich-версию, всё проверь и ничего не публикуй.

Репозиторий и полная инструкция: https://github.com/shromarketing/telegram-rich-content-skill

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

На связи Роман Шарафутдинов. Маркетолог. Эдвайзер. Спикер. ИИ-энтузиаст. Занимаюсь стратегическим консалтингом по внедрению ИИ в бизнес-процессы и жизнь. Обучаю, внедряю «под ключ» ИИ и нейросети в разные проекты, от простого уровня «работа/жизнь» до интеграции в бизнесы разного масштаба. Подписывайтесь на мой Телеграм-канал, где я делюсь ещё большим количеством полезностей из мира нейросетей, маркетинга и личной эффективности.

P.S. Изначально я собирался «скинуть Роману инструкцию после созвона». Через несколько часов проверял CI на трёх версиях Python, локальный Whisper, MIT-уведомления и защиту от публикации не в тот канал. Черновик этой статьи тоже прошёл через тот же редакционный маршрут: источники, факты, версия под площадку и отдельное подтверждение перед отправкой. Всё под контролем. Наверное.