Как я настроил бесплатный трафик из Google в Telegram канал: OpenAI + Telegram API
Всем привет, я Влад SNEZHKIN – руководитель службы разработки в Яндекс Еде, отвечаю за клиентское приложение.
И не так давно я задался целью, поднять охваты, кол-во подписчиков в своём телеграм канале @snezhkinv. Думаю, многие сталкивались с проблемой, что в Телеграме нет рекомендательных систем, а поиск работает плохо и непонятно формирует ответы.
Я пробовал закупать рекламу, но людям это неинтересно, ты просто сливаешь бюджет. Хорошо себя показали короткие видеоролики Reels, Shorts, где оставляешь что-то полезное и просишь перейти в телеграм-канал, но у этой истории большое кол-во отписок, люди идут за конкретной вещью, например, чтобы скачать какой-то файл или получить инструкцию, получают это и уходят.
Решение
И я стал думать, где можно получить бесплатный органический трафик с переходами только от людей, которым были бы интересны мои посты. И я вспомнил, что раньше создавал сайты, продвигал их, и я понял, что миллионы людей что-то ищут, скорее всего то, что я когда-то уже писал, и возможно, они бы хотели найти мой пост, почитать его и подписаться на канал, но они просто не знают и не видят меня.
И я подумал, а что если создать веб-сайт, который будет полной копией моего телеграм канала, но при этом не дублировать контент, а всё это дело автоматизировать.
И так появился мой блог на домене snezhkin.com
Реализация
Вообще этот пост я хочу посвятить тому, что этот проект я писал с использованием СhatGPT и эта технология точно не заменит программистов, но ускоряет работу и если у вас СДВГ, то помогает не бросить дело и довести его до конца.
Вёрстка
Первое я попросил сгенерировать HTML & CSS для страницы блога, вдохновляясь страницей телеграма
Он мне сгенерировал базовый макет, я лишь позаимствовал фон и кнопки со свечением к себе на страницу с посадочной телеграма.
Сервер
Для сервера я выбрал связку TypeScript + NestJS + MongoDB, попросил ChatGPT сгенерировать модуль подписки получения новых сообщений через библиотеку node-telegram-bot-api + я указал структуру для хранения одного сообщения в БД, он это учёл и подключил сохранение.
Так появился бот, который добавляется в мой канал и следит за появлением новых сообщений, если появляется новое сообщение, то он его получает, скачивает картинки, если есть, кладёт в базу данных, а на сайте появляется новая статья, которую проиндексирует поисковый робот.
Генерация продающего title & description
У любого сайта есть метатеги: заголовок, описание и ключевые слова, которые имеют ключевую роль на то, как высоко в выдаче окажется ваш сайт.
Поскольку я человек ленивый, и сидеть и придумывать продающие заголовки точно не буду, я решил воспользоваться API Open AI
Не вопрос, пополняем баланс (примечание: если у вас есть подписка на ChatGPT, вам отдельно нужно будет оплатить доступ к API, там своя квота) подключаем библиотеку openai и формируем json
- В role: system я говорю гпт, что он — это помошник, который может только создавать продающие описание для блога.
- В role: user передаём наш promt с просьбой возвращать только json с 3 полями title, description, keywords.
Давайте посмотрим какие заголовки и описания получились на основе моих постов.
Примечание
Я пробовал парсить через JSON.parse, но это не всегда работает, потому что gpt любит вставлять кавычки, и парсер падает, моя рекомендация — extract-json-from-string.
А что делать со старыми постами!?
Действительно, API Телеграма не даёт возможность получить все сообщения канала. И на помощь нам приходит серое API через gramjs.
Вы получаете токен и appID, вставляете в инициализацию библиотеки и получаете доступ от своего аккаунта, вы можете делать абсолютно всё, что могли делать через Desktop-версию.
А мы лишь вызываем метод getMessages для получения списка сообщений канала, через одно место извлекаем фотографии поста. Почему-то олимпиадники решили хранить каждую фотографию одного поста как отдельное сообщение. А не как сообщение, у которого есть поле со всеми медиафайлами.
Ну и всё запускаем команду получения сообщений и смотрим как выкачиваются посты из моего любимого канала.
Чем заменить OpenAI
Я понимаю что не у всех есть возможность платить зарубежной картой, поэтому я протестировал YandexCloud, мне как сотруднику яндекса дают каждый месяц грант в размере 16 000 рублей на любые сервисы в облаке.
Я протестировал сервис Foundation на модели YandexGPT 4 Pro • RC, мне понравилось как сервис генерирует, не заметил особой разницы с чатом гпт, нет лимитов на генерацию в секунду, минуту и возможно перейду обратно, а пока трачу баланс OpenAI.
Из минусов нет библиотеки для JS, только https запросы и сложная система с получением токена, он истекает.
Мысли по доработке
Хочется доработать бота, чтобы он отправлял мне сообщение с просьбой подтвердить сгенерированный заголовок и описание для сайта, если мне не нравится, то иметь кнопку перегенерировать.
Не хватает сохранения форматированного текста, сейчас это просто plain text
Итоги
Для меня всё это большой эксперимент, я буду отписывать в канале и тут, как идёт эксперимент, а пока у меня есть идея, откуда взять базу тем для постов про IT тематику, и знаю, каким промтом эти идеи скормить GPT, наверное, в следующей серии расскажу и распишу, как это сделал и заходят ли такие посты для индексации.