SEO -

[Google] インデックス化が早くなる(かもしれない)Indexing API の使い方

目次

  1. インデックス化が早くなる(かもしれない)Indexing API
  2. Indexing API の使い方
    1. Google Cloud API サービスアカウントを作成
    2. Google Search Console にAPIカウントを紐づけ
    3. Google APIライブラリをインストール
    4. Googleにページ更新通知をPHPコードで送信
  3. 本当にGoogleのIndex化は早くなる?

インデックス化が早くなる(かもしれない)Indexing API

[Google] Indexing API の使い方

新しいページを作ったり、既存ページを更新したりしたときに、Google検索のインデックス化を早くすることができる(かもしれない)「Indexing API」というGoogle Cloud API。

先日、私が管理している各サイト(レンタルサーバ)にこのGoogle Indexing APIをPHPコードを使って導入したので、その使い方などを残しておきたいと思います。

このGoogle Indexing API は、公式には「現在、Indexing API は、JobPosting(求人情報)が追加されたページ、または VideoObject に BroadcastEvent(ライブ配信)が埋め込まれたページをクロールするためにのみ使用できます。」とアナウンスされていて、普通のページを更新した際にIndexNowのように更新通知を送るためのものとしては想定されていないのですが、実際に普通のページを更新したときにGoogle Indexing API を使用するとGoogleインデックスクローラーがすぐにやってきたと多数報告が上がっていたため、私もサイトに導入することにしましたが、Google的には推奨されていない使用方法となり、ペナルティの可能性が無いわけではないので、利用するかどうかはあくまで自己責任の上で行ってください。


Indexing API の使い方

では実際に Indexing API の使い方を順を追って紹介していきたいと思いますが、今回紹介するのはPHPコード(サンプルコードあり)を使ったものになり、また、Indexing APIを使用するためには、以下の項目が必要となりますので事前に用意をお願いします。

準備ができたら、以下の手順でGoogle Indexing APIをサーバに導入していきます。

大まかな流れとしては、Google Cloud API で Indexing API が使えるサービスアカウントを作成して、そのアカウントを Search Console に紐づけてSearch Console側で通知を受け取れるようにして、最後に実際にPHPコードでページ更新通知をGoogleに投げてやる感じになります。

なお、PHPサンプルコードだけ知りたい場合は「Googleにページ更新通知をPHPコードで送信」の項目を御覧ください。

Google Cloud API サービスアカウントを作成

[Google] Indexing API の使い方

まずはGoogle Cloud APIにログインして、Google Indexing API用のサービスアカウントを作成します。

トップページ左上の「プロジェクトの選択」をクリックすると、自分の持っているプロジェクト(アカウント内の大きなボックスのようなもの)が現れるので、Indexing APIを導入する既存のプロジェクトを選択するか、新しくIndexing API用のプロジェクトを作成します。

今回は新しいプロジェクト「Indexing」(名前は好きに付けてOK)を制作して、そのプロジェクトの中にサービスアカウントを作っていきます。

ウィンドウ右上の「新しいプロジェクト」を選択して新しいプロジェクトを作成しましょう。

[Google] Indexing API の使い方

プロジェクトの作成画面では「プロジェクト名」、「場所」(自分のアカウントのカテゴリのようなもの)を記入、選択します。プロジェクト名は任意でOKですが解説では「Indexing」というプロジェクト名にします。また場所は「組織なし」で続けます。

[Google] Indexing API の使い方

これで新しいプロジェクト「Indexing」が作成されました。

Google Cloud APIでは「プロジェクト」に「使用したいAPI」を登録し、そのAPIを管理する「サービスアカウント」を作成し、そのサービスアカウントを使ってAPIを利用する流れになります。

それでは、新しいプロジェクト名のリンクをクリックしてプロジェクトを設定していきます。

[Google] Indexing API の使い方

プロジェクトの設定画面に入ったら、左上にあるメニューアイコン(3本線)をクリックして「有効なAPIとサービス」を選択してください。すると画面には「使用できるAPIはまだありません」とアナウンスがありますので、ページ上部の「+APIとサービスを有効にする」を選択します。

[Google] Indexing API の使い方

そうすると「APIライブラリ」のページに行くので、画面中央の検索フォームに「index」と入力してAPIとサービスを検索してください。

[Google] Indexing API の使い方

検索結果には「index」のワードにヒットしたいくつかのAPIが現れ、その中に今回のお目当てのAPIである「Web Search Indexing API」も出てくるので、そちらを選択します。

[Google] Indexing API の使い方

