Twitterアナリティクスのエンゲージメント内容を分析できるコードを書いてみた

Twitter

先日、自分のTwitterアナリティクスアカウントについて詳しく調べてみました。

ただこの方法、自分でエクセルにデータを打ち込んでいたので滅茶苦茶効率が悪いんですよね。

というか、Twitterアナリティクスをよく見たら、データをエクスポートする機能が既にあるじゃないですか。これを利用すれば良いことに全然気づいていませんでした。

データをエクスポート

この「データをエクスポート」ボタンを押すと「tweet_activity_metrics.csv」というCSVファイルが作成されて、ダウンロード出来るようになります。で昨日、このファイルを分析できるコードをRubyで書いてみました。

photo by kazuma jp

スポンサーリンク
レクタングル(大)広告

Twitterエンゲージメント率内訳分析コード

Twitterアナリティクスでは、インプレッション回数(ツイートが表示された回数)に対してエンゲージメント回数(アクションが起こされた回数)は表示され、エンゲージメント率も一覧で表示されます。

エンゲージメント率

ただ、個々のアクションが、どれぐらいの割合で行われているかは、今のところ自分で計算するしかないです。

ツイートに対するアクションは現在、主なものだけでもこれだけあります。

  • リツイート
  • 返信
  • お気に入り登録
  • プロフィール表示
  • URLクリック
  • ハッシュタグクリック
  • 詳細表示
  • パーマリンククリック
  • 埋め込みメディアクリック
  • フォロー
  • メールツイート

Twitterアナリティクスに表示されているエンゲージメント回数は、これらのアクション全てをひとまとめにしたものです。

エンゲージと言ったら、「結婚的なもの」とか「少女革命ウテナ」とかを連想してしまう僕にとって、ただざっくりと「エンゲージメント率」と表示されてもいまいちピンときません。僕の場合は、エンゲージメント率の中の「URLクリック率」とか「お気に入り登録率」とか「リツイート率」とかが知りたかったりします。

「エンゲージメントとか何を言っているのかわからない」という方は、以下で説明しています。

わかると楽しいTwitterアナリティクス、どのようなことがわかるのか?

そこで、エクスポートデータを利用して、アカウント自体のエンゲージ内容(アクション内容)をそれぞれ表示できるコードを書いて、一発で分析できるようにしてみました。

これを使うと、手軽に自分のアカウント全体のエンゲージメント内容がどうなっているか見ることができます。

こんな感じで。

全有効ツイート数   :     59
インプレッション数  :   9518
エンゲージメント数  :    326(3.43%)
リツイート数     :     11(0.12%)
返信数        :     11(0.12%)
お気に入り登録数   :     28(0.29%)
プロフィール表示数  :     27(0.28%)
URLクリック数   :    159(1.67%)
ハッシュタグクリック数:      0(0.00%)
詳細表示数      :     89(0.94%)
パーマリンククリック数:      0(0.00%)
埋込メディアクリック数:      0(0.00%)

コードの内容はこんな感じです。

# encoding: utf-8
Encoding.default_external = 'UTF-8'
require "csv"
require 'date'
csv = CSV.read('tweet_activity_metrics.csv')

impression_count = 0
engagement_count = 0
retweet_count = 0
replie_count = 0
favorite_count = 0
user_profile_click_count = 0
url_click_count = 0
hashtag_click_count = 0
detail_expand_count = 0
permalink_click_count = 0
embedded_media_click_count = 0
app_open_count = 0
app_install_attempt_count = 0
follow_count = 0
email_tweet_count = 0
dial_phone_count = 0
tweet_count = 0
csv.each_with_index do |items, i|
  next if i == 0
  tweet_count += 1
  #インプレッション数が0で、データが計測される8月23日前は集計しない
  break if items[4].to_i == 0 && (Date.parse(items[3]) < Date.parse('2014-08-23'))
  impression_count += items[4].to_i
  engagement_count += items[5].to_i
  retweet_count += items[7].to_i
  replie_count += items[8].to_i
  favorite_count += items[9].to_i
  user_profile_click_count += items[10].to_i
  url_click_count += items[11].to_i
  hashtag_click_count += items[12].to_i
  detail_expand_count += items[13].to_i
  permalink_click_count += items[14].to_i
  embedded_media_click_count += items[15].to_i
  app_open_count += items[16].to_i
  app_install_attempt_count += items[17].to_i
  follow_count += items[18].to_i
  email_tweet_count += items[20].to_i
  dial_phone_count += items[21].to_i
