The Twi Journal

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

    image

    Меня зовут Никита Лихачев, я хочу рассказать вам о сайте The Twi Journal. Это газета, которая строится на основе автоматического анализа русскоязычного Твиттера.

    Идея проекта


    Сконструировать робота, способного анализировать эфир русскоязычных сегментов сетей Twitter, Instagram и Foursquare. Затем выводить этот контент в удобном виде на одном сайте и диверсифицировать его размещение — рассылать в другие социальные сети. Кому-то интересно, что происходит в Twitter, но он неохотно покидает Вконтакте или Facebook. А у кого-то просто мало времени за всем следить — он хочет за десять минут оценить повестку дня.

    Объективность выборки


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

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

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

    Процесс обработки данных


    Информация


    Робот, которого мы называем Адам, собирает все индексируемые твиты и делит их по нескольким типам: обычные твиты; твиты со ссылкой на сторонние ресурсы, СМИ; со ссылкой на известные фотохостинги; со ссылкой на видеохостинги.

    Таким образом, на главной странице выводятся популярные твиты и распарсенные ссылки на статьи в СМИ с количеством упоминаний, а в отдельных разделах фотографии и видеоролики:

    image

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

    image

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


    На основе нашей базы мы стремимся построить хотя бы приблизительно объективный рейтинг русских микроблогеров, разделяя их на пользователей, корпоративные аккаунты и СМИ. Рейтинг строится через сведение нескольких показателей в одной формуле: среднее количество упоминаний пользователя, ретвитов его записей, количество его фолловеров в соотнешнии к количеству /lists, в которые его добавили.

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

    image

    Рейтинг мест Foursquare


    Cтроится в режиме реального времени: показываем места, которые популярны в городе именно сейчас. Расчитывается следующим образом: раз в 25 минут запускается робот, который по заранее очерченным границам города (в Москве пока проверяется только центр и пара километров вокруг него) создаёт матрицу точек. По каждой точке в радиусе двух километров проверяется наличие популярных мест с помощью Foursquare API.

    image

    Немного о технике


    Сейчас располагаемся на одном сервере. Проект целиком (включая демонов) написан на PHP. Мы используем базы данных MySQL и MongoDB (для критичных к скорости записи моментов) — производительности InnoDB на вставке нам хватает с лихвой, а большинство выборок из БД мы кэшируем с помощью memcached. Вообще, memcached для нас — идеальный выбор, так как приходится оперировать большим количеством данных, которые можно кэшировать без потери оперативности. Это позволило сократить время генерации главной страницы до 40мс (боюсь прогнозировать поведение сайта при вероятном хабраэффекте).

    С недавнего времени мы стали использовать Gearman для распараллеливания таких задач, как обработка твитов, расчёт рейтинга и для фоновых задач, таких, как сохранение картинок на Amazon S3.

    Робот Адам проверяет обновления в ленте каждые 15-180 минут, в зависимости от времени суток. Так как материалы набирают популярность не сразу, а постепенно, нам важно сопровождать их какое-то время после публикации. Именно в этот момент мы разбираем твит на составляющие: текст, ссылки, картинки и видео. Все ссылки раскрываются, если они сокращены, а их контент модифицируется подобно функции Reader в Safari (на манер Readability).

    При обработке картинок поддерживаем фотохостинги twitpic, yfrog, pic.twitter.com, flickr, lockerz и instagr.am. Для каждого из них мы написали несложный обработчик API, который находит превью для картинок, автора и пояснительный текст. Для некоторых фотохостингов пришлось использовать недокументированные возможности. К счастью, программисты довольно часто мыслят одинаково, особенно в части наименования методов и параметров к ним.

    image

    Планы на развитие


    Сейчас ставим различные эксперименты. Например, планируем запустить The Twi Football. В рамках этого проекта хотим попробовать online-трансляции матчей на основе анализа русскоязычного Твиттера. Проект окажется неким плацдармом для тестирования технологий, которые мы будем использовать в основном проекте: мнения болельщиков сервер получает напрямую из твиттера с использованием Streaming API (новые твиты по хэштегам команд у нас будут появляться быстрее, чем на «родной» странице поиска по Твиттеру).

    В свободное время балуемся с нашей символикой:

    image

    А если серьезно, то хотим попробовать масштабировать проект на другие страны. Начнем, безусловно, с США (прикупили домен twijournal.com). Если пойдет там, то будем заходить и в другие страны. Времени осталось мало, потому что деньги, которые нам дали Дуров и Мильнер, довольно быстро заканчиваются, хотя особо и не шикуем.

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

    The Twi Journal

    P. S. Вдруг желающий работать с нами разработчик или журналист из другой страны читает этот пост? На всякий случай оставлю здесь нашу электронную почту: editors@tjournal.ru
    Share post

    Comments 49

      0
      Отличный сервис, Павел и Юрий знают кому давать деньги.
      зы Не хотите ли вы описать свой опыт работы со streaming api?
        0
        Сделаем позже. Не всё сразу.
        0
        Привет, Никита. В соц. сетях на твой проект подписан, интересно последить за лентой, но сайтом не пользуюсь.
        Есть вопросы:
        1) Расскажи, какие бизнес модели планируешь применять, на чём зарабатывать? Реклама, спецпроекты, что-то более интересное?
        2) Какая статистика на данный момент, через какие каналы лучше всего получается привлекать пользователей. Вроде встречал рекламный тизер tjournal в FB, интересно узнать о результатах экспирементов.
        3) Сотрудничаешь с Лентой.ру или там твой тёска вёл live с рифокиба?
        Спасибо за рассказ и удачи в развитии проекта!)
          +2
          1. С бизнес-моделями пока проблема. Нужно придумать, как удерживать пользователей на сайте. Не хочется проект завешивать рекламой. Скорее всего, это будет отдельный сервис платной статистики для корпоративных клиентов: как их контент влияет на рост количества подписчиков, подробный анализ читателей и прочее.

          2. Лучше всего пока распространяется через ВКонтакте и Твиттер. На Фейсбуке глухо, хотя я даже открутил там около 20 тысяч на рекламу.

          3. Сотрудничаем с Лентой.ру по проекту, а также я прохожу там практику в качестве журналиста. Работаю, как краб на галерах.
            –2
            А не думали делать какие-нибудь инструменты аналитики для SMM-щиков, как вариант платной подписки? Ну, типа как Google Analytics? Мне кажется, им может быть это интересно. Или вы то и имели ввиду?
          0
          Никит, удачи в развитии проекта. С удовольствием прочитал про внутренности :)

          А с твистоком (твибиржей) как дела, вы окончательно прикрыли этот спецпроект?
            0
            Мы его делали для быстрого пиара проекта: заспамили весь русскоязычный Твиттер и закрыли. Не исключено, что мы его переосмыслим и выпустим более интересный симулятор биржи в социальных сетях со сложной механикой.
            +1
            Добавил в избранное. Спасибо за проект :)
              +1
              Проект, действительно очень хороший.
              Также, немало интересно было почитать как «это» работает. За что отдельное спасибо.
              Желаю успехов в дальнейшем развитии!
                +3
                Россия без Путина
                  +4
                  ОК, мы учтём это.
                    –2
                    Это единственное, что задело вас в статье?

                    p.s. Извиняюсь, но не понимаю, зачем вставлять политику в блог и статью, которые не о ней.
                      0
                      В свете последниех событий, резко бросается в глаза.

                      p.s. но, почему бы и нет.
                        0
                        p.s. Может быть потому, что для этого есть специальные блоги и статьи?
                          +3
                          Хех. За что минусы-то, Господа?
                    0
                    Скажите, пожалуйста, а списки что действительно так важны?
                      +2
                      Занесение в список требует дополнительных действий и продвинутых знаний Твиттера, и вообще сродни фолловингу: некоторые могут не фолловить кого-то, но читать его через список. Поэтому, конечно же, мы учитываем этот важный параметр.
                        0
                        Это даже более важно, чем фолловинг. Я фолловлю много кого, и, в связи с большим количеством шума, общую ленту читаю редко. А полностью читаю только определенный список — люди, которых я знаю лично или очень интересных мне людей или проекты, пищущие не часто и по делу.
                          0
                          Я же, наоборот, вообще не пользуюсь списками, т.к. фоловлю только тех, кто мне интересен.
                            0
                            Я тоже, но читать все твиты не получается, т.к. некоторые пишут чуть ли не каждые полчаса, и без списков 100% пропустишь что-то важное и интересное
                              0
                              Видимо, я что-то делаю не так.
                              Попробую использовать списки ещё раз — вы убедительно пишите (:
                      +2
                      Крутой проект, следил за Twi Journal c самых с начал.
                      Частенько свой день начинаю с беглого просмотра, что там сейчас в интернетах кипит.
                      Спасибо за сервис, развивайтесь нам на радость.
                        0
                        Отличная идея! Только на главной непонятно, куда с неё идти. Лента популярных твитов есть? Или как? Хочется текста по актуальным темам, а не инстаграма.

                        И ещё глючит в опере 11.61: съезжает счётчик ретвитов из левой колонки и не выводятся социокнопки из самой правой.
                          0
                          А почему в tjournal.ru/rss одни фотографии?
                            0
                            Нет, там не одни фотографии. Просто фотографий много, а статей меньше.
                              +1
                              а раздельные ленты не планируется сделать?
                                –1
                                Нет. Мы вообще почти забили на RSS, потому что у целевой аудитории есть аккаунт в Твиттере или ВКонтакте, где они и читают наш фид.
                                  +1
                                  Странно, ну ладно. Может я чего-то не понимаю, но по-моему новости удобней читать в Google Reader а не в твиттере. У меня есть и вконтакт и твиттер, но подписываться на ленту ни там ни там не буду.
                                    0
                                    Если следовать такой логике, то и отдельный сайт не нужен, потому что целевая аудитория читает вас в твиттере. Я тоже в первую очередь полез смотреть RSS ленту, и также как hior отметил её бесполезность.
                                      0
                                      И, кстати, первая мысль была точно такая же: «почему в rss одни фотографии...»
                              +1
                              А персонализация будет?
                                0
                                Тоже хочу настройку ленты по вкусу, чтобы отслеживать интересные темы, а не всё подряд. Готов платить за подписку, если будут релевантные результаты.
                                +1
                                В Опере верстка хромает:

                                image
                                v. 11.62 Win, 1920×1200
                                  –1
                                  Зато в Хроме у нас вёрстка поёт оперу.
                                    +2
                                    — Кроссбраузерная вёрстка? Не, не слышал.
                                    +1
                                    Но мы поправим, спасибо.
                                    0
                                    Тоже слежу за tjournal с появления биржи.
                                    Портал приятно эволюционирует-сменил несколько видов морд, прикрутили просмотр всех сливов.
                                    Было бы здорово увидеть рейтинг хэштэгов, а не только 3 самых популярных.
                                    0
                                    А можно подробнее о технологии и деталях получения гранта?
                                      0
                                      Технология IMAP, детали — обычный текстовый файл с описанием сути стартапа на адрес apply@milnerdurov.com. Нет, правда.
                                        0
                                        А каковы сроки ожидания с момента отправки, до апрува, налоги с гранта надо платить? выдают наличкой или на банковский счет? рублями или долларами? :)
                                      +1
                                      Клевый сервис, слежу через Твиттер (очень редко бываю на самом сайте). Удачи вам!
                                        +1
                                        Никита, сделай уже iPhone-версию сайта. Через контактик или твиттер следить не очень удобно, имхо. Гораздо чаще хочется зайти на сам уютный сайт и почитать сливы и «От редакции», попивая чай с лимоном и укрывшись пледом.
                                          0
                                          Стас, всё будет. И плед, и чай с лимоном, и iPhone-версия.
                                          0
                                          Хороший ресурс. Мониторю его ежедневно.
                                            0
                                            Мне лично удобнее читать с мобильника. Буду ждать мобильных приложений, если таковые намечаются.
                                              +1
                                              Отличный проект! Написал неофициальное приложение для windows phone 7 и теперь читаю tjournal еще удобнее:) вот ссылка, приложение абсолютно бесплатное windowsphone.com/s?appid=1995d026-a738-4c5c-9a8e-bae6f487c8b1
                                              Если уважаемым хабролюдям будет интересно и Никита не будет против — могу написать статью как создавалась своя надстройка-парсер над tjournal.ru и разрабатывалось приложение, использующее ее апи.
                                                0
                                                Ну вот…:
                                                «Невозможно найти удалённый сервер
                                                Вы попытались получить
                                                доступ к адресу tjournal.ru/, который сейчас
                                                недоступен. „
                                                Надеюсь нечего серьезного?
                                                  0
                                                  Уже нормально работает.

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