Web Search Indexing API」の詳細ページにきたら青の「有効にする」ボタンを押して、プロジェクトにIndexing APIの使用権限を与えましょう。

なお、今回利用する Indexing API は、一日のページリクエスト上限が200までという制限はありますが、利用料金は無料となっています。

[Google] Indexing API の使い方

これでプロジェクトでIndexing APIが利用可能にはなりましたが、実際にSearch Consoleと紐づけて利用するためには自分のサーバとGoogle間で通信するための「認証情報 / サービスアカウント」が必要となります。

左上メニューから「認証情報」を選択して次へ進みます。

[Google] Indexing API の使い方

認証情報ページに入ったら、上のメニューバーから「+認証情報を作成」を選択し、そこから「サービスアカウント」を選択して次へ進みます。

[Google] Indexing API の使い方

サービスアカウント作成では、1番目のステップでは「サービスアカウント名」(好きな名前でOK)、「サービスアカウントID」(好きな半角英数字 / 他のアカウントと被らないもの)、「サービスアカウントの説明」(自分用のメモ)のフォームがあらわれるので全て入力して「作成して続行」をクリックしましょう。

[Google] Indexing API の使い方

続いてのステップはこのサービスアカウントの権限を設定しますが、ここでは「オーナー」を選択してください。

3番目のステップは今回は必要ないので無視して「完了」をクリックしてサービスアカウントを作成します。

[Google] Indexing API の使い方

サービスアカウントの作成が完了し、認証情報の「サービスアカウント」欄には先ほど制作したサービスアカウントが表示されます。しかしまだこの状態ではSearch Console上でこのIndexing API サービスアカウントが利用できないので、続けて設定していきます。

新しく作ったサービスアカウントの欄の右に編集(鉛筆マーク)ボタンがあるのでそこをクリックしてサービスアカウントの設定画面(IAMと管理)に入ります。

[Google] Indexing API の使い方

サービスアカウントの設定に入ったら、まずは「メール」の項目にあるメールアドレスをメモなどにコピーしておきます。

このメールアドレスは、Google Search Consoleの管理アカウントに登録するのに必要になるので控えておきましょう。

メールアドレスの控えが終わったら、上項目の「キー」を選択して次へ進みます。

[Google] Indexing API の使い方

ここでは認証キーを作成します。「鍵を追加」から「新しい鍵を作成」を選択します。

[Google] Indexing API の使い方

制作するキータイプは「JSON」タイプを選択し「作成」をクリックするとPCに秘密鍵のテキストファイルがダウンロードされます。

[Google] Indexing API の使い方

秘密鍵のダウンロードが終わると「秘密鍵がパソコンに保存されました」と表示されます。

なお、ダウンロードした秘密鍵のテキストファイルは無くしてしまうと復元が不可能となるので注意しましょう。またサーバの誰でも見えてしまう場所に保管して流出してしまうと、Indexing APIを不正利用されてしまうので、管理にも注意してください。

[Google] Indexing API の使い方

サービスアカウントの秘密鍵の作成が完了したら、これでGoogle Indexing API のGoogle Cloud APIでの作業は完了となります。

Google Search Console にAPIカウントを紐づけ

[Google] Indexing API の使い方

続いてのプロセスは、作成したIndexing APIのサービスアカウントをSearch Consoleに紐づける作業です。

Google Search Consoleにログインしたら「設定」から「ユーザーと権限」を選択します。

[Google] Indexing API の使い方

ユーザーと権限の設定画面になったら「ユーザーを追加」(青いボタン)を選択してください。

[Google] Indexing API の使い方

「ユーザーを追加」のフォームが現れたら、メールアドレス欄に先ほど作成したサービスアカウントのメールアドレスを入力し、権限を「オーナー」に設定して「追加」をクリックしてユーザーを追加します。

なお、権限は「オーナー」の他に「フル」と「制限付き」がありますが、「オーナー」以外の権限のサービスアカウントでは、更新通知を送ってもSeach Console側で拒否されてしまうので、ここでは必ず「オーナー」権限を設定してください。

[Google] Indexing API の使い方

INDexing APIのサービスアカウントがユーザーに追加されれば、これでSearch Console側の準備も完了となり、あとは実際にPHPコードを使って、ページ更新通知をGoogleに送信する作業になります。

Google APIライブラリをインストール

[Google] Indexing API の使い方

今回用意しているPHPコードは、Google APIライブラリを使用したものとなっているため、PHPコードを走らせる前にお使いのサーバにGoogle APIライブラリをインストールします。

Google APIライブラリはGithubに用意されているため、composerコマンドが使える場合は、以下のコマンドでサーバに直接インストールできるようですが…

%H%composer require google/apiclient%H%

うちのサーバはcomposerが使えないので、githubからコードをダウンロードして、それを丸ごとサーバの適当な場所にアップロードします。

Github : Google APIライブラリ

Google APIライブラリは上記URLよりダウンロードできますが、種類がPHP7.4用、8.0用、8.2用とあるので、自分のサーバのPHP環境に合わせたものをダウンロードして解凍したら、それを丸ごとサーバ上に上げればインストール完了です…が、ファイル容量が合計140MBほど、ファイル数も異様に多いのでサーバへのアップロードはかなり時間がかかると思います。

APIライブラリは、このIndexing API用のモジュールだけでなく、Analytics連携のものや、その他様々なGoogle Cloud APIのモジュール、そしてよく使われるguzzlehttpなどのAPIも含まれています。必要なものだけアップロードするのでも使えるとは思いますが、変になっても嫌なので、私はすべてをアップロードしました。

Googleにページ更新通知をPHPコードで送信

サーバにGoogle APIライブラリをインストール出来たら、後は下記PHPサンプルコードを使って、Googleにページ更新通知を送ります。

%H%
function gindexing($urls){
*b**t*require_once 'yourserverpath/google-api-php-client/vendor/autoload.php'; //APIライブラリの読込パス
*t*$site="yoursite.com";
*b**t*if(is_string($urls)){
*t**t*$urls=[$urls];
*t*}
*b**t*$client = new Google_Client();
*t*$client->setAuthConfig('yourjsonfile.json'); //秘密鍵のjsonファイルパス
*t*$client->addScope('https://www.googleapis.com/auth/indexing');
*b**t*$httpClient = $client->authorize();
*t*$api = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
*b**t*$resCode="200";
*b**t*foreach($urls as $v){
*t**t*$post = '{
*t**t**t*"url": "'.$v.'",
*t**t**t*"type": "URL_UPDATED"
*t**t*}';
*t**t*$response = $httpClient->post($api, [ 'body' => $post ]);
*t**t*$statusCode = $response->getStatusCode();
*t**t*if($resCode!=$statusCode && $statusCode!="200"){
*t**t**t*$resCode=$statusCode;
*t**t*}
*t*}
*t*return $resCode;
}%H%

最初の require_once はサーバにインストールしたGoogle APIライブラリのvendorディレクトリ直下のautoload.phpを読み込むことで、APIライブラリを使用可能になり、new Google_Client() や Guzzleのpost() などが使用可能となります。

$siteにはページ更新を送りたいドメイン(https://は入れない)を設定し、yourjsonfile.json にはダウンロードした秘密鍵のファイルパスを設定します。なお秘密鍵ファイルは安全上、外部からアクセスできない場所に置いておきましょう。

また今回用意したPHPコードの関数 gindexingの変数 $urlsには更新通知をしたいURLを入れれば単発で更新通知を発信しますが、配列形式で複数のURLを送信することも出来ます。

そうしてGoogleに送信通知が完了したら、最後に送信結果のステータスコードを返します。ステータスコードが200であれば送信成功、それ以外であればエラーになっているので、エラー箇所を修正しましょう。

なお、URL送信の typeURL_UPDATED / ページ更新 となっていますが、ここを URL_DELETED にすればページの消去通知を送信できます。


本当にGoogleのIndex化は早くなる?

[Google] Indexing API の使い方

最初のGoogle Cloud APIのサービスアカウント作成から、Search Consoleへのサービスアカウント紐づけという面倒くさい準備段階を経て、やっとコードを使って送信が可能となるGoogle Indexing APIですが「こんなに苦労して実装して本当にGoogle Index化は早くなるの?」という疑いが出てきますよね。

実際に私がこのGoogle Indexing APIを実装してページ更新通知に運用してみた体感としては「意外と効果があるのかも?」といった感じです。

まだ立ち上げから日が浅いサイトというのは、サイトマップを作っても1ヶ月ぐらい掛かってやっとグーグルのクローラーがやってきてインデックス化したりしていたものですが、このIndexing APIを実装した若いサイトは新しいページが数日でインデックス化されたりしていたりもします。

ただ、ページによっては全然インデックス化されないページもあったりと、本当に効果があるのかどうかは怪しい所ではあるので、Indexing APIを採用する時は気休め程度に実装してみるのが良いと思います。

悩めるSEO対策。このIndexing APIの実装方法が何かのヒントになれば幸いです。