クイックノート

ちょっとした発見・アイデアから知識の発掘を

【R】検索クエリからのサイトアクセスをバブルチャートで可視化して分析してみる

前回、以下の記事で Google Seach Console からの検索クエリの情報を、
Google データポータルを使ってバブルチャート化する方法を紹介しました。

clean-copy-of-onenote.hatenablog.com

Googleデータポータルでは、数値を色で表すことができないので、
縦軸、横軸、バブルサイズの3次元の値しか表現できないのが、
欠点となっていました。

そこで、より柔軟に可視化を行うため、
Rでデータを読み込み、バブルの色も使った、
以下のようなバブルチャートを作成してみます。

f:id:u874072e:20190606160711p:plain

準備

Google API の有効化

Google Search Consoleからのデータの取得を行うため、
APIの設定をしておく必要があります。

詳しい設定の仕方は下記の記事をご参照ください。

clean-copy-of-onenote.hatenablog.com

パッケージのインストール

ここでは、以下のパッケージを使用するため、
Rでinstall_packagesを実行して、
パッケージのインストールを行っておきます。

  • googleAuthR
  • searchConsoleR
  • plotly

データの取得

まずは、APIを通して検索クエリのデータを取得します。

以下では、APIの認証を実行した後、
クエリのデータを取得しています。

library(googleAuthR)
library(searchConsoleR)

## get data
gar_set_client(json = "client_id.json", 
               scopes = "https://www.googleapis.com/auth/webmasters")
gar_auth()

df = search_analytics(siteURL="https://clean-copy-of-onenote.hatenablog.com/",
                      startDate=Sys.Date() - 30, # データ取得開始日
                      endDate=Sys.Date()-3,       # データ取得終了日
                      dimensions=c("query"),
                      walk_data = "byBatch",
                      rowLimit = 10^5)                   # 最大のデータ数 

startDateendDateでデータを取得する期間を設定します。
dimensionsはデータを区切る単位です。
今回は、queryを指定していて、
クエリ毎のデータを取得しています。
rowLimitでは、取得するデータ数の最大値を指定しています。

グラフの描画

データを取得できたら早速グラフを作成して、
可視化してみましょう。

前処理

あまり興味のないクエリも含めると、
クエリの数が膨大すぎて、
グラフが見えずらくなったり、
グラフの描画処理が重くなってしまいます。

そこで、ある程度興味のあるデータに絞るように、
フィルターをかけることにします。

# preprocessing
max_pos = 20
x = df[df$position < max_pos,]
x = x[x$impressions>1,]
x = x[!is.na(df$query),]

上では、取得したデータに対して、
max_posで指定した順位20位までのクエリを抽出しています。

また、一回だけ検索にかけられただけの、
ほとんどゴミのようなクエリを取り除いています。

plotly によるバブルチャートの作成

R ではグラフを書くためのツールが複数用意されていますが、
今回は、インタラクティブでカッコイイグラフが簡単に作成できる
plotly を使ってバブルチャートを作成します。

## graph
library(plotly)
sizecoef = 50 / max(x$clicks)
p = plot_ly()
p <- add_markers(p,x=x$impressions,y=x$position,text=x$query,
                 marker = list(size = x$clicks*sizecoef,opacity=0.5),
                 color=x$ctr,colors="RdYlBu",) %>%
  layout(xaxis=list(type="log",title="impression"),
         yaxis=list(autorange = "reversed",title="position"))
p

上のように、各軸やバブルサイズ、
色をどの数値と連動させるかを指定するだけでグラフが作成できます。

Google データポータルでは、バブルの透明化ができず、
重なったバブルがわかりづらくなってしまいましたが、
plotly では、opacityで透明度を設定できます。

グラフの読み方

このサイトでの検索クエリのデータを上の方法で可視化すると、
下の図のようになりました。

f:id:u874072e:20190606161437p:plain

グラフの上にあるほど、検索で表示される順位が高く、
右に行くほど、検索された回数が多くなります。

バブルの大きさはクリックの大きさを表していて、
バブルの色はクリック率を表しています。
赤色のバブルはクリック率が低く、
青色のバブルはクリック率が高いことを表しています。

グラフの右上、右下、左上、左下に分けて見ると、
見通しが立てやすくなるので、そのように見てみましょう。

右上:上位で検索ボリューム大

右上はよく検索されるクエリで、
検索結果は上位に表示されているものです。

通常であれば、ここに位置するクエリについては、
クリック数が大きくなることが期待されます。
ここに大きなバブルが来ていれば、
それがサイトの大きな強みであると言えます。

ただし、検索ボリュームが大きいということは、
競争も激しいことが予想されるので、
高い順位に表示されるのは難しいかもしれません。

左上: 検索ボリュームは小さいが、上位に表示される

左上はあまり検索されることのないクエリで、
検索された場合には上位に表示されているものです。

検索数が少ないということから、
ニッチな検索クエリと言えるでしょう。

競争相手も少ないので、上位表示も狙いやすい部分です。

ここのバブルが多いということは、
ニッチ向けの記事が多いブログと言えるでしょう。

いわゆるロングテールのアクセスを狙った場合は、
ここのバブルが多くなるはずです。

右下:検索ボリュームは大きいが、下位に表示される

右下は、頻繁に検索されるクエリですが、
自分のサイトが上位に表示されていないものを表します。

ここのクエリからの検索アクセスをサイトに取り込むことができれば、
大きなアクセス増が期待できます。

ただし、検索ボリュームが大きいということは、
一般に、競争も激しいと考えられるので、
上位表示を狙うのは難しいところでもあります。

似たような記事がすでに上位に表示されていて、
ちょっとキーワードが外れているというような場合には、
情報の補強の意味も込めて、
キーワードにフォーカスを当てた新しい記事を
追加するのもありかもしれません。

左下:検索ボリュームも小さく、下位に表示される

左下は、ほとんど検索もされず、
サイトが下位に表示されているクエリです。

このクエリが自分のサイトがフォーカスを当てているところと
無関係なら問題ないでしょう。

逆に、自分のサイトのためのようなものというクエリが、
左下にある場合は、競合するサイトに負けないように、
記事を修正する必要があるかもしれません。

まとめ

今回は、Rを使って、
Google Search Consoleの検索クエリデータを可視化しました。

やはり、ありもののWebサービスを使うよりも、
プログラムを組んだ方が格段に自由度は高くなりますね。

上のバブルチャートで時間的な変化を、
アニメーション的に表示することもできるのですが、
出来上がったものがイマイチだったので、改良できれば、
また紹介したいと思います。

プライバシーポリシー