Categories
Webマーケティング アナリティクス

Bingの広告費やインプレッション数などをGoogle Analyticsにインポートする方法

Automating cost data import in Google Analytics with Google Apps Scriptで、こちらを参考に原型がわからないほどカスタマイズしています。

インポートまでの流れ

Bing AdsのデータをGoogle Analyticsにインポートするまでの簡単な流れになります。
  1. Bing Ads管理画面で日次レポートを作成し、Gmailに送る
  2. Gmail内でメールを検索
  3. 添付ファイルを解凍
  4. 解凍したデータのうち必要な箇所を抽出
  5. Google Analyticsにアップロード

Bingの広告データをGmailに送る

Bingの管理画面からレポート作成のページへ進みます。

Bingレポートの作成

次にレポートの詳細設定で下記のようにします。

Bingレポートの概要

  • Report name:任意(※Gmailで検索する際に必要なのでわかりやすく他と重複しない名前が良いです)
  • Report type: Keyword
  • Show: Day
  • Date range: Yesterday
  • Timezone: (GMT + 09:00)Osaka, Sapport, Tokyo
  • Format: CSV
  • What to report on: Specific accounts and campaignsを選択し、下の一覧から該当のクライアントを選択

Bingレポートのカラムを選択

レポートに含める項目(カラム)は下記を選びます。
  • Unit of Date
  • Account
  • Impressions
  • Clicks
  • Spend
  • AD ID
  • Keyword
  • Campaign
  • Destination URL
※念のため、この順番を変えないでください。

Bingレポートの送付設定

最後に、このレポートをGmailに送付します。
  • Schedule this report : チェック
  • Frequency:Daily
  • At : 任意ですが、後でこの時間を使うため、ここでは午前10時
  • Start Date, End Date : 任意
  • Send report to : 自分のGmailアドレス
  • Include report as an attachment : チェック
  • Include total row : チェックを外す
最後に、「Save and run」または「Save」をクリックします。「Save and run」をクリックすると実行されてGmail宛にレポートが添付ファイル付きで届きますので、「Save and run」をクリックして、ファイルを実際に確認することをおすすめします。 Bing Adsの設定は以上になります。

Google Analyticsのデータインポート

次にGoogle AnalyticsにBingの広告データをインポートする箱を用意します。

Google AnalyticsのアカウントIDとプロパティIDを取得

Google Analyticsへログインして、データをインポートしたいプロパティを選びます。このアカウントID(下の画像では4517…の部分)とプロパティID(UA-4517…-1の部分)を後で使うのでメモしておいてください。

Google Analyticsのデータセット作成

次にGoogle Analyticsでデータをインポートするため箱を作ります。 左下にある「管理」からプロパティ→データインポートをクリックします。 この時、アカウントおよびプロパティが間違っていない事を確認しましょう。 データスキーマの一覧と、左上に「CREATE」ボタンが表示されますので、これをクリックして作成します。

データセットタイプ

最初にデータの種類を選択します。ここでは一番下にある「Cost Data」(費用データ)を選択します。

データセット名と紐付けるビューの選択

次にこのデータセットの名前を入力します。日本語でも英語でもOKです。他で使うことはありませんが、わかりやすい名前(例:○○クライアント Bing広告)にしたほうが良いでしょう。 その下でこのデータセットを使うビューを選択します。特に表示させたくないビューがなければすべて選んでも構いませんが、広告レポート等以外では使うことがあまりないと思います。

カラムの選択

最後にこのデータセットのカラムの選択をします。 最初の表に3項目(Date,Medium,Source)ありますが、これらは必須なのでそのままで構いません。 2つ目の表からは、
  • Clicks
  • Cost
  • Impressions
をこの順番で選びます。 最後の表からは、
  • Ad Content
  • Campaign
  • Keyword
をやはりこの順番で選びます。 最後の「Import Behavior」では「Summation」を選択して、「Save」をクリックします。
補足:Import Behaviorについて
データの中に重複する行が存在する場合に、合計するか(=Summation)?最後の行のみを採用するか(=Overwrite)?の選択になります。 Bingのキーワードの設定が不十分だと重複する行が存在するので、Overwriteにしてしまうと、最後にインポートした行のみが結果として反映されてしまいます。そのため、今回は合計を選びます。

データセットIDをメモ

設定完了後、データセット一覧の画面に戻ります。そこで今作ったデータセットが作成されていることを確認し、右側の「Data Set ID」の列に書かれている文字列(下記の画像では-3esA….MA)をメモしておいてください。 Google Analytics側の設定は以上で終了です。

Google Sheetの設定

次にGoogle Sheetでの設定になります。

Google Analytics APIを有効

