特定のキーワードのGoogleでの検索順位を得る

運営しているサイトが持つ検索キーワードの順位を得たいと思ったのだが、きっと世の中には同じことを考える人がいるだろうからとRuby Gemsを探ったら所望するGemがあったので試してみた。

google-search_rank | RubyGems.org | your community gem host

例えば自分のブログが「安住紳一郎の日曜天国」というキーワードでGoogle検索した際に何番目に表示されるかを調べたい場合は

require 'google/search_rank'

client = Google::SearchRank.new(api_key: "(APIキー)", cse_id: "(カスタム検索エンジンの設定で得られるID)")
keywords = ["安住紳一郎の日曜天国"]
rank = {}

keywords.each {|keyword|
  rank[keyword] = client.find(keyword, %r{http://hideack.hatenablog.com/.*})
}

p rank

これを実行すると、

start: 1, i: 0 rank: 1, query: 安住紳一郎の日曜天国, link: http://www.tbsradio.jp/nichiten/
(snip)
start: 11, i: 6 rank: 17, query: 安住紳一郎の日曜天国, link: http://hideack.hatenablog.com/entry/2016/04/20/225328
{"安住紳一郎の日曜天国"=>17}

といった具合で順位が把握できる。

プログラム中にあるAPIキーはGoogle developer console から認証情報として取得する。併せて利用するAPIとして Custom Search API を有効にする。

カスタム検索エンジンID(CSE ID)はGoogleカスタム検索エンジンで設定した画面から得ることができる。

無償で利用できるCustom Search APIの呼び出し回数は100回/日なの大量のキーワードに対して検索順位を得るにはあまり合わないかもしれないがターゲットとしているキーワードが明確で少数の場合は利用できると思う。