柴田AIクン、いいこと思いついたぞ!サチコ(Googleサーチコンソール)のデータをn8nで自動取得したらイイカンジなんじゃないか!



イイカンジってなんですカ?せめてワークフローの設計をしっかりしてからにしてくだサイ…



いや、とにかくデータがあればなんでもできる!使い方は無限大!ということでn8nでサチコにAPI接続してデータ取ってくる方法教えておくれよ!



…AIはデータ学習が基本だから、意外と反論できナイ
このブログで進めているGSC自動解析ワークフローの第2回です。
前回の記事(全体設計)では、6ノード構成でリライト優先度を自動判定する仕組みの概要を説明しました。今回はその最初のステップ、Google Search Console APIへの接続とデータ取得の実装を解説します。
【この記事でわかること】
- Google Search Console APIをn8nで使うための認証設定
- 実際に取得できるデータの種類
- ハマりやすいポイントと解決策
事前準備
必要なもの
- Google Search Consoleに登録済みのサイト
- Google Cloud Platformのアカウント
- n8nが動いているVPS(当ブログの環境:ConoHa VPS)



VPSにn8nを立てる方法は次の記事をご覧ください!


Step1:Google Cloud PlatformでAPIを有効化する
左メニューから「APIとサービス」→「ライブラリ」を開き、「Google Search Console API」を検索して有効化します。






「APIとサービス」→「認証情報」→「認証情報を作成」→「OAuthクライアントID」を選択します。
アプリケーションの種類は「ウェブアプリケーション」を選択。
承認済みのリダイレクトURIには以下を入力します。
https://あなたのn8nのURL/rest/oauth2-credential/callback











最終的に出てくるクライアントIDとクライアントシークレットは後で使うので保存しておいてください!
⚠️ ハマりポイント
① リダイレクトURIの末尾にスラッシュを入れると認証が通らない場合があります。
/callbackで終わるようにしてください。
Step2:n8nにGoogle認証情報を設定する




n8nの管理画面で「Credentials」→「Create Credential」→「Google OAuth2 API」を選択します。
GCPで取得したクライアントIDとクライアントシークレットを入力して、「Connect my account」をクリックします。