まずは、Google AnalyticsにアクセスできるアカウントでGoogleにログインして、Google Sheetで新しいスプレッドシートを開きます。 メニューから「アドオン」→「アドオンを取得」をクリックします。 検索フォームに「Google Analytics」と入力するとGoogle Analyticsが出てきますので、それをクリックします。 Google Analyticsのウィンドウが表示されますので、「インストール」をクリックします。(※バージョンによって画面が画像と異なるかもしれません) すると、「インストールの準備」というウィンドウが新しく表示されるので「続行」をクリックします。 今度はアカウントを選択するウィンドウが表示されますので、Google Analyticsに実際にアクセスするアカウントを選択してください。(問題なければ最初にログインしたアカウントが表示されますが、複数のアカウントでログインしているとアカウントがいくつか出てきますので気をつけてください。 さらに次は確認画面になりますので、「許可」をクリックしてください。 最後に完了画面が出てきますので、クリックしたら完了です。 Google Sheetの画面に戻りますので、「アドオン」をクリックすると「Google Analytics」が追加されていればOKです。

基本設定をSheetに記入

Google Sheetに下記のようにBing、Google Analyticsの情報を入力します。カッコ内は前述の設定した時に使用したものになります。
  • A:名前(任意)
  • B:Google Analyticsのアカウント(4517…)
  • C:Google AnalyticsのプロパティID(UA-4517…-1)
  • D:Google AnalytisのDataSet(-3esA…….MA)
  • E:スキーマ(ga:date,ga:medium,ga:source,ga:adClicks,ga:adCost,ga:impressions,ga:adContent,ga:campaign,ga:keyword)※変更しないでください
  • F:Bingから送られてくるメールの件名(Your scheduled report is ready to view)
  • G:レポート名(ABC_DailyReport.zip)
  • H:Bingのauto-taggingの設定(通常はON1)
  • I:Bingのレポート画面で設定したレポートの送り先メールアドレス([email protected]

Google Apps ScriptでのGAへインポート

ようやくここからが今回の本番のスクリプト部分になります。 (書いてるだけで疲れました。。。) 今回はGoogle Apps Scriptになります。Google Apps Scriptはあまり馴染みがないかもしれませんが、基本的な部分はJavaScriptと同じでですので、JavaScriptの概念や関数の作り方などがわかればそれほど苦労しないと思います。 今回のスクリプトは以下の流れになります。
  1. Google Sheetから情報を読み込む
  2. Gmailからメールを検索
  3. Gmailからzipファイルを取得
  4. ファイルを解凍し、データを取得
  5. データをGoogle Analytics用に加工
  6. データをGoogle Analyticsにアップロード
  7. データがGoogle Analyticsにアップされていることを確認
なお、Google Apps ScriptはGoogle Sheetの「ツール」から「スクリプト エディタ」を選びます。 すると、Googl Apps Scriptのウィンドウが表示されますので、右側の「コード.gs」と書かれているタブの下にfunction myfunction(){ } と書かれている箇所に入力します。 ※今回はmyfunction()は使用しないので、消してオリジナルの関数を作成していきます。

Google Sheetから情報を読み込む

まず最初に、さきほどGoogle Sheetに入力した情報をこのGoogle Apps Scriptに読み込みます。 関数名はgetConfigとし、この関数を実際に呼び出す際は第1引数のfileKeyにはGoogle Sheetのパスを、sheetNameにはさきほど入力したGoogle Sheetのシート名をそれぞれ入れます。
  • パス:(1w2xXXX……..OJs)
  • シート:(client)
function getConfig(fileKey, sheetName){
  var retConfig = [];
  var spreadsheet = SpreadsheetApp.openById(fileKey);
  var sheet = spreadsheet.getSheetByName(sheetName);
  var tmpLastRow = sheet.getLastRow();
  for(var i = 2;i <= sheet.getLastRow();i++){
    var val = sheet.getRange(i, 1).getValue();
    if (!val) {
      break;
    }else{
      retConfig[i-2] = [];
      retConfig[i-2]['client'] =  sheet.getRange(i,1).getValue();
      retConfig[i-2]['analyticsAccountId'] = Utilities.formatString('%s',sheet.getRange(i, 2).getValue());
      retConfig[i-2]['analyticsPropertyId'] = sheet.getRange(i, 3).getValue();
      retConfig[i-2]['customDataSourceId'] = sheet.getRange(i, 4).getValue();
      retConfig[i-2]['header'] = sheet.getRange(i, 5).getValue();
      retConfig[i-2]['emailSubject'] = sheet.getRange(i, 6).getValue();
      retConfig[i-2]['zipFileName'] = sheet.getRange(i, 7).getValue();
      retConfig[i-2]['autoTagging'] = sheet.getRange(i, 8).getValue();
      retConfig[i-2]['account'] = sheet.getRange(i, 10).getValue();
      retConfig[i-2]['sendTo'] = sheet.getRange(i, 11).getValue();
      retConfig[i-2]['previousZipFileName'] = sheet.getRange(i, 12).getValue();
    }
  }
  return retConfig;
}
いちおう、複数のBing広告データを1回の実行で完了できるように、Google Sheetに記載されている情報をすべて読み込みます。 ただし、途中で1列目が空白の行があるとそこから先は読み込まないようにしています。

Gmailからメールを検索

Gmailからレポートのメールを探します。 Googleは同じブラウザでも複数のアカウントでログインできますので、現在のアカウントと実際に検索するメールアドレスが違うということがよくあります。 そのため、事前に検索するメールアドレスを確認するようにしています。 その後、件名、受信日、添付ファイル名をキーにしてメールを探しますが、Gmailはメールをスレッドという塊で管理しているため、
  1. 件名などからスレッドを探す
  2. 該当する添付ファイルを探す
という2段階で検索します。 Gmailの検索方法については、Gmail で使用できる検索演算子などを参照してください。 8行目で検索期間を指定しています。formatDateAsString(addDaysToDate(new Date(), -1))が昨日、formatDateAsString(new Date())が今日を意味していますが、今日の方は状況によっては翌日formatDateAsString(addDaysToDate(new Date(), 1))にしないと検索に引っかからない場合があります。 日付の指定等によっては2ファイル以上検索に引っかかる場合があります。そのため、私は毎日抽出が終わってからその日のレポートのメールを削除するようにして、25行目のisIntrash関数を使うことでゴミ箱に入っているメールアドレスは除外するようにしています。
// 設定情報を取得
var conf = getConfig(path, sheet);
// アクセスするメールアドレスがGoogle Sheetに記載したアドレスと同じであるかチェック
var msg = null:
if(Session.getActiveUser().getEmail() != conf[i]['account']){
 // アドレスが違うので終了
}else{
 // メールスレッドがmsg変数に入る
 msg = getMessage(conf[i]['emailSubject'], formatDateAsString(addDaysToDate(new Date(), -1)), formatDateAsString(new Date()), conf[i]['zipFileName']);
 if(!msg){
  // メールが存在しなかったので終了
 }
}
function getMessage(subject, after, before, zipfileName){
  var myMsg = null;
  var query = 'subject:' + subject + ' has:attachment ' + 'after:' + after + ' ' + 'before:' + before;
  // Gmailで検索し、スレッド(同じ件名のメールの塊)を探す
  var myThread = GmailApp.search(query);
  // スレッドの中からメールに該当する添付ファイルがあればそれを結果として返す。
  var myMsgs = GmailApp.getMessagesForThreads(myThread);
  for(var threadIndex = 0; threadIndex < myMsgs.length;threadIndex++){
    for(var i = 0;i < myMsgs[threadIndex].length; i++){
      var myMsg =  myMsgs[threadIndex][i];
      if(!myMsg.isInTrash()){
        var attachments =  myMsg.getAttachments(); // GmailAttachment[]
        for (var j = 0; j < attachments.length; j++) {
          var tmpFileName = attachments[j].getName();
          if (attachments[j].getName().match(zipfileName)) {
            return myMsg;
          }
        }
      }
    }
  }
  // メールが見つからない場合はNULLを返す。
  return null;
}

Gmailからzipファイルを取得、解凍、加工

メールが見つかった場合、上記のスクリプトの変数msgにメールオブジェクトが入ります。このmsgオブジェクトから添付ファイルを取得します。 Bingから送られてくるこの添付ファイルはzip形式で圧縮されているので、解凍して必要なデータだけ抽出します。 Bingから送られてくる圧縮ファイルの中身はcsvファイルなので、そのままデータをCSV形式で抽出します。 詳しくは、Google Apps ScriptのClass Utilities.unzip(blob)リファレンスのparseCsv(csv, delimiter)を参照してください。
// conf[i]['zipFileName']:圧縮ファイル名
var csv = findCsvAttachment(msg.getAttachments(), conf[i]['zipFileName']);
// ファイル内に該当する圧縮ファイルがあれば解凍して返す
function findCsvAttachment(attachments, zipFileToSearch) {
  var counter = 0;
  for (var i = 0; i < attachments.length; i++) {
    if (attachments[i].getName().search(zipFileToSearch) != -1) {
      var unzip = Utilities.unzip(attachments[i]);
      var csvData = Utilities.parseCsv(unzip[0].getDataAsString(), ",");
      return csvData;
    }
  }
 // ファイルが見つからなかった場合はnullを返す。
 return null;
}

データをGoogle Analytics用に加工

ここが一番面倒なところで、各自広告データなどによって多少の加工が必要です。 本来、私もBingのAuto TaggingやGoogle Analyticsの設定に合わせるためにロジックを複数用意していますが、そのあたりまで含めるとややこしいコードになるため、今回は省略しました。 もし、詳しく知りたい場合はコメントにて連絡ください。
// Google Analyticsへアップロードする際に必要なヘッダー
    var header = conf[i]['header'];
    // Google Analytics用にデータを加工
    var csvForUpload = processCsv(csv, header);
function processCsv(csvData, header) {
  var dataForUpload = header + '\n';
  var tempData = [];
  var j = 0;
  // 添付ファイルの中身の最初の10行は不要な情報なので飛ばします。
  for (var i = 10; i < csvData.length; i++) {
    // ファイルの中身がなければ次の行へ移動
    if(!csvData[i][1]){
      break;
    }
    var ga_medium = 'cpc';
    var ga_source = 'bing';
    var ga_date = csvData[i][0].replace(/-/g, "");
    var ga_adClick = Number(csvData[i][3]);
    var ga_adCost = Number(csvData[i][4]);
    var ga_impressions = Number(csvData[i][2]);
    var ga_campaign = ''; // utm_campaign
    var ga_keyword = '';// utm_term
    var ga_adContent = '';// utm_content
    var destinationURL = null;
    // BingのadContentなどに[]が入っているとGoogle Analyticsでは削除されて取り込まれているため、事前に除外する
   csvData[i][5]= csvData[i][5].replace('[','').replace(']','');
    ga_campaign =  csvData[i][7];
    ga_adContent = csvData[i][5];
    ga_keyword = csvData[i][6];
    // 各行のデータをGoogle Analytics用に用意したヘッダーと同じ順で並べて配列に格納
    tempData[j]=[ga_date,ga_medium,ga_source,ga_adClick,ga_adCost,ga_impressions,ga_adContent,ga_campaign,ga_keyword]
    j++;
  }
  // Google Analyticsへアップロードするために配列のデータを文字列にまとめる
  for(var i =0; i < tempData.length;i++){
    dataForUpload += tempData[i][0] + ',' + tempData[i][1] + ',' +  tempData[i][2] + ',' + tempData[i][3] + ',' + tempData[i][4].toFixed(2) + ',' + tempData[i][5] + ',\"' + tempData[i][6] + '\"'  +  ',\"' + tempData[i][7] + '\"' + ',\"' + tempData[i][8] + '\"'\n'';
  }
  return dataForUpload;
}

データをGoogle Analyticsにアップロード

ここまで来たらあともう少しです。いよいよ、Google Analyticsにデータをインポートします。コード自体は難しくありませんが、このあたりはもう定型なので変える必要もあまりないでしょう。 珍しい関数についてはリンクを貼っておきます。

// 引数はインポートするデータ、Google Analyticsのアカウント、プロパティID、DatasetのIDの4つ
var analyticsUploadStr = uploadDataToAnalytics(csvForUpload, conf[i]['analyticsAccountId'], conf[i]['analyticsPropertyId'], conf[i]['customDataSourceId']);
function uploadDataToAnalytics(data, accountId, webPropertyId, customDataSourceId) {
  var ret = false;
  try{
    // 前述で作成したアップロード用データを"application/octet-stream"形式でBlobオブジェクトに書き出します。
    var dataBlob = Utilities.newBlob(data, "application/octet-stream", "GA import data");
    // Google Analytics へデータをアップロードし、Idを取得
    var upload = Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, dataBlob);
    // JSON形式なので変換
    var uploadId = JSON.parse(upload);
    var count = 0;
    var sleepingTime = 10000;
    // アップロードが成功したか?失敗したか?を定期的に確認。
    while(count < 5){
      var status =Analytics.Management.Uploads.get(accountId, webPropertyId , customDataSourceId, uploadId.id );
      status = JSON.parse(status);
      if(status['status'] == 'PENDING'){
        count++;
        Utilities.sleep(sleepingTime*count);
      }else if(status['status'] == 'COMPLETED'){
          ret = status['id'];
        break;
      } else if(status['status'] == 'FAILED'){
        var error = "";
        for(var j=0;j<status.errors.length;j++){
          error += (j+1)+".) "+status.errors[j]+" \n";
          // エラーはログに書き出すなどする
        }
        ret = false;
        break;
      }
    }
  }catch(e) {
    ret = false;
  }finally{
    return ret;
  }
}

ジョブの設定

これでGoogle AnalyticsへBingの広告データをインポートするスクリプトは完了ですが、これを毎日実行しなければならないため、ジョブの設定が必要です。 Google Apps Scriptの「編集」→「現在のプロジェクトのトリガー」をクリックすると、トリガーのウィンドウが表示されます。 このとき、プロジェクトを保存していないとプロジェクトを保存するダイアログが表示されますので、名前はGoogle Sheetと同じ名前でプロジェクトを保存しておきましょう。 ※名前は任意ですが同じにしておいたほうがわかりやすいので。 そこで右下の「トリガーを追加」ボタンをクリックすると、トリガーの設定ダイアログが表示されるので、
  • 実行する関数を選択:呼び出す関数(今回のスクリプトでは作成していませんが呼び出しているコード部分をまとめたものを upload といった名前で関数を作ります)
  • イベントのソースを選択:時間主導型
  • 時間ベースのトリガーのタイプを選択:日付ベースのタイマー
  • 時刻を選択:任意(Bingからメールが届く以降の時間であれば何時でも構わないですが、念のため2時間程度余裕をもたせておいた方が良いです)

メール削除やデータのリフレッシュが必要

Bingはたまにですが、レポートの送付が遅れたり、後日インプレッション数やクリック数が変わったりすることがあります。(Facebookほどではありませんが) そのため、前日のデータのGAにインポートしている場合は、数日後に再アップロードして以前アップロードしたファイルを削除する必要があります。 ※私は面倒くさがりなのと、相談してきた人が「月初に更新されていればOK」ということでしたので、月初にGAから前月のデータをすべて削除して、1ヶ月分のデータをまとめてインポートしています。 さらに、Bingがレポートの送付が遅れると、毎日ジョブを実行する際に、前日のデータが検索結果に含まれてしまう場合があります。それらを避けるために実行後にメールを削除する必要があります。 これらの方法については改めて紹介したいと思います。 ]]>

