はじめに
Google Search Consoleで「検出 - インデックス未登録」となっているURLに対してリクエストを出すPythonコードと 関連する設定をまとめてみました。
方法
Google Cloud上の設定
まだプロジェクトを作成していない場合は作成しておく
- APIとサービス > +APIとサービスの有効化 >
Web Search Indexing API
を検索して有効化 - APIとサービス > 認証情報 > +認証情報を作成 > サービスアカウント
- サービスアカウントの詳細
- サービスアカウント名: 好きなもの
- サービスアカウントID: 自動入力
- ここで作成されるメールアドレスをメモっておく!
- サービスアカウントの説明: 空欄でも可
- このサービスアカウントにプロジェクトへのアクセスを許可する(省略可)
- ロール: オーナー
- ユーザーにこのサービスアカウントへのアクセスを許可(省略可)
- 空欄のまま完了
- サービスアカウントの詳細
- APIとサービス > 認証情報 > +認証情報を作成 > サービスアカウント > 作成したアカウントの編集画面に > キー > 鍵を追加 > 新しい鍵を作成
- キーのタイプ: JSON
Google Search Console上の設定
- 設定 > ユーザーと権限 > ユーザーを追加
- メールアドレス: 上記でメモったメールアドレス
- 権限: オーナー
Python
ライブラリのインストール
$ pip install google-auth google-api-python-client
スクリプト
def request_indexing(url):
# サービスアカウントのJSON鍵ファイルへのパス
KEY_FILE = 'path/to/your.json'
# インデックス登録したいURL
url = 'https://example.com'
# サービスアカウントの認証情報を設定
credentials = service_account.Credentials.from_service_account_file(
KEY_FILE, scopes=['https://www.googleapis.com/auth/indexing'])
# Google Indexing APIのサービスを構築
service = googleapiclient.discovery.build('indexing', 'v3', credentials=credentials)
# インデックス登録のリクエストを作成
body = {
'url': url,
'type': 'URL_UPDATED'
}
# リクエストを実行
response = service.urlNotifications().publish(body=body).execute()
# レスポンスを表示
print(response)