15分で設定完了! Google Tag Managerで記事の「読了率」と「スクロール率」を取得しよう【小川卓のブログ分析入門 第2回】 - 週刊はてなブログ] を参考に、ブログ | Monotalkブログ記事ページに、読了率、スクロール率を設定した。

現在、カスタムディメンション、イベント にはその他の情報も設定しており設定がカオスになっている。
設定内容を備忘録としてのまとめ、及び、雑なメモ。


カスタムディメンションについて

現状、以下のカスタムディメンションを設定している。

カスタムディメンションインデックス範囲取得元
記事Id1ヒットデータレイヤ変数
記事Description2ヒットデータレイヤ変数
記事作成日3ヒットデータレイヤ変数
記事投稿者4ヒットデータレイヤ変数
記事更新日5ヒットデータレイヤ変数
記事カテゴリ6ヒットデータレイヤ変数
句読点数7ヒットJSON-LD
クライアントID8ユーザーカスタムJavaScript
ユーザーエージェント9ヒットJavaScirpt変数
Timestamp10ヒットカスタムJavaScript
記事文字数11ヒットJSON-LD
  • データレイヤ変数 として取得している項目について
    過去、以下の記事を作成した。
    Django/Mezzanine Template内で Google Tag Manager のタグ設定、データレイヤー変数を設定する | Monotalk
    上記の記事に記載があるが、以下の通り Django Template 内に記載していて、これらをGTM で データレイヤ変数として取得している。

        window.dataLayer = window.dataLayer || [];
        dataLayer.push({
            'blogPostId': '{{ blog_post.id|escapejs }}',
            'blogPostUserName': '{{ blog_post.user.username|escapejs }}',
            'blogPostDescription': '{{ blog_post.description|escapejs }}',
            'blogPostCreated': '{{ blog_post.created|escapejs }}',
            'blogPostUpdated': '{{ blog_post.updated|escapejs }}',
            {% with blog_post.categories.all as categories %}
                'blogPostCategories': '{% for category in categories %}{{ category|escapejs }}{% if not forloop.last %};{% endif %}{% endfor %}'
            {% endwith %}
        });
    

  • JSON-LD から取得している項目について
    ブログ記事には、以下のような JSON-LD を設定している。

    <script type="application/ld+json">
    {  
       "@context":"http://schema.org",
       "@type":"BlogPosting",
       "headline":"Django/Mezzanine Template内で Google Tag Manager のタグ設定、データレイヤー変数を設定する",
       "author":{  
          "@type":"Person",
          "name":"kem"
       },
       "publisher":{  
          "@type":"Organization",
          "url":"https://www.monotalk.xyz",
          "name":"kem",
          "logo":{  
             "@type":"ImageObject",
             "url":"https://drive.google.com/uc?export=view&id=0By5O5w7iwOMOVE5pTEcyeE40WlE"
          }
       },
       "image":{  
          "@type":"ImageObject",
          "url":"https://drive.google.com/uc?export=view&id=0By5O5w7iwOMOMDdhaDhHdXBVTHc",
          "height":450,
          "width":800
       },
       "mainEntityOfPage":{  
          "@type":"WebPage",
          "@id":"https://www.monotalk.xyz/blog/djangomezzanine-template%E5%86%85%E3%81%A7-google-tag-manager-%E3%81%AE%E3%82%BF%E3%82%B0%E8%A8%AD%E5%AE%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/"
       },
       "genre":"Google Tag Manager django mezzanine",
       "wordcount":"8491",
       "numberOfPunctuation":"112",
       "datePublished":"2017-09-18 21:00:00+00:00",
       "dateCreated":"2017-09-18 06:47:38.425171+00:00",
       "dateModified":"2017-09-18 21:23:03.441865+00:00",
       "description":"先日 Mezzanine で構築したブログのコンテンツのメタデータ を Google Analytics にインポートしてみる(失敗) | Monotalk でデータインポート機能で、カスタムディメンションを送信しようとしたところ、原因不明でうまくいきませんでした。    \nこの代替方法として、ページビュー計測時に、\nDjango の Template 内で、Google Tag Manager のデータレイヤー変数を設定してみます。     \n設定したデータレイヤー変数は、カスタムディメンションとして、Google Analytics に送信します。"
    }
    </script>
    

  • JSON-LD から 記事の句読点数、記事の文字数の取得
    JSON-LDで定義されたメタデータをGTMから読み取る方法 | SEM Technology参考に、GTM でカスタムJavaScript を作成し、それぞれ該当する項目を取得するようにした。

  • 記事の句読点数
    function() {
      var numberOfPunctuation = [].slice.call(
          document.querySelectorAll('script[type="application/ld+json"]')
        ).map(function(script) {
          return JSON.parse(script.text);
        }).filter(function(json) {
          return json["@type"] == "BlogPosting";
        })[0].numberOfPunctuation;
      return numberOfPunctuation;
    }
    
  • 記事の文字数

    function() {
      var wordcount = [].slice.call(
          document.querySelectorAll('script[type="application/ld+json"]')
        ).map(function(script) {
          return JSON.parse(script.text);
        }).filter(function(json) {
          return json["@type"] == "BlogPosting";
        })[0].wordcount;
      return wordcount;
    }
    
    データレイヤ変数で設定してもよかったが、若干実装が手間だったので、JSON-LD で設定をした。一律 JSON-LD からの取得もできるので、データレイヤ変数は削除して JSON-LD での設定することを今後検討する。

  • クライアントID
    GTMでGoogleアナリティクスのClient IDを取得する一番確実で楽な方法(2018年版) - 清水誠メモ参考に設定している。

  • ユーザーエージェント
    window.navigator.userAgent設定している。

  • Timestamp
    AMP GTM経由でのGoogle Analytics の設定方法記載したカスタム JavaScript で設定している。


送付イベントについて

現在、以下のイベント送付を行なっている。


カスタム速度の送付


考えたこと

  • Web解析の統計情報 と セイバーメトリクス
    野球の 打率 を、Google Analytics の ページ直帰率すると、初月率 は、セイバーメトリクスの IsoP のように思えた。
    IsoP 等セイバーメトリクスの指標は以下が参考になった。 セイバーメトリクス一覧 : なんj~swallow tail~

  • Web 解析
    Google Analytics で、直接参照が可能な データを 1次統計データとすると、2次統計データに該当する。
    Web 解析における セイバーメトリクスの指標リストのようなものがあって、計算式と、R、Python、Excel 等での導出方法が体系化されてまとまっているとうれしい。

  • サイト特性で設定したい指標、ディメンション、イベントは異なる
    当たり前だが、BtoC、BtoB、個人のブログで取得すべき指標、ディメンション、イベントは異なる。そのため、業務を通してしか身につかないスキルはある。
    個人のブログの知見は、オウンドメディア運営、Howtoサイト運営等、生きる業界もあるように思う。
    ツールの設定、スクリプトの実装に関しては、基本スキルなのでそこはどこでも変わらない。

  • 記事の文字数と、記事の句読点数を設定する理由
    記事の文字数は、アクセス数との相関関係を確認したかったので設定した。
    記事の句読点数は、個人的に文書構成ツールをかけていない場合に多くなりがち。
    記事文字数と句読点数の相関をみて、外れるものは品質が悪い気がするので、そこを確かめたかった。


今後

個人のブログのアクセス数を考えると、Google Analytics の制限はほぼ無制限と考えてよく、カスタムディメンションは 残り 8つ。カスタム速度、カスタムイベントの上限はない。
データを取得しておくと、データ分析の元ネタとしても使えるので、もう少し収集する情報を増やしたいと思っている。

コメント