アンカーテキスト分散比率チェックツール

ネットで探してもなかったので、JavaScriptで作ってみました。いつもVBが多いですが、色んな方に使って貰えるようにWEBベースにしました。
Bingウェブマスターツールからダウンロード出来る外部リンクのCSVは、Googleと違ってURLだけでなくアンカーテキストまであるんですが、これを利用して特定のキーワードが出てくる出現率をチェックします。

SEO対策


そもそも何のためにこんなことをするのかと言うと、プログラムの話からは離れますが、リンクのアンカーテキストがどのように分散されているかが昨今のSEO対策で肝になってくるんです。
昨年Googleがペンギンアップデートなるものとパンダアップデートなるものを発表し実行しました。つい最近ペンギンのメジャーアップデートがありましたね。ペンギンアップデートは外部リンクに対しての評価変更、パンダアップデートは情報量、コピーコンテンツがないかなどのサイト内部に対しての評価変更です。
従来のSEO対策では、例えば「SEO対策」というキーワードで狙ってたら、アンカーテキストはそればかりにした方がリンクパワーが分散されることなく好都合でした。しかし翌々考えてみると、一つのキーワードで多数リンクされているというのは不自然な訳で、Googleはそこにメスを入れました。
もしSEO対策を一切気にせず運営していたら、貰えるナチュラルリンクは勿論キーワードリンクもあるかもしれないけど、サイトによってはURLだったり「こちら」とか色々とランダムに分散されていることが普通だと思います。よって自作自演をするにしても、アンカーテキストの分散具合をどうするかということが大事になってきました。

ツール掲載サイト


以下のページです。
一通り確認をしてみましたところ問題なく動きましたが、何かありましたら本エントリーのコメント欄までお願い致します。当方プログラマーではありませんので、不具合とかあるかもしれません。
また、本エントリーを書いてる現時点では殆どスタイルシートも設定してない非常に味気ない、良く言えばシンプルですが、時間出来たら変更します(笑)
予告なく掲載を終了する可能性もあります。


アンカーテキスト分散比率チェックツール

プログラム


こんな感じです。

function kwdRatio(){
	var domain;
	var domains = new Array();
	var anchor_texts = new Array();
	var col = new Array();
	var i, n;
	var cnt = 0;
	var objDipslay = document.getElementById("display");
	var kwd = document.getElementById("kwd").value;
	if (kwd == ""){
		objDipslay.innerHTML = 0;
		return;
	}
	var textarea = document.getElementById("text_id").value;
	if (textarea == ""){
		objDipslay.innerHTML = 0;
		return;
	}
	var row = textarea.replace(/[\n\r][\n\r]?/g, "\n").split("\n");
	for (i = 0; i < row.length; i++){
		col = row[i].split("\t");
		if (col[0] == ""){break;}
		domain = col[0].split('/')[2]
		if (!checkDuplicate(domains,anchor_texts, domain, col[1])){
			domains.push(domain);
			anchor_texts.push(col[1]);
			if (col[1].indexOf(kwd) != -1){cnt++;}
		}
	}
	n = Math.floor((cnt / domains.length) * 100);
	if (n > 0){
		objDipslay.innerHTML = n;
	} else {
		objDipslay.innerHTML = 0;
	}
}
function checkDuplicate(ary1, ary2, str1, str2){
	for (var i =0; i < ary1.length; i++){
		if(str1 == ary1[i] && str2 == ary2[i]){
			return true;
		}
	}
	return false;
};


インプットとテキストエリアにそれぞれ「onkeyup」で関数を実行出来するようにしています。ですのでキーを打つ度に処理が走ります。
大まかな流れとして、テキストエリアの文字列を改行で分割して配列に格納し、その分ループ(行ごとのループ) → タブで分割して列に分ける → URLをドメインに変換してドメインとアンカーテキストが同じものを除外して配列に格納していく、またこの時にもしアンカーテキストに指定したキーワードがあったらカウント → ループ抜け後は得られた数字からパーセンテージを算出、といった感じです。

使い方、仕様


リンク先のページとダブってしまいますが、使い方と仕様を書きます。
インプットに調べたいキーワードを入力、BingのCSVから2列目から3列目をコピーして項目を除外してコピーしてテキストエリアにペーストします。
キーワードの有無のところで

if (col[1].indexOf(kwd) != -1){cnt++;}


とindexOfを使って文字列の有無を判断してるので、中間一致になります。よって複数キーワードには対応していません。複数キーワードを入力しても動作はしますが、「○○ △△」だったら「△△ ◯◯」とか「◯◯の△△は当社へ」などは一致しません。「×××○○ △△×××」には一致します。
同一ドメインで且つ同一アンカーテキストは重複として2回目以降は無視します。
また、最後のパーセンテージを求めるところで発生する小数点は

n = Math.floor((cnt / domains.length) * 100);


とMath.floorを使って切り捨ててます。



これからはじめる SEO内部対策の教科書

これからはじめる SEO内部対策の教科書


JavaScript 第6版

JavaScript 第6版