Измеряя Telegram

из песочницы
devrazdev 14 июля в 15:41 7,5k
«Пока что возможности по полноценной аналитике каналов
ограничены, в первую очередь, возможностями BotAPI Telegram»

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

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

Например:
В интернете:

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)

В самом Telegram:

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

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

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

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


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


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



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

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 каналов, результаты представлены на диаграммах. Главный вывод: базы данных различных каталогов совпадают лишь на 3%.

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 не совпал.
Для оценки полноты базы данных в случае inten.to был применен способ «от противного». Сперва был собран список уникальных каналов из предыдущих трёх источников (всего 8283 канала), затем был запущен поиск на наличие каждого из них в базе inten.to. В результате были найдены 3325 из 8283 (~40%) каналов, что позволяет дать оценку размера базы русскоязычных каналов в inten.to как 3325 + 1783 ~= 5100.

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


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

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

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

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



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

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


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

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


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

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

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

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

image

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

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

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

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

image

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

Резюме


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

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

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

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

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

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

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

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

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

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

Спасибо.

P.S. Напоследок короткая смешная история про нас и Telegraph в виде пошаговой инструкции:

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