Как я настроил бесплатный трафик из Google в Telegram канал: OpenAI + Telegram API

Всем привет, я Влад SNEZHKIN – руководитель службы разработки в Яндекс Еде, отвечаю за клиентское приложение.

И не так давно я задался целью, поднять охваты, кол-во подписчиков в своём телеграм канале @snezhkinv. Думаю, многие сталкивались с проблемой, что в Телеграме нет рекомендательных систем, а поиск работает плохо и непонятно формирует ответы.

Я пробовал закупать рекламу, но людям это неинтересно, ты просто сливаешь бюджет. Хорошо себя показали короткие видеоролики Reels, Shorts, где оставляешь что-то полезное и просишь перейти в телеграм-канал, но у этой истории большое кол-во отписок, люди идут за конкретной вещью, например, чтобы скачать какой-то файл или получить инструкцию, получают это и уходят.

Решение

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

И я подумал, а что если создать веб-сайт, который будет полной копией моего телеграм канала, но при этом не дублировать контент, а всё это дело автоматизировать.

И так появился мой блог на домене snezhkin.com

Как я настроил бесплатный трафик из Google в Telegram канал: OpenAI + Telegram API

Реализация

Вообще этот пост я хочу посвятить тому, что этот проект я писал с использованием СhatGPT и эта технология точно не заменит программистов, но ускоряет работу и если у вас СДВГ, то помогает не бросить дело и довести его до конца.

Вёрстка

Первое я попросил сгенерировать HTML & CSS для страницы блога, вдохновляясь страницей телеграма

Как выглядит пост в t.me
Как выглядит пост в t.me

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

Сервер

Для сервера я выбрал связку 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.
Работа с библиотекой openai
Работа с библиотекой openai

Давайте посмотрим какие заголовки и описания получились на основе моих постов.

Пост про подарки айтишнику
Пост про подарки айтишнику
Пост про спортзал в офисе яндекса
Пост про спортзал в офисе яндекса

Примечание

Я пробовал парсить через JSON.parse, но это не всегда работает, потому что gpt любит вставлять кавычки, и парсер падает, моя рекомендация — extract-json-from-string.

А что делать со старыми постами!?

Действительно, API Телеграма не даёт возможность получить все сообщения канала. И на помощь нам приходит серое API через gramjs.

Вы получаете токен и appID, вставляете в инициализацию библиотеки и получаете доступ от своего аккаунта, вы можете делать абсолютно всё, что могли делать через Desktop-версию.

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

Ну и всё запускаем команду получения сообщений и смотрим как выкачиваются посты из моего любимого канала.

В терминале лог всех выгруженных сообщений из моего канала + генерация gpt

Чем заменить OpenAI

Я понимаю что не у всех есть возможность платить зарубежной картой, поэтому я протестировал YandexCloud, мне как сотруднику яндекса дают каждый месяц грант в размере 16 000 рублей на любые сервисы в облаке.

Я протестировал сервис Foundation на модели YandexGPT 4 Pro • RC, мне понравилось как сервис генерирует, не заметил особой разницы с чатом гпт, нет лимитов на генерацию в секунду, минуту и возможно перейду обратно, а пока трачу баланс OpenAI.

Из минусов нет библиотеки для JS, только https запросы и сложная система с получением токена, он истекает.

Как я настроил бесплатный трафик из Google в Telegram канал: OpenAI + Telegram API

Мысли по доработке

Хочется доработать бота, чтобы он отправлял мне сообщение с просьбой подтвердить сгенерированный заголовок и описание для сайта, если мне не нравится, то иметь кнопку перегенерировать.

Не хватает сохранения форматированного текста, сейчас это просто plain text

Итоги

Для меня всё это большой эксперимент, я буду отписывать в канале и тут, как идёт эксперимент, а пока у меня есть идея, откуда взять базу тем для постов про IT тематику, и знаю, каким промтом эти идеи скормить GPT, наверное, в следующей серии расскажу и распишу, как это сделал и заходят ли такие посты для индексации.

55
7 комментариев

удачи в экспериментах!

1

Спасибо!

неплохо, сделаешь коробочный продукт из этого?

Если даст буст трафика в канал, то конечно, там не так много кода нужно написать

1

Сорцы бы глянуть, так не интересно

Вроде на vc не принято, может напишу на хабр