俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

SEO対策キーワードの難易度チェッカーを自作 - 日報 #110

寒いと肩凝りませんか?
寒い→なんかこわばる→ずっと肩に力が入る→肩こる
俺だけかな。
俺だけの特異体質だったら、やだな。

さて、本日は利尻昆布のお話を。
もとい、rishirikonbu.jpのお話を。

SEO対策にのぞむさい、
必ず戦略キーワードを選定するシーンというのは出てくると思います。
キーワードツールアクセス解析を用いて、
「なんかこの辺のワード対策するといいわな」
っていうリストを作ったとして、実際に取り組む順番ってのは「勝てそうなワード」がいいわけですよね。
まぁこのへんの話はSEO対策でググれば死ぬほど出てくると思います。

ところでその「勝てそうなワード」選定の時に、
多くの解説サイトですと http://rishirikonbu.jp/difficulty_checker/ このサイトを用いて、
キーワードの難易度をチェックしたらええで的な事が書かれるわけです。
ということで僕もそれを叩きに行くのですが、、、
なんと、なんらかの仕様変更があったのか、
何度やっても取得失敗になります。
(これ僕だけでしょうかね。。。)

コレがないとSEO対策始まらんのに、
困ったものです。

困ったので自作するしかないですね。
難易度チェッカーのやっていることは、指定キーワードのGoogle上位10サイトにおいて、
ページランクと被リンク数の平均値を出力し、
「そのキーワードの競合サイトがどんだけ強いのか?」を判定することなわけです。
利尻昆布先生がどうやっているのかはわかりませんが、
mozのAPIGoogle customAPIを用いれば出来ないことはありません。
なのでやります。

まずmozのAPIから。
mozのアカウントを作成したら、
https://moz.com/products/api/keys
ここにいってAPI Keyを、ゲットだぜ!

そしたら、今度はAPIリファレンスをみながら取得コードを書くのだけど、、、
それむっちゃ面倒だから、ここのGitHubにおもむろにアクセス。
https://github.com/seomoz/SEOmozAPISamples/blob/master/php/batching_urls_sample.php
そして、APIの結果JSON取得PHPコードを、ゲットだぜ!

とはいえ、取得したいパラメータをどうするかというと、
http://moz.com/help/guides/moz-api/mozscape/api-reference/url-metrics
ここのBit Flagを確認して、今回はmoz rank、moz auth、被リンク数、全リンク数くらいを取得する。
Bit Flagとしては、

<?php

$cols = "32";
$cols += "2048";
$cols += "34359738368";
$cols += "16384";

?>

こんな感じで書いとけば、指定URLのページランクと被リンク数、ゲットだぜ!

さぁ整ってきましたね。
最後はGoogle CostomAPIですが、コレ以外と厄介です。
厄介ですが、
http://ryutamaki.hatenablog.com/entry/2014/01/18/171640
ここのサイトの通り設定して、検索IDとGoogleのアクセスキーを、ゲットだぜ!

続いて、実際にキーワードでGoogleの検索結果を取得するphpを書く。
これも超簡単でいい。

<?php
define('GGL_KEY', 'hogehoge');
define('CX_KEY', 'hogehogehoge');

$url_format = "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=%s";
$url = sprintf($url_format, GGL_KEY, CX_KEY, urlencode($keyword));
$json = curl_get_contents($url);
$array = json_decode($json, TRUE);
$items = $array['items'];
var_dump($items);

// curl で contents ゲットだぜ!
function curl_get_contents( $url, $timeout = 60 ){
  $ch = curl_init();
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_HEADER, false );
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
  curl_setopt( $ch, CURLOPT_USERAGENT, 'RCEC2');
  $result = curl_exec( $ch );
  curl_close( $ch );
  return $result;
}

?>

さて、これでGoogleのキーワードごとの検索結果トップ10を、ゲットだぜ!

あとはキーワードリストCSVファイルでも作って、ぐるぐる回せば簡単にmozベースでのキーワード難易度チェッカーが出来るわけですね。

なんと簡単な事か。
ただ注意すべきことは、回数制限ですね。
まずmoz APIはフリーアカウントの場合 1call per 5sec とのこと。
そしてGoogleAPIも無料なのは 100/day とのこと。
これに注意しながらキーワードぐるぐる回すときも sleep(10)とか適当に入れておく必要がございますね。

あぁ駆け足でしたが今日はこんなところで。
ちなみに、この手のスクリプトって最終的にcsvで吐き出すと思いますが、
macあるあるとして、
「エクセルで開くと化けるんだけどーなんでー」
状態になると思います。
そんな時はUTF-16にmi.appで変換するといいんですが、
それも一々面倒臭いなら、下記コードで変換するとよいです。

nkf -Lu --oc=CP932 --overwrite ./out.csv

ExcelはCP932(SJISの拡張文字コード)で開くと安全なんですね。
以上でした。