end
puts
puts '全有効ツイート数   :' + tweet_count.to_s.rjust(7)
puts 'インプレッション数  :' + impression_count.to_s.rjust(7)
puts 'エンゲージメント数  :' + engagement_count.to_s.rjust(7) + "(#{sprintf('%.2f', (engagement_count.to_f/impression_count.to_f*100))}%)"
puts 'リツイート数     :' + retweet_count.to_s.rjust(7) + "(#{sprintf('%.2f', (retweet_count.to_f/impression_count.to_f*100))}%)"
puts '返信数        :' + replie_count.to_s.rjust(7) + "(#{sprintf('%.2f', (replie_count.to_f/impression_count.to_f*100))}%)"
puts 'お気に入り登録数   :' + favorite_count.to_s.rjust(7) + "(#{sprintf('%.2f', (favorite_count.to_f/impression_count.to_f*100))}%)"
puts 'プロフィール表示数  :' + user_profile_click_count.to_s.rjust(7) + "(#{sprintf('%.2f', (user_profile_click_count.to_f/impression_count.to_f*100))}%)"
puts 'URLクリック数   :' + url_click_count.to_s.rjust(7) + "(#{sprintf('%.2f', (url_click_count.to_f/impression_count.to_f*100))}%)"
puts 'ハッシュタグクリック数:' + hashtag_click_count.to_s.rjust(7) + "(#{sprintf('%.2f', (hashtag_click_count.to_f/impression_count.to_f*100))}%)"
puts '詳細表示数      :' + detail_expand_count.to_s.rjust(7) + "(#{sprintf('%.2f', (detail_expand_count.to_f/impression_count.to_f*100))}%)"
puts 'パーマリンククリック数:' + permalink_click_count.to_s.rjust(7) + "(#{sprintf('%.2f', (permalink_click_count.to_f/impression_count.to_f*100))}%)"
puts '埋込メディアクリック数:' + embedded_media_click_count.to_s.rjust(7) + "(#{sprintf('%.2f', (embedded_media_click_count.to_f/impression_count.to_f*100))}%)"
puts 'アプリオープン数   :' + app_open_count.to_s.rjust(7) + "(#{sprintf('%.2f', (app_open_count.to_f/impression_count.to_f*100))}%)"
puts 'アプリインストール数 :' + app_install_attempt_count.to_s.rjust(7) + "(#{sprintf('%.2f', (app_install_attempt_count.to_f/impression_count.to_f*100))}%)"
puts 'フォローした数    :' + follow_count.to_s.rjust(7) + "(#{sprintf('%.2f', (follow_count.to_f/impression_count.to_f*100))}%)"
puts 'メールツイート数   :' + email_tweet_count.to_s.rjust(7) + "(#{sprintf('%.2f', (email_tweet_count.to_f/impression_count.to_f*100))}%)"
puts 'ダイアル数      :' + dial_phone_count.to_s.rjust(7) + "(#{sprintf('%.2f', (dial_phone_count.to_f/impression_count.to_f*100))}%)"

Twitterエンゲージメント率内訳分析コードの使い方

このコードの使い方は以下です。

[wpdm_file id=3]

  1. ↑からコードのダウンロード
  2. TwitterアナリティクスからCSVファイルをダウンロードして同じフォルダに入れる
  3. Rubyのインストール(Windowsの場合のみ)
  4. コードの実行

手順はこれだけです。とは言ってもWindows環境の場合、Rubyのインストールがちょっと面倒ですけど。Macの場合は、デフォルトでRubyが入っていてパスが通っているので手軽に使えるかと思います。(※Mac環境は持っていないので試してはいません。Ruby1.9.3、2.1.2では使用できましたけど、Macデフォルトの1.8.7で使えるかは未確認。)

