Пульс Хабра

    callidus77: Помница в нашей сетке монтажники подключали абонента. Пришли, воткнули сетевуху, а у него Фря и дров нету. Почесали головы и ушли. Чел через три недели наконец-то коннектится.
    Грят: «Долго ж ты искал дрова.»
    Он: «Я не искал. Я их сам написал.» Баш

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


    Под катом мы разберемся с основными инструментами ресурса и потенциальной возможностью применения. Весь инструментарий доступен по адресу http://www.habr-analytics.com, исходный код (основные функции) на github. За примерами и деталями — добро пожаловать под кат!

    Структура статьи
    1. Пульс Хабра
    2. Монитор статей
    3. Анализ пользователей
    4. Пересечение хабов — диаграммы Венна
    5. Аудитория хабов
    6. Исходный код и структура проекта
    7. Заключение


    *Осторожно трафик*


    Пульс Хабра


    Пульс — один из наиболее интересных индикаторов, он показывает динамику чтения хабра (точнее статей в «Новом»). Между точками фиксированный интервал в семь минут (плюс-минус минута). На графике ниже можем наблюдать уровень активности в ночь с воскресенья на понедельник. Хорошо видно, что статьи в понедельник утром читают в четыре раза активней, чем в ночь с воскресенья на понедельник (чего и следовало ожидать, но мы заранее не знаем «насколько» больше читают в понедельник утром)

    В чем смысл?

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

    Доступен по адресу:
    www.habr-analytics.com/pulse

    Монитор статей


    Пожалуй, это одна из функций, которой мне настолько не хватало, что отдельно бы ещё написал в виде standalone приложения (если вы тоже считаете, что это отличная идея — напишите в саппорт пусть вернут стену выдадут мне уже токен для API — идеально бы интегрировать эту функцию в Хабр).

    Вкратце, следим за изменением просмотров, избранного и репостов в соц сетях (ВК, FB, Twitter) во времени. Интерфейс простейщий: выбираем статью из списка, тип данных и жмем кнопку «Построить График».

    В репертуаре статьи за последние два дня (на самом деле за последние 52 часа).

    Доступно по адресу:
    www.habr-analytics.com/monitor

    В качестве примера, графики для хабра-статьи «С Днем Рождения, Элон Маск»:
    Просмотры: С Днем Рождения, Элон Маск":

    Избранное: С Днем Рождения, Элон Маск":

    Репосты в соц сетях: С Днем Рождения, Элон Маск":

    Для свежих статей число измерений меньшее (так как измерения происходят каждые семь минут), поэтому графики внешне выглядят немного по-другому:

    Статья :"Не лей мне соль в реактор или не-импульсные ядерные ракетные двигатели" через 5-6 часов после появления.

    Просмотры: Не лей мне соль в реактор или не-импульсные ядерные ракетные двигатели

    Избранное: Не лей мне соль в реактор или не-импульсные ядерные ракетные двигатели

    Репосты в соц сетях: Не лей мне соль в реактор или не-импульсные ядерные ракетные двигатели


    Для сравнения график просмотров этой же статьи через 27 часов


    В чем смысл

    Наблюдать за динамикой чтения статьи: перестали ли читать статью, после того как она ушла из «лучшее за сутки»? (Чаще всего мы видим, что просмотры выходят на константу после 24-х часов.) В какой сети статья распространяется быстрее и активней? Как изменяется динамика после выхода на главную?

    В целом, монитор даёт интегральный слепок распространения статьи в сети.

    Анализ пользователей


    Кому не интересно посмотреть свою «историю» на Хабре? Ну или ещё чью-нибудь; обычно, открываешь профиль и видишь всего лишь сухую пару строк: столько-то написал, зарегистрировался тогда-то и всё. Мне всегда это казалось чем-то не слишком интересным и пришла идея — визуализировать историю пользователя.

    Интерфейс предельно простой — имя пользователя, тип данных и большая кнопка.


    Приведем для примера графики для пользователя lozga — просто потому, что получается довольно красиво: одни «взлеты» и «падения».

    «Анализ пользователей» доступен по адресу:
    www.habr-analytics.com/user

    Рассмотрим графики чуть детальней:
    Просмотры

    Рейтинг

    Избранное


    Бонус: график просмотров для PapaBubaDiop (большой пик — это тот самый пост про «Поле Чудес»)


    Зачем это нужно?

    С одной стороны позволяет взглянуть на историю своих статей на хабре; с другой, это гораздо более информативная подача профиля во времени, чем пара финальных чисел.

    Пересечение хабов — диаграммы Венна


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


    Доступно по адресу:
    www.habr-analytics.com/venn

    Для данной функции так же имеется standalone версия с расширенным функционалом (например, с работой с хабами компаний) и хабра-статья с описанием: исходники (python) и исполняемые файлы для Windows, Linux и MacOS (все библиотеки включены).
    • python скрипт venn.py и папка src/; необходимо установить библиотеки:
      pip install beautifulsoup4 progress urllib3 matplotlib_venn

    • venn.exe для Windows
    • venn.elf для Linux
    • venn.osx для Mac OS


    Аудитория хабов


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


    Доступно по адресу:
    www.habr-analytics.com/audience

    Для данной функции имеется так же standalone версия с расширенным функционалом (например, с работой с хабами компаний) и хабра-статья с описанием:
    Исходные данные под названием hubs доступны на github, там же доступны исполняемые файлы для


    Исходный код и структура проекта


    Основной (сбор данных, запись в базы данных, генерация графиков и т.д.) код проекта доступен на github.

    (выше приведен код функции monitor).

    Так как скорее всего сайт ляжет от хабра-эффекта заранее вангую шутки в духе: у Хабра не прощупывается пульс или у пульса не прощупывается Хабр.

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

    То есть после того как хабра-волна пройдет все данные будут в порядке.

    Технические детали: всё работает на PaaS Heroku, в виде двух приложений; оба на Flask; интерфейс: Flask+Bootstrap3; хранение данных mongoHQ и memcached. Сборщик данных парсит хабр, потому как доступ к API почему-то не дают (по крайней мере пока).

    Заключение


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

    Есть идеи, что еще нужно реализовать? Ждем-с в комментариях и\или через любой другой канал связи.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 67

      +3
      Круто, из трёх моих любимых хабов — Gamedev, управление проектами и Growth Hacking, третий лежит полностью в первых двух.
      varagian, сделайте, пожалуйста, чтобы форма выбора хабов для диаграммы не сбрасывалась при обновлении страницы — неудобно менять один хаб в наборе.
        +3
        Хорошо, только выложу изменения ночью — сейчас боюсь трогать приложение, оно и так тяжело дышит.
          +3
          Большая часть хабов сильно пересекается — большинство пользователей подписано на большинство хабов. Здесь значимее было бы поискать обратную корреляцию.
            0
            Вроде бы ничего не отвалилось и работает:
            www.habr-analytics.com/venn?hubs=net&hubs=3d-printers&hubs=aws
            0
            Как вы строите диаграммы Венна, если у вас ТРИ хаба? Как получаются такие красивые и удобные окружности? Каким алгоритмом вы находите третюю точку (центр третьего круга)?

            Процесс поиска хабов при 3х хабах занял у меня больше двух минут.
            Смотрел хабы: информационная безопасность, математика, криптография…
              +2
              Если кратко, то
              pypi.python.org/pypi/matplotlib-venn

              Если подробнее, то что-то интересное тут видел:
              www.brynmawr.edu/math/people/anmyers/PAPERS/Venn.pdf

              Процесс поиска хабов при 3х хабах занял у меня больше двух минут.
              Смотрел хабы: информационная безопасность, математика, криптография…

              Это очень маленький сервер пытается обслужить сразу кучу* пользователей и поэтому на ладан дышит

              *больше двух
              +13
              Ох, вызовете вы проблему оракула. Ваши прогнозы начнут оказывать влияние на время публикации статей, что вызовет положительную обратную связь. Предсказания работают, пока никому неизвестны. Инструмент прекрасен, да.
                +3
                Не вызовут. Уже много раз публиковалась подробная статистика, правда в виде статических отчётов. Есть куда более сильные фундаментальные факторы, которые задают форму графиков активности читателей и писателей на Хабре. В двух словах: чтение статей — это развлечение, а написание — работа, требующая концентрации внимания и серьёзного отношения. Поэтому большинство статей публикуется в рабочие дни и рабочее время, а большинство читателей заходит в традиционные медийные часы пик — утром, перед работой, и вечером — после.

                А инструмент — да, супер. Автору огромный респект.
                  +3
                  По моим наблюдениям пики чтения хабра — рабочее время с 10-14, примерно. Сужу по своим статьям и интенсивности вопросов к ним.
                    0
                    Ну конечно, самое время отвлечься от нудной работы. А после обеда, окончательно проснувшись можно и поработать.
                      +2
                      Пришел, чашка чая, хабр. Все правильно.
                        0
                        Ну, не знаю, по моим ощущениям в разгар рабочего дня читателей ощутимо меньше, а вот публикуются статьи пачками.
                      +1
                      Этот аргумент предполагает наличие подобного знания у всех участников сообщества, а мои статьи по анализу данных набирают в среднем 10к просмотров, и это ооочень маленький сегмент аудитории Хабра.
                      +1
                      Отличный инструмент
                        +2
                        Спасибо, аналитика и правда всегда интересна.
                        А можно будет реализовать аналитику по статьям — которые выложены давно?
                        Сейчас насколько я понял только последние публикации можно проанализировать, не более чем за 52 часа.
                          +1
                          Видимо надо развернуть серверную часть у себя.
                            0
                            А можно будет реализовать аналитику по статьям — которые выложены давно?

                            Монитор опрашивает хабр каждые N минут, отсюда и данные для визуализации. По старым статьям, таких данных, к сожалению, нет. Хм, интересно, а нет ли у администрации?

                            Сейчас насколько я понял только последние публикации можно проанализировать, не более чем за 52 часа.

                            Это исключительно техническое ограничение, бюджет инфраструктуры — 0р0к, поэтому используется бесплатная DB as a Service, у неё ограничение на размер базы в 512МБ. Из-за этого очень осторожно использую место, теоретически можно попробовать увеличить время хранения и посмотреть хватит ли на всё. Поэкспериментирую на неделе.
                              +1
                              Нельзя удалять данные о просмотрах, им же цены нет. Сколько денег нужно, куда?
                                +2
                                Кстати вот и идея для монетизации: хранение истории по своим статьям, пользователям, пока оплачена подписка.
                                  0
                                  Подозреваю, что там будет мелочь, которая не будет стоить заморок с реализацией подписки.
                                    0
                                    Думал над чем-то подобным, в духе: премиум-аккаунты с хранением всей информации и дополнительными фичами, но тогда моя персональная ответственность перед пользователями невероятно возрастет.

                                    Сейчас, если уронить сервер на часик другой, то никакой трагедии не произойдет (у меня всё-таки вообще нет опыта веб-разработки), а если у меня будут пользователи, которые платят деньги за работу сервиса, то придется работать уже совсем на другом уровне и нести перед ними ответственность за корректную работу приложения.
                                      0
                                      Давайте скинемся — создайте кампанию на какой-нибудь краудфандинговой площадке. Я с удовольствием поучаствую, думаю и не я один. Может и опытный веб-разработчик доброволец найдётся.
                                        0
                                        Надо будет над этим подумать, но всё же лучше дождаться официального API. Если сейчас Хабр изменит вёрстку, то всё полетит, приложение встанет и данные за период переписывания и отладки приложения пропадут.
                                    0
                                    Если просто нужны данные по прошлым статьям (например, просмотры за неделю по индексированным статьям), то могу их периодически скидывать себе на жесткий диск — это не проблема, проблема их постоянно держать в базе данных и постоянно обновлять. Если количество статей в пуле растет — значит растет время на одно обновление, растет время запроса интерфейса, растет память в БД — в общем, мой карточный домик плохо масштабируется.

                                    У меня есть идея получше — администрация мне уже выдаст токен API (рано или поздно) и я выпущу standalone монитор с авторизацией, каждый сможет себе столько закачать информации сколько захочет, по любому количеству статей (ну в пределах допустимых ресурсов).

                                    Ещё опция, если у кого-нибудь есть лишний сервер с базой данных, то можно мне создать пользователя и сборщик данных через этого пользователя будет скидывать данные.
                                      0
                                      Да виртуальный сервер не проблема сделать, какие требования?
                                +1
                                Круто. Не планируете увеличить время мониторинга просмотров статей скажем, до недели?
                                  0
                                  Ответил в комментарии выше.
                                  +1
                                  Может быть вместо статических матплотлибовских картинок прикрутить интерактивные графики, например на Plotly? Удобство просмотра статистики значительно повысится! :)
                                    +2
                                    Со мной уже связались ребята, занимающиеся визуализацией данных для веба, посмотрим, что из этого выйдет — буду держать в курсе!
                                      0
                                      во что вылилось?
                                        0
                                        они куда-то пропали, а спустя год с небольшим Heroku (август-сентябрь 2015) ввел новые правила и по сути остановил проект. Есть план переписать его в этот раз учтя все косяки, которые были в прошлом by-design. Вопрос только, когда я всё это сделаю.
                                    0
                                    Скажите, пожалуйста, а почему именно Heroku выбран в качестве хостинга? Я сколько раз ни приглядывался к нему, да удобно, куча автоматизированных вещей и прочих плюшек, но уж больно дорого выходит по сравнению с облаком того же амазона.
                                      0
                                      У меня всё вышло бесплатно, по крайней мере пока приложение успешно (более-менее) справляется.
                                      0
                                      Спасибо, очень любопытно. Вы не пробовали строить график количества посетителей на Хабре и количества постов в ленте? С точки зрения общественной пользы лучше всего публиковать пост в момент когда у него меньше конкурентов за первую страницу. Можно даже простой индикатор сделать, типа светофора — стоит публиковать или лучше подождать.
                                        0
                                        Как узнать количество посетителей?
                                          +2
                                          Через API (договориться с хозяевами) либо суммировать просмотры по постам за час. Для сравнительной оценки пойдет
                                            +1
                                            Да, по сути, не нужна информация о количестве человек, подойдет ее производная, главное чтобы они были связаны линейно.

                                            Но логика в первом комментарии, на мой взгляд, ложна — в выходные с интересным постом нет труда попасть в лучшее, но просмотров это принесет 10к, вместо 30-50 в будни.
                                              0
                                              Когда много постов, думаю, распределение по просмотрам будет гиперболой (и этот вопрос автору поста можно проверить), т.е. после третьей страницы никто читать не будет. Так что это лотерея — повезет — прочитают много, не повезет — не прочитают совсем.
                                                0
                                                Наблюдаю за статьями через монитор уже пару недель и создается впечатление, что реально читают только «лучшее за сутки» и более-менее читают «новое», для большинства статей характерна вот такая ступенька после 24х часов (статья Открытый Терминальный Клиент ОТК-110 — просто новости)

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

                                                    У меня такая статья только одна и она собственно и сподвигла меня сделать систему анализа статей. До сих пор встречаю ссылки на неё в сети и радуюсь.
                                                      0
                                                      У меня почти вся серия из 5 статей про коррекцию зрения оказалась удачной. Видимо, тема актуальна. Мне только пост про хлебушек жалко. Администрация закрыла
                                                        0
                                                        Согласен, сам как-то пробегался по ним перед операцией жены.
                                                          0
                                                          Рад, что понравилось.
                                                    0
                                                    Быстро протухают новостные статьи. Кроме особо острых. А дольше всего живут инструкции и что-то полезное. Проверьте корреляцию между добавлением в избранное и сроком жизни статьи.
                                                      0
                                                      Когда-то уже писал про инструкции на Хабре, хотя и немного в другом ключе
                                                      Портрет хабра-tutorial
                                                      habrahabr.ru/company/dmlabs/blog/218607/

                                                      Для корреляции между добавлением в избранное и сроком жизни нужно действительно проводить longitudinal study и собирать качественный датасет.
                                                0
                                                Не дают API, сказали «как только, так сразу» (в общих чертах).
                                            0
                                            Мой рейтинг как-то странно выглядит.

                                            Интервалы какие-то неравномерные. Где 2011-й год? И вообще он у меня ниже 150 уже давно не был. Или это рейтинг минус половина кармы? Или я чего-то не понимаю?
                                              +1
                                              Это рейтинг статей, по оси Х приведены даты публикации статей.
                                              0
                                              А прикрутите select2 на выпадающие списки, а то очень в них искать не удобно. Спасибо, как раз слежу за своей статьей.
                                              Хотя opensource, может сам поробую.
                                                0
                                                Гляну, только формы сейчас реализованы через python библиотеку WTForms, поэтому это может быть нетривиально без переписывания части интерфейса.
                                                0
                                                1) Рейтинг пользователя пока неюзабелен, надо делать что-то типа хабрапульса — карма, рейтинг и наложенные на них события:
                                                image
                                                Но это не сильно важно, никакой особой ценности, кроме как посмотреть на свой график, оно не несет.
                                                Кстати, у Urvin есть данные о статистике постов тех людей, кто зарегистрировался на пульсе:
                                                Хаброграмма поста «Металлообработка — 2014, или повесть о настоящих роботах»
                                                Только с одним минусом, сводящим статистику на нет — количество просмотров не нормализуется, вкупе с авто-масшатабом, это приводит к тому, что плюсы/минусы, избранные и комментарии просто не видны на фоне 50к просмотров. Я, правда, просил его выгрузить данные по мне, но что-то не срослось. Может, надо получше попросить :)
                                                Вот рейтинги постов — это очень важная информация.
                                                2) я бы сделал так: свел бы в один график: просмотры, рейтинг, избранное и суммарные репосты. подключаемыми слоями — репосты по соцсетям и график получения плюсов и минусов. Еще бы сделал две временных шкалы — одна по времени с публикации поста, вторая — с временем и датой по москве(хочется все-таки собрать статистику по лучшему времени и дням публикации, но не глобальную, а по своим постам.)
                                                3) в диаграммы виена и аудиторию хабов надо бы добавить корпоративные блоги, потому что там самое интересное.

                                                  0
                                                  4) Еще бы было интересно сделать обертку для ссылок, чтобы видеть в той же панели количество кликов по отдельным ссылкам. Т.е. ссылка вида http://habr-analytics.com/7583?link=http://test.com/ которая бы при клике записывала в бд время клика и перенаправляла бы пользователя куда надо. И смотреть количество кликов там же, в мониторе постов, с наложением на остальные метрики.
                                                  5)наложить на график монитора поста вертикальные метки — вход в «захабренные», в «отхабренные», вход в «лучшие за сутки», «первое место в лучшем за сутки», «выход из лучшего за сутки», «окончания голосования за статью»
                                                    0
                                                    4) Звучит интересно, это нужно для сбора какой-то дополнительной информации аля google analytics?
                                                    5) Над этим и сам думал, но решил подождать отклика на базовую версию — вдруг это вообще было никому не нужно.
                                                      0
                                                      4) Звучит интересно, это нужно для сбора какой-то дополнительной информации аля google analytics?

                                                      Посмотреть конверсию просмотров в клики, это интересно и для обзоров и для новостей всяких-разных.
                                                    0
                                                    1) Вот рейтинги постов — это очень важная информация.

                                                    Так они же и реализованы по оси Х — даты публикации постов


                                                    или я не правильно понял эту часть комментария?

                                                    2) я бы сделал так: свел бы в один график: просмотры, рейтинг, избранное и суммарные репосты. подключаемыми слоями — репосты по соцсетям и график получения плюсов и минусов. Еще бы сделал две временных шкалы — одна по времени с публикации поста, вторая — с временем и датой по москве(хочется все-таки собрать статистику по лучшему времени и дням публикации, но не глобальную, а по своим постам.)

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

                                                    3) в диаграммы виена и аудиторию хабов надо бы добавить корпоративные блоги, потому что там самое интересное.

                                                    Вот тут я чуть-чуть поленился и перенес часть кода из standalone приложений, и на хабы компаний уже не хватило сил. Эту часть надо бы переписать под Heroku и добавить хабы компаний.
                                                    +3
                                                    Жаль, не встроено в хабр :)
                                                      +1
                                                      В идеале это бы нужно сделать по схеме приложений в соц. сетях (это мой wishful thinking), и теоретически на Хабре есть приложения. Их конечно пока нельзя создавать — но когда-нибудь всё будет :-)
                                                      0
                                                      Изменение показателей статьи показано в часах от начала. На самом деле намного логичнее — в абсолютных часах. Т.е. по реальному времени. Посещаемость статьи связана не с дельтой от начала публикации, а со временем дня. Будет синусоида с максимумами на 1-2 часа дня и 8-9 вечера.
                                                        +1
                                                        Возможно, стоит пересчитать в реальном времени, это не сложно.

                                                        А само утверждение как-то проверялось или это интуиция? Если проверялось, то нельзя ли посмотреть/выложить данные? Думаю, не мне одному будет интересен такой датасет.
                                                        0
                                                        Еще одной полезной метрикой было бы близость к получению бейджей и что еще надо сделать чтобы получить очередной бейдж =)
                                                          0
                                                          А нельзя ли отсортировать хабы по алфавиту. Невозможно найти что либо.
                                                            +1
                                                            Готово.
                                                              0
                                                              Красота. Сразу нашел. До этого два раза пробегал всю таблицу, но так и не обнаружил интресующего меня хаба.
                                                            0
                                                            Хотел посмотреть всякие няшные графики, но у видел лишь:
                                                            Application Offline for Maintenance
                                                              0
                                                              Хабр поменял версту и структуру, еще не довел руки переделать Хабра-аналитику.
                                                                0
                                                                Починил :-)

                                                              Only users with full accounts can post comments. Log in, please.