Categories
Webマーケティング

WordPressでAmazonサーチウジェットに自動でカテゴリー名を挿入する

Amazonのサーチウィジェット WordPressで「アマゾンの広告を入れたい」と誰もが思ったことがあると思います。特定の商品ページへのリンクであればプラグインもありますが、検索ウィジェットを入れるとなると、サーチウィジェットを使うしかありません。 ですが、サーチウィジェットでは検索ワードを自動的に入れられないので、Quick Adsenseなどのプラグインではソースコードを直接入れても下記の画像のように検索ワードが空欄のままなので、実質使い物になりません。 固定で文字を入れても良いのですが、それだと記事に合わない検索ワードになってしまい、あまり効果がありません。

JavaScriptを使ってカテゴリーを取得

検索ワードにカテゴリーを入れる方法を紹介します。私は今はCocoonを使っていますので今回はCocoonで説明します。 まずは、JavaScriptを使ってカテゴリーを取得します。
  • Windowsではブラウザ上でF12キーをクリックするとデバッグモードになります。
  • 次に右上にある「Console」タブをクリックします。
  • その下にある空欄に下記のコードをコピペして「Enter」を押して実行します。
  • 「undefined」と結果が出るはずですので、次に「text」と入力して「Enter」を押します。
var arr = [];
document.querySelectorAll('#breadcrumb > .breadcrumb-item > a > [itemprop="name"]').forEach(element=> arr.push(element.innerText));
var text = arr.join(' ');
これで下記のようにカテゴリー文字が表示されればOKです。

