skip to content
barorin&?

GoogleのIndexing APIをPythonから叩いてみる

/ 2 min read

はじめに

Google Search Consoleで「検出 - インデックス未登録」となっているURLに対してリクエストを出すPythonコードと 関連する設定をまとめてみました。

方法

Google Cloud上の設定

まだプロジェクトを作成していない場合は作成しておく

  1. APIとサービス > +APIとサービスの有効化 > Web Search Indexing APIを検索して有効化
  2. APIとサービス > 認証情報 > +認証情報を作成 > サービスアカウント
    • サービスアカウントの詳細
      • サービスアカウント名: 好きなもの
      • サービスアカウントID: 自動入力
        • ここで作成されるメールアドレスをメモっておく!
      • サービスアカウントの説明: 空欄でも可
    • このサービスアカウントにプロジェクトへのアクセスを許可する(省略可)
      • ロール: オーナー
    • ユーザーにこのサービスアカウントへのアクセスを許可(省略可)
      • 空欄のまま完了
  3. 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)