Credentialはわかりやすいように名前をつけておいた方がいいですね
⚠️ ハマりポイント② VPS上のn8nにHTTPSが設定されていないとOAuth認証が通りません。当ブログの環境ではCaddy×Dockerで設定しています。詳しくはこちらの記事を参照してください。
あわせて読みたい n8nの完全SSL化!Caddy × Dockerで面倒なHTTPS設定を全自動にする手順 前回の記事では独自ドメインの紐づけの解説をしました。 ブラウザで「n8n.あなたのドメイン」にアクセスできるようになったら、いよいよ最後の関門である「SSL化(HTTPS…
GSCのデータを取得するには以下のスコープが必要です。
https://www.googleapis.com/auth/webmasters.readonly
n8nのGoogle OAuth2設定画面で追加されているか確認してください。


Step3:HTTPリクエストノードでGSCデータを取得する
n8nのワークフローにHTTP Requestノードを追加して以下の通り設定します。
| 項目 | 設定値 |
|---|---|
| Method | POST |
| URL | https://www.googleapis.com/webmasters/v3/sites/{サイトURL}/searchAnalytics/query |
| Credential Type | Google OAuth2 API |
| Google OAuth2 API | Step2で設定したクレデンシャルを選択 |
| Specify Body | Using JSON |



ただし、ここ、結構つまづきポイントが多かったので先に「実際に詰まったこと」をご覧ください
{サイトURL}の中で「:」や「/」を使う場合はURLエンコードした「:」→「%3A」、「/」→「%2F」で書いてください。ここも詳しくは「実際に詰まったこと」を参照してください。


以下のJSONをBodyに設定します。
{
"startDate": "{{ new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString().split('T')[0] }}",
"endDate": "{{ new Date().toISOString().split('T')[0] }}",
"dimensions": ["page", "query"],
"rowLimit": 1000,
"dataState": "final"
}パラメータの説明
| パラメータ | 内容 |
|---|---|
| startDate / endDate | 過去90日分のデータを取得 |
| dimensions | ページURLとキーワードの組み合わせで取得 |
| rowLimit | 最大1000行(記事数が多い場合は調整) |
| dataState | finalにすることで確定データのみ取得 |
⚠️ ハマりポイント③ サイトURLはGSCに登録している形式と完全に一致している必要があります。
https://ありとhttp://あり、末尾スラッシュありなしで別サイト扱いになります。
Step4:取得できるデータの確認
正常に動作すると以下のようなデータが返ってきます。
{
"rows": [
{
"keys": ["https://example.com/article1/", "キーワード1"],
"clicks": 45,
"impressions": 1200,
"ctr": 0.0375,
"position": 8.3
}
…
]
}| データ | 内容 |
|---|---|
| keys[0] | 記事のURL |
| keys[1] | 流入キーワード |
| clicks | クリック数 |
| impressions | 表示回数 |
| ctr | クリック率 |
| position | 平均掲載順位 |


実際に詰まったこと
APIの取得まで
OAuthクライアントIDを作る前に「同意画面」の設定が必要です。
同意画面設定のスクショはこちら




「同意画面で設定を行う必要があります」から進みます。








必要事項を入力します。
コレ以外は私はそんなに詰まらなかったです。
n8nのノード設定
クレデンシャル(認証設定)までは詰まらなかったですが、実際のノードを設定してデータを取ってくる際に結構詰まりました。



ココは先に確認しておきましょう
1.まずはサチコ(Googleサーチコンソール)の状態を確認しましょう
確認ポイントは2つ。
① 画面左上、プルダウンから選べるプロパティを「ドメインプロパティ」「URLプレフィックス」のどちらで登録したか
② 画面左下、「設定」→「ユーザーと権限」でAPIを取得したアカウントがオーナーかフルの権限で登録されているか
②は登録されていなかったら登録しましょう(「ユーザーを追加」から簡単にできます)。オーナーかフルの権限がないとAPIでデータを拾ってこれません。
①はStep3、ノードの設定の{サイトURL}の書き方に関わってきます。
2.サチコで確認したことに注意してn8nのノードのURLを書こう
「ドメインプロパティ」で登録してる場合
例えば「example.com」といった感じでその下に「ドメインプロパティ」と書いてあるプロパティの場合です。
このときは、{サイトURL}を「sc-domain:ドメイン」の形にします。「sc-domain:example.com」という感じです。
→最終的に「https://www.googleapis.com/webmasters/v3/sites/sc-domain:example.com/searchAnalytics/query」みたいな書き方になります。
「URLプレフィックス」で登録している場合
例えばhttps://example.com/みたいな感じですね。
このときは{サイトURL}をURLエンコードした形にしないといけません。具体的には「:」→「%3A」、「/」→「%2F」で書いてください。つまり、https://example.com/だったら、「https%3A%2F%2Fexample.com%2F」とします。
→最終的に「https://www.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fexample.com%2F/searchAnalytics/query」
追加の注意点として、「http」か「https」か、末尾の「/」の有無まで、プロパティ名と全く同じである必要があります!
【余談】
JSONのstartDateの書き方も、最初は「”startDate”: “{{ $now.minus(90, ‘days’).format(‘yyyy-MM-dd’) }}”,…」みたいな書き方をしていましたが、これも上手く動きませんでした。n8nのバージョンとかにも依存するっぽく、汎用性のあるJavaScriptの書き方にしました。
次のステップ
データが取得できたら、次回は取得したデータをCodeノードでスコアリングする実装を解説します。


完成版ワークフローは公式ラインで配布します
今回全部を統合した完成版ワークフローを公式ラインで配布します。
公式LINEに登録して、「GSC自動解析」とメッセージをください。ワークフローのJSONファイルへのリンクを送信します!



完全無料配布です!このブログ記事を参考にセットアップしてみてください!