Amazonアソシエイトのサーチウィジェットのコードを取得

Amazonアソシエイトのページからウィジェット→商品検索ウィジェットのページに進みます。 サーチウィジェットを選択すると下記のページが表示されますので、右下にある「広告コード」をコピーしてメモ帳などに保存します。
<script type="text/javascript">
amzn_assoc_ad_type ="responsive_search_widget";
amzn_assoc_tracking_id ="トラッキングID";
amzn_assoc_marketplace ="amazon";
amzn_assoc_region ="JP";
amzn_assoc_placement ="";
amzn_assoc_search_type = "search_widget";
amzn_assoc_width ="auto";
amzn_assoc_height ="auto";
amzn_assoc_default_search_category ="";
amzn_assoc_default_search_key ="";
amzn_assoc_theme ="light";
amzn_assoc_bg_color ="FFFFFF";
</script><script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1&Marketplace=JP"></script>
このコードに先程作成したJavaScriptを上に追加し、更に14行目を””からtextに差し替えます。
<script type="text/javascript">var arr = [];
document.querySelectorAll('#breadcrumb > .breadcrumb-item > a > [itemprop="name"]').forEach(element=> arr.push(element.innerText));
var text = decodeURI(arr.join(' '));
amzn_assoc_ad_type ="responsive_search_widget";
amzn_assoc_tracking_id ="トラッキングID";
amzn_assoc_marketplace ="amazon";
amzn_assoc_region ="JP";
amzn_assoc_placement ="";
amzn_assoc_search_type = "search_widget";
amzn_assoc_width ="auto";
amzn_assoc_height ="auto";
amzn_assoc_default_search_category ="";
amzn_assoc_default_search_key =text;
amzn_assoc_theme ="light";
amzn_assoc_bg_color ="FFFFFF";
</script><script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1&Marketplace=JP"></script>

Quick Adsenseプラグインを追加

次にQuick Adsenseプラグインを追加しますが、インストール方法は省略します。 インストール後、WordPressの管理画面から左側のメニューから「Quick Adsense」をクリックします。 「Ads on Post Body」タブをクリックして、Ads1の箇所に上記のコードを貼り付けて下にある「Save Change」をクリックします。 Quick Adsenseの「Setting」で表示箇所の設定を行ったら完成です。

まとめ

今回はJavaScriptを使ってページ内のカテゴリー名を取得して、Amazonサーチウィジェットに追加しました。カテゴリー名の取得方法はWordPressのテンプレートによって異なりますので、上記のコードで取得できなかった場合は、いくつかトライしてみてください。 JavaScriptの使い方がわかれば、カテゴリー名だけでなくタグ名やタイトル名なども取得できます。]]>

Categories
Webマーケティング アナリティクス

要素の中身やデータが変更された時はMutationObserver

onChangeはformでしか使えない 「トップのメイン画像がスライドして表示されたときに拡張eコマースの商品のインプレッションを計測するように」と言われたとき、どうしますか? 「画像がスライドされるならGoogle Tag Managerの『要素の表示』トリガーが使えるのでは?」と思ったのですが、この画像たちはすでに表示されているようになっていて使えないという事実が判明。 画像の横の位置が動的に変わる事でスライドされるように表示されていたので、「javascriptのonChange関数やjQueryのchange関数を使えばできるなぁ」と思ったのですが、onChange関数はselectなどのformでしか使えないという事なのでこれまた却下。 (参考:HTML onchange Event Attribute(w3schools.com)

要素の属性値などを監視するMutationObserver

今回、この画像を含むdivではいくつかの要素の属性値が変わっていました。そこで今回は、MutationObserverクラスを使います。

MutationObserverクラスで指定の要素を監視

// 1.監視する対象のIDを指定
var targetNode = document.getElementById('XXXXX');
// 2.MutationObserverのオプションを実行前に指定
var config = { attributes: true, , attributeFilter: ['class','属性名'], childList: true, subtree: true };
// 3. 変更があった時に実行したい処理をここに記述
var callback = function(mutationsList, observer) {
    for(var mutation of mutationsList) {
         if (mutation.type == 'attributes') {
            // 属性が変わった時に実行したい場合はここに書く
            console.log(mutation.attributeName + ' が変わりました');
        }else if (mutation.type == 'characterData') {
            // データが変わった時に実行したい場合はここに書く
        }else if (mutation.type == 'childList') {
            // 対象ノードの子ノード(テキストノードも含む)が変わった時に実行したい場合はここに書く
        }
    }
};
// 4. MutationObserverインスタンスの作成
var observer = new MutationObserver(callback);
// 5. 対象ノードの監視開始
observer.observe(targetNode, config);
// 6. 監視を終了するときにはdisconnect()を実行
// observer.disconnect();

MutationObserverオプションはできるだけ設定すべき

2のMutationObserverのオプションのうち、attribute、characterData、childListは必ず設定しておくことをお勧めします。特にchildListをfalseにしないと、子ノードに変更があった場合にもイベントが発生するため、注意しましょう。

MutationObserverのオプション一覧

childList対象ノードの子ノード(テキストノードも含む)に対する追加・削除を監視する場合は true にします。
attributes対象ノードの属性に対する変更を監視する場合は true にします。
characterData対象ノードのデータに対する変更を監視する場合は true にします。
subtree対象ノードとその子孫ノードに対する変更を監視する場合は true にします。
attributeOldValue対象ノードの変更前の属性値を記録する場合は true にします(attributes が true の時に有効)。
characterDataOldValue対象ノードの変更前のデータを記録する場合は true にします(characterData が true の時に有効)。
attributeFilterすべての属性の変更を監視する必要がない場合は、(名前空間を除いた)属性ローカル名の配列を指定します。
3のif句内で実行したいことを記述します。今回は分けていますが、属性の変更時のみだけで良い場合は、最初のif部分だけで構いません。上にも書いていますが、子ノードの変更を監視したくない場合はわざと if (mutation.type == ‘childList’) 句を用意して中身を空欄にしておくなどしておいた方が安全です。 4と5はお決まりの書き方なので、そのまま使ってください。 6については終了させたいときに呼び出してください。]]>

Categories
Webマーケティング アナリティクス

複数のトリガーをすべて満たしたら発生させるトリガーグループ

