くずきのblog

技術とか色々

RedashでTwitter APIを用いて、インフルエンサーの情報を可視化をする

どうも、くずきです。
今日は「Redash Advent Calendar 2017」12日目の記事として、RedashでTwitter APIを用いて、インフルエンサーインサイト情報を可視化をすることをしたいと思います。

qiita.com

インフルエンサーって何やねんって人はすごく簡単にですが以前書いた記事を参考にしてほしい。

kzkohashi.hatenablog.com

これをやるきっかけとしては、マーケティングデータを可視化する「Domo」というツールを使ってインフルエンサーのデータを可視化し、マーケティングツールとして使ってるという情報を聞いたので、、Redashだって!!!と思って書いてます。

[準備] Pythonデータソース機能を使えるようにする

まず事前準備として、Pythonデータソースを使えるようにしておく。
こちらも以前の記事で書いておいたのでそちらを見てほしい。

kzkohashi.hatenablog.com

ツイッターAPIを叩いてみる

まずは、今回使用するPythonのライブラリとして、requests_oauthlibjsonを追加しておこう。
(pip installはしといてください)

f:id:kzkohashi:20171211234524p:plain

次にここでは説明しないが、ツイッターAPIを叩くためのトークンを取得しておき、インフルエンサーであるid:kakaku22のデータを取得してみよう!

twitter.com

from requests_oauthlib import OAuth1Session
import json

CK = 'Consumer Key'                            
CS = 'ConsumerSecret' 
AT = 'Access Token'
AS = 'Access Token Secret'

url = "https://api.twitter.com/1.1/statuses/user_timeline.json"
params = {
    "screen_name": "kakakakakku",
    "exclude_replies": 1,
    "include_rts": 0
    }

twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)

timeline = json.loads(req.text)

for tweet in timeline:
    print(tweet['text'].encode('utf-8'))

f:id:kzkohashi:20171211234547p:plain

色々つぶやいてます。

表示したい情報を集計し、綺麗に表示する

本来は、こんな感じのデータを表示したい。

f:id:kzkohashi:20171211234610j:plain

あんまり見せてはいけない情報すぎて、逆にわかりづらいと思うけど、、
ツイッターだと「フォロワー数」、「平均いいね数」、「平均リツイート数」などが指標となる。
あとは単に集計するだけなので、説明は割愛する。

from requests_oauthlib import OAuth1Session
import json

CK = 'Consumer Key'                            
CS = 'ConsumerSecret' 
AT = 'Access Token'
AS = 'Access Token Secret'

url = "https://api.twitter.com/1.1/statuses/user_timeline.json"
params = {
    "screen_name": "kakakakakku",
    "exclude_replies": 1,
    "include_rts": 0,
    "count": 200
    }

twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)

timeline = json.loads(req.text)

sum_retweet_count = 0
sum_favorite_count = 0
avg_retweet = 0
avg_favorite_count = 0

for tweet in timeline:
    sum_favorite_count = tweet['favorite_count'] + sum_favorite_count
    sum_retweet_count = tweet['retweet_count'] + sum_retweet_count

userInfo = timeline[0]['user']
avg_favorite_count = sum_favorite_count * 1.0/len(timeline)
avg_retweet = sum_retweet_count * 1.0/len(timeline)

result = {}
add_result_row(result, {
    'name': userInfo['screen_name'],
    'follower_count': userInfo['followers_count'],
    'avg_favorite': avg_favorite_count,
    'avg_retweet': avg_retweet
    })
add_result_column(result, 'name', '', 'string')
add_result_column(result, 'follower_count', '', 'integer') # フォロワー数
add_result_column(result, 'avg_favorite', '', 'float') # 平均平均いいね数
add_result_column(result, 'avg_retweet', '', 'float') # 平均平均リツイート数

f:id:kzkohashi:20171211234817p:plain

色々な人のリストとまではいかなかったけど、一人分の情報を表示することができた。

感想

Redash + Twitter APIで簡易ではあるがインフルエンサーのデータの可視化ができた。
次の改善点としては複数人対応や、指定した人のデータを取得できるようにしたらインフルエンサーマーケティングツールとして使えるようになってきそうだ。データの保存とかもできたらいいなぁ。。もう使い方違う気がする。笑