サイト(abc-analytics.com)のアクセス分析

前の記事(サイト(wiki.slash-readre.com)へのアクセス分析)に続き、このサイトの今年のアクセス分析。

ソシアルメディア計測

右の図は、ページと流入メディアで、セッション数と滞在時間をクロスしたもの。ソシアルメディアはtwitter。計測方法は、GAに対応したblog投稿通知(bitlyでtwitterに流す)の記事で書いた方法。

権威のある人から言及されるとアクセスがある。

bitly info google analytics cross section page-traffic

上の左図は、bit.lyでの数字。これが、そのままGoogle Analytics側では、右図のように、social mediaとして計測されている。

下の図は、閲覧開始ページでフィルタリングしたもの(アドバンスフィルタを使ってセカンドディメンジョンでのフィルタリング。アドバンスフィルタについては、アドバンスフィルター機能が追加 | Google Analytics, アクセス解析

social media tracking google analytics

12月11日以降のクリックが31で、上のbitlyを見ると、それ以降のアクセスがないので、残りの14は、directの形で戻ってきてくれたvisitということになる。

これは、ピボットにして、Returing Visitorを出せば、確認できる。

pivot google analytics new-returning users

本当は、ユーザ属性をカスタム変数に振る方がいいのかもしれないけど、やらなくても、あるキャンペーンのその後を追う形にはなる。工数がかかるけど。

サイト内検索

google analytics site search google analytics site search with me

上の左図は、今年のサイト検索のデータ。サブディメンジョンで、流入キーワードを出して、その後にサイト内検索をした時のキーワードを表示。さずがに、二単語での検索はないよう。僕は、記事を書く時に、この検索機能をよく使うので便利だと思うけど、外部の人にはありがたみが少ないのかもしれない。チームでコンテンツなどを書いていったり、個人でも記事が溜まってきたりすると利便性が上がりそう。右図は、僕のサイト内検索。サイト内検索時には、ユーザ属性を振っておくべきかもしれない。

サイト内検索もいろいろ記事を書いた。いろいろ間違いはある記事なんだけど、まあ、計測自体はできていると言うことで、、

Googleカスタム検索(Web Element)でGAを使う(設定編)

Googleカスタム検索(Web Element)でGAを使う(運用・改善編)

wordpressにCSE。iframe編

Under Creative Commons License: Attribution

三番目のリンクは、tyntを使った場合のリンクになる。tyntの使い方: Tyntを導入した

上手くいかなかった計測

Google Analyticsでは、CustomVariableの導入で、計測の幅が広がったので、いろいろとデータを取ってみたりした。ページレベルのスコープで、マウスの位置の時間変化を残したりしたけど、あまり上手い数値はとれなかった。あとはユーザスコープで、ブラウザのサイズをとってみたけど、クロスブラウザ対策を怠って良いデータが取れなかった。

最後におおまかな今年のデータ。データに出すと、firefoxでurlをデコードしてたのが無くなるのが痛い(デコードの仕方: GA reportのURI表示の文字化けを直す)

http://docs.google.com/fileview?id=0B6kZxQAjlXMGYmMzMDEzZjUtYTI0My00M2EwLWI2NmMtZTEzYzA2NzIxYmNl&hl=en

image

サイト(wiki.slash-readre.com)へのアクセス分析

Google Analtyics Motion Chart Keywords-coversion

上図は、12月のキーワード別のモーションチャート。詳細は下の方。

アクセス解析のblogを書いてきたんだけど、ツールの使い方や技術的な説明に留まって、実際の解析はほとんど出来なかった。年末なので、アクセス状況を見ていこうと思う。データは、今年8月から始めた wiki.slash-reader.com(Google sitesを使ったもの)。

wiki.slash-reader.com

wiki.slash-reader.comのアクセス数値

http://wiki.slash-reader.com のアクセス数値。Google SitesでのGoogle AnaltyicsではAPIが使えないので、crudeな数字。僕のセッションはfilter-outしてある。グラフはセッション数と滞在時間。

ピークでも一日34sessions,14分の滞在時間(直帰を除くと30分くらい)。その場合には、20前後のページビューになっていた。

サイトでは、最初はコンテンツをページ毎に作っていたが、途中でblog形式でRSSで出力できる機能がついたので、そちらに書くようになった。たぶん、クリックさせやすい構造になったのかもしれない。と思ってグラフを見たけど違った。関係なさそう。

次に外部からどう見えてるかを示すトラフィック分析

google analyticsでは、参照元の表示が特殊な事に注意する。

Google Analtyics Traffic Source

ここで、セッション数は、このキーワードで来た回数ではない。

誤解を生む説明だけど、

大まかには、このキーワードで来た人が行ったセッション数である。ただし、違うキーワードや外部リンクを経由するとその人は入れ替わる。また、セッション中に検索サイトなどから来た場合はキーワードには追加されるけど、セッションはインクリメントされない。

参考リンク:アクセス解析ツールのいけてない集計仕様ベスト3、第1位,

Google Analyticsでセッション数「0」のキーワードの意味は?

じゃあ、実際の検索による流入ボリュームは?という話だけど、上手く出す方法が見あたらない。

下図のように、新規と既存のユーザをわけておくとと、ある程度の傾向は出る。既存との差分は、検索ではなく、bookmarkなど経由と考える。もちろん、既存でのキーワードの入れ替わりはある。(*) cookie内のutmzでは、新規キャンペーンの数値を測っているし、Ecommerseではキャンペーン開始からの日数を出しているので、レポート側の処理の問題なんだけど、、

image

customVarなどで、キャンペーン(utmz)の入れ替わりを計測しておけば、もっとしっかりした数字はだせそうだ。

キーワード別のサイト内行動パフォーマンスのSWOT分析

SWを滞在時間、OTをセッション数でみていく。データが少ないのが難点。

Google Analyitcs Motion Chart keyword SWOT

12月のキーワード分析。アンサー度として滞在時間をX軸。機会の多さとしてvisit数をY軸。Motinチャートは英語設定にしないと出ない。また、時間経過を入れないといけないので、時間単位を月別にしてる。また、円の大きさはvisitにしたので、Y軸と同じものを見せている。

アクションとしては、右下は広告などを考える。左上は、コンテンツ充実を図るとなる。やらないけど、、、

Google Sitesは、簡単にサイトが作れて、検索エンジンへのindexの登録、analyticsの導入、adsenseの導入、内部検索の導入、paypalのボタン貼り付け、などが簡単にできる。実に恐ろしいサービス。ただ、adwordsのコンバージョントラッキングは、gadgetを作る必要があるかもしれない。

次は、このサイトのアクセス解析。

profileの追加時の行う作業

Google Analyticsで、他の人とデータを共有しながら、それでも自分で作業をする場合の設定をしてみたので、記録。

Googleのアカウントを持つメールアドレスを招待してもらう。

  1. loginして、自分専用のprofileを作る(できれば、複数)
  2. filterとgoalのcopy

の3点が必要なプロセス。

1. 自分が持つGoogleアカウントに招待をもらう。

Google Analyticsを使うためには、Googleのアカウントもしくは、Google Apps(premier, education)のアカウントが必要。Appsの方は、試した事がない。(僕の持つstarndard editionではGoogle Analyticsは使えない)

2. 自分専用のprofileを作る

管理者用の権限で招待してもらう。そして、既存の自分用のprofileを作る。

profileを作り方には、二種類ある。A)新しいドメインへのもの、B)既存のドメインのもの。