複数のトリガーを条件に使える新機能「トリガーグループ」 Googleタグマネージャーを使っていると、ある条件を満たした後に、異なる別の条件を満たした場合にのみイベントを発生させたい、ということはありませんでしたか?たとえば、ページ内にあるいいねボタンをクリックした場合ではく、ページ内の動画を1分以上見た後に、いいねボタンを押した場合にイベント発生させたい、といったケースです。 Google Tag Managerが2019年3月下旬に突然、「トリガーグループ」という新たなトリガーをリリースしました。

トリガーグループの用途

トリガーグループの主な使い道は複数のトリガーを同一ページ内で発生した場合に発生させる時に有効です。 主に、
  • ページスクロール
  • 閲覧時間
  • ページ内のボタンクリック(遷移しない)
  • 動画閲覧
といった場合の組み合わせになるでしょう。

トリガーグループの作り方

トリガーグループの作り方はとても簡単です。
  1. 新規トリガーの作成
  2. トリガーグループを選択
  3. 必要なトリガーを選択

  4. 発生させる条件を設定(必要であれば)

注意点

とても簡単に作れるトリガーグループですが、いくつか注意点があります。

ページ遷移をしたときは発火しない

ページ遷移をしてしまうとトリガーが初期化されてしまうので、使えません。

発火の順番は指定できない

上記の例で言うと、フッターまでスクロールするのが先の場合でも、レビューを表示させるのが先の場合でもどちらでもこのトリガーグループは発火してしまいます。 順番を指定したい場合は、変数を用意して、各トリガーが発火するタイミングで変数に値(例:トリガー名)を挿入し、後のトリガーが発火した際に、最新の変数の値が2つ目のトリガーの値になっているか?という条件を入れると良いでしょう。

トリガーの発生タイミングは最後のトリガーの発火タイミングではない

これは少々ややこしいのですが、トリガーグループで指定されているトリガーのうち、最後のトリガーが発火された後にgtm.triggerGroupというトリガーが発火されます。このタイミングではじめてタグが実行されます。

1つのトリガーグループは1度しか発生しない

gtm.triggerGroupが1度しか発火しないため、各トリガーの発生回数を制限していなくてもこのトリガーグループは1回しか発火されません。 ]]>

Categories
Webマーケティング

本当にやさしい参考書「いちばんやさしいGoogleアナリティクスの教本」

Categories
Webマーケティング マーケティング 書評

マーケティングを一から学び直す人におすすめしたい本

マーケティングの目的 マーケティングと一言で言っても、マスマーケティングやダイレクトマーケティング、最近ではWebマーケティングや共感マーケティングなどいろいろあります。

マーケティング(英: marketing)とは、企業や非営利組織が行うあらゆる活動のうち、「顧客が真に求める商品やサービスを作り、その情報を届け、顧客がその商品を効果的に得られるようにする活動」の全てを表す概念である。 (引用:wikipedia)
wikipediaに書かれているように、マーケティングの目的は商品やサービスを顧客に十分に知ってもらう事であり、それを実現するために様々な手法(=戦術)が存在します。マーケティングを始めたばかりの人や、知ったかぶる人は手法(戦術)ばかり考えてしまい、目的(戦略)を見落としてしまう事がよくあります。経験上、この手の人を説得するのがかなり面倒なんですけどね…

マーケティングの基礎はコトラー

マーケティング関連の本は戦略から戦術まで膨大な数の本が出版されています。それでも避けて通れないのがコトラーでしょう。いずれか1冊は読んでおくべきで、コトラーからこの2冊をおすすめします。

コトラーのマーケティング・コンセプト

コトラーのオリジナルは1000ページ以上の分厚い本なので読むだけで一苦労ですが、本書はマーケティングで最も重要と考える80のコンセプトを選び出し、コンパクトに解説しています。企業の管理者を対象としているので、マーケティングの知識がなくても理解できるほど簡潔にまとまっています。具体的な事例や著者自身が経験したエピソードも織り込まれているので、コトラーのエッセンスが凝縮された本といえます。 [amazonjs asin=”4492554769″ locale=”JP” tmpl=”Small” title=”コトラーのマーケティング・コンセプト”]

コトラーのマーケティング3.0 ソーシャル・メディア時代の新法則

Web1.0→2.0→3.0と移行していくのと同様に、マーケティングもモノを売り込むだけの「製品中心」の「1.0」から、顧客満足をめざす「消費者志向」の「2.0」へ移り変わってきました。そして今、SNSといった手法の変化や発展途上国やクリーンエネルギーなど新分野でどのようにマーケティングを行うべきかを説明しています。 [amazonjs asin=”4023308390″ locale=”JP” tmpl=”Small” title=”コトラーのマーケティング3.0 ソーシャル・メディア時代の新法則”]

マーケティングでよく言われること

売れるもマーケ 当たるもマーケ―マーケティング22の法則

マーケティング法則とその解説をシンプルにまとめた本です。事例集のようなものなので、どのように実行に移すべきかといった部分の記載はあまりないが、マーケティングのベースとして知っておくべきことばかりです。 [amazonjs asin=”4884970233″ locale=”JP” tmpl=”Small” title=”売れるもマーケ 当たるもマーケ―マーケティング22の法則”]

ドリルを売るには穴を売れ

マーケティングの本質をわかりやすく小説風に書いた本です。3時間もあれば読めてしまいますが、マーケティングの本質を書いているので、これを自分の机の上に置き、定期的に読み直すことで本質を見失わずに済みます。 [amazonjs asin=”4413036239″ locale=”JP” tmpl=”Small” title=”ドリルを売るには穴を売れ”]

エスキモーに氷を売る―魅力のない商品を、いかにセールスするか

著者はNBAで当時観客動員数最下位だったニュージャージー・ネッツを27球団中チケット収入伸び率1位にまで導いた人で、その成功までに彼が行ったマーケティング手法を物語風に紹介しています。当然と思われるような事もありますが、あなたが今後マーケティングを行っていく中で見落としていることもここにはあるかもしれません。さらりと読めるので、コトラーなどよりも先に本書を読むとマーケティングへの抵抗が減るかもしれません。 [amazonjs asin=”4877710582″ locale=”JP” tmpl=”Small” title=”エスキモーに氷を売る―魅力のない商品を、いかにセールスするか”]

こちらもおすすめ

これらの本を読めばマーケティングの基礎はだいたいカバーできると思います。あとは備忘録として体系だった本があると仕事がしやすいです。そんな時にお勧めしたいのが、「図解 実戦マーケティング戦略」です。

図解 実戦マーケティング戦略

ゼロからマーケティングを行う際にやらなければならないことを体系立ててまとめています。なので、手元に置いておき、自分が立ち止まっているページから読み始めれば解決策を見つけやすいでしょう。化粧品会社の事例もあるので、とても参考になります。 [amazonjs asin=”4820716506″ locale=”JP” tmpl=”Small” title=”図解 実戦マーケティング戦略”] ここまで読んだら、あとはさっそく読み始めましょう!!
1.01と0.99はたった0.02しか違わない。だがその違いを積み重ねていくと結果的に歴然とした差が出てくると言う教えのようだ。果たしてどのような結果になるのだろうか。 1.01の365乗=37.8 0.99の365乗= 0.03
毎日の積み重ねが大切です。 ]]>

