Продвижение бота на 214 тысяч процентов

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Примерно с начала декабря провожу эксперимент по продвижению (если угодно - хайпу) в Твиттере своего бота. Результаты мне нравятся. Возможно кому будет интересно как почти при нулевом бюджете сделать эффективную рекламную кампанию в сети. Скриншоты, статистика, части кода и рассказы ниже. 

Теория 

По моему мнению реклама в сети скоро будет активно осваивать короткие звуковые споты. Всё чаще люди начинают слушать интернет, а не только его смотреть. Интернет-радио, Spotify, iTunes и множество других служб для "прослушки" сети очень быстро внедряются в массовое употреблением. Даже Твиттер вывел на рынок звуковые твитты. Росту значения звука способствует и рост числа индивидуальных устройств для прослушивания - наушники стали обыденным явлением и значит звуковая реклама может быть индивидуализированна и подана отдельному человеку в зависимости от его предпочтений как и традиционная контекстная реклама.  

Практика 

О своём боте для звукодзи я уже писал в статье на Хабр

 

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

Чтобы бот работал корректно в социальной сети во время тестирования были обнаружены и устранены некоторые проблемы. В частности: 

  • Обрезка по времени. 

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

Объяснение кода

Функция вырезана из класса.

Для обработки звуков/видео используется ffmpeg

PWF --> место хранение файлов для последующий обработки

cmd --> это переименованная функция system встроенной в python библиотеки os

В функции connect_video_voice соединяется звук, и видео.

Также есть функция по соединению звука и картинки.

def connect_photo_audio(self,imagepath, audiopath, name=urandom(30).hex()):    
  targetvideotype = "mp4"    
  cmd(f'ffmpeg -y -loop 1 -i "{imagepath}" -i "{audiopath}" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pixfmt yuv420p -shortest -vf "scale=trunc(iw/2)2:trunc(ih/2)2" "{self.PWF}/{targetvideotype}/{name}.{targetvideotype}"')    
  return f'{self.PWF}{targetvideotype}/{name}.{targetvideo_type}'

def connect_video_voice(self,videopath, audiopath, name=urandom(30).hex(),):
  sourcevideotype = "mp4"
  cmd(f'ffmpeg -streamloop -1 -i "{videopath}" -i "{audiopath}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{sourcevideotype}/{name}.{sourcevideotype}"')    
  return f'{self.PWF}/{sourcevideotype}/{name}.{sourcevideo_type}'
Логика обрезания

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

f"ffmpeg -stream_loop -1 -i "{video_path}" -i "{audio_path}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{source_video_type}/{name}.{source_video_type}"

  • Ограничение по времени 

     

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

Пояснение о коде

Для работы с телеграммом используется PyTelegramBotAPI

После получения голосового сообщения, в message.voice хранится информация о нем. В том числе хранится и duration, в ней хранится длительность голосового сообщения.

if message.voice.duration > 60:
  self.BOT.send_message(message.fromuser.id, "Your message too long. Max size of message: 1 minute")    
  return

Внедрение 

Бот был активно использован для одного свежего "чистого" аккаунта в сети Твиттер без фоловеров. На скриншотах видны два читателя - это те, которые сами присоединились по своей инициативе. Никаких "раскруток" или подобных действий для статистики не предпринималось. Мне было самому интересно сможет ли такая своеобразная реклама без бюджета  бота в сети обеспечить рост его известности.  

 

Ежедневно мы публиковали несколько твиттов с внедрённым видео. Вот статистика просмотров 

Статистика в Твиттер

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

Объяснение кода

get_users_graphic__activity__ функция, которая вызывается при команде /activity к боту.

Здесь идет проверка на доступы, если пользователь написавший боту /activity не занесен в базу данных как админ, или же как helper, то в графике ему будет отказано.

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

limit--> переменная, используемая для указания лимита возвращаемой активности в дня. По умолчанию limit имеет значение Продвижение бота с услугами через твиттер

/activity 3 вернет график активности за последние 3 дня.

def get_users_graphic__activity__(self):
    if self.MESSAGE.chat.id in HELPERS or self.MESSAGE.chat.id == ADMIN_USER_ID:
        graphic = create_graphic_activity()
        if graphic:
            try:
                limit = int(re.sub('\D', '', self.MESSAGE.text))
            except Exception:
                limit = 7
            self.BOT.send_photo(self.MESSAGE.chat.id, photo=create_graphic_activity(limit=limit))
        else:
            self.BOT.send_message(self.MESSAGE.chat.id, LANGUAGES["commands"]["server_crashed"])
    else:
        self.BOT.send_message(self.MESSAGE.chat.id,LANGUAGES["commands"]["you_not_have_permissions"])

 

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

 

В планах

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

Источник: https://habr.com/ru/post/535126/


Интересные статьи

Интересные статьи

Привет! Меня зовут Седов Фёдор, я ученик 11 класса и выпускник «IT Школы Samsung» 2020 года. Мне предложили рассказать о своём опыте разработки мобильного приложения, мое...
Примерно год назад Python Software Foundation открыл Request for Information (RFI), чтобы обсудить, как можно обнаруживать загружаемые на PyPI вредоносные пакеты. Очевидно, что это реальн...
Майкл Сибель — сооснователь (в 25 лет) стартапов Justin.tv/Twitch (капитализация $15 млрд) и Socialcam, член правления Reddit. На данный момент исполнительный директор (CEO) Y Combina...
GeoJSON — это стандартизованный формат представления географических структур данных, основанный на JSON. Существует множество замечательных инструментов для визуализации GeoJSON-данных. При этом ...
В середине 2000-х при выборе платформы ИС большинство производителей продуктов питания остановились на 1С УПП. И за последние 10-15 лет построили и, можно сказать, «вросли в нее корнями» (буд...