Pythonで始めるGoogle Search Console API:セットアップから動作確認まで解説

※当サイトは、アフィリエイト広告を利用しています。

くれとむ

最近、Google Search Console APIを使ってみたんだ!

チーズくん

どんなことができるの?

くれとむ

Google Search Consoleから取得したデータをもとに、特定のキーワードに対するクリック数やインプレッション数をグラフで表示するダッシュボードを作成したり、競合分析を行ったりもできるんだ。

チーズくん

それはすごく面白そうだね!Google Search Console APIを使うのは難しくないの?

くれとむ

初めはAPIの仕組みが少し複雑に感じたけど、公式ドキュメントを読んだり、サンプルコードを参考にしたりして理解を深めたよ。APIを使うことで、ウェブサイトのパフォーマンスや検索結果の分析に役立つ情報が得られるから、ぜひ挑戦してみる価値があると思ったよ。

SEOやブログ運営の最適化にはデータ分析が欠かせません。
Google Search Console APIを利用すれば、手動操作を減らし、自動的にサイトのパフォーマンスデータを取得・保存できます。

本記事では、Pythonを使ってAPIと連携し、データ取得からCSV保存までの実用的な方法を解説します。Google Search Console APIに興味がある方は、ぜひご覧ください。

本記事で使用するコードのgithub

本ブログで用いているプロジェクトはGitHubリポジトリで公開しています。
以下のリンクからダウンロードしてください。
https://github.com/my-repo-441/search-console-python-setup-demo

Google Search Console APIとは?

Google Search Console APIは、Google Search Console の機能やデータにプログラムを通じてアクセスできるインターフェースです。
通常はブラウザで手動操作を行うSearch Consoleのデータを、APIを使うことで自動的に取得・管理することが可能になります。

Google Search Console APIでできること

  1. プログラムによる自動化:
    • 検索パフォーマンスデータの取得や保存、エラー情報の収集を自動化できます。
    • 特に、複数サイトを管理している場合や大量のデータを処理する場合に便利です。
  2. SEO分析を効率化:
    • 指定した日付範囲のクリック数、表示回数、CTR(クリック率)、平均順位を取得。
    • 検索クエリ、ページ、国、デバイスごとにフィルタリングが可能。

前提条件

Google Search APIを利用するには、いくつかの前提条件を満たしている必要があります。
まずは事前に以下を確認してください。

前提条件
  • Google Search Consoleにサイトが登録されていること
  • Googleアカウントに必要な権限が付与されていること
  • Search Console APIのセットアップが完了していること
  • Python環境が構築されていること

Google Search Consoleにサイトが登録されている

Googleアカウントに必要な権限が付与されている

  • 使用するGoogleアカウントが、対象サイトに対して「オーナー」または「フルユーザー」の権限を持っていることを確認してください。
  • 権限の確認方法:
  1. Google Search Consoleで対象サイトを選択。
  2. 左側メニューの「設定」→「ユーザーと権限」から確認可能です。

Search Console APIのセットアップが完了している

  • Google Cloud Console でSearch Console APIの設定が完了している必要があります
  • セットアップ手順は、後述します。

Python環境が構築されている

以下のライブラリがインストールされているPython環境が必要です。
以下のgithubからクローンして、本プロジェクトで用いている依存関係ライブラリのインストールを実行してください。

  • githubから本ブログのプロジェクトをクローンするコマンド
git clone https://github.com/my-repo-441/search-console-python-setup-demo.git
  • 必要なライブラリを一括インストールするコマンド
cd search-console-python-setup-demo
pip install -r requirements.txt

Google Search Console APIのセットアップ

まずはGoogle Cloud Platform (GCP)でプロジェクトを作成し、Search Console APIを有効化します。