Categories
Webマーケティング 書評

Webマーケティングを始める社員に読んでもらいたい本・基礎編

新入社員やマーケティング初心者に読んでもらいたい本・基礎編」を紹介しましたが、今回はこれからWebマーケティングを始める方にお勧めしたい書籍の紹介です。 2013年末あたりからスマホブームになってネット系企業だけでなく従来からある一般企業もマス広告からWebへシフトするようになってきました。 それもあってWebマーケティングの需要がかなり増えています。 そのためネット広告代理店などの成長が著しいですが、広告主側の知識や経験が乏しく、いいようにやられてしまっているのも事実です。 代理店に騙されないためにも、広告主側もWebマーケティングをしっかり理解すべきですし、今後求められていくでしょう。

Web解析系

ウェブ解析とはをわかりやすく紹介

繁盛するWebの秘訣「ウェブ解析入門」 ~Web担当者が知っておくべきKPIの活用と実践」は、Web解析というよりもWebで良し悪しを決定するために必要なポイント(=KPI)とその導き出し方をわかりやすく解説しています。 Webマーケティングが初めてな方はもちろん、会社や部署に1冊あるとメンバー間で考え方を共有できるのでぜひとも持っておくべき本です。 [amazonjs asin=”4774148148″ locale=”JP” tmpl=”Small” title=”繁盛するWebの秘訣「ウェブ解析入門」 ~Web担当者が知っておくべきKPIの活用と実践”]

Web解析のエバンジェリストによるわかりやすい指南書

入門 ウェブ分析論 ―― アクセス解析を成果につなげるための新・基礎知識 増補改訂版」の著者の小川卓さんはWeb解析などを広めた方ですが、コンサルや代理店ではなく現場で実践されていたので具体的な方法をこれまでにも多数紹介しています。 だから本人の経験から必要な事をわかりやすく紹介しているのがこの本です。 [amazonjs asin=”4797368845″ locale=”JP” tmpl=”Small” title=”入門 ウェブ分析論 ―― アクセス解析を成果につなげるための新・基礎知識 増補改訂版”]

Google Analyticsの知りたい事が1冊に凝縮

Google Analyticsパーフェクトガイド 増補改訂版 Ver.5/ユニバーサルアナリティクス対応」はGoogle Analyticsに関する情報がぎっしりと詰まった取扱説明書的な1冊です。 Google Analyticsに関する事はググればいろいろ出てきますが、知識として覚えておきたいことや会社や部署で学んでおきたいためにはこういった書籍は1冊はあったほうが良いでしょう。 [amazonjs asin=”4797375787″ locale=”JP” tmpl=”Small” title=”Google Analyticsパーフェクトガイド 増補改訂版 Ver.5/ユニバーサルアナリティクス対応”]

リスティング、SEO関連

リスティング解説本の王道

新版 リスティング広告 成功の法則」 [amazonjs asin=”4881669788″ locale=”JP” tmpl=”Small” title=”新版 リスティング広告 成功の法則”] リスティング広告を長年行ってきたコンサルタントが書いた本です。多くの企業のリスティング広告を運用してきたのでノウハウがあり、その中からリスティング広告運用の本質を解説しています。 ただ、ボリュームが多いので、読むのにはかなり苦労すると思いますが、実際に運用していくときに役立つ情報が多いので、読みながら運用していくのが良いでしょう。

リスティングの本質を具体的に解説、まさに「教本」

いちばんやさしいリスティング広告の教本 人気講師が教える利益を生むネット広告の作り方 (「いちばんやさしい教本」シリーズ)」は、リスティング広告そのものと運用についてわかりやすく説明しています。 他にも優れた書籍はありますが、この本は小手先ではなく本質を説明しているので、いつかは通る道でしょう。だから最初に読んでおく事をお勧めします。 [amazonjs asin=”4844336118″ locale=”JP” tmpl=”Small” title=”いちばんやさしいリスティング広告の教本 人気講師が教える利益を生むネット広告の作り方 (「いちばんやさしい教本」シリーズ)”]

基本を抑えたSEO対策

SEO対策は日々変化しるので、最新の情報を抑えておくことはもちろんですが、本質を知っておかなければ情報に踊らされてしまいます。さらにSEO対策を行ってもすぐに効果が出るわけではないので、我慢強く辛抱できるために戦略を持っておかなければなりません。「いちばんやさしい新しいSEOの教本 人気講師が教える検索に強いサイトの作り方」は、SEO対策をわかりやすく紹介しているだけでなく、戦略を考えるために必要な本質も解説しているので、初心者はもちろん中級者やSEO責任者も読んでおくべき本です。 [amazonjs asin=”4844335359″ locale=”JP” tmpl=”Small” title=”いちばんやさしい新しいSEOの教本 人気講師が教える検索に強いサイトの作り方”]

コンテンツマーケティングのベースとなる書き方

以前はSEO対策として、小手先な事が多かったですが、最近はコンテンツマーケティングと呼ばれるように、ページの内容が重視されるようになってきています。「SEOに効く! Webサイトの文章作成術」はタイトルこそSEOとなっていますが、コンテンツマーケティングを先取りしたラティングテクニックがまとめられています。 SEO対策は常に変化していくので、本をたくさん読むよりもWebで情報収集する事をおすすめしますが、書き方自体はこの本で学んでおかないとページをたくさん作ってもGoogleには評価されませんので。 [amazonjs asin=”4863541414″ locale=”JP” tmpl=”Small” title=”SEOに効く! Webサイトの文章作成術”] ]]>

Categories
Webマーケティング

内部施策はタグと文字数と共起語?【SEO対策】

ウェブマスターツール 堀口恭司ウェブマスターツール 堀口恭司 私がひそかに注目している総合格闘家でUFCフライ級11位の「堀口恭司」選手をGoogleでの検索結果で、このサイトが4位まで上がってきました。 「SEO対策の効果が出てきたか?!」と喜んでいるのですが、ここまで上がってきた要因を考えてみました。

タグはしっかり、構成を考えて作成

タイトルタグはもちろんですが、H1、H2タグにもキーワードは入れています。 また、次の文字数も関連していますが、H2タグをできるだけ多くしたかったので、内容もかなり凝りました。 その際に気をつけているのが、構成です。 「堀口恭司」というワードをできるだけ多く入れるためには、彼を中心に書かなければならないのですが、彼だけを書くとなると文字数の限界があります。また、この時はUFC JAPANの試合が中心なので、UFC JAPANにおける彼の立ち位置、この日の試合、UFCでのランキングを絡めた構成にすることでボリュームを出しました。

文字数

「コンテンツマーケティング」と騒がれているように、内部施策にはオリジナリティと文字数がかなり重要といわれています。文字数をとにかく増やせばよいというわけではないのですが、先ほどのH2タグで書いたように構成を考えて作成しました。その結果、本文だけで全角で1000文字になりました。 長くしようと思えばもっと長くできるかもしれませんが、途中で挫折しました。

共起語

