Как я сделал бота, который из ссылки делает видео
История пет-проекта: началось с бытового раздражения, а закончилось локальным Bot API, борьбой с водяными знаками и склейкой слайдшоу.
Открыть бота в TelegramБесплатно, без рекламы и обязательных подписок
С чего всё началось
Классика жанра: скинул другу тикток и получил в ответ: «скачай нормально, без надписи через весь экран». Ладно, думаю, дело двух минут. Открываю первого попавшегося бота для скачивания.
А там: «подпишись на 3 канала», «пришли рекламу другу, чтобы разблокировать», всплывающий баннер казино и, как вишенка на торте, видео с жирным водяным знаком поверх кадра. Во втором боте всё оказалось так же. Третий вообще прислал не тот ролик.
И тут стало по-настоящему интересно: это же элементарная задача, почему её превратили в квест? Спойлер: элементарной она оказалась только на бумаге.
Грабли №1: водяной знак — это не «фильтр наоборот»
Наивная идея была такая: скачаю файл, вырежу метку. Так вот, нет. Площадки отдают видео уже с вшитым водяным знаком: это часть кадра, а не отдельный слой, который снимается галочкой.
Рабочий путь — не затирать метку поверх (это всегда мыло и артефакты), а искать источники и форматы отдачи, где её ещё нет. То есть вся возня уходит в парсинг: где взять чистый поток, какой формат запросить, как не нарваться на вариант с меткой. И это не задача из разряда «сделал и забыл»: парсинг ломается всякий раз, когда площадка что-то меняет у себя.
Грабли №2: Telegram жмёт видео
Второй сюрприз выдал сам Telegram. У Bot API есть лимит на размер файла, который бот может отправить, а облачный вариант любит пережимать видео. То есть ты честно достал чистый ролик, а пользователь получает мыло.
Лечится поднятием локального Bot API-сервера вместо обращения к облачному: выше потолок по размеру, меньше лишних пережатий. Возни с инфраструктурой прибавляет, но качество на выходе того стоит. Побочный эффект оказался приятным: отдача видео в чат ускорилась в разы.
Грабли №3: слайдшоу тиктока
Отдельная сложность — посты, где вместо видео набор фотографий под музыку. Другие боты их либо не берут вообще, либо шлют кучей отдельных немых картинок, и вся суть теряется.
Пришлось собирать слайды обратно в нормальный ролик: склеить кадры, подложить ту самую музыку, выдержать тайминги. На выходе — видео, каким оно задумывалось автором. Мелочь, а именно на слайдшоу спотыкается большинство качалок.
Грабли №4: кодеки и чёрный экран на iPhone
Отдельная история, которая всплыла уже в проде. Видео с YouTube на компьютере и на Android игралось нормально, а на iPhone и iPad — чёрный экран со звуком. При перемотке кадры в мини-окне видны, а само видео чёрное.
Оказалось, дело в кодеке: YouTube отдаёт AV1 в том числе внутри mp4-контейнера, а iOS его аппаратно не декодирует. Причём «mp4» в названии формата ничего не гарантирует — это контейнер, а не кодек. Фикс — явно требовать H.264 при скачивании, а не надеяться на расширение файла.
Про inline: почему это красивое инженерное решение
Inline-режим Telegram незаслуженно обделён вниманием. Ты не добавляешь бота в чат. В любом диалоге пишешь @meme_v2bot, вставляешь ссылку — Telegram показывает готовое видео над клавиатурой, и ты отправляешь файл собеседнику. В чужой группе, в личке, где угодно — бота там нет, а видео улетает.
Для пользователя это выглядит магией, для разработчика — приятная механика, которую почему-то мало кто из ботов-качалок доводит до ума. Подробнее — на странице «Бот из ссылки в видео».
Честно про то, что не идеально
Не буду делать вид, что всё работает как часы. Площадки живут своей жизнью: что-то периодически отваливается, что-то приходится чинить после их обновлений. Это нормальное состояние для проекта, который парсит чужие сервисы. Но базовый принцип держится: кидаешь ссылку — получаешь чистое видео, без танцев с бубном.
Монетизация без душноты
Бот бесплатный — 20 ссылок в день хватает почти всем. Есть платные тарифы через Telegram Stars: они снимают дневной лимит и добавляют чатов, но платной стены нет — пришёл, скачал, ушёл, ничего не должен. Рекламу я туда не пихаю принципиально: с неё вся история и началась.
Потыкать
Если надоели боты с рекламой и водяными знаками — вот решение: @meme_v2bot. Пришли ссылку на тикток, рилс, шортс или твит, Threads или VK — получаешь чистое видео. В личке, в группе или inline в любом чате.
Частые вопросы
Почему нельзя просто вырезать водяной знак из видео?
Площадки отдают ролик с уже вшитой в кадр меткой — это не отдельный слой. Замазывание метки поверх даёт мыло и артефакты, поэтому правильный путь — искать источник, где метки ещё нет.
Зачем боту локальный Telegram Bot API?
Облачный Bot API ограничивает размер файла и пережимает видео. Локальный сервер поднимает потолок, убирает лишние пережатия и заметно ускоряет отдачу видео в чат.
Почему видео с YouTube было чёрным на iPhone?
Потому что скачивался кодек AV1, который iOS не декодирует аппаратно. Расширение mp4 не гарантирует кодек, поэтому H.264 нужно запрашивать явно.
Бот платный?
Нет, базово бесплатный: 20 ссылок в день без рекламы и подписок. Платные тарифы снимают дневной лимит, но пользоваться ботом можно и без них.