Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

検索結果例
capture1.PNG

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送信成功しました:yum:

注意事項

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

まとめ

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

終わり

kaneko_tomo
スーパーエンジニアです!focus on LAMP Application / PHP, Laravel, MySQL/MariaDB and AWS.
https://www.e2info.co.jp/
e2info
イーツー・インフォはITと人の力でお客様の課題を、ベストな解決策でいい明日へ導くITのプロフェッショナル集団です
https://www.e2info.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away