Измеряя Telegram

в 12:41, , рубрики: api, crawling, google chrome extensions, javascript, python, scraping, аналитика, веб-аналитика, интернет-маркетинг, Повышение конверсии, поисковая оптимизация

«Пока что возможности по полноценной аналитике каналов
ограничены, в первую очередь, возможностями BotAPI Telegram»

канал «Телеграм-маркетинг», 28 июня 2016

Всё хорошо c каналами в Телеграме, кроме одного — их слишком сложно искать. Ссылки есть практически везде,…

Например:

В интернете:

1. С помощью роботов, индексирующих одни каналы в поисках других каналов (1.1, 1.2)
2. В каталогах каналов, пополняемых владельцами каналов (2.1, 2.2)
3. На биржах каналов (3.1, 3.2)
4. В тематических подборках каналов (сюда тоже залетало: 4.1, 4.2)
5. В списках каналов (5.1)
6. В Гугл Доке с каналами о каналах (взял из @raskruti: 6.1)

В мобильном приложении:

7. Скачав приложение с каталогом каналов (под iOS: TeleBots)

В самом Телеграме:

8. На каналах о каналах (8.1)
9. Используя ботов для каналов (9.1)
10. На каналах о каналах о каналах (10.1)

… но процесс поиска остаётся далек от совершенства. Без единого источника данных и нормального аналитического инструментария сложно не просто найти, но даже понять:
1. Насколько каналы распространены в России?
2. Насколько каналы пользуются популярностью и что такое «популярность» в числах?

На такие вопросы нужно отвечать цифрами. В интернете удаётся разыскать только разрозненные данные. Что-то есть на Rusbase (тут), в Ведомостях (тут), в Твиттере (тут), но вся эта информация получена не систематически и сложно верифицируема.

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

Шаг 1. Сбор списка каналов

