クイックノート

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

ブログのリピーターの特徴を調べる

ブログを再訪問してくれるリピーターは、
少なくともブログの内容に関心を持ってくれているはずです。

たまたま同じブログにアクセスしてしまった人もいるでしょうが、
この広いインターネットの世界でそれは稀でしょう。

ブログの内容が何か響いたからこそ、
同じブログにアクセスしてくれているはずです。

そんなリピーターがどのような行動をしているかは、
ブログを改善するヒントを与えてくれるかもしれません。

リピーターはどのような時間に、
どのようなページにアクセスしているのか、
のような特徴を調べていきます。

方法

アクセス分析といえばGoogle Analyticsの出番です。

Web上から操作しても同じようなことはできそうですが、
マウス操作が面倒なので、
APIを使ってRからデータを取得、グラフ化することにします。

準備

API 利用の準備

APIを利用するための準備は下の記事を参考にしてください。

clean-copy-of-onenote.hatenablog.com

利用するパッケージ

下のパッケージを利用します。

library(RGA)
library(stringr)
library(dplyr)
library(plotly)

設定

APIを利用するための認証情報、
調べるブログのURLなどを設定しておきます。

USERNAME = "ユーザー名"
CLIENT_ID = "クライアントID"
CLIENT_SECRET = "クライアントSECRET"
URL = "ブログURL"
METRICS = "ga:avgSessionDuration,ga:users,ga:pageviewsPerSession"

認証

上で設定した情報を元に、
認証を行い、サイトの情報を取得しておきます。

authorize(username = USERNAME,
          client.id = CLIENT_ID,
          client.secret = CLIENT_SECRET)
lp = list_profiles() %>% dplyr::filter(websiteUrl==URL)

リピーターの特徴分析

リピーターの特徴を調べるために、
リピーターと新規訪問者をグループ分けして、
どのように違いが現れるかを見ます。

時間帯によるアクセス傾向の違い

いつアクセスするかは、
行動を知るために気になる要素です。

リピーターと新規訪問者の間に違いはあるでしょうか。

ga_res = get_ga(profileId = lp$id,
                start.date = Sys.Date()-93,
                end.date = Sys.Date()-3,
                metrics = METRICS,
                dimensions = "ga:hour,ga:userType"
)
ga_res = ga_res %>% group_by(userType) %>% mutate(userRatio=users/sum(users))
plot_ly(ga_res,x=~hour %>% as.numeric,y=~userRatio,color=~userType,mode="lines") %>%
  layout(xaxis=list(title="time"))

f:id:u874072e:20190913144436p:plain
時間帯の違い

「New Visitor」は新規訪問者、
「Returning Visitor」はリピーターを表しています。

グラフは時間帯ごとのユーザー数の変化を表していますが、
リピーターと新規訪問者の間では大きな違いはなさそうですね。

アクセス方法の違い

時間帯の次は、どのようにアクセスしているかを見てみましょう。

ブログへのアクセスは、
お気に入りなどから直接アクセスするか、
検索にヒットしてアクセスするか、
別のサイトからのリンク経由でアクセスするか
があります。

ga_res = get_ga(profileId = lp$id,
                start.date = Sys.Date()-93,
                end.date = Sys.Date()-3,
                metrics = METRICS,
                dimensions = "ga:Medium,ga:userType"
                  )
ga_res = ga_res %>% group_by(userType) %>% mutate(userRatio=users/sum(users))
plot_ly(ga_res,x=~Medium,y=~userRatio,color=~userType)

f:id:u874072e:20190913143016p:plain
アクセス方法の違い

上のグラフで、
(none)は直接的なアクセス、
organicは検索経由のアクセス、
referralはリンク経由のアクセスを表しています。

ほとんどが検索経由のアクセスであることは、
リピーターも新規訪問者も変わりません。

一方で、若干リピーターの方が、
リンク経由のアクセスが多いように見えます。

