Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

SEO 小技集

Google Analytics の検索エンジン定義と独自の検索エンジンを追加する方法

投稿日:


【2009/09/07:追記】
このページで解説している方法が使えなくなりました。
問題の解説と対応策は下記エントリーをご覧ください。
Google Analytics に独自検索エンジンを追加している場合の問題と対応

Google Analytics は説明するまでもなくフリーで使える高機能なアクセス解析ツールです。
そして、Analytics を使っている人の多くが、SEO の強化を目的としているのではないかと思います。
SEO を気にするのであれば、Analytics上の下記の値をチェックする事になるでしょう。
Analytics SEO
・トラフィック/検索エンジン
・トラフィック/キーワード
これらの値をチェックすることで「どの検索エンジンから」「どんなキーワードで」「何件くらい」のアクセスがきているかを把握することができ、最適化の有力な情報源になるでしょう。
では、そもそもAnalyticsはどうやって検索エンジンかどうかを見極めているのでしょうか?
実は、Analyticsから発行されるJavaScriptのコードの中に検索エンジンのリストが定義されているのです。ただし、その検索エンジンは基本的に海外のものに限定されているので(日本語版が存在するものは引っかかりますが)、国内だけしか存在しない検索エンジンは通常のサイトと同様に扱われてしまい、「検索エンジン」ではなく「参照サイト」の方にカウントされてしまいます。
国内検索エンジン
「キーワード」を解析するためには、「検索エンジン」として認識されている必要があるため、国内の検索エンジンも追加したいところです。
Analyticsにはちゃんと検索エンジンを追加するためのAPIが用意されていますので、続きで細かく解説していこうと思います。

Google Analytics がデフォルトで定義している検索エンジン

冒頭に書いた通り、Analyticsが検索エンジンとして定義しているリストはJavaScriptコード(旧:urchin.js、新:ga.js)に定義されています。
新旧のJSコードではだいぶロジックが異なりますが、urchin.js では _uOsr変数・_uOkw変数に、ga.js では pageTracker.hd()関数で返されるオブジェクトに入っています。
以下に、2008年10月21日現在で定義されているリストを転載します。

検索エンジンホスト 検索キー
google q
yahoo p
msn q
aol query
aol encquery
lycos query
ask q
altavista q
netscape query
cnn query
looksmart qt
about terms
mamma query
alltheweb q
gigablast q
voila rdata
virgilio qs
live q
baidu wd
alice qs
yandex text
najdi q
aol q
club-internet query
mama query
seznam q
search q
wp szukaj
onet qt
netsprint q
google.interia q
szukacz q
yam k
pchome q
kvasir searchExpr
sesam q
ozu q
terra query
nostrum query
mynet q
ekolay q
search.ilse search_for

※このリストはGoogleによって随時更新される可能性がある事を忘れないで下さい。
さて、一覧を見てみるとGoogle、YahooはともかくAOLやAltavistaなど海外で人気の検索エンジンばかりが定義されていることが改めて分かるでしょう。
Google Analyticsに国内検索エンジンを追加するコードまとめ | WebとPCのメモ帳というエントリーを参考にすると、以下の国内サイトを検索エンジンとして登録したい。

* goo
* livedoor
* @nifty
* BIGLOBE
* Excite
* Infoseek
* フレッシュアイ
* はてな
* au one
* MARS FLAG
* Mooter
* NAMAAN
* Bloglines

検索エンジンを追加する _addOrganic 関数の問題点

Analyticsにはちゃんと検索エンジンを追加するための関数が用意されていました。
ga.js の場合は、_addOrganic 関数というのが用意されています。
参照元レポートに検索エンジンを追加するにはどうすればよいですか。
つまり、

var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._addOrganic("name_of_searchengine","q_var");
:
(repeat)
:
pageTracker._initData();
pageTracker._trackPageview();

