Hero img
Google Indexing APIをnode.jsで登録する

Google Indexing APIでサイトを登録ができました。

サイトマップ送信してもクロールが遅く登録されない問題やなぜか登録されないことが多くあったのでGoogle Indexing APIを使ってクロールさせました。phpではなくnode.jsで使いたかったのでサンプルを探すのも一苦労だった。


目次

  • Indexing API
  • 使用したもの
  • Indexing APIを使うために
  • Google Cloud Platformの作業
  • プロジェクトの作成
  • Indexing APIの有効化
  • google search console作業
  • アカウントの追加
  • NodejsでHTTP POST
  • ソースコードを修正する
  • 実行してみる
  • まとめ

Indexing API

gatsbyを使用してブログを作成しているが、google search consoleのサイトマップ登録だけではインデックス未登録が多発している。今回Indexing APIを使用すると解決するのでは?ということで
効果がありそうなIndexing APIを使ってgoogleボットさんにクロールを促せました。
HTTP POST実行ですぐにクロールしてくれるので試してみました。

使用したもの

  • Google Cloud Platform(GCP)
  • google search console
  • nodejs

Indexing APIを使うために

まずIndexing APIを使うには

  • Google Cloud Platform(GCP)のプロジェクト作成
  • Indexing APIの有効化
  • google search consoleにメールアドレスの追加
  • HTTP POST
    主にこれらの作業が必要になる。GCPの作業が多少あり、使ったことがほとんど無い私は登録するのに時間がかかってしまった。
    また、HTTP POSTのサンプルを探してみたのだが、PHPのサンプルは多くヒットするがnodejsはあまり見当たら無かったので苦労した。

Google Cloud Platformの作業

プロジェクトの作成

  1. 1.GCPにアクセスし、プロジェクトを作成します。 プロジェクト名は分かりやすい名前にしてください。
createproject indexname
  1. 2.サービスアカウントを作成します。 createserviceaccount サービスアカウントの画面が見当たらない場合はここから createserviceaccount

  2. 3.サービスアカウントに必要な項目を記入してください。 serviceaccount_detail

  3. 4.サービスアカウントの鍵の作成

servicekey createservicekey
  1. 5.鍵のダウンロード(json)

    作成ボタンで自動的にダウンロードされます。 とても大事な情報になっているため絶対に公開、配布等を行わないでください。 createservicekey_selectjson savedjsonfile

Indexing APIの有効化

上の検索欄から「Indexing API」を検索して有効化します。 findindexingapi enable_indexingapi

以上でGCPでの作業が終わりました。

google search console作業

アカウントの追加

  1. 1.google search consoleでログインしアカウントの追加を行います。

権限はオーナーで登録します。 googlesearchconsole_adduser

e-mail名はGCPで鍵(json)をダウンロードしたファイルに記載されています。 googlesearchconsole_usersettings

client_email"の部分 indexser..........comです。 googlesearchconsole_client_email

これでgoogle search console全ての作業が終わりました。あとはgoogleさんにクロールしてくれと命令を出すだけです(HTTP POST)

NodejsでHTTP POST

nodejsでのサンプルソースを探しましたがあまりヒットしませんでした。PHPができる方はそちらの方がいいと思います。

nodejsソースが見つかったのでそちらからダウンロードして使用しました。
gitからダウンロードしてください。

ソースコードを修正する

GCPで鍵ファイル(json)を同じフォルダーに持って来ます。 indexing-api-files

  1. 1.パッケージをダウンロードする
  npm install

成功すると「node_modules」フォルダーが追加されます。 addnodemodules

  1. 2.index.jsを修正する。
index.js
  //4行目を鍵(json)ファイル名に変更
  //GOP設定でjson形式でダウンロードしたファイルの事です。
  var key = require('./service_account.json');//<--ダウンロードしたjsonファイルを指定します。
  //私の場合はvar key = require('./blogindex-360303-1daa248347e7.json');です
//14行目
const batch = fs
  .readFileSync('urls.txt')
  .toString()
  //.split('\n'); //<--ここを
   .split('\r\n'');//<--に変更する
  1. 3.url.txtに送信するサイトURLの記入 index.jsにsplit('\r');とあったのでサイトURLごとに改行しています。
urls.txt
https://yumeno-me.com/web/aws_s3/
https://yumeno-me.com/web/gitaction/
https://yumeno-me.com/web/gatsby_2/

実行してみる

node index.jsで実行するとこのような結果になるはず

--batch_sdIKj05-fzhsyCOsPYBFFJ4usKQdnzIf
Content-Type: application/http
Content-ID: response-
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{
  "urlNotificationMetadata": {
    "url": "https://yumeno-me.com/category/3d/",
    "latestUpdate": {
      "url": "https://yumeno-me.com/category/3d/",
      "type": "URL_UPDATED",
      "notifyTime": "2022-22-22T05:16:41.652104915Z"
    }
  }
}

HTTP/1.1 200 OKが出たら成功しています。 403等が出た時はちゃんとログを読んでみましょう。 もしかするとGCPのIndexing APIが有効になっていなかったり、サービスアカウント鍵(json)が間違ってたりしているかもしれません。

正常に動作している場合は早くて5分後にはgoogle search consoleでクロールが実行された事が確認できました。 1日かかる場合もありました。 Crawl

google search consoleで反映されていないときはキャッシュ等を削除したら表示されるかも、または、URLを検査してみると登録されていることになっている。 google search consoleはグラフ等結果の反映が時間がかかるよう。なのでだいたい一週間ぐらい気長に待つ必要がある。

他の確認方法としては実際にグーグルで検索してみます。

「site:DomainName」で結果が分かります。 sitedmain

まとめ

SEOに効果がありそうなIndexing APIを使ってgoogleボットさんにクロールを促せました。
結果から言うとクロールはすぐに実行され、URLを検査で登録を確認することができた。 このapiはペナルティーがないと言われているが、乱用は禁物。どうしても登録できない場合や、急ぎの場合使うのが良さそうです。
本来の目的は、頻繁に更新が入る求人サイトのようなところで使うことを想定されているようです。

nodejsでのプログラムで動くものができたので今後別のサイトでも簡単に使用ができるようにできた。
sitemapだけではどうしても反映が遅い、Indexing APIはすぐクロールを実行してくれるのでサイト運営には必要だと感じる。

関連記事

コメント

コメントを書く

質問や、間違いがありましたら、お気軽にどうぞ

※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください