見出し画像

【PHP】Google Indexing API により最速でインデックス登録する方法(すぐ動作するスクリプトあり)

皆さんサイトが Google 検索でヒットするよう、サイトをリリースしたら Google Search Console にサイトを登録して、[サイトマップ]メニュー →[新しいサイトマップの追加]よりインデックス登録したいURLを記載した sitemap.xml をアップロードしたりするかと思います。

最近特にかもしれませんが、ここから長期間経過してもインデックス登録されないことが頻繁に発生するように思われます。
この場合、[Google Search Console]→[ページ]より確認すると「検出 – インデックス未登録」と表示された状態になります。
以前は数日待ってクローラが巡回すれば「インデックス登録済み」に変更されていた気がしますが、最近実際に試した実績では、2023年10月月初に「検出 – インデックス未登録」状態だったページが「インデックス登録済み」になるまでに丸2ヶ月もかかりました。
サイト運営サイドとしては、一日も早く「インデックス登録済み」にしたいところだと思います。

手動で「インデックス登録済み」にできる簡単な方法として、「検出 – インデックス未登録」の行をクリック → 対象となるURLをクリック
→[URLを検査]→[インデックス登録をリクエスト]より登録すれば、数時間後に「インデックス登録済み」となりますが、[インデックス登録をリクエスト]をクリックした際の待ち時間が30秒~2分程度かかるので、これを1件1件やるのは、かなり手間がかかる作業になります。

そこで、現時点で一番手間がかからず確実な方法と思われる、Google Indexing API経由でのインデックス登録方法を紹介させていただきます。
検索すると、やり方を紹介しているサイトはいくつかあると思いますが、ここでは最後にPHPですぐに使えるスクリプトを掲載します。


前提として作業開始前の時点でインデックス登録したいサイトが Google Search Console 上でプロパティ登録され
[Google Search Console]→[設定]メニュー →[全般設定]→[所有権の確認]において「あなたは確認済みの所有者です」となり
[URL検査]メニューから[インデックス登録をリクエスト]できる状態になっているを確認してください。

Google Cloud Platform

●Web Search Indexing API の有効化

Google Cloud Platform へアクエセス
https://console.cloud.google.com/flows/enableapi?apiid=indexing.googleapis.com&credential=client_key&pli=1
対象のプロジェクトを選択(なければ「新しいプロジェクトとして追加」)して[API へのアクセスの有効化]を行う。

→[APIとサービス]→[有効なAPI とサービス]より[Web Search Indexing API]が利用可能になってることを確認する。

APIとサービス画面

●サービスアカウントの作成

[IAMと管理]メニュー →[サービス アカウント]
→[サービス アカウントを作成](CREATE SERVICE ACCOUNT)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
サービス アカウント名 :indexing_api_sample
サービス アカウントID :indexing_api_sample(自動発行される)
サービス アカウンの説明 :Indexing API 実行用(任意)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━→

[このサービス アカウントにプロジェクトへのアクセスを許可する]
→ ロールを選択:「オーナー」をセット →[続行]

→[ユーザーにこのサービス アカウントへのアクセスを許可]は省略
→[完了]

メールアドレス indexing-api-sample@sample-xxxxx.iam.gserviceaccount.com(例)が自動発行され、サービスアカウントの一覧に追加されている。

サービス アカウントの詳細画面

●鍵の作成

indexing-api-sample@sample-xxxxx.iam.gserviceaccount.com の右の縦三点リーダーメニュー →[鍵を管理]
→[鍵を追加]→[新しい鍵を作成]→[JSON]→ 作成した鍵がローカルにダウンロードされる。
※APIの実行時にダウンロードしたファイル「sample-XXXXXX-37a4383e6cdd.json」を setAuthConfig() 関数で指定する。

●APIリクエストの上限について

[APIとサービス]メニュー →[有効なAPI とサービス]→[Web Search Indexing API]→[割り当てとシステム制限]タブ →[Publish requests per day]より一日にインデックス登録リクエストが可能な値を確認できる。
デフォルト値は200になっており、上限を上げるには Google への申請が必要になる。

割り当ての変更画面

右上の[割り当てを編集]→[割り当ての増加を申し込む]より問い合わせフォームが表示され、新しい割り当て値の申請ができるようになっているが、申請後許可されるまで2~3週間かかり、許可されたかどうかの通知は来ない。(因みに試しに申請してみたがだめだったようです。)

※[割り当てを編集]リンクが無い場合
画面右上にアップグレードボタンが表示されているはずなので、先にアップグレードボタンから有料アカウントにアップグレードする必要があります。有料アカウントといっても完全従量なので固定月額は無しです。

Google Search Console

●サービスアカウントとの紐付け

[Google Search Console]→[設定]メニュー →[全般設定]→[ユーザーと権限]より[ユーザーを追加]→ 以下の設定で追加して Google Cloud Platform で作成したサービスアカウントとの紐付けを行います。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
メールアドレス indexing-api-sample@sample-xxxxx.iam.gserviceaccount.com
権限 オーナー
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PHP実装

●HTML

フォームにインデックス登録したいURLを複数行を入力して下さい。
一括で複数ページをインデックスを登録できます。

入力画面
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
</head>
<body>

<h1 class="title-page">Indexing API 実行</h1>
<form role="form" action="http://sample.com/GoogleIndexing.php" method="post">
	<div>
	    <textarea name="url" placeholder="URLを登録(複数行可)" rows="20" cols="100"></textarea>
	</div>
    <button type="submit" class="btn btn-outline-secondary mr-5" name="mode" value="status">登録確認</button>
    <button type="submit" class="btn btn-outline-secondary mr-5" name="mode" value="add">登録</button>
</form>

</body>
</html>

登録ボタンでインデックス登録、登録確認ボタンでインデックスの登録状態を確認できます。

●PHP

適宜 google/apiclient をインストールしてパスを指定して下さい。

ここから先は

3,407字 / 1ファイル

¥ 500

この記事が気に入ったらチップで応援してみませんか?