サイトに設置した「いいね!」の押され具合をデータで解析する方法
たとえばWeb担では、APIで取得したデータを使って、Facebook「いいね!」数の多い順に人気記事ランキングを出せるようにしてあります。
これ、いいね! ちょうど先日、このブログでもブログ記事に「いいね!」ボタンを設置したばかりですので、早速、「いいね!」数の多い記事ランキングを真似て作ってみたいと思います。まず、ブログ記事ごとに「いいね!」された数を集計するスクリプトを書いてみました。このスクリプトを実行すると、サイトマップを読み込んで、集計された結果を XML で吐き出すことができます。
任意のコンテンツの URL に対して API 問い合わせを行うことで、その URL に対する「いいね!」された数を取得することができます。しかし、個々の URL ごとにデータを取得することはできても、自分の管理するドメイン全体を横断した合計値などは取得することができないようです*1。
仕方ないので、非効率的ながらも個々の URL ごとに問い合わせを行い、その結果を自前で集計することにします。ここで、集計の対象とする URL の一覧をどのように準備するか、という問題がありますが、幸い Google ウェブマスターツール向けに作ったサイトマップには、このブログで管理しているページの全ての URL が列挙されています。そこで、スクリプトにサイトマップを食わせると、そこに書かれた URL を対象に集計を行うようにしてみました*2。
また、集計結果は汎用的に使いまわせるように XML として生成することにします。公開 Web サーバに集計スクリプトを設置し、cron などを利用して定期的にスクリプトにサイトマップを食わせてやればよいでしょう。
最新版のダウンロードやバグレポートは、Trac リポジトリ上で行っています。ファイルは、ページ下方の Download in other formats → Original Format で取得できます。
集計用スクリプトは Perl で書かれており、以下のようにコマンドラインから実行できます。
Usage: perl ranking.pl <sitemap.xml> [[<item count>] <sort column>] # perl ranking.pl sitemap.xml > result.xml # perl ranking.pl sitemap.xml 10 > result.xml # perl ranking.pl sitemap.xml 10 total_count > result.xml
sitemap.xml
item count
30
です。sort column
share_count
(シェアされた数)、like_count
(「いいね!」された数)、comment_count
(コメントされた数)、total_count
(それら全ての合計) の何れかを指定します。省略時のデフォルト値は like_count
です。
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)