手順:

  1. GCPでプロジェクトを作成(例:Search Console Dashboard Project
  2. Search Console APIを有効化
    • 作成したプロジェクトを選択している状態で、左メニューから「APIとサービス > ライブラリ」を選択。
    • 検索バーに「Search Console API」と入力して検索。
    • Search Console API」を選択し、「有効にする」をクリック。
  3. OAuth 2.0 クライアントIDとシークレットを取得(※)
    • OAuth同意画面の設定
      • 左メニューから「APIとサービス > 認証情報」を選択。
      • OAuth同意画面」タブをクリック。
      • 必要な情報を入力:
        • ユーザータイプ: 「外部」を選択(公開しない場合でも適切に動作します)。
        • アプリ名: 任意の名前を入力(例: Search Console Dashboard)。
        • サポートメール: アプリ管理者のメールアドレスを選択。
        • アプリドメイン(省略可能): 必要に応じて入力。
        • 承認済みドメイン: 使用するアプリケーションのドメインを入力(ローカル開発の場合は不要)。
        • デベロッパーの連絡先情報: メールアドレスを入力。
      • 保存して続行」をクリック。
  4. 必要なスコープ(https://www.googleapis.com/auth/webmasters.readonly)を設定
    • スコープの設定方法
      • OAuth認証フローの実装時に、上記のスコープをリクエストに含めます。
  5. OAuth 2.0 クライアントIDとシークレットを取得
    • 左上のナビゲーションメニュー(≡)をクリックし、「APIとサービス > 認証情報」を選択。
    • 認証情報を作成」をクリックし、「OAuth 2.0 クライアントID」を選択。
    • 以下を設定します:
      • アプリケーションの種類: 「Webアプリケーション」を選択。
      • 名前: 任意の名前を入力(例: Search Console API)。
      • 承認済みのリダイレクトURI:
        • 開発環境では http://localhost:5000 を使用。
        • 必要に応じて本番用のリダイレクトURIを設定(例: https://your-app-url.com/auth/callback)。
    • 設定が完了したら「作成」をクリックすると、クライアントIDクライアントシークレットが表示されます。
    • DOWNLOAD JSON」ボタンをクリックして、client_secret.json ファイルを取得します。
OAuth 2.0が必要な理由

(※)Google Search Console APIがOAuth 2.0を必要とする理由は以下です。

  • ユーザーの個別認証が必要:
    • Search Consoleのデータは、特定のGoogleアカウントに紐づいており、エンドユーザーがそのデータの所有者または管理者であることを認証する必要があります。
  • ユーザーの明示的な同意が必要
    • Googleはプライバシーを保護するため、ユーザーにデータアクセスの許可を求める設計になっています。

Search Console APIの動作検証

以下の手順で、Search Console APIの動作検証を行います。

  • Step1: 認証情報を取得し、credentials.pkl を生成。
  • Step2: Google Search Consoleに登録されたサイト一覧を取得。
  • Step3: 指定したサイトの検索分析データを取得し、CSV形式で保存。

これらのスクリプトを順番に実行することで、Search Console APIの動作を確認できます。

Step1: 認証 (step1_authenticate.py)

このコードは、OAuth2.0認証の実行に関する処理です。
具体的には以下の処理を行います:

  1. ユーザー認証フローの開始
    • Googleアカウントでログインし、アプリケーションにデータアクセス権を付与。
  2. アクセストークンの取得
    • 認証後に得られるトークンを使用して API にアクセス可能な状態を作る。

自身のOAuth2.0のシークレットをプロジェクトのルートディレクトリに格納してください。
client_secret.jsonは自身のシークレットのファイル名に置き換えてください。

from google_auth_oauthlib.flow import InstalledAppFlow
import pickle

# スコープを設定
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']

# OAuth 2.0 認証フロー
flow = InstalledAppFlow.from_client_secrets_file(
    'client_secret.json', SCOPES)

# ポートを固定してローカルサーバーを起動
credentials = flow.run_local_server(port=8080)

# 認証情報を保存
with open('credentials.pkl', 'wb') as token:
    pickle.dump(credentials, token)

上記のコードを実行すると、コンソール画面に以下のようにURLが出力されます。

# 実行例
python step1_authenticate.py 
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxxxxxxxxxx~~

このURLにアクセスすると、以下のようなGoogleアカウントの認証画面に遷移します。
認証に用いる自身のGoogleアカウントを選択してください。

内容に問題がなければ、「続行」を押下してください。

認証が完了したという旨のメッセージが表示されます。
このメッセージが表示されれば、ウィンドウを閉じても大丈夫です。

よくあるエラー解決

アクセスをブロック: このアプリのリクエストは無効です。というエラーが出る場合は、
OAuth 2.0 クライアントIDの設定画面のAuthorized redirect URIsでhttp://localhost:8080/が許可されていることを確認してください。

Step2: サイト一覧の取得 (step2_list_sites.py)

以下のコードを実行してください。
自身のGoogleアカウントに紐付けられたブログサイトのタイトルが出力されるはずです。

from googleapiclient.discovery import build
import pickle

# 保存された認証情報を読み込む
with open('credentials.pkl', 'rb') as token:
    credentials = pickle.load(token)

# Search Console API サービスを作成
service = build('searchconsole', 'v1', credentials=credentials)

# サイト一覧を取得
response = service.sites().list().execute()
print("サイト一覧:")
for site in response['siteEntry']:
    print(f"サイトURL: {site['siteUrl']}, 権限レベル: {site['permissionLevel']}")
# 実行
python step2_list_sites.py 

# 出力例
サイト一覧:
サイトURL: https://www.example.com/, 権限レベル: siteOwner

Step3: 検索分析データの取得と保存 (step3_query_data.py)

このコードは、Google Search Console APIを使用して、特定のサイト(https://www.example.com/)に対する検索分析データ(クリック数、表示回数、CTR、平均順位など)を取得し、その結果をCSVファイルに保存するものです。https://www.example.com/の部分は、自身のサイトURLに置き換えて実行してください。

from googleapiclient.discovery import build
import pickle
import csv

# 保存された認証情報を読み込む
with open('credentials.pkl', 'rb') as token:
    credentials = pickle.load(token)

# Search Console API サービスを作成
service = build('searchconsole', 'v1', credentials=credentials)

# 対象サイトのURLを指定
site_url = 'https://www.example.com/'

# 検索分析データを取得
query_request = {
    'startDate': '2023-12-01',
    'endDate': '2023-12-31',
    'dimensions': ['query'],
    'rowLimit': 50
}

response = service.searchanalytics().query(siteUrl=site_url, body=query_request).execute()

# CSVファイルに保存
csv_file = 'search_analytics_data.csv'
with open(csv_file, 'w', newline='', encoding='utf-8') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow(['検索クエリ', 'クリック数', '表示回数', 'CTR', '平均順位'])
    for row in response.get('rows', []):
        query = row['keys'][0]
        clicks = row.get('clicks', 0)
        impressions = row.get('impressions', 0)
        ctr = row.get('ctr', 0)
        position = row.get('position', 0)
        csvwriter.writerow([query, clicks, impressions, ctr, position])

print(f"データをCSVに保存しました: {csv_file}")
# 実行
python step3_query_data.py

# 出力
データをCSVに保存しました: search_analytics_data.csv

出力されるsearch_analytics_data.csvファイルは以下のような形式になっています。

まとめ

本ブログでは、Google Search Console API を活用して、検索パフォーマンスデータを効率的に取得・分析する方法を解説しました。以下の手順を通じて、手動操作では難しいデータ管理や分析を自動化する方法を具体的に学びました。

本記事のポイント
  1. Google Search Console APIの概要と前提条件:
    • APIを使用するための事前準備や、対象サイトの登録・権限確認方法を解説しました。
  2. ステップごとの実装方法:
    • Step1: OAuth 2.0認証フローを実行し、APIの利用準備を整える。
    • Step2: 登録サイトの一覧を取得し、対象サイトの確認を行う。
    • Step3: 検索クエリごとのパフォーマンスデータを取得し、CSVファイルに保存。
  3. Google Search Console APIの活用メリット:
    • データ取得の自動化により、時間を節約し、効率的にデータを管理。
    • 検索パフォーマンスデータを活用して、SEO施策の改善やブログ運営の最適化を実現。

Google Search Console APIは、ブログ運営者やSEO担当者にとって非常に強力なツールです。本記事で解説した手順を参考に、APIを活用した効率的なデータ取得と分析を始めてみてください。さらに活用方法を深めたい場合は、引き続き当ブログをご覧いただければ幸いです!

くれとむ

APIをうまく活用することで、より良いブログ運営が可能になるかもね。

チーズくん

手動でデータを確認するのが面倒だったけど、これならPythonで一気に処理できちゃうんだもん。使い方によっては便利かもね。

くれとむ

次はフロントエンドの画面も構築して、APIから取得したデータを可視化することにも挑戦してみようと思うよ。

チーズくん

それは期待だね。
可視化することで、一気に実用度が増しそうだもんね。

最後まで読んでいただきありがとうございました。










コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT US
くれとむ
IT企業で働いているシステムエンジニアです。 AWSなどIT技術のトレンドを発信します。 また、日常の課題を解決するライフハック記事や実体験をもとにしたレビューも発信します。 エンジニアならではの視点で、技術の楽しさと日常の快適さを繋げます! AWS認定(CLF, SAA, DVA, SOA, SAP, DOP, ANS, SCS, MLS)、基本情報技術者、応用情報技術者、情報処理安全確保支援士、TOEIC L&R 870点 ※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。