golangでgoogleのindexing APIを使う
goでgoogleのindexing api を使う機会があったのでその覚書き。
基本的にこの手順に沿ってやればOK
Indexing API を使用する前提条件
このページの手順に沿って準備していく。
いくつか補足:
サイトの所有権を確認するときは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 }