Cover Image for indexing API を使ってNext.jsで作ってるブログの全ページをGoogleの indexに登録する

indexing API を使ってNext.jsで作ってるブログの全ページをGoogleの indexに登録する

概要

Next.jsで作ってるブログの記事がGoogleにindexされてないので困っている。 ひとつづつ Search Console からクロールリクエストをあげても、らちが開かないのでまとめて index に登録されるように処理する。

手順

indexing API を使用するための前準備

基本的に Indexing API を使用する前提条件 の通り設定する

  • 前提としてGCPにアカウントを持っている必要がある
    • 持ってなければ作る
  • セットアップ ツール でプロジェクトの作成と有効化を行う
  • サービスアカウントを作って、サイト所有者として追加する

indexing API を使ってリクエストする

node用のクライアントライブラリをインストール

node用のクライアントライブラリ をインストールしておく

yarn add -D googleapis

リクエスト用のツールを作る

こんな感じで作っておく

// tools/indexing.js
var { google } = require('googleapis')  
var axios = require('axios')  
var key = require('./service_account.json')  
  
const jwtClient = new google.auth.JWT(  
  key.client_email,  
  null,  key.private_key,  
  ['https://www.googleapis.com/auth/indexing'],  
  null)  
  
jwtClient.authorize(async function (err, tokens) {  
  if (err) {  
    console.log(err)  
    return  
  }  
  const urls = [  
    // TODO: ここにindexに追加したいURLをいれる  
    ''  
  ]  
  await Promise.all(  
    urls.map(url => {  
      const options = {  
        url: 'https://indexing.googleapis.com/v3/urlNotifications:publish',  
        method: 'POST',  
        headers: {  
          'Content-Type': 'application/json',  
          Authorization: `Bearer ${tokens.access_token}`  
        },  
        data: {  
          url,  
          type: 'URL_UPDATED'  
        }  
      }  
      return axios.request(options).then(res => console.log(res))  
    })  
  )  
})

リクエストする

node tools/indexing.js

こんな感じで実行する

Search Console で結果を確認する

実行前

トップページなど何ページかしかindexされてない残念な状態

実行後

反映に何日かかかるので数日後に確認する(今回は2020/05/07 20:30 ごろ実行した)

大半は登録されたのでOK(登録されてない奴は処理から漏れてたっぽいので後日対応した)