15分で設定完了! Google Tag Managerで記事の「読了率」と「スクロール率」を取得しよう【小川卓のブログ分析入門 第2回】 - 週刊はてなブログ] を参考に、ブログ | Monotalk のブログ記事ページに、読了率、スクロール率を設定した。
現在、カスタムディメンション、イベント にはその他の情報も設定しており設定がカオスになっている。
設定内容を備忘録としてのまとめ、及び、雑なメモ。
カスタムディメンションについて
現状、以下のカスタムディメンションを設定している。
カスタムディメンション | インデックス | 範囲 | 取得元 |
---|---|---|---|
記事Id | 1 | ヒット | データレイヤ変数 |
記事Description | 2 | ヒット | データレイヤ変数 |
記事作成日 | 3 | ヒット | データレイヤ変数 |
記事投稿者 | 4 | ヒット | データレイヤ変数 |
記事更新日 | 5 | ヒット | データレイヤ変数 |
記事カテゴリ | 6 | ヒット | データレイヤ変数 |
句読点数 | 7 | ヒット | JSON-LD |
クライアントID | 8 | ユーザー | カスタムJavaScript |
ユーザーエージェント | 9 | ヒット | JavaScirpt変数 |
Timestamp | 10 | ヒット | カスタム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; }
-
記事の文字数
データレイヤ変数で設定してもよかったが、若干実装が手間だったので、JSON-LD で設定をした。一律 JSON-LD からの取得もできるので、データレイヤ変数は削除して JSON-LD での設定することを今後検討する。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; }
-
クライアントID
GTMでGoogleアナリティクスのClient IDを取得する一番確実で楽な方法(2018年版) - 清水誠メモ を参考に設定している。 -
ユーザーエージェント
window.navigator.userAgent
で設定している。 -
Timestamp
AMP GTM経由でのGoogle Analytics の設定方法 に記載したカスタム JavaScript で設定している。
送付イベントについて
現在、以下のイベント送付を行なっている。
-
CSPReport
django-csp-reports report-uri へのリクエストを、Google Analytics で記録する。 | Monotalk で作成したものを記載した。CSPReport を Mesurement Protocol で Google Analytics に送付している。
以前、Content Security Policy (CSP) の report を 10 日くらい集計して、ポリシーを見直す(の途中) | Monotalk で、MongoDB に記録していたが VPS サーバ上に置いていて、リソースを消費していたので、Google Analytics のイベント送付に切り替えた。 -
JS Error
JavaScript エラーの発生をトリガーに、エラー内容を Google Analytics のカスタムイベントとして送付している。
カスタムイベントとして送付する方法と、例外として送付する方法があり、#GTMTips: Track JavaScript Errors As Events | Simo Ahava’s blog のような、カスタムイベントでの送付方式を採用した。 -
PWA のホームスクリーンに追加
PWA の アプリのホーム画面への追加 バナーの OK Cancel の結果をカスタムイベントとして送付している。
PWA アプリのホーム画面への追加 の OK Cancel 結果を Google Analytics に送信する | Monotalk -
Link クリック
記事ページのリンククリックをカスタムイベントとして送付している。
実装は以下の記事の雰囲気で作成。
Googleタグマネージャ基礎:クリック計測する設定<完全版>
カスタム速度の送付
- FP FCP の送付
FP FCP を Google Analytics に カスタム速度として設定する | Monotalk でカスタム速度を送付するようにした。
考えたこと
-
Web解析の統計情報 と セイバーメトリクス
野球の打率
を、Google Analytics のページ直帰率
とすると、初月率
は、セイバーメトリクスのIsoP
のように思えた。
IsoP
等セイバーメトリクスの指標は以下が参考になった。 セイバーメトリクス一覧 : なんj~swallow tail~ -
Web 解析
Google Analytics で、直接参照が可能な データを 1次統計データとすると、2次統計データに該当する。
Web 解析における セイバーメトリクスの指標リストのようなものがあって、計算式と、R、Python、Excel 等での導出方法が体系化されてまとまっているとうれしい。 -
サイト特性で設定したい指標、ディメンション、イベントは異なる
当たり前だが、BtoC、BtoB、個人のブログで取得すべき指標、ディメンション、イベントは異なる。そのため、業務を通してしか身につかないスキルはある。
個人のブログの知見は、オウンドメディア運営、Howtoサイト運営等、生きる業界もあるように思う。
ツールの設定、スクリプトの実装に関しては、基本スキルなのでそこはどこでも変わらない。 -
記事の文字数と、記事の句読点数を設定する理由
記事の文字数は、アクセス数との相関関係を確認したかったので設定した。
記事の句読点数は、個人的に文書構成ツールをかけていない場合に多くなりがち。
記事文字数と句読点数の相関をみて、外れるものは品質が悪い気がするので、そこを確かめたかった。
今後
個人のブログのアクセス数を考えると、Google Analytics の制限はほぼ無制限と考えてよく、カスタムディメンションは 残り 8つ。カスタム速度、カスタムイベントの上限はない。
データを取得しておくと、データ分析の元ネタとしても使えるので、もう少し収集する情報を増やしたいと思っている。
コメント