A)新規のドメインへのprofileの場合、ウェブプロパティIDが新設される(UA-XXXXX-N)とNが数字が付与されたものとなる。

B)既存のドメインへのprofileは、既存のウェブプロパティIDを使う。

今回は、他の人とのデータの共有なので、既存のドメインの上にprofileを新設する。

下図は、上の赤丸が新規ドメインへの追加、下の赤丸が既存ドメインへの追加

Google Analytics プロファイルの追加

profileは、過去のデータを持ってこれるわけでなく、設定した時点からのデータになるので、今後のテスト的な使用も考えて、複数作っておいてデータを貯めて置くのが、いいと思ってる。(*そう思ってるだけなんだけど、どうなんだろう?)

3. フィルター、ゴール、アドバンスセグメント、カスタムレポートのコピー

  • フィルター。 とりあえず、既存のipアドレス除外filterなどを適用する。これは、機能として提供されてので、問題なし。
    image
  • ゴール。 機能としてはないので、手作業になる。これを軽減するためのものとして、Firefoxの拡張機能があるので、それを使う。
    http://www.lunametrics.com/blog/2008/01/21/copying-goals-in-google-analytics-a-firefox-extension/
    Google Analytics ゴールの共有
  • アドバンスセグメント、カスタムレポートに関しても、最近profile間のコピーが可能になったので、それを使う。
    アドバンスセグメントの共有方法