分析コードのダウンロード

[wpdm_file id=3]

ダウンロードから、ファイルをダウンロードして解凍してください。

TwitterアナリティクスからCSVファイルをダウンロード

Twitterアナリティクスにログインして、「データをエクスポート」ボタンを押して「tweet_activity_metrics.csv」ファイルをダウンロードしてください。

データをエクスポート

この、「tweet_activity_metrics.csv」ファイルの名前をそのままで、先程解凍したフォルダにコピーしてください。

こんな感じになります。

コードを実行する状態

デフォルトで入っている「tweet_activity_metrics.csv」ファイルは、デモ用のものです。

Rubyのインストール

Windowsの場合は、デフォルトで入っていないので、Rubyをインストールする必要があります。

ActiveScriptRuby and Other packagesから「Ruby-2.x.x-pxxx Microsoft Installer Package」みたいなのをダウンロードしてインストールします。

コードの実行

Macの場合だと、多分ターミナルに「twitter_analitics.rb」を呼び出すだけでOKなんだろうけれども、Windowsの場合ちょっと手間がかかります。

コマンドプロンプトの起動

まずは、コマンドプロンプトを起動します。

コマンドプロンプト

ディレクトリの移動

これに以下のように打ち込んでディレクトリを移動します。

cd C:\twitter_engage

「C:\twitter_engage」の部分は、解凍したフォルダのパスを入力してください。(※ドラッグ&ドロップでフォルダパスの入力可能)

ディレクトリの移動

Rubyコードの実行

で、Rubyの実行ファイルパスとスペースとRubyスクリプトのパスを以下のように入力します。(※これもファイルをドラッグ&ドロップでファイルパスの入力が可能)

"C:\Program Files (x86)\Ruby-2.1\bin\ruby.exe" C:\twitter_engage\twitter_analitics.rb

ruby.exeのパスとtwitter_analitics.rbのパスは、それぞれの環境に合わせてください。(本来は、Rubyにパスを通してやるべきなんでしょうけど、説明が長くなるので省略)

実行結果

あとは、エンターを押せば結果が表示されます。

分析結果

<pre></pre>タグで囲んでコピペすれば、おそらくブログでも表示崩れなく以下のように結果を掲載することができるかと思います。

全有効ツイート数   :     59
インプレッション数  :   9518
エンゲージメント数  :    326(3.43%)
リツイート数     :     11(0.12%)
返信数        :     11(0.12%)
お気に入り登録数   :     28(0.29%)
プロフィール表示数  :     27(0.28%)
URLクリック数   :    159(1.67%)
ハッシュタグクリック数:      0(0.00%)
詳細表示数      :     89(0.94%)
パーマリンククリック数:      0(0.00%)
埋込メディアクリック数:      0(0.00%)
アプリオープン数   :      0(0.00%)
アプリインストール数 :      0(0.00%)
フォローした数    :      0(0.00%)
メールツイート数   :      0(0.00%)
ダイアル数      :      0(0.00%)

僕のアカウント@MrYhiraの場合、「全体のエンゲージメント率」は3.4%、その中で「URLのクリック率」が1.67%、次いで「詳細表示率」が0.94%ユーザーによってアクションが起こされていると分かります。

まとめ

今回作成したコードは、Twitterアナリティクスアカウント全体のエンゲージメント率の内訳(それぞれのアクション率)だけを表示するものです。

個々のツイートの内訳を表示するには、Rubyコードをちょこっと編集する必要があります。

ただ、アカウント全体の分析結果だけでも、結果を見てみると結構楽しいです。「ああ、僕のアカウントって、こういった利用状況なんだ」みたいのが何となくわかります。

今回の方法は、Windowsで行うにはちょこっと面倒ですが、説明通りに行えば10分もかからずできると思います。ですので、ブログのネタに困ったときなどは、こういった公式では表示されないデータを肴に、1つ記事を書くというのもいいかもしれません。