Обнаружил интересный hack (?) который даёт ответы на вопросы:
Как автоматически выделять самые интересные статьи из RSS потоков?
Как понять какие статьи пользуются популярностью а какие нет?
Как получить feedback от пользователей которые читают сайт через RSS?
В июле этого года Google запустил like/unlike в Google Reader. Человек читает статью - она ему интересна - человек отмечает ее как “понравилось”.

Всем читателям этого RSS потока видно, кому понравилась эта статья и сколько их. Задумывалось, что счастливые юзера будут кликать на имена, проверять что там эти люди ещё расшарили интересного и находить себе компанию по интересам.
Это полезно, но не очень интересно, намного интереснее применить эту собранную гуглом статистику в своих целях. Например можно фильтровать статьи в RSS потоках по количеству проголосовавших и читать только самое интересное. Можно смотреть на свой собственный RSS и видеть что читателям интересно, а что нет. А можно смотреть на RSS конкурентов и снова видеть что народу нравится.
Этакий digg или stumbleupon в миниатюре и совершенно бесплатно.
Ну а теперь как это сделать
Здесь и далее я буду использовать термин RSS как собирательный образ для всех синдикативных протоколов.
Широко известный факт, что Google Reader отдает нормализованные, агрегированные им RSS потоки. Надо только сформировать правильно URL:
http://www.google.com/reader/public/atom/feed/<url encoded feed URL>
Например для http://www.engadget.com/rss.xml это выглядит как
http://www.google.com/reader/public/atom/feed/http%3A%2F%2Fwww.engadget.com%2Frss.xml
Заглянув в source агрегированного Google Reader RSS/Atom потока видим такие теги
<gr:likingUser>00319180390340199299</gr:likingUser>
<gr:likingUser>09803098588727110477</gr:likingUser>
<gr:likingUser>09419458535147286956</gr:likingUser>
<gr:likingUser>01041706060102840430</gr:likingUser>
<gr:likingUser>16152963933826181588</gr:likingUser>
<gr:likingUser>02215958792577066354</gr:likingUser>
Это ID юзеров которые отметили статью как “понравилось”. Можно даже воспользоваться Social Graph API и посмотреть кто же эти люди такие. Или можно посмотреть что эти люди расшарили. Что бы понять как это работает смотрите src линков.
Так как все эти <gr:likingUser> теги видны всем без авторизации то можно автоматически отфильтровывать статьи с низким порогом “понравилось”. Можно вычислять точно количество “понравилось” и делать далеко идущие выводы.
Прямо в RSS потоке Google Reader отдает не более 100 user ID. Но если нужно знать точное число можно сконструировать URL вида
http://www.google.com/reader/api/0/item/likers?i=<gr:original-id>&output=<json|xml>
и пересчитать их всех. Например: JSON, XML
Хорошо работает для популярных, англоязычных RSS. Чем меньше аудитория тем разумеется хуже работает crowd-sourcing.
October 27th, 2009 at 10:28 am
Очень хорошо. Спасибо большое.