PHP+LaravelでGoogle しごと検索の Indexing APIを呼び出す


はじめに

Google しごと検索が日本でもリリースされました。求人情報をGoogleの検索結果に表示することができるようになります。

検索結果例

Googleによると、必要な手順は大まかに以下の3つになります

  1. 求人情報を構造化データ(JobPosting)でマークアップ
  2. Indexing APIを利用して更新/削除情報をGoogleに通知

1はGoogleの資料、構造化データタイプの定義を参照

2のIndexing APIをPHP+Laravelから利用してみます。なお、今日時点でIndexing APIの利用は無料です。

LaravelでGoogle しごと検索の Indexing APIを呼び出す

Google提供のクライアントライブラリをcomposerでプロジェクトに追加します。
https://github.com/googleapis/google-api-php-client

お約束。composer require

composer require google/apiclient:"^2.0"

composer.jsonにgoogle/apiclientが追加されました。

// (略)
  "require": {
    "php": "^7.1.3",
    "chillerlan/php-qrcode": "^2.0",
    "davejamesmiller/laravel-breadcrumbs": "5.x",
    "doctrine/dbal": "^2.5",
    "encore/laravel-admin": "1.6.*",
    "fideloper/proxy": "^4.0",
    "google/apiclient": "2.0",
// (略)

ライブラリインストールします

composer install

ライブラリが利用できるか確認するために、適当に呼び出してみました

use Google_Client;

// 略

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey("YOUR_APP_KEY");
dd($client->getAccessToken());

=> null

よさそう。

続いて、
https://developers.google.com/search/apis/indexing-api/v3/prereqs?hl=ja
にあるPHPサンプルコードを貼り付けてみます
(jsonファイルはGoogle APIs コンソールから入手してconfigフォルダに置いた)

$client = new Google_Client();

$client->setAuthConfig('./config/ivory-totem-999999-1234567890.json');
$client->addScope('https://www.googleapis.com/auth/indexing');

$httpClient = $client->authorize();
$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

$content = '{
    "url": "https://job.e2info.co.jp/job/4611",
    "type": "URL_UPDATED"
}';

$response = $httpClient->post($endpoint, ['body' => $content]);

dd($response);

=> GuzzleHttp\Message\Response {#1000
  -reasonPhrase: "OK"
  -statusCode: 200
  -effectiveUrl: "https://indexing.googleapis.com/v3/urlNotifications:publish"
  -headers: array:11 [
    "content-type" => array:1 [
      0 => "application/json; charset=UTF-8"
    ]
    "vary" => array:3 [

なんと、Index送信成功しました

注意事項

  • Google曰く、サイトマップよりIndexing APIの使用をおすすめするが、サイトマップ送信もしましょうとのこと。つまり両方やったほうがいいです(文献

まとめ

ということで、あっという間に完成してしまいました。

終わり