omega blog

tech memo

golangでgoogleのindexing APIを使う

goでgoogleのindexing api を使う機会があったのでその覚書き。

基本的にこの手順に沿ってやればOK

Indexing API を使用する前提条件

このページの手順に沿って準備していく。

developers.google.com

いくつか補足:

  • サイトの所有権を確認するときはGoogleTagとかでもできる。便利だしDNS確認とかするより遥かに楽。

  • ウェブマスターセントラルのプロパティはオーナーじゃないと追加したり確認の詳細が見れないしいじれない

  • このツールはまもなく利用できなくなります。確認トークンは Search Console で直接管理してください。 と警告がでるけど、2023年4月現在において、Search Consoleで「サイト所有者を追加」してもAPIが使えない。ウェブマスターセントラルのプロパティで、「確認の詳細」を押す→「確認済みサイト所有者」にサービス アカウント IDを追加しないといけない。

    • 登録するサービスアカウントはcredential.jsonをダウンロードしたアカウント

APIを使えるようにする

  • Google Cloud Platform で任意のプロジェクトを選択後、indexingと検索して「indexing API」を選択し、APIを有効にする。

大体の実装

import (
    "fmt"

    indexing "google.golang.org/api/indexing/v3"
    "google.golang.org/api/option"
)


:

func urlIndexingUpdate (ctx context.Context) error {

    indexingService, err := indexing.NewService(context.Background(), option.WithCredentialsJSON(PATH_TO_JSON_ENV)))
    if err != nil {
      return nil, fmt.Errorf("failed to create indexing service: %w", err)
   }

    // update indexing
    targetUrl:= "https://hogehoge.jp/xxxxxx"
    _, err = indexingService.UrlNotifications.Publish(&indexing.UrlNotification{
        Url:  targetUrl,
        Type:  "URL_UPDATED",     // or "URL_DELETED"
    }).Do()

    if err != nil {
        return fmt.Errorf("failed to indexing: %w", err)
    }

    return nil
}