このように指定すれば良いのですが、実はこの仕組み自体に問題があります。
この _addOrganic 関数は既出の検索エンジンのリストが入ったオブジェクトに値を追加しているのですが、このオブジェクトの処理ロジックが下記のようになっているため全てのリストを正常に判断してくれない場合があります。
1)「リファラー」のホスト部分と「検索エンジンリスト」のホストを比較(部分一致)する
2)「リファラー」のクエリに「検索キー」と完全一致するパラメータが存在するか確認
これを検索エンジンリストに登録されている順番通りに実行していき、1)2)ともに満たす場合は検索エンジンとして判断しています。
この1)のホスト比較が部分一致であるために、たとえば「search.livedoor.com/?q=キーワード」という検索URLがあった場合、_addOrganic(“search.livedoor”,”q”) と関数を呼び出したとしても、27個目に定義されている「search」にヒットしてしまうので search.livedoor としては入ってこなくなります。

検索エンジンを正常に追加する方法

Google Analytics で livedoor や BIGLOBE が集計できない件への対処法 – ヘタレな趣味の道というエントリーで、一旦デフォルトの検索エンジンリストをクリアしてから自分で追加していくという方法が解説されていました。

そうです。_clearOrganic() という API を用いてデフォルトの登録を消去し、全てを自分で登録するのです。

via: Google Analytics で livedoor や BIGLOBE が集計できない件への対処法 – ヘタレな趣味の道

確かにこの方法なら、「search.com」の前に「search.livedoor」などを定義できるので問題を解決できそうです。
が、逆にいうと折角Googleが定義してくれている検索エンジンリストを破棄してしまっているので、新しい検索エンジンをAnalyticsに追加するのは全て自分でやらなければいけなくなります。
これでは、検索エンジンの更新管理が続かない事は明白ですので、Analyticsのデフォルト定義を活かしつつ自前の検索エンジン定義を有効にする方法を考えてみました。
▼ga.jsの場合

var pageTracker = _gat._getTracker("UA-xxxxxx-x");
// デフォルトの検索エンジンリストをバックアップ
var _org_search_list = pageTracker.hd();
// 一旦、クリア
pageTracker._clearOrganic();
// 検索エンジンリストを追加
pageTracker._addOrganic("goo.ne.jp","MT");
pageTracker._addOrganic("livedoor","q");
pageTracker._addOrganic("nifty","Text");
pageTracker._addOrganic("biglobe","q");
pageTracker._addOrganic("excite.co.jp","search");
pageTracker._addOrganic("infoseek","qt");
pageTracker._addOrganic("fresheye","kw");
pageTracker._addOrganic("hatena","word");
pageTracker._addOrganic("auone","q");
pageTracker._addOrganic("marsflag","phrase");
pageTracker._addOrganic("mooter","keywords");
pageTracker._addOrganic("namaan","query");
pageTracker._addOrganic("bloglines","q");
// デフォルトの検索エンジンリストをリストア
for( var i=0 ; i<_org_search_list.length ; i++ ){
pageTracker._addOrganic(_org_search_list[i].zb,_org_search_list[i].Nb);
}
pageTracker._trackPageview();

▼urchin.jsの場合

_uacct = "UA-xxxxxx-x";
// デフォルトの検索エンジンリストをバックアップ
var _org_search_list = [];
for( var i=0 ; i<_uOsr.length ; i++ ){
_org_search_list[i] = [ _uOsr[i], _uOkw[i] ];
}
// 一旦、クリア
_uOsr = []; _uOkw = [];
// 検索エンジンリストを追加
_uOsr.push("goo.ne.jp");    _uOkw.push("MT");
_uOsr.push("livedoor");     _uOkw.push("q");
_uOsr.push("nifty");        _uOkw.push("Text");
_uOsr.push("biglobe");      _uOkw.push("q");
_uOsr.push("excite.co.jp"); _uOkw.push("search");
_uOsr.push("infoseek");     _uOkw.push("qt");
_uOsr.push("fresheye");     _uOkw.push("kw");
_uOsr.push("hatena");       _uOkw.push("word");
_uOsr.push("auone");        _uOkw.push("q");
_uOsr.push("marsflag");     _uOkw.push("phrase");
_uOsr.push("mooter");       _uOkw.push("keywords");
_uOsr.push("namaan");       _uOkw.push("query");
_uOsr.push("bloglines");    _uOkw.push("q");
// デフォルトの検索エンジンリストをリストア
for( var i=0 ; i<_org_search_list.length ; i++ ){
_uOsr.push(_org_search_list[i][0]); _uOkw.push(_org_search_list[i][1]);
}
urchinTracker();