Yahoo虫眼鏡 Yahooで「堀口恭司」と検索すると、一緒に検索されているキーワードが出てきます。これはYahoo虫眼鏡と呼ばれていますが、「堀口恭司 次戦」、「堀口恭司 UFC」でも私のサイトが上位に出てきます。また、「堀口恭司 空手」では検索結果には出てきませんが、この検索結果上位のページには「UFC」などのワードが必ず出ています。これら「共起語」を私のページでも頻繁に使っています。

サイト内リンクはあまり関係ない

実は、「堀口恭司」をタグに入れているように、彼の記事をたくさん書く予定でいました。っが、なかなか書けていません。それでも検索上位に出てきているということは、サイト内リンクはそれほど関係ないのかもしれません。

ソーシャルもそれほど関係ない?

Twitterやfacebook、はてぶなどでも全然リンクされていないので、検索結果には影響は薄いかなと思われます。ただ、ビッグワードだと影響あるのかもしれません。

水垣偉弥対堀口恭司

※余談です。 UFCで活躍する日本人といえば堀口恭司選手と水垣偉弥選手で、階級は違いますが水垣選手の方がランキングは上です。 ということで、Google Adwordsでどの程度検索されているのかを調べてみました。
キーワード堀口恭司水垣偉弥
月間平均3,6001,300
最大(9月)9,6508,830
また、Googleトレンドでも調べてみました。 UFCランキングでは水垣選手の方が上ですが、Googleでは堀口選手の方が上のようです。 ちなみに、ウェブマスターツールで「堀口恭司」の表示回数が2014/12/18に急上昇していたので調べたところ、スポーツナビで堀口選手のインタビュー記事が掲載されていました。恐らくこれが原因かなと。 ウェブマスターツール 堀口恭司]]>

Categories
Webマーケティング

検索エンジン経由の訪問者数を増やす3つのポイント【SEO対策】

今週、急に訪問者が急増 ネットでの売上に直結する 集客・検索キーワードの選び方・使い方私のサイトはもともと訪問者数は多くありませんが、今週、訪問者数が急増しました。 総合格闘技UFCで最近タイトルマッチや面白い試合が続いたので、UFC関連の訪問が増えたのかな?と思っていましたが、増えた原因をいろいろなツールを使って調べてみました。

Google Analyticsで検索エンジンからのキーワードは調べにくい

訪問者が増えた原因をGoogle Analyticsで調べる時には「集客-サマリー」をまず見ます。 Google Analytics 私のサイトの場合は「Organic Search」つまり、検索エンジンの検索結果経由の訪問が増えているのがわかります。 これは期間を前週と比較しているのでこのように比較結果が出るようになっています。 詳細は「集客-チャネル」、「集客-すべてのトラフィック」あたりで調べると数値などがわかります。 私のサイトは前週のGoogleからの流入がYahooの約3倍くらいでしたが、両方とも増えて3倍の開きは変わってませんでした。

Google Analyticsのキーワードは当てにしにくい

GoogleやYahooの「検索エンジン経由からの訪問が多いということが分かりましたので、どのキーワードの検索結果からの訪問が多いのか?が気になります。 ここで本来ならば「集客-キーワード-オーガニック検索」で調べるのですが、Googleが検索キーワードを公開しないために、「not provided」という結果が大半を占めてしまうため、Google Analyticsで調べるのはあまりおすすめではありません。 Google Analytics

検索キーワードではなくランディングページで調べる

Google Analyticsでは検索キーワードを調べられませんが、こういうときに有効なのが「ランディングページ」です。 Google Analyticsで「集客-チャネル」を「Organic Search」に限定して「セカンダリディメンジョン」で「ランディングページ」にすると、検索エンジン経由で検索されやすいページが分かります。これが分かることで、キーワードの推測ができるわけです。 ちなみに、私のサイトでは「ウィスキー初心者に「マッカラン」を薦める3つの理由」が一番多いので、「ウィスキー」、「マッカラン」、「初心者」あたりのキーワードでの訪問が多いと予想できます。

検索エンジンの傾向はウェブマスターツールで調べる

Google Analyticsで検索結果からの訪問について、ある程度の傾向がわかりましたが、複数のジャンルが含まれたコンテンツだったり、ランディングページがトップページだったりすると分かりにくいです。 検索エンジンからの訪問の傾向を知るには「ウェブマスターツール」を使うと便利です。 Googleでのキーワードごとの検索順位や検索結果のページがわかります。 ただし、数値の精度については不明なので、だいたいの目安として捕らえておくと良いでしょう。 ウェブマスターツール これは今週1週間と先週1週間の比較になります。「マッカラン」の検索順位と表示回数が上がっているのが特徴で、その結果クリック数も増えているようです。 さきほどのGoogle Analyticsである程度の予想はついていましたが、「マッカラン」の単ワードでここまで訪問者数を増やせているのには私自身ビックリしました。

訪問者数を増やすには「表示回数」と「掲載順位」が重要

ウェブマスターツールを見ると「マッカラン」と「堀口恭司」、「ジョニー・ヘンドリックス」、「UFC 最強」の掲載順位がいずれも5~8位くらいですが、クリック数が全然違うのがわかります。 このように訪問者数を増やすには「表示回数」=検索回数が多くないといけないのですが、検索回数が多いワード(例えば「野球」とか「クリスマス」)は競合が多いので掲載順位が上位に来ることはとても難しいです。 「マッカラン」と「UFC 最強」をそれぞれGoogleで検索すると、検索結果はともに40万件程度なので、競合は40万件あります。その中で、私のサイトは5位~8位くらいなので、どっちも良いのですが、実際に訪問される回数は大きな差があります。

Google Adwordsで検索で訪問されやすいワードを発見

では、「マッカラン」と「UFC 最強」では表示回数はどれくらい違いがあるのでしょうか? それを調べるのがGoogle AdwordsとGoogleトレンドです。

検索キーワード毎の検索頻度と競合を知る

Google Adwordsではキーワードの1ヶ月間の検索ボリューム(≒検索回数)だけでなく、ライバルの多さの参考値を出してくれます。 例えば「マッカラン」の場合、月間で12000回程度検索されて、競合は全体と比較して普通程度ということを表しています。 Google Adwords ここでの「競合性」とはSEOではなくリスティング広告でのライバルの多さをGoogle Adwords全体との比較ですので、競合性が低いからといってライバルが少ないとは限りませんが、競合性が高いとリスティングでライバルが多い、つまり狙っている人が多いということなのでSEOでも当然ライバルが多くなります。 Google Adwords 一方、「UFC 最強」では月間で1000回程度しか検索されていないのがわかります。競合性は「低」ですが、「マッカラン」と比べて検索頻度が1/8程度しかないので、検索順位が上がっても訪問者数を増やすのが難しいことが分かると思います。

ページ数<<質のあるコンテンツ