これで、profileのコピーができたので、それを元に自分のアイデアに基づいて、マイレポート(レポートの最初の画面)を変えたり、ゴールを独自に設定してみたり、アドバンスセグメントなどを追加していけば、いいと思う。

そしてアカウントを招待してもらった人と、こういう風にしてみたけど、どうかとアイデアを交換する。

というか、そういう設定を今日したので、その記録でした。

他の方で、こういう感じで運用していますという話があったら、教えてもらえると嬉しいです。

目標は、会話のあるアクセス解析。 その為の第一歩。

アクセス解析ツール選定セミナーに行ってきた

翔泳社とアクセス解析イニシアティブで主催された表題のセミナーを聞いてきた。

解析ツールベンダー5社と、ユーザ側の人の話だった。対象は企業の人向け。

僕が使っているツールは、Google Analyticsとtynt(導入記事)。また、企業の人でない(求職中)ので、他の参加者の人達と立場が違うので、見え方も違うだろうけど、感想を。

ベンダーさんが、打ち出してたポイントをごちゃまぜ(重複、単独も込み)に書き出してみると、

レポート・分析機能では、

  • 日付対応のメモ機能(アクセス解析で有名な石井氏が力説してる日記を書くという奴に対応するものかな)
  • キーワードに検索順位、検索数のデータを絡ませる、リスティング広告のキーワードとのヒモ付け
  • ホスト名を実際の組織名にして表示。
  • キーワードのswot分析
  • サードパーティクッキーの利用
  • 個別ユーザでの管理による、柔軟な追跡分析
  • 携帯・PCの一体管理
  • ヒートマップ
  • ベンダーが持つユーザ属性データを掛け合わせる?

サポートでは、

  • ベンダーが制作会社である事
  • 勉強会
  • 個別レポート作成サービス
  • in-houseの運用に入り込む?サービス
  • 権威団体との連携

理解できた範囲では、こんな感じだった。

魅力を感じたのは、コンバージョンのようなデータを、自分で設定しなくても、データから取り出せる機能だった(この文章には誤解があるかも、僕の理解ではこういう事だと思った)

あとは、どのベンダーのも、情報を如何にわかりやすく提示するかに注力していた。成果・目標・対策などは上手い言葉の使い方だとおもったし、ヒートマップなんかもインパクトを感じた。

あと、外のユーザ属性とアクセス解析データを合わせるのにも、魅力を感じた。Google Analtyicsだと絶対ムリそう。プライバシー問題に配慮すれば、いけない場所もある。

ベンダーさんのプレゼンの後は、

実際にアクセス解析を使いこなしてる人の話だった。

実際のレポート画面が見れたのはよかった。参考になった。

媒体、キーワード、ページなどの他にも、項目を必要に応じてセグメント化して、クロス表で出す。

最後のリクルートの人の発表などは、財務分析の世界を想像した。お金をかけてるなあ、という印象。

