Webコンテンツの成果を評価するたった1つの指標「One Metric」(自動処理編)
公開したWebコンテンツがどれぐらいうまくいっているのか、それをだれでもわかる単一の指標「One Metric」で測る方法を解説するこの記事は、前後編の2回に分けてお届けしている。後編となる今回は、前編で紹介した「One Metric」を計算するプロセスの自動化について見ていこう。→まず前編を読んでおく
プロセスを自動化する――「One Metric」を自分のコンテンツに合わせて使う(続き)
準備ができたら、始めよう。以下のリンクをクリックすると、「One Metric」を計算するためのベースとなるテンプレートが表示される(Googleスプレッドシートだ)。
このスプレッドシート自体は読み取り専用にしているので、まずコピーを作成して([ファイル]>[コピーを作成…])、編集できるようにする。そして、次の手順に従って、自分の条件に合わせてスプレッドシートを変更していく。
使う材料に合わせてシートに列の追加や削除をしよう。プラス評価数やコメント数などのオンページ指標がなければ、その列は削除してよい。Pinterestのリピンを材料に追加したければ、列を追加する。自分のための指標なのだから、自分にとって必要なものを組み合わせよう。
「過去のコンテンツ」を入れる。新たなコンテンツのパフォーマンスは、過去のコンテンツのパフォーマンスを基に計算するので、「過去のコンテンツ」を入力しておく必要がある。コンテンツのデータベースにアクセスできるなら(あるいはアクセスできる人を知っているなら)簡単だろう。
あるいは、スプレッドシートに新しいシートを作成し、GoogleスプレッドシートのIMPORTFEED関数を使ってRSSフィードからコンテンツを自動的に取得することもできる。
1行目を埋める。Googleスプレッドシートの多彩な機能を使って、ウェブのさまざまな場所から必要なデータを取得できる。その方法については後述する。ここが最も時間がかかる部分だが、頑張ってやり遂げよう!
- 1行目にデータをきちんとインポートできたら、フィルダウンする。残りの初期コンテンツにも適切なデータがインポートされていることを確かめよう。
期待値に対する比率を計算する。使う材料の数によってはものすごい式になるかもしれないが、それはスプレッドシートだと式を1行に詰め込むからだ。もう少し分かりやすくすると次のようになる。
ステップ2の「材料を組み合わせる」を思い出してほしい。ここでは、各指標を過去のパフォーマンスと比較して、適切な重み付けを行っている。
そして、僕たちが使っている指標の式をプレーンテキストで表記すると次のようになる(細部は人によって異なる)。
=((1/3)*(E48/(average(E2:E47))))+((1/3)*((F48/(average(F2:F47)))+(G48/(average(G2:G47))))/2)+(((1/3)*((H48/(average(H2:H47)))+(I48/(average(I2:I47)))+(J48/(average(J2:J47))))/3))
この式で2行目から47行目を扱っているのは、「期待値」を算出するのに46個のコンテンツを使ったからだ。
「One Metric」のスコアに換算する。これは簡単だ。「
y = 27*ln(x) +50
」という対数関数(前編で解説した)を使って、先ほど計算した期待値に対する割合をxに代入する。この方程式は必要に応じて調整しても構わない。これで準備万端! 新しくコンテンツを作ったら、このスプレッドシートに行を追加して、フィルダウンすればいい。
この指標の使い方についてひとこと注意しておこう。まずこれらの数字の実際の意味をよく理解し、そのうえで次のポイントに留意してほしい。
十分なベンチマークを準備すること。わずか3件の記事で期待値を算出しても、その期待値から計算したパフォーマンスはあまり意味がないものになる。One Metricスコアを計算するには、その前に少なくとも10~15件の記事で期待値を計算することをおすすめする。
平均というものをよく知って、それ以外の指標がすべて不要というわけではないことを理解する。すべての指標をならして1つにすることで、異常な値があったとしてもその影響を効果的に和らげられる。しかし、ピート・ウェイルズ氏がxkcdに載せている例を見てもわかるように、木を見て森を見ずはダメだが、一本一本の木が非常に重要なこともあるのだ。
One Metricも、他のあらゆる指標と同じだ。これを活かして行くには、あるコンテンツのスコアがなぜそうなったのかをしっかり認識して、組織の目標に向けた意識的な行動を確認していく必要がある。それこそが、アルゴリズムがマーケターに取って代われない理由だ。指標を現実の洞察へと転換するのは、あなたとあなたの頭脳だ。
それでは、さまざまなタイプのデータをスプレッドシートに取り込む方法を具体的に紹介しよう。
IFTTTを使って行を追加する
IFTTT(If This Then That)を使うと驚くほど簡単に、One Metricのスプレッドシートに新しい記事を自動で追加できる。ただし、記事のRSSフィードが提供されているのが条件だ(フィードについての詳細はFeedBurnerのヘルプを参照)。
IFTTTの無料アカウントをまだ持っていない人は登録しよう。それから、RSSフィードで新しい記事が送られてきたらGoogleスプレッドシートに行を追加するレシピを設定する。
レシピを作る際は、スプレッドに記録されるフィールドに「Entry URL」を含めておくこと。各記事の残りの指標を取得するのに必要になる。
また、IFTTTはデフォルト設定だと短縮URLを使うので、これを無効にする。短縮URLだと後で紹介するAPIに使えないからだ。短縮URLの設定はアカウントの「Preferences」の中にある。
Googleアナリティクスから指標を取得
Googleスプレッドシートを指標の記録に使う利点の1つは、Googleアナリティクスとの連携が容易なことだ。Googleスプレッドシートには、Googleアナリティクスのあらゆる指標を簡単な処理で取得できるアドオンがある。ただマイナスが1つだけある。設定を正しく完了しても、データの更新は手動で行う必要がある点だ。
まずアドオンをインストールする。このインストールは、Googleアナリティクスにアクセスできるアカウントにログインしている状態で行うこと。
次に、新しいレポートを作成する。[アドオン]>[Google Analytics]で選択できる。
使いたい指標があるアカウント情報を選び、記録したい指標(Metrics)を選択する。ディメンション(Dimensions)フィールドには「Page」と入力して、得られるレポートをURLで参照できるようにする。
レポートの構成はあとから変更できる。アドオンの使い方をもっと知りたい人にはGoogleのドキュメント(英語)がある。
これによって、スプレッドシートには、「Report Configuration(レポート構成)」というシートと、レポート作成時に選んだ各指標のシートの2つ(以上の)シートが新た作成される。
レポート構成のシートでは、日付の範囲を適切に設定しよう(終了日は、かなり先の日付にしておくと、後で変更しなおさずに済む)。また、サイト上の評価したいセクションにフィルタを設定しておくと、Googleアナリティクスからデータを取得する処理を少し迅速化できる。また、「結果の最大数」(Max Results)がデフォルトでは1000になっているので、ページ数がこれを超える場合は忘れずに変更する(最大値は10,000)。
準備が完了したら、実行だ! [アドオン]>[Google Analytics]>[Run Reports]で実行する。スプレッドシートの情報を更新するには、「Run Reports」をクリックする。そのたびに値が最新のものになる。
もう1つやることがある。ここまでだとデータがOne Metricのシート上には反映されないので、VLOOKUP関数を使ってこれを取り込む必要がある。要するに「One MetricシートのC列にURLがあるよね? これをあのGoogleアナリティクスのレポートシートから見つけて、その隣にある数字を教えてくれ」と命令するわけだ。
VLOOKUP関数は、使ったことがなければ、ぜひ試してみてほしい。入門書(再入門書)があれば、あとはSearch Engine Watchによる素晴らしい説明がある。
注意点がもう1つある(原文コメント欄でrorynatkielが指摘してくれた)。Googleアナリティクスのレポートは、URLに「http://」が含まれてない。取得する際にはCONCAT関数を使ってこれを追加する必要があるだろう。
スクリプトを使ってソーシャルの指標を取り込む
これは少しトリッキーだ。Googleスプレッドシートにはソーシャルの指標を取り込む機能がなく、Googleアナリティクスにもその情報はない。どうするか。スプレッドシートの関数を自分で作るのだ。
いや落ち着いて。思っているほど難しくはないから(^_^)
ここではFacebook、Twitter、Google+の場合を紹介するが、ほかのSNSを測定したい場合も同じような方法でできるはずだ。
まず[ツール]メニューの[スクリプトエディタ...]を開く。
このエディタを使ったことがあれば、過去に作成したスクリプトの一覧が表示されるので、「新しいプロジェクトを作成」をクリックする。Google Apps Scriptsを使うのが初めての場合には、空のプロジェクトが表示されるだろう(スタート用のポップアップウインドウはそのまま閉じてかまわない)。
Google Apps Scriptsでは、作ったスクリプトを「プロジェクト」に整理し、各プロジェクトには複数のスクリプトを入れられる。今回、プロジェクトは1つでよい。プロジェクト名は「Social Metrics Scripts」にしよう。このプロジェクトに、「One Metric」の材料にしたい各SNS用のスクリプトを作成する。
SNSごとに空のスクリプトを用意して、以下のコードを1つずつ、スクリプトエディタの大きなボックスにコピペしていく。(もともとある「myFunction」のコードを以下のコードに置き換える)
function fbshares(url) { var jsondata = UrlFetchApp.fetch("http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls="+url); var object = Utilities.jsonParse(jsondata.getContentText()); return object[0].total_count; Utilities.sleep(1000) }
function tweets(url) { var jsondata = UrlFetchApp.fetch("http://urls.api.twitter.com/1/urls/count.json?url="+url); var object = Utilities.jsonParse(jsondata.getContentText()); Utilities.sleep(1000) return object.count; }
function plusones(url) { var options = { "method" : "post", "contentType" : "application/json", "payload" : '{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"'+url+'","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}' }; var response = UrlFetchApp.fetch("https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ", options); var results = JSON.parse(response.getContentText()); if (results.result != undefined) return results.result.metadata.globalCounts.count; return "Error"; }
3つのスクリプトを必ず保存する。Googleの多くのアプリと違って、自動保存はされない。保存したら、Googleスプレッドシートに以下の関数ができている。
- FBSHARES(url)
- TWEETS(url)
- PLUSONES(url)
各関数の(url)は、分析する記事のURLを指定する部分だ。これはIFTTTで自動的に取得することになる。ソーシャルの指標についてはこれで完了!
オンページ指標を取り込む
ほかに、サイトに設置されている指標を使いたい場合があるだろう。たとえばMozなら、各記事に「プラス評価/マイナス評価」ボタンがあり、また、コメント欄で素晴らしい議論が繰り広げられるので、この2つを成功の指標として採用したい。こうした指標は通常、これから紹介する2つの方法のどちらかで取得できる。
ただ、その前に注意点がある。紹介する2つの方法はどちらもページをスクレイピングして情報を取得する。自分が所有しているサイトならもちろん問題ないのだが、スクレイピングを利用規約違反としているサービス(Googleの各サービスやTwitterなど)がたくさんある。使い方に気をつけてほしい。
IMPORTXML関数
GoogleスプレッドシートのIMPORTXML関数は、正確な設定は少し難しいが非常に便利な関数だ。XPathを使ってページから情報をスクレイピングできるのだ。コンテンツのURLのページに表示されている指標は、この関数を使うことでスプレッドシートに取り込むことができる。
関数の書式は次の通り。
あなたがXPathとは何かを知らなくても心配はいらない。google Chromeに組み込まれているツールを使えば、どんな要素のXPathもすぐに見つけることができるからだ。
あなたのページをChromeで表示した状態で、取り込みたいデータが表示されている部分を右クリックして「要素の検証」を選択する。
すると、ウインドウの下部に開発者ツールのコンソールが開き、クリックした場所に対応するコードの行がハイライトされる。その行を右クリックして、「Copy XPath」を選択する。
XPathがクリップボードにコピーされるので、これをGoogleスプレッドシートの関数にペーストする。
XPath(とても便利だ)の詳しいチュートリアルが欲しければ、Distilledの人たちが、まさにこうした用途のためのとても素敵なガイドをまとめている。これは一読の価値ありだ。
さらに詳しく知りたい人には、BuiltVisibleのリチャード・バクスター氏が1年ほど前に作成したIMPORTXML関数の素晴らしいガイドをおすすめする。
INDEX関数とIMPORTHTML関数を組み合わせる
材料がページ上の表やリスト(番号の有無を問わず)にある場合は、この方法もよいかもしれない。
IMPORTHTML関数は、与えられたURLにあるテーブルやリストのデータを取得するものだ。
そしてINDEX関数は、そのテーブル内の指定されたセルの値を取り出すものだ。
2つの関数を組み合わせると、次のようになる。
INDEX関数がないIMPORTHTML関数だけだと、与えられたコンテンツ全体が取得される。たとえばページ上に15行のテーブルがあるとしよう。IMPORTHTML関数でインポートすると、15行すべてがスプレッドシートに取得される。INDEX関数を使って、そのテーブル内の1つのセルに絞り込むのだ。
さらに次のレベルへ
現在、このOne Metricを改良するアイデアに取り組んでいる。いくつか紹介しよう。
材料の異常値を自動的に確認してフラグを立てる
材料をこうやってまとめてしまうことにはデメリットが1つある。個々の指標がもたらす知見を見逃してしまう点だ。
たとえば、ある記事がFacebookですばらしいパフォーマンスを残したが、One Metricのスコアはあまり目立たないものに終わるということがあるかもしれない。そんな場合も、Facebookでのパフォーマンスが良かったことは知っておきたい。
One Metricをバージョンアップするときには、過去のパフォーマンスの平均だけでなく、標準偏差もスプレッドシートで自動計算することを計画している。
そして、平均との差が標準偏差の±2倍を超える材料は、さらに検討が必要な異常値として指定するのだ。
材料のカテゴリを取り出して監視する
前出の図で、全体の平均を計算するために材料をカテゴリに分けたが、これらの各カテゴリの数値を指標の1つとして監視するのも有効かもしれない。その場合、スプレッドシートは次のようになるだろう。
時々の目標にあわせてカテゴリの重み付けを調整する
One Metricスコアの計算ではここまで、3つのカテゴリに均等な重み付けを行ってきた。しかし、組織やその目標の変化にあわせて、カテゴリごとの重み付けを調整するほうがいいだろう。
たとえば、ブランド認知の向上を目指しているなら、ソーシャルの指標の比重を大きくすることが考えられる。顧客維持率の重要性が高まったのなら、既存コミュニティのオンページ指標の比重を高めるというのもいいだろう。
こうして重み付けを調整すれば、One Metricは、組織がその時点で目指している目標に対するコンテンツのパフォーマンスをより反映したものになるだろう。
ソーシャルもやってます!