GoogleウェブマスターツールにあるSearch Consoleの検索アナリティクスを、Node.jsから取得する方法をまとめてみたいと思います。
develop or drink ? photo by tea © ウェブマスターツールの検索アナリティクスでは、サイトに訪問した検索キーワードを知ることができます。詳しくは別の記事でまとめていますので、そちらをご覧ください。
自身のブログ
ブログのアクセス数をアップする方法とは?検索アナリティクスを4象限マトリクス分析してみた
通常の手順では、Googleウェブマスターツールにログイン後、次の画像のように検索トラフィック
から検索アナリティクス
を選ぶと表示させる事ができます。
検索アナリティクスでは検索流入の状況が分かる ©
画像下部の赤枠のように、「クエリ」の欄で検索流入の情報を確認することができます。今回は、その情報をNode.jsから取得してみたいと思います。
目次
はじめに。トークンの取得
Node.jsでGoogle Console APIを操作するには、まずGoogle API Managerで作成したアプリケーションをOAuth認証し、リフレッシュトークンを取得する必要があります。
詳しくは下記をご覧ください。
自身のブログ
Node.jsでGoogle APIをOAuth2.0認証してAPIを使う方法
検索アナリティクスの情報をプログラムから取得する
前回紹介した記事では、Google APIのクライアントIDとクライアントシークレット、そしてリフレッシュトークンを取得していきました。次に、Node.jsを使ってGoogle Search Console APIの情報を操作していきます。
Node.jsとコマンドラインについては下記をご覧ください。
自身のブログ
コマンドラインを使ってみよう!Hexoの使い方と始め方
node.jsの開発環境を用意しよう。Hexoブログに必要なツールを揃える
任意のディレクトリでNode.jsのコードを書いていきますので、必要なファイルを作成していきます。
bash1 2 3 4 5
| $ mkdir your-dir $ cd your-dir $ npm init $ npm install googleapis --save $ vim index.js
|
続いて、index.js
を下記のように記述していきます。
index.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| "use strict";
const YOUR_URL = 'あなたのGoogle Webマスターツールで登録しているサイトURL' const YOUR_CLIENT_ID = 'あなたのクライアントIDを入力' const YOUR_CLIENT_SECRET = 'あなたのクライアントシークレットを入力' const YOUR_REDIRECT_URL = 'urn:ietf:wg:oauth:2.0:oob'
const timeUtils = require('./lib/time_formatter.js') const google = require('googleapis') const OAuth2 = google.auth.OAuth2 const oauth2Client = new OAuth2( YOUR_CLIENT_ID, YOUR_CLIENT_SECRET, YOUR_REDIRECT_URL );
oauth2Client.setCredentials({ refresh_token: 'あなたのリフレッシュトークンを入力' });
let fetch = (domain, options) => { return new Promise( (resolve, reject) => { oauth2Client.refreshAccessToken( (err,res) => { if(err){ console.log(err) console.log(res) reject(err) } else{ let webmasters = google.webmasters({ version: 'v3' , auth : oauth2Client }); options = Object.assign({ rowLimit : 5000 , dimensions: ['query', 'page'] , startDate : timeUtils.getPastXDays(30).startDate, endDate : timeUtils.getPastXDays(30).endDate, startRow : 0 }, options);
webmasters.searchanalytics.query({ 'siteUrl': encodeURIComponent(domain) , 'auth' : oauth2Client , resource : options }, (err, resp) => { if (err) { reject(err); } else { resolve(resp) } }) } }) }) }
fetch( YOUR_URL ,{}).then( ( resp ) => { return new Promise( (resolve , reject) => { resolve(resp.row) }) }).then(( analytics_data ) => { return new Promise( (resolve , reject) => { analytics_data.sort( (a,b) => (b.position - a.position) ) console.log(analytics_data) resolve(analytics_data) }) })
|
続いて、./lib/time_fomatter.js
を作成します。
bash1 2 3
| $ mkdir lib $ cd lib $ vim time_fomatter.js
|
time_fomatter.js
には下記のように記述して、日付を生成するライブラリを作成します。
./lib/time_formatter.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| "use strict";
let formatDate = (date) => { let d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear()
if (month.length < 2) month = '0' + month if (day.length < 2) day = '0' + day
return [year, month, day].join('-') };
exports.getPastXDays = (days) => { let today = new Date() let lastDataAvailable = formatDate(today.setDate(today.getDate() - 2)) let firstDataAvailable = formatDate(today.setDate(today.getDate() - (days + 2))) return { startDate: firstDataAvailable, endDate : lastDataAvailable } }
|
上記のコードが記述できたら、node.jsを実行します。
bash1 2
| $ node node.js (検索アナリティクスのデータが最大で5000件表示される)
|
実行すると、検索アナリティクスの情報が表示されます。
ということで
今回は、Google Search Consoleの検索アナリティクスの情報をNode.jsから取得してみました。検索アナリティクスは下記の情報を取得することができます。
内容 | 説明 |
clicks(クリック数) | 検索キーワードを元に表示されたサイトが、クリックされた回数 |
impressions(表示回数) | 検索キーワードを元にサイトが表示された回数。インプレッション数とも呼ばれています。 |
ctr(クリック率) | 検索キーワードを元に表示されたサイトが、クリックされた確率。クリック率とも呼ばれています。 |
position(掲載順位) | 検索キーワードを元にサイトが表示された検索順位 |
取得した情報を各条件で分析するのに役立ちますので、アクセス改善などで活用してください。
自身のブログ
ブログのアクセス数をアップする方法とは?検索アナリティクスを4象限マトリクス分析してみた
参考にさせて頂いた記事
下記の記事を参考にさせて頂きました。ありがとうございます。
github
tarantula-group/keyword-engine/app/integrations/search-console.js
npmパッケージのgoogleapisの使い方や、Search Console APIの使い方が参考になる
また、上記のwebmasters.searchanalytics.query()
メソッドに渡すクエリは下記の記事が参考になりました。
Qiita
Google Search Console APIをRubyで扱う
Search Console APIで使うクエリパラメータについての解説が参考になる
Googleの公式ドキュメントも参考になりました。
Google Search Console APIs
Search Analytics:query
Googleの公式ドキュメント。queryメソッドで使えるパラメータが参考になる。