閲覧数が多かったコンテンツをGoogle analytics APIで取得してSlack通知する

コンテンツサイトを運営していると毎朝Google analyticsで昨日公開したコンテンツの反応だったり過去公開したものが盛り上がっていたりしないかをコマメに見る様になるのですが、それを簡単に運営に携わっている全員に共有できないものかな。と思っていたのでevacで一日前の各コンテンツのPV数をGoogle analytics API経由で取得してtakosan経由でSlack通知させる様にしてみました。*1

恥ずかしながらサンプルとして当ブログに一日分の閲覧数トップ5を取得してみます。(このエントリを書いているときに実行したので1日前の元旦終日のPVに相当)

{
  "in": {
    "googleanalytics": {
      "timeago": {
        "period": "days",
        "ago": 1
      },
      "metrics": "ga:pageviews",
      "dimensions": "ga:pagePath",
      "sort": "-ga:pageviews",
      "clientId": "xxxxxxx-yyyyyyyy.apps.googleusercontent.com",
      "serviceEmail": "xxxxxxx-yyyyyyyy@developer.gserviceaccount.com",
      "key": "/Users/hideack/ga.pem",
      "ids": "ga:xxxxxx",
      "format":"URL: hideack.hatenablog.com{0} = {1}PV",
      "limit": 5,
      "results": "rows"
    }
  },
  "out": {
    "ikachan": {
      "url": "http://〜",
      "join": false,
      "channel": "#evac",
      "message": "__word__"
    }
  }
}

で、上のレシピをevacで実行すると以下の様に前日にアクセスが多かったページのURLがtakosan通知されます。

毎朝決まった時間に実行すれば、注目された記事をGoogle analytics開かずとも知ることができて便利。

ちなみにレシピ中のclientIdとかserviceEmail、keyはGoogle developer consoleから取得します。やり方はこちらに書いてます。もう少し楽に扱えるとよいけどな。

*1:ちなみにtakosan使っているのは一つのエントリポイントで複数のチャンネルに通知ができて便利という理由。incoming webhookを設定しておけばoutputにSlackを直接指定することももちろんできます。(参照)