「データ」「グラフ」「サマリー」という言葉の並びも覚えやすくて、得した気分。

GA: Custom Variableを使う(応用編)

2010/01/24 追記
この記事の方法は、レポートでも上手く活用できてません。
また、nameとvalueに値を積んでいくのは、keyとvalueで、64byteまでという制限にも引っかかり易いので、よくない方法だと分かりました。
そういう事を了承して、以下を読んで下さい。

タイトルに応用編が付くのは、getXKeyなど、内部的なapi?を使ってるからです。ある日、突然動かなくなる可能性もあるので、毎日checkが必要です。

さて、先週末までにCustom Variableが全てのGoogle Analytcsユーザに導入されたようです。

Custom Variableを使えば、アクセス解析運用の柔軟性が増します。

と言うことで、試してみました。

CustomVariableでの値の設定の仕方は?

pageTracker._setCustomVar(slot, key, value, scope)という形です。

slotは、1-5までの数字を割り当てます。(レポート側で、この番号がアドバンスセグメントの項目に出てきます。)

key, valueは、好きな文字列を。(keyは、nameという名称の時もあります。同じです)

scopeは、設定した値がどれだけ生き延びるかです(デフォルト設定は3のpage-level)

  • 1だと、user-levelで、cookieに値が書き込まれ、ユーザー単位で管理が可能です。
  • 2だと、session-levelで、そのセッションをラベル付けします。(セッション内で、複数回、値を設定していくと、上書きされます)
  • 3だと、page-levelです。ページ単位でラベル付け。使いどころ?Googleのお話では、特定条件でページをカテゴライズすると。

繰り返しますが、slotは5つまで使えます。(上書きはできます)

今回は、ユーザレベルに的を絞ります。

ここでは、トラフィックについての値を割り当ててみます。

  • トラフィックでの分類をしながら
  • keyに流入元を、valueに日付をいれます。

具体的には、

keyには、drssrs…という感じで、d:direct, r:referrer, s:検索エンジンと場合分けして、文字列を足します(セッション開始時に)。

valueには、-20091001-20091102-20091127という感じで日付を足していきます。

そして、単純にsetCustomVarだと、値が毎回上書きされてしまうので、追記する形をとります。(応用編にした理由です)

公式APIと言っていいのか不明なメソッドですが、以下のようメソッドを追加してやって、

 pageTracker._mySetOrPushCv = function(slot, key, value, scope){
       this._initData();
       var strName = this._getXKey("8", slot) || "";
       var strValue = this._getXKey("9", slot) || "";
       this._setCustomVar(slot, strName+"-"+key, strValue+"-"+value, scope);
 };

pageTracker._mySetOrPushCV(2, source, “20091207”, 1)

pageTracker._trackPageview();

とします。

トラフィックの場合分けですが、ga.jsの内部の判定を利用できればいいのですが、難しそうなので、手元で簡易に判定します。