SEO対策として「コンテンツマーケティングが重要」といわれてきていますが、実際にそのとおりのようです。私のサイトでは「マッカラン」に関連するページは「ウィスキー初心者に「マッカラン」を薦める3つの理由」だけで、お酒に関するページもわずか2ページしかありません。 もう1つのページも「ウィスキー 初心者」で一時期ランキング1位になった事もありました。 一方、UFC関連のページは今は15ページありますが、1位になっているページはGoogleでの表示回数が週10回程度のニッチなワードしかありません。どちらもコンテンツとしては十分なのでUFC関連の順位がもっと上がってほしいというのが正直な気持ちです。

検索エンジン経由での訪問者数を増やす3つのポイント

これまでのまとめです。検索エンジンからの訪問を増やすには、
  • Google Adwordsで「検索ボリューム数」が多くて、「競合性」が低いワードを探す
  • ウェブマスターツールでキーワードの表示回数と掲載順位をチェック
  • ページ数よりも1ページの質を重視
の3つです。 [amazonjs asin=”4883379442″ locale=”JP” title=”ネットでの売上に直結する 集客・検索キーワードの選び方・使い方”] [amazonjs asin=”4774152943″ locale=”JP” title=”これからはじめる SEO内部対策の教科書”]

補足:検索状況を簡単に調べるにはGoogleトレンドがおすすめ

Google Adwordsはアカウントの開設や使い方を理解するのに少々手間がかかります。もし「マッカラン」と「UFC 最強」のどちらがより検索されているかなど比較や傾向を知りたい場合は「Googleトレンド」をおすすめします。 ]]>

Categories
Webマーケティング 書評

SEO対策では足りない!コンバージョンさせるためのコンテンツの作り方

Webページを作成する目的と方法がわかりやすい! お金をかけずにできるうえにここ数年でGoogleの仕様もかなり変わってきたので、SEO対策がとても注目されています。 SEO対策の本はたくさん発売されておりますが本当に必要なことは、 SEO初心者が内部対策の前に知っておくべき事で紹介したように、内部対策よりも前にキーワードの決め方が重要です。 しかし、SEO対策を行ったところで、検索順位は上がってもコンバージョンが増えなければ意味がありません。ページの目的はコンバージョンさせることです。そのためにはページを読んだ人が満足するコンテンツが必要です。 そのコンテンツの作り方を本書では説明しています。 SEO対策は行っているけれどもコンバージョンにはつながらないサイト制作者やこれからサイトを作る人にはぜひとも読んでもらいたいです。

SEOに効くWebサイトの文章作成術 目次

  1. SEOに効くコンテンツの見つけ方―集客力アップ1(グーグルに学ぶ!訪問者を増やすコンテンツ、減らすコンテンツ、見込み客に検索されるキーワードの選び方 ほか)
  2. グーグルに好かれるSEOライティング―集客力アップ2(ワードプレスで仕事が加速!コンテンツが作りたくなるための環境整備、プロのライターに学ぶライティングテクニック(準備僕書き方編) ほか)
  3. 売り上げを伸ばす商品ページライティング―成約率アップ1(売れる商品ページの作り方、ユーザー心理に沿った商品ページの作り方)
  4. お客様を引き付けるキャッチコピーライティング―成約率アップ2(ぐいぐいスクロールさせるキャッチコピーのワクワク効果、センスがない人のためのキャッチコピー作成法)
  5. 基本と応用で文章力養成!「書けるテクニック・14連打」(わかりやすい文説得力のある文 ほか)

ユーザーにコンバージョンしてもらうためには購入後の自分をイメージさせる

クオカの代表取締役の斎藤賢治氏のコメント
私たちは、お菓子作りをもっとおいしく、もっと楽しくしていきたい。日本中の子ども達が『お母さんのが一番おいしい』と思うような世の中を作っていくことがミッションなんです。 そのミッションを達成するためには、良いコンテンツ、きれいなページを用意するだけではダメなのです。実際に購入していただき、道具を使ってお菓子を作ってもらって、食べてもらって、『これ、おいしいね』って言ってもらって、初めて仕事の半分が終わるのです。買っていただかないと、何も始まらないのです」
集客数を稼ぐためのコンテンツではなく、見込み客に選ばれるためのコンテンツをつくっていく事が大切と語っています。SEO対策を実施したり、食品系会社によくあるレシピ集を作っても、クオカのゴールである購入に結びつかないと意味がありません。 そのために必要なこととして、作って満足してもらえるためのレシピを紹介して、なおかつそれを実現するにはクオカの商品が最適というところまで落とし込んでいます。 その結果、クオカではリピート率が80%と驚異的な数字を出しています。 次に、竹製品を販売する竹虎のキャッチコピーの作り方を山岸氏のコメントです。
「竹製品をほしいと思う人は、正直言ってひと握り。多くの人は、竹製品そのものに興味がありません。なぜなら竹製品は、ただのモノだから」。 興味のないモノに興味をもってもらい、購入してもらうために、竹虎式商品ページの作り方はこうです。 「人間は、商品そのものよりも、その商品を手にしたらどうなるの、という購入後の自分に興味があります。それを使うと楽しいのか、気持ちいいのか、うれしいのか。どんなふうにうれしいのかを想像して、言葉にする。たったそれだけのシンプルなことなんです」。

ユーザーの心にささるコンテンツが必要

「買いたい」とすでに思っている人に買ってもらうのは比較的簡単ですが、その人たちだけを狙っていても他に持っていかれてしまいますし、対象者数は多くないでしょう。 潜在顧客に体験をイメージしてもらい、買いたいという思いにまで引き上げなければ購入者は増えません。 そのためには、ユーザーの心にささるコンテンツが必要なのです。

備忘録

キーワード選定の3ステップ

1.ユーザーが使いそうなキーワードを探す 2.関連キーワードを探す 3.月間検索数が多いキーワードを探す ※複合キーワードによるロングテールSEO対策

ライティングテクニックの準備

1.ターゲット 2.目的 3.情報収集

キャッチコピーの5つのコツ

1.インパクトのあるキラキラワードを並べる 2.数字を入れることでイメージしやすくする 3.会話を入れて臨場感を出す 4.問いかける 5.チラ見せ ~の発祥地は○○

説得力のある文

・数値を入れる ・伝えることを1つに絞る ・箇条書き ・具体的な名称を入れる 例:東京ドーム2個分 ・格言やことわざを入れる ・五感を刺激する ・主観で書かない、第三者視点で書く ・発言を入れる ・訴え方の違い  男性向け:スペックを訴求  女性向け:感情に訴える

売れるページ

1.3秒で選ばれる1stビュー 2.他社との違いがわかるキャッチコピー 3.ユーザー心理に沿ったページ構成 4.ターゲットを絞る 例:60歳以上におススメのチーズケーキ 5.スクロールしやすい構成 6.プラスの欲求&マイナスの欲求  今よりもっとハッピーになりたい、今の困った状態を解決したい 7.確信してもらえるように購入直前の不安を取り除く  「今すぐクリック」などのコピーをボタンの上に入れて促す8.見出しをキャッチコピーに変えることでユーザーの心をつかんで下にスクロールさせる

PASONAの法則をページで構成

・Narrow Down(絞込み):今すぐ買う理由、ここで買う理由を盛り込む(刺激・限定・理由)]]>