直感的には、リピーターはお気に入りから、
直接アクセスが多いように思われますが、
最近では、はてなブックマークなど、
Web上に気に入ったサイトのリンクを残すことも多いため、
ブラウザのお気に入り機能はあまり使われていないのかもしれませんね。

セッション時間の違い

アクセスした人が、
どれだけブログの中に滞在してくれるかも、
行動を知るための重要な要素です。

plot_ly(ga_res,x=~Medium,y=~avgSessionDuration,color=~userType)

f:id:u874072e:20190913143102p:plain
セッションの継続時間の違い

グラフを見ると、明らかにリピーターの方が長い時間、
ブログに滞在していることがわかります。

やはり一定程度は興味を持ったユーザーがリピーターとして、
再訪問してくれているのでしょうね。

閲覧するページ数の違い

セッション時間が長いといっても、
ブログ内を色々みて回っているのか、
一つの記事を集中してみているのかは違ってきます。

plot_ly(ga_res,x=~Medium,y=~pageviewsPerSession,color=~userType)

f:id:u874072e:20190913143131p:plain
閲覧するページ数の違い

直感的にはリピーターはブログに興味を持ってくれているので、
新規訪問者よりも多くのページを見てくれると考えられます。

ところが、上のグラフを見ると、
検索経由のリピーターは、
むしろ新規訪問者よりも見るページ数が若干少ないことが分かります。

検索経由のアクセスでは調べることの目的がはっきりしていて、
それに答える記事だけ見れれば十分なのでしょう。

訪問するページの違い

どのようなページを訪問するかも、
行動を理解するために重要です。

細かくページを見ると分かりづらいので、
大まかにページを分類します。

ga_res = get_ga(profileId = lp$id,
                start.date = Sys.Date()-93,
                end.date = Sys.Date()-3,
                metrics = METRICS,
                dimensions = "ga:landingPagePath,ga:userType"
)
pageCategorize = function(pagepath){
  ans = rep("other",length(pagepath))
  ans[grep("^/archive",pagepath)] = "archive"
  ans[grep("^/search",pagepath)] = "search"
  ans[grep("^/entry/",pagepath)] = "entry"
  ans[grep("^/$",pagepath)] = "toppage"
  ans[grep("^/about$",pagepath)] = "profile"
  return(ans)
}
ga_res = ga_res %>% filter(landingPagePath!="(not set)")
ga_res = ga_res %>% mutate(pageType = pageCategorize(landingPagePath))
ga_res = ga_res %>% group_by(pageType,userType) %>% 
  summarise(avgSessionDuration=mean(avgSessionDuration),users=sum(users),pageviewsPerSession=mean(pageviewsPerSession))
ga_res = ga_res %>% group_by(userType) %>% mutate(userRatio=users/sum(users))
plot_ly(ga_res,x=~pageType,y=~userRatio,color=~userType) %>%
  layout(yaxis=list(type="log"))

f:id:u874072e:20190913143210p:plain
訪問するページの違い

archiveは記事の一覧、
entryは一つ一つの記事、
profileはプロフィールページ、
searchはブログ内検索ページ、
toppageはブログのトップへのアクセスを表しています。

ブログ記事へのアクセスが圧倒的に多いのは、
リピーター、新規訪問者ともに共通した特徴です。

他の項目については、ブログ内検索以外では、
リピーターの方がアクセスが多いことが分かります。

特に、リピーターはプロフィールページへのアクセスが多い傾向が見られ、
プロフィールに毎日自動更新されるライフログを貼り付けたのは、
正解だったのかもしれません。

clean-copy-of-onenote.hatenablog.com

まとめ

当ブログのリピータの特徴を分析してみました。

プロフィールページへのアクセスに
リピーターの特徴が出ていたのは印象的でした。

ブログを再訪する時の一つの楽しみになればいいなと淡く期待しつつ、 毎日自動的に更新されるライフログを貼り付けたのが、
案外狙い通りだったのかもしれません。

プライバシーポリシー