Для начала создадим единую базу данных методами партизанской аналитики. В качестве источников данных были выбраны два онлайн-каталога, в которые пользователи заносят свои каналы вручную: tlgrm.ru и tchannels.me, и два самопополняющихся каталога: tsear.ch и inten.to (оба, кстати, созданные нашими соотечественниками (одни и вторые -> раздел «О нас» внизу страницы), один переиндексируется вручную, другой – в реальном времени. На всех сайтах будем искать каналы, явно заявленные как «на русском языке». Короткая таблица для сравнения источников внизу.

image

Что позволит нам быть уверенными, что найденные каналы именно на русском?

1. tlgrm.ru по умолчанию создан для каналов на русском языке
2. tchannels.me состоит из каналов, добавленных вручную и явно указанных как русские (два языка для канала там указать нельзя by design)
3. tsear.ch определяет язык канала на основе анализа его содержимого с помощью API Яндекс.Переводчика
4. inten.to – это изначально unified API для переводческих сервисов, который как раз используется для автоматического определения языка каналов, скорее всего ребята шарят

Нам понадобятся: Chrome Developer Tools, cURL to Python конвертер, сам Python, общая эрудиция.

Найдены более 10,000 каналов, результаты — одной картинкой.

image

Немного технических деталей о том, как достать данные.

Каталоги, пополняемые вручную

1. tlgrm.ru Целевой раздел: /channels/. Для получения полного списка нужно обойти все релевантные категории и «списать» IDшники каналов, они будут прямо в теле страницы.

2. tchannels.me Можно выбрать русский в настройках каталога и проскроллить 27 категорий одну за другой. А можно использовать API сервиса в своих интересах, немного изменив параметры: tchannels.me/api/channels?list=top&categoryId=&languages=russian&offset=0&count=1000000

Автоматически пополняемые каталоги

3. tsear.ch Целевой раздел: /list/ru/. Раз за разом кликая на кнопку Next можно записать каналы с каждой страницы и составить общий список.

4. inten.to Целевой раздел: /telegram/channels/russian/. Эти ребята очень беспокоятся за сохранность своей базы: канал можно найти либо по полному совпадению запроса c ID канала, либо по частичному совпадению с текстом его описания, при этом поиск выдаёт не более 100 первых совпадений, и то не сразу всю сотню, а по 10 штук. Испробованы метод «в лоб», и поиск перебором сочетаний из трёх букв, но таким образом было найдено всего 1722 канала. Это точно не все, так как вручную собранный по этим данным рейтинг с оригинальным рейтингом inten.to не совпал.
Можно было бы плюнуть, но перед уходом решил кое-что проверить: собрал список уникальных каналов из остальных трёх источников (8283 канала) и постарался найти их в inten.to (по точному совпадению ведь работает, не так ли?). Результат: найдены 3325 из 8283 (~40%).

Шаг 2. Разработка инструмента сбора статистики

Никто в здравом уме не будет руками обходить все 10,000 каналов – нет времени. К тому же, каталоги постоянно обновляются – тут нужен инструмент для регулярного использования. Инженер всегда выбирает то, с чем привык работать, и так как у меня уже были какие-то наработки в «прокачке» веб-браузера, я решил пойти мне известным, но не самым тривиальным путём – автоматизировать веб-клиент Телеграма с помощью … расширения к браузеру. Да, да, расширения к браузеру.

Мои аргументы в защиту этого способа:

1. Достаточность для решения задачи: расширение позволяют делать javascript инъекции и даёт удобный доступ к коду страницы с помощью JQuery
2. Наглядность работы: скрипт, который за тебя кликает и вбивает текст на твоих глазах понятно как допиливать
3. Принципиальная масштабируемость: установив кроулер-агент на пять виртуальных машин и развернув где-то сервер, раздающий агентам «задания» на кроулинг, можно получить ботнет (в расширениях есть возможность отправлять реквесты наружу, раздачу можно сделать через webhook)
4. Простая и быстрая установка: кроулер устанавливается на компьютер любой домохозяйки, код можно оставить в наследство внукам
5. Кросс-платформенность: Гугл Хром есть под все распространенные операционные системы
6. VPN за три копейки: благодаря распространенности соответствующих расширений к браузеру (Hola, frigate, и т.д.)

Такой подход по сути превращает кроулинг в извращенное (без Selenium’а) написание GUI автотестов. Своими глазами посмотреть процесс кроулинга можно на видео:

Забегая вперёд скажу, что подход оказался не универсальный, так как у веб-клиента Телеграма течёт память. Когда я пытался загрузить всю историю канала с флудом (скроллил вверх), все посты кешировались, и браузер начинал ужасно тормозить. Вместо того, чтобы фиксить клиент (код до webpack’а), поднимать свой инстанс и там кроулить, я решил не идти в гору и просто исключил каналы с флудом из рассмотрения.

Шаг 3. Масштабирование процесса

Чтобы попасть в Телеграм нужно пройти авторизацию по СМС. В наше время это, казалось бы, уже не требует человека: можно купить номеров на twilio и использовать SMS API, но у меня не сработало. Поэтому я сделал в лоб: отправился на Белорусский вокзал и с рук купил 15 сим-карт. Зарядив все ненужные телефоны, что были в квартире, и подняв пару виртуалок на домашней тачке, я приступил к сбору данных.

Шаг 4. Сбор статистики изнутри Телеграма, обсуждение результатов

Основные закономерности рассмотрим на выборке каналов с сайта tlgrm.ru. Мои аргументы в пользу этого источника:

1. Всего 13% уникальных каналов, то есть большинство из них содержатся ещё где-то – владельцы каналов озабочены раскруткой и заняты делом
2. Наличие категорий в каталоге – будет более интересная и точная аналитика
3. Русский домен + популярность в рунете = каналы будут русские в 99% случаев, можно не перепроверять.

Для исследования выберем почти все категории каналов, кроме каналов с контентом 18+ и каналов на узбекском – первые ни о чём и один флуд, а вторые в среднем более раскрученные, поэтому их присутствие «сдвинет» нам статистику вверх.

Далее, разбивая список всех каналов на кванты по ~500 штук (после 500 Телеграм забанит за слишком частый вызов метода search) и запуская в разных виртуалках кроулеры (обожаю high performance computing), соберем статистику за период от последнего поста на канале вглубь как минимум на неделю. Если на канале не было постов уже семь дней – считаем канал «мёртвым». Если посты идут чаще, чем раз в три часа – это флудильня. Далее следуют слайды с результатами и обсуждение в формате F.A.Q.

image

Каков размер моей выборки?
Я делал три замера: 3 мая, 4 июня и 23-го июня. Каналов в интересующих нас категориях, присутствовавших всё это время в базе tlgrm.ru, насчитал почти 1,889 штук.

Создаются ли новые каналы?
Да, постоянно. Если судить по датам создания каналов, каждый день появляется как минимум 3-4 канала.

Читают ли эти каналы и как активно?
Да, читают, достаточно активно. Более 70% каналов «выросли» за последние 2 месяца, суммарный прирост в подписках – почти 900 тысяч (я отфильтровал от этой цифры подозрительно быстро растущие каналы, о них далее), при этом всего 60 тысяч «отписались» от каналов, на которых однажды побывали.

Сколько каналов являются «нормальными»?
65% каналов регулярно обновляются и не похоже, чтобы они сильно флудили. С другой стороны, каждый третий произвольно взятый канал либо давно не обновлялся, либо с флудом.

image

Что такое «успех» в Телеграме?
Как следует из графика выше успех — это когда твой канал растёт со скоростью 160 человек в день или больше. Даже лучшие каналы не смогли показать среднюю скорость выше, чем это значение. Советую обратить внимание на музыкальные каналы: их сравнительно мало, но у них много подписчиков. Можно попробовать подумать в этом направлении. При этом особой популярностью пользуются каналы с гифками и смешными видосами: если верить статистике, то за два месяца они выросли больше любого другого канала минимум в четыре раза.

Резюме

Цифры указаны на графиках, качественные выводы привожу списком ниже.

По этапу сбора списка каналов

1. Каналов на русском языке более десяти тысяч – это очень много, за жизнь не перечитать
2. Каждый из каталогов ведёт свой маленький список и не обменивается им с «соседями», что для пользователя означает необходимость искать сразу во многих местах – это очень неудобно

По этапу анализа каналов

1. Каналы как явление продолжают развиваться – их становится всё больше и больше каждый день
2. Число подписок на каналы растёт чудовищными темпами, почти на полмиллиона каждый месяц
3. Введение более сложных метрик позволяет генерировать автоматические подборки каналов, которые тем не менее нуждаются в человеческом review

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

Учитывая вышесказанное, пора жечь разработческие ресурсы. Для того, чтобы повысить юзабилити, как менеджер каталога каналов я бы сделал следующее:

1. Обновил бы свой классификатор каналов – web.archive подсказывает, что он почти ни у кого не изменялся с момента создания. Сейчас лето, нанял бы студентов.
2. Изменил бы интерфейс сайта, сделал бы «листалку» каналов в духе Яндекс.Музыки: для выбора нового канала понадобился бы максимум один клик.
3. Начал бы следить за тем, как люди ищут каналы и мерить, сколько они могут просмотреть за сессию, девелоперам давал бы премии за превышение показателей.
4. Связался бы с ребятами из inten.to и предложил бы им интеграцию – они на каналах всё равно не зарабатывают в прямую, а мне движок писать не хочется. Платил бы PRом и уважухой.

Материалы, использованные в статье
Все результаты (презентации, таблицы, код) выкладываю в открытый доступ.

1. Презентация, спредшиты, списки каналов – архив на Гугл.Драйве
2. Код расширения – репозиторий на Гитхабе
3. Контактные данные в Телеграме: devrazdev

Спасибо.

P.S. Напоследок короткая смешная история про русских и Telegraph

1. Идёте на http://telegra.ph/
2. Осваиваете механику: вбиваете во все поля test, нажимаете publish. У меня в своё время получилось telegra.ph/test-06-14-16. Это значит, что мой пост был шестнадцатым постом с заголовком test в тот день (14-го июня).
3. У вас случается прозрение
4. Вы начинаете путешествовать во времени и подглядывать за другими такими же, как вы, кто тоже написал test в заголовке, просто меняя цифры. Можете, к примеру, перенестись в 20 января и случайно встретить родную душу: http://telegra.ph/test-01-20-9

Автор: devrazdev

Источник

Поделиться

* - обязательные к заполнению поля