そのブログには何人の購読者がいるのか?
多くの人から共感されると、それはブログを書き続ける源泉となる。では、共感はどこから感じるかと言えば、およそ以下のような手段が考えられる。(その他いっぱいあるけど)
- コメント・トラックバック
- アクセスカウンター数
- ソーシャルブックマーク数
- スターの数
- RSSの購読者数
1から4までは過去に書いた個別の記事に対しての評価と考えられる。ところが、別格なのが5のRSSの購読者数だ。これは、将来に書く記事への期待値と考えられる。つまり、過去の記事からそのブログの書き手に興味を持ってくれた証である。ある程度ブログを続けていると、このRSSの購読者数がとっても気になってくる。自分はよく http://tophatenar.com/ で購読者数を見て自戒している。
-
-
- ちなみに、購読とは、新聞・雑誌などを「購入して読む」ことなので、ここで言うブログの購読者とは定期的な読者であって、正確には購入している訳ではない。
-
ところで、このブログのアクセス数は、少しずつだが確実に増え続けている。(ありがたいことです)しかし、最近の購読者数は、横這いか減少傾向にある。自分の興味と、読者の興味がズレてきているのかもしれない...。最初はそんな風に思っていたが、この前トップ50からざっと眺めてみて、多くのブログが減少傾向にあることに気付いた。(http://tophatenar.com/ において)RSSの購読者数が全体的に減少しているのだ。Webの利用は拡大しているはずなのに不思議な現象だ。調べて見ると、その答えは簡単だった。
近年、Google リーダーのシェアが拡大していた!
どちらも2008年の調査結果なので情報が少し古いのだけど、Googleリーダーのシェアが断然大きい(トップシェア)。2011年の今はどうなっているのか正確なところは不明だが、Googleリーダーのシェアが減ることはあまり考えられない。どうりで、livedoor ReaderとFastladder*1の登録者数をカウントしている http://tophatenar.com/ の購読者数が減少傾向になるわけだ。
これからは、Google リーダーも含めた購読者数の変化を見ておくべきなのだ。
登録者数を確認するURL
Google リーダー
- Google アカウントにログインしておく必要あり。
http://www.google.com/reader/directory/search?hl=en&q=対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/)
- ちなみに、Google アカウントにログインしていないとエラーになってしまう。
livedoor Reader
- livedoor ReaderにログインしていなくてもOK。
http://reader.livedoor.com/about/対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/)
Fastladder
- FastladderにログインしていなくてもOK。
http://fastladder.com/about/対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/)
curlコマンドで参照する
- そのうち、何らかのコードの中で購読者数を確認したくなるかもしれない。そんな時、curlコマンドからアクセスする技を覚えておくと便利。
- livedoor ReaderやFastladderについては、本能のままに上記URLにアクセスすれば、購読者数を含んだHTMLがダウンロードされる。
$ curl http://reader.livedoor.com/about/http://d.hatena.ne.jp/zariganitosh/ $ curl http://fastladder.com/about/http://d.hatena.ne.jp/zariganitosh/
- さらに、ダウンロードされたHTMLそのままでは冗長なので、その中から購読者数のみ取り出してみた。
$ curl --silent http://reader.livedoor.com/about/http://d.hatena.ne.jp/zariganitosh/|grep subscriber_count|sed -e 's/[^0-9]//g' 525 101 $ curl --silent http://fastladder.com/about/http://d.hatena.ne.jp/zariganitosh/|grep subscriber_count|sed -e 's/[^0-9]//g' 9 49
- ところが、Google リーダーで問題になってくるのが、Google アカウントにログインした状態で、参照ページにアクセスする必要があること。
- curlコマンドにおいて、Google アカウントにログインした状態は、どのように取り扱うのだろうか?
- その方法は、以下のようにアクセスして、まずはログイン状態でGoogle ReaderにアクセスするためのAuthコードを取得する。
$ curl -k https://www.google.com/accounts/ClientLogin -d Email=OOOO@gmail.com -d Passwd=XXXX -d service=reader SID=DQAAANUAAABv1DELs7wrxHW5Cn0KhnUKq45PtzS2WT4LFQfbDqFgcvwAdkkCI5Gp1TdOuEnaBUEBex7zw6hW39kC1_GW2nLsDsoeGMQsZibc3YC0YQh5FkyX4FHpD4egyROwPcDDcxgY41ppP4Bo30w3Gkpu4Ix5fDh5LKbXUs-k9-KpFaqNOw3wIhvRRc7PX-jEEj_ZncrXFNgF7CuLfizRkQOT5bAur-BAxyY0XwN5n2NONZ3dR73FlsWcbQzmFc4pF7izFJPA1NdYUvV4YHLgzAY6miqH0bDolNffsiDnOecxwh7A3Q LSID=DQAAANYAAACP-efz3HUU0pou3KJtzWzYZKwz_7i1_gLDwU1YICEwLrrgKWMNVxqAJl2FTxHkElk-aCvMtTZK_KkJmAZmfvmy4xthPcv4pjygY7hmhgzVnpIci9yF-DH73guhNpVY9BYfUMQD42BBpgvLAFdxtlX3Ir-lw36w9sU1TkJmquCsiwIt_GGUMe_0wsDArTUvGELH5EjOrRA-13PIe7hnO0NDthws2-SqFDbDzxeM5s-Dc3DmSxtpTJXTzl6PHMlFg69SawxxyXbTPys_2iBFyJs72uAI3-Rox_nFhrPhvGemPA Auth=DQAAANUAAACP-efz3HUU0pou3KJtzWzYZKwz_7i1_gLDwU1YICEwLrrgKWMNVxqAJl2FTxHkElk-aCvMtTZK_KkJmAZmfvmy4xthPcv4pjygY7hmhgzVnqSSMl6RfBx65tGKDDenVX9xTuv0JkEG7ZEFhgpSRM_Abst3M1reGrhROXNC3GXOtayiuh7CnrPAsfl9ov0lpKVaLLf9TAcxGQEaRIVHiHpyE2ALf3A3c22rScZjNkzU7ardDuEAO3B2e0CaCYEY7Ci1UyK6bRBOdouZNMqXVCTavD_96tA-C3iUJ1941zPRmw
- そのようにして取得できた Auth= に続くコードを利用することで、Google リーダーへログイン状態でアクセス可能になる。
$ AUTH_CODE=`curl --silent -k https://www.google.com/accounts/ClientLogin -d Email=OOOO@gmail.com -d Passwd=XXXX -d service=reader|grep Auth=|cut -d= -f2` $ curl --silent "http://www.google.com/reader/directory/search?hl=en&q=http://d.hatena.ne.jp/zariganitosh/" --header "Authorization : GoogleLogin auth=$AUTH_CODE"|grep 'span class="number"'|sed -e 's/[^0-9]//g' 1225
- ちなみに、オプションの意味。
- --silent ダウンロード中の状況を表示しない。
- -k httpsによるセキュアな接続を確立する。
- -d データをPOST送信する。
参考ページ
以下のページがたいへん参考になりました。感謝です!
購読者数の遷移を記録する
ブックマークレットやコマンドを実行すれば、その瞬間の購読者数は確認できるようになった。しかし、いちばん知りたいのは、購読者数の増減の変化だ。そのためには、照会した購読者数を日付情報とともに記録しておく必要がある。お決まりのAppleScriptで、ログファイルとして記録するスクリプトを作ってみた。
- 以下の形式で保存した。
- ファイル名:RSS_counter
- ファイルフォーマット:アプリケーション
- オプション:「実行後、自動的に終了しない」をチェック入り
property email : ""
property pw : ""
property auth : ""
property rss_url : "" --"http://d.hatena.ne.jp/XXXX/" --購読者数を確認したいURL
on run
my init() my open_rss_log() end run
on idle
my main() return 3600 * 24
end idle
on reopen
my main() my open_rss_log() end reopen
on init() if email = "" then my save_email() if pw = "" then my save_password() if auth = "" then set auth to my google_reader_auth_code() if rss_url = "" then my save_rss_url() my touch_rss_log() end init
on main() set rss_google to my google_reader_count() set rss_livedoor to my livedoor_reader_count() set rss_fastladder to my fastladder_count() set rss_total to rss_google + rss_livedoor + rss_fastladder
set rss_log to my datetime() & "合計=" & rss_total & " (google=" & rss_google & ", others=" & rss_livedoor + rss_fastladder & ")"
if rss_log ≠ my last_log() then
my save_log(rss_log) end if
end main
on google_reader_auth_code() "curl -k https://www.google.com/accounts/ClientLogin -d Email=" & email & " -d Passwd=" & pw & " -d service=reader|grep Auth=|cut -d= -f2"
do shell script result
end google_reader_auth_code
on google_reader_count() "curl --silent " & quoted form of ("http://www.google.com/reader/directory/search?hl=en&q=" & rss_url) & " --header " & quoted form of ("Authorization : GoogleLogin auth=" & auth) & "|grep 'span class=\"number\"'|sed -e 's/[^0-9]//g'"
do shell script result
end google_reader_count
on livedoor_reader_count() "curl --silent " & quoted form of ("http://reader.livedoor.com/about/" & rss_url) & "|grep subscriber_count|sed -e 's/[^0-9]//g'|tr \"\\n\" \"+\"|sed -e 's/+$//'|bc"
do shell script result
end livedoor_reader_count
on fastladder_count() "curl --silent " & quoted form of ("http://fastladder.com/about/" & rss_url) & "|grep subscriber_count|sed -e 's/[^0-9]//g'|tr \"\\n\" \"+\"|sed -e 's/+$//'|bc"
do shell script result
end fastladder_count
on save_email() activate
display dialog "Googleアカウントを入力してください。" default answer ""
set email to result's text returned
end save_email
on save_password() activate
display dialog "Googleパスワードを入力してください。" default answer "" with hidden answer
set pw to result's text returned
end save_password
on save_rss_url() activate
display dialog "照会するページのURLを入力してください。" default answer ""
set rss_url to result's text returned
end save_rss_url
on datetime() do shell script "date '+%Y-%m-%d '"
end datetime
on save_log(info_text) "echo " & quoted form of (info_text) & " >> " & quoted form of my log_path() do shell script result
--1000行を超えたら、ログローテーションする。(xxxx.log > xxxx.log.1、xxxx.logには最新の100ログだけ残る)
"f=" & my log_path() & "; if [ `cat \"$f\"|wc -l` -ge 1000 ]; then mv \"$f.1\" \"$f.2\"; mv \"$f\" \"$f.1\"; cat \"$f.1\" | tail -n 100 >\"$f\"; fi;"
do shell script result
end save_log
on last_log() "tail -n 1 " & quoted form of my log_path() do shell script result
end last_log
on log_path() (path to library folder from user domain)'s POSIX path & "Logs/" & my name & "-" & my file_name(rss_url) & ".log"
end log_path
on file_name(str) "echo " & quoted form of str & "|tr ':/' '--'"
do shell script result
end file_name
on open_rss_log() "open " & quoted form of my log_path() do shell script result
end open_rss_log
on touch_rss_log() "touch " & quoted form of my log_path() do shell script result
end touch_rss_log
試用
- RSS_counter.appを起動すると、24時間ごとに指定したURLの購読者数をチェックする。
- 購読者数は以下のファイルに記録される。
- ログファイルは、コンソール.appで確認する。
2011-08-30 合計=1909 (google=1225, others=684)
- Dockアイコンをクリックすると、その時点の購読者数を照会しに行く。
- 同じ日付で購読者数に変化がなければ、重複して記録はしない。
しばらくRSS_counter.appを使って、日々精進してみる。
*1:英語版のlivedoor Reader。