c = document.cookie;
if(!(/_utmb/).test(c) || !(/_utmc/).test(c)){
      var trfc = !document.referrer ? "d" :
      (/https?://.*.(google|yahoo).(com|co.jp)/).test(document.referrer) ? "s" : "r";
      pageTracker._mySetOrPushCv(2, trfc, d, 1);
}

utmcとutmbで新規セッションの判別をして、document.referrerで、直接、リンク、検索エンジンに場合分けします。

最後にまとめて、コードを載せます。

これで、コード側の設定を終わりです。レポート側の話に移ります。

回数でセグメント

アドバンスセグメントで、

image

変な値(%…)が入ってますが、昔の失敗した値です。無視して下さい(消すコードは下の全コードに入れます。)。

また、Keyの値を見せるために完全一致にしてますが、正規表現で{-.}{3,}という感じで3回以上の訪問などと設定します。

image

リピータは、来訪3回以上もあるので、だぶりになるのに注意。後、api側の設定の不備の可能性もあるので、鵜呑みにはできないです。

日付でセグメント

ここまでは、回数でみたわけですが、customVariableのvalueの方での設定には日付をいれたので、

image

例えば、-2009120[1-3]などで正規表現で引っ張れば、

image

12月1ー3日に訪問したユーザのセッションが見られる。4日移行はセッションが一回しかないですが、このサイトへの継続的な訪問者がいないという事ですね。

ここまでで、訪問回数と訪問日でセグメントしたのですが、一応、流入別にkeyの値を入れて、日付をいれているので、流入元+日付でのセグメントも可能なはずです。データが貯まれば、してみたいです。

まとめ

customVariableを使って流入元を追記しました。それをレポート側のアドバンスセグメントで振り分けの設定をして、レポートをみました。keyに流入元、値には日付をいれました。これで、日付を元にしたセグメントが可能になりました。また、今回は流入元だけにしましたが、goalなどを設定して、conversionした場合にkeyをゴール名などで設定して、値を日付にしてもいいと思います。

以下、設定のコピペです。(property-idは変えてます)

 var GA_me = function(){
    var pageTracker = _gat._getTracker("UA-XXXXXX-xx");
    //if(/a/[-1]=='a')console.log(pageTracker);
    var c = document.cookie;
    var d = (function(){
      var date = new Date();
      var y = date.getFullYear().toString();
      var m = (1+date.getMonth());
      m = m < 10 ? "0"+m.toString() : m.toString();
      var day = date.getDate();
      day = day < 10 ? "0"+day.toString() : day.toString();
      return y + m + day;
      })();
    pageTracker._mySetOrPushCv = function(slot, key, value, scope){
      this._initData();
      var strName = this._getXKey("8", slot) || "";
      var strValue = this._getXKey("9", slot) || "";
      strName.replace(/%2d*B/, "-");
      strValue.replace(/%2d*B/, "-");
      this._setCustomVar(slot, strName+"-"+key, strValue+"-"+value, scope);
    };
    if(!(/_utmb/).test(c) || !(/_utmc/).test(c)){
      var trfc = !document.referrer ? "d" :
               (/https?://.*.(google|yahoo).(com|co.jp)/).test(document.referrer) ? "s" : "r";
      pageTracker._mySetOrPushCv(2, trfc, d, 1);
    }
    //the page pathname of the goal you set
    if((/^/profile$/).test(document.location.pathname)){
      pageTracker._mySetOrPushCv(1, "g_"+"profile", d, 1);
    }
    pageTracker._trackPageview();
  }
  var _gaq = _gaq || [];
  _gaq.push(GA_me);
  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics
.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
    })();

Asynchronous Trackingが導入された

2009/12/06 書き直した。2010/06/05 非同期読み込みの話について訂正した。

昨日発表されたGoogle Analyticsのtracking codeの読み込みを非同期にして、読み込み終了時に、指定した関数を実行させる方式。についてです。

経緯と背景(たぶん)

Google Analyticsはjavascriptを読み込んで、cookieをいじって、googleのサーバーにリクエストを飛ばす仕組みです。

このjavascript(GATC)は、今まで、</body>の直前の置く事が推奨されていました。理由は、javascritpはブラウザのレンダリング(もしくはparsing??同じタイミングで両者とも実行??)を停めるからです。停めるものは、最後におきましょうという事でした。javascriptは読み込み時間を遅くする要因になります。たくさんのjavascriptを実行する時に問題になる部分です。

ところで、HTML5では、scritpタグの属性としてasyncというものが出来ました。これはブラウザの読み込みを停めずに読み込みを行う方法が策定されています。また、ほとんどのブラウザで実装されてきました。そこで、この新しい機能のasyncを利用した形が今回のasynchronous trackingだと思います。

違った。 ここが詳しい。Google Analytics 非同期トラッキングコード再考

ブラウザの実行をblockしないテクニックの一つとして、Script要素をDOMで作って挿入する方法で読み込みを非同期にしていると。勉強になりました。