※urchin.jsは動作確認が不十分ですので、試した人いたら結果を教えて下さいm(_ _)m
ga.js も urchin.js も基本的にやっている事は同じです。
コツとしては _clearOrganic でデフォルトの検索エンジンストを消してしまう前に別の配列(オブジェクト)にコピーしておき、あとでリストアしている点です。
こうする事によって、自分で登録する検索エンジンをデフォルトの検索エンジンリストよりも優先的に反映できるので、ホスト/キーワードのセットがかぶってしまう問題もクリアする事ができます。
もう一つ重要な点として、Anayticsのロジックがあくまで上から順に検査エンジンリストを比較していくので、比較文字列がより細かいものから追加していく必要があります。
例えば、「search」と「www.search」と「sub.www.search」を別々に解析したいのならば、下記の順で記述すべきです。

pageTracker._addOrganic('sub.www.search','q');
pageTracker._addOrganic('www.search','q');
pageTracker._addOrganic('search','q');

まとめ

さて、凄まじく長いエントリーになってしまいましたが、お付き合いいただきありがとうございました。
長文ゆえ間違っている点もありそうな予感ですが、何かお気付きでしたらお知らせ下さい。
なんだか最近Analyticsを調べることがたくさんあったので、他にも役立ちそうな情報があったらエントリーにしてみたいと思います。
最後に、参考にさせていただいたサイト/エントリーもリンクしておきますね。
Google Analytics Tracking API – Google Analytics Tracking Code – Google Code
Analytics 日本版 公式ブログ: 国内の検索エンジンをレポートに追加する方法
参照元レポートに検索エンジンを追加するにはどうすればよいですか。
Google Analyticsに国内検索エンジンを追加するコードまとめ | WebとPCのメモ帳
Google Analytics – 未定義の検索エンジンを追加 – pyro | blog
Google Analyticsのトラッキングコードga.jsで検索エンジンを追加する方法|makitani.com
Google Analytics で goo や百度からの検索をトラッキングする – ヘタレな趣味の道
Google Analytics で livedoor や BIGLOBE が集計できない件への対処法 – ヘタレな趣味の道

Ajaxページのアクセス解析の考え方と Google Analytics での実践
Google Analytics のベンチマーク機能から分かる事

-SEO, 小技集

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

[N]ネタフル x [S]シカマケ = ブログデザイン勉強会 第2回:テーマ曲を決めて自分を更に深堀

昨日はブログデザイン勉強会の第2回がありました。 まずは、前回のおさらいですが1枚絵に自己紹介を描いてきて皆さんに発表。 それから、今のサイトと比べてどうかという事を他の方からご意見いただきました。 …

FlickrExがWordPressのLazy Load Pluginに対応しました!

先月このブログにも導入し、Lazy Loadとの共存のための修正などで協力させていただいたFlickrExですが、どうもWordPressでうまくいかないという声が聞こえてきていたので、なんとなくやり …

MacのDock風メニューを縦方向にも設置できる「MacStyleDockPlus.js」

コリスさんで以下のスクリプトが紹介されていました。 MacStyleDock.jsは、Mac OS X風のドックをPrototypeやjQueryなどのライブラリを必要とせず実装できる、わずか3KBの …

Googleドライブのフォーム機能は初期値をセットできる

とても便利なのにあまり知られていないらしいことが分かったのでエントリー。 Googleドライブのフォームは本当に便利で、アンケートやお問い合わせフォームが本当にサクッと数分でできちゃいます。以前書いた …

タブ開き過ぎの人用のFirefox拡張「Tab mix Plus」で「FaviconizeTab」みたいなミニマム表示を実現

Firefoxの拡張といえば、タブ拡張なんかはメジャーな方だと思うんだけど、色々入れてると機能がコンフリクトしちゃってうまく動かなくなったりしますよね。ボクは基本的には「Tab Mix Plus」しか …

スポンサードリンク

スポンサードリンク