具体的には、上のリンク先かここにコードの例がいくつも載っているので、コピペするのが良いと思います。

実現方法は?

あらかじめ、htmlファイルの<head>内でメソッド名と引数をwindowプロパティの_gaqに入れておく。読み込んだコード(ga.js)が非同期で読み込みが終了すると、実行に移る。その時に、そのga.js内のオブジェクトのコンテキストで、_gaqに設定したメソッド、引数を実行する。メソッド名.apply(オブジェクト, [引数]) という形。

実際のコード(ga.js)部分を抜き出すと、(* これは、2009/12ごろのcode version4.5.9。2010/06/05では version4.7.2)

var $ = {
    ca: {},
    _createAsyncTracker: function (f, i) {
      i = i || "";
      f = new Z.aa(f);
      return $.ca[i] = f
    },
    _getAsyncTracker: function (f) {
      f = f || "";
      var i = $.ca[f];
      if (!i) {
        i = new Z.aa;
        $.ca[f] = i
      }
      return i
    },
    push: function () {
      for (var f = arguments, i = 0, b = 0; b < f[z]; b++) try {
        if (typeof f[b] === "function") f[b]();
        else {
          var j = "",
            c = f[b][0],
            p = c.lastIndexOf(".");
          if (p > 0) {
            j = P(c, 0, p);
            c = P(c, p + 1)
          }
          var m = $._getAsyncTracker(j);
          m.apply(m, f[b].slice(1))
        }
      } catch(q) {
        i++
      }
      return i
    }
  };
  window["_gat"] = Z;
  var la = window["_gaq"];

  function na() {
    var f = window["_gaq"],
      i = w;
    if (f && typeof f.push == "function") {
      i = f.constructor == Array;
      if (!i) return
    }
    window["_gaq"] = $;
    i && $.push.apply($, f)
  }
  na();

*番号は僕が勝手に付けたものです。

番号40より後ろのna()部分を見る。<head>の部分で設定した window[“_gaq”]の部分をfに退避させて、上で設定した$のメソッドpushを実行する。番号17からのpushでは関数オブジェクトならそのまま実行する。そうでないものは、pageTrackerオブジェクトのメソッド、引数として実行するようになっている。普通の関数も実行してくれるので、自分専用のgoogle analytics関数の定義が終了していたら、ここで実行してもOK.

ga.jsが非同期でloadされ実行されると、naが実行され、今、説明したような動きで、_gaqに設定したメソッド、引数を実行するという事です。_gaqの設定は、ドキュメントにあるように、

var _gaq = _gaq || [];

_gaq.push([])

の部分です。

なんらかの?状態で、先にコードが読まれた場合にも、pushはArrayのコンテキストではなく、$のコンテキストで実行されるようになっています。なので、順番が狂っても動くと思う。

思うこと

これで、ビーコン型の持つ弱点の一つが減ったと思います。サイトに手を入れていくと、javascriptが氾濫するようになるけど、こういう形は読み込みを邪魔しない。是非とも、他のアクセス解析ツールでも採用して欲しい。

おまけ。

このasynchronousは、コード自体は、versionが4.5.8の時に導入されていた(今は4.5.9)。

昨日、4.6.5というのも見かけたけど、いなくなった。10月以来の変更に伴うばたばた感?が続いてる感じもする。

登録メールアドレスに、google analyticsチームからメールが配信されて、10月以来導入された新機能の紹介が入っていた。移行に伴うタスクをいろいろとこなしてる最中なのかな?

他の機能では、CustomVariableが、アドバンスセグメントの所でしか登場しないけど、ユーザ定義が廃止されるので、代わりに通常のレポート画面に現れてくる事を期待。

外部リンクの計測も、近い内に実現するような気がしてきた。コード内での大まかな実装は済んでいる。

GAに対応したblog投稿通知(bitlyでtwitterに流す)

wordpress環境で、投稿通知をbitly経由でtwitterに流す。

その時に、google analytics分析用にキャンペーンパラメータを付けようという話です。

今までの経緯と気づき

FriendFeedのサービスを使って、twitterに更新通知を流していたけど、Google Analyticsとの親和性がなかった。

ソシアルメディアの隆盛、会話経済(conversation economyはどういう訳語がいいのだろう?)への移行を考えると、何かしないといけないなあと思っていた。

それで、bit.lyとgoogle anlyticsで検索してたら、bit.ly自身がやってるblogの記事が見つかった。

Bit.ly + Google Analytics Campaign Builder Tool

この記事を僕の環境に当てはめた記録です。

現状の具体的な問題点

  1. twitterから流入がGoogleAnaltyicsでは単なる参照元になってしまう。
  2. twitterでretweetされた場合に、FriendFeedの短縮URLだと、記事の広がりが見えにくい。

対応策として、bitlyを使う

今までも、twitterへの投稿ボタンはbitlyを使う形にはなっていた。(昨日checkしたら、動いてなかったので、直した)

が、問題点の対応として、google analytics用にcampaign用urlパラメータを付加してから、bitlyに渡す事にした。

具体的な手順

単にurlにパラメータを付ければいい。通常は、Google AnalyticsのURL builderを使うけど、bitlyが用意したGoogle Spreadsheetがあるので、それを参考にするのもいい。(google spreadsheetからAPI(http request)が使えるは知ってたけど、使ってなかった。便利かも)

パラメータを僕の場合は、wordpressの該当するtemplate部分に、

<a href="#" onclick="l='<?php the_permalink() ?>?utm_source=twitter&utm_medium=social-media&utm_content=from-bitly-twitter-account&utm_campaign=my-blog';t='<?php the_title() ?>';my_add_twitter(l,t);return false;"><img title="twitterにつぶやく" style="vertical-align:bottom;" src="/wp-content/themes/carrington-blog/img/twitter.png"/></a>

として、実行javascriptファイルに、

function my_add_twitter(_url, _title) {
  var xfgd = your-id';
  var fdsr = 'your-api-key';
  var api = 'http://api.bit.ly/shorten' + '?version=2.0.1' + '&format=json' + '&callback=CallbackTwit' +
 '&login=' + xfgd + '&apiKey=' + fdsr + '&longUrl=';

  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = api + encodeURIComponent(_url) ;
  document.body.appendChild(script)
 //title, urlはCallbackでも使う
  CallbackTwit.url = _url;
  CallbackTwit.title = _title;
  return false;
}

function CallbackTwit(json) {
  var t = arguments.callee.title;
  var u = arguments.callee.url;
  var url = 'http://twitter.com/home/?status=' + encodeURIComponent( t+' '+json.results[u]['shortUrl']);
  document.location.href = url;
}

とすれば、該当ボタンをclickしたときに、Google Analytics用キャンペーンパラメータを付けてからbitlyで短縮したurlで、twitterに投稿通知できるし、tweetしてもらえる。

下が画像が、Google Analyticsのreport画面。

image

さみしい画面だ。

bitlyの利点

bitlyは、アクセス解析?のようなものに力を入れているみたい。アカウントを持つと、単にurlをshortenする他にも、そのurlがどれくらいclickされたかを示してくれる。

(Google Analtyicsの値とかけ離れる。主な原因はbotの来訪、人間のアクセスでもbrowser以外が多いのが原因?)

image

また、biltyで作られたurlのおしりに、”+”をつけると、そのurlに関しての情報を表示してくれるのも便利。

(“+”以外にも、bit.ly/info/?????の形でも表示してくれる)

まとめ

twitter投稿ボタンに、bitlyをかませる。GoogleAnalyticsのキャンペーンパラメータもかませる。

という事をやりました。

しかし、FriendFeedがだんだん元気がなくなってきたような、、、僕が見えてないだけなのかな?

開発資源もfacebookに入ってしまったのだろうか?