メインコンテンツへスキップ

SE::Google::KeywordPlanner::Ideas - Googleキーワードプランナーからのキーワード候補スクレイパー

Keyword Planner ideas

スクレイパーの概要

SE::Google::KeywordPlanner::IdeasSE::Google::KeywordPlanner::Ideas – Googleキーワードプランナーからキーワード候補やヒントをスクレイピングします。ヒントリストの抽出、キーワードの競合性の評価、月間平均検索ボリュームの収集、最小・最大入札価格、類似トピックの新しいキーワードの検索など、多くのデータを利用可能です。スクレイピング設定では、言語、地域、ロケーション、データ抽出期間を指定できます。また、一括モードも利用可能で、サービスへの1回のクエリで最大20個のキーワードのデータを一度に取得できるため、スクレイピングを大幅に高速化できます。

A-Parserのマルチスレッド動作により、クエリの処理速度は毎分数千クエリに達することがあります。

A-Parserの機能により、SE::Google::KeywordPlanner::Ideasスクレイパーのスクレイピング設定を後で利用するために保存(プリセット)したり、スクレイピングのスケジュールを設定したりすることが可能です。

内蔵された強力なテンプレートエンジン Template Toolkit により、結果に必要な形式や構造で保存できます。これにより、結果に追加のロジックを適用し、JSON、SQL、CSVを含む様々なフォーマットでデータを出力できます。

収集されるデータ

  • 検索されたキーワードの月間平均検索ボリューム
  • 関連キーワード候補のリスト
  • キーワード候補
    • 月間平均検索ボリューム
    • 競合性
    • 最小および最大入札額
    • 各候補のトレンドデータ

機能

  • ログイン・パスワードによる認証、またはクッキーとヘッダーの代入による認証をサポート
  • $volumeの精度(正確な値/丸められた値)の定義
  • バルク(パケット)モードをサポート。詳細はQueries (クエリ)セクションを参照
  • マルチアカウント対応(適切なアカウントを選択するには、そのocid(uscid)を指定する必要があります)
  • 指定した期間の各キーワードの月間検索ボリュームデータのスクレイピング($ideas.$i.trends)。データはJSON形式で提供され、出力例は以下のスクリーンショットの通りです:
スポイラー: スクリーンショット

結果へのトレンド出力例

テンプレート:

[% FOREACH item IN ideas;
trends = tools.parseJSON(item.trends);

item.keyword _ "\n";
trends.format('$month: $volume\n');
"----\n";
END %]

ユースケース

  • 関連キーワード候補リストのスクレイピング
  • キーワードの競合性の評価
  • 月間平均検索ボリューム、最小・最大入札額の収集
  • 類似テーマの新しいキーワードの検索

設定

スクレイパーの設定には2つの方法があります:

  • Keyword Plannerアカウントのメールアドレスとパスワードを指定する
  • ブラウザで認証し、必要な値をコピーする
警告

スレッド数には注意してください。少ないスレッド数を指定することをお勧めします。その際、プロキシなしでのスクレイピングも十分に可能です。

メールアドレスとパスワードによる認証

E-mailPassword オプションを上書きし、Keyword Plannerアカウントのデータを指定する必要があります。アカウントには必ずキャンペーンが作成されている必要があります。

スポイラー: (解決策) Login failed TypeError: Cannot read property '1' of null

このエラーが発生した場合は、ブラウザからGoogleアカウントを削除し、再度ログインし直す必要があります。

認証エラーの解決策

ブラウザでの認証とスクレイパーへのヘッダー代入

ブラウザで https://ads.google.com/aw/keywordplanner/home にアクセスして認証し、以前に作成していない場合は最初のキャンペーンを作成します。その後、以下のデータを取得してスクレイパーの設定に指定します:

クッキーは2つの方法で指定できます:

  • All cookies オプションにすべてのクッキーを指定する
  • クッキーから __Secure-3PSID__Secure-3PSIDTS の値を指定する(アカウントの authuser が 0 の場合は __Secure-3PSIDTS を指定する必要があります)

その他のヘッダー:

  • x-framework-xsrf-token ヘッダーの値
  • URLに含まれる ocid または uscid パラメータの値
  • URLに含まれる authuser パラメータの値
スポイラー: 必要なパラメータを見つける方法

認証用パラメータの探し方 1

認証用パラメータの探し方 1

クエリ

Query type パラメータの値に応じて、クエリの形式が異なります。以下に可能なバリエーション、例、および取得される結果の特徴を説明します。

Keyword

クエリはキーワードの形式で、1行に1つのキーワードを入力します。クエリの例:

test
スクレイパー
Windows 11
木の育て方

Bulk (packet) mode オプションで有効化されるパケットモードをサポートしています。このモードでは、スクレイパーはサービスへの1回の要求で20個のキーワードをパケットとして送信するため、結果の入力ロジックが変わります:

  • $volume は各キーワードに対して入力されます
  • $ideas$suggests は最初のキーワードに対してのみ入力されますが、これらの配列には、そのパケットで使用されたすべてのキーワードの合計結果が含まれます。

Site + keyword

クエリは、サイトとスペースで区切られたキーワードの形式である必要があります。クエリの例:

speedtest.com Network speed
a-parser.com parser

また、パケットモードもサポートされています。これを使用するには、キーワードをカンマで区切って列挙します。例:

4pda.to android,ios,ファームウェア
google.com google,ads,広告,インターネットでのサイト検索
  • このクエリタイプでは、パケットモードにおいて $volume はスクレイピングされません。

Entire site

クエリとしてドメインを1行に1つずつ指定する必要があります。例:

apple.com
microsoft.com
  • このクエリタイプでは $volume はスクレイピングされません。

URL

クエリとしてリンクを1行に1つずつ指定する必要があります。例:

https://a-parser.com/docs/parsers/se-google-keywordplanner
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics
  • このクエリタイプでは $volume はスクレイピングされません。

クエリの置換

ファイルからサブクエリを自動的に挿入するために、内蔵マクロを使用できます。例えば、各クエリに他の単語のリストを追加したい場合、いくつかのメインクエリを指定します:

fantasy
tower defense
rpg

クエリ形式に、ファイル keywords.txt から追加の単語を挿入するマクロを指定します。この方法により、クエリのバリエーションを大幅に増やすことができます:

{subs:keywords} $query 

このマクロは、元の検索クエリごとにファイル内の行数と同じ数の追加クエリを作成します。その結果、マクロの動作により、[元のクエリ数] x [Keywordsファイル内のクエリ数] = [総クエリ数] となります。

例えば、keywords.txt ファイルに以下が含まれている場合:

free
online

最終的に置換マクロは3つのメインクエリを6つに変換します:

free fantasy
online fantasy
free tower defense
online tower defense
free rpg
online rpg

結果の出力例

A-Parserは、内蔵された Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化された形式で結果を出力できます。

デフォルト出力

結果のフォーマット:

$ideas.format('$keyword\n')

結果の例:

coca cola  
iphone 11 pro
winter
iphone 11 pro max
winter season
iphone11
iphone 11 price
apple iphone 11
iphone 11pro
coke
11 pro max
iphone 11 pro price
iphone 11 max
iphone pro max
iphone 11 128gb
11 pro
iphone 11 pro max price
apple iphone 11 pro
apple iphone 11 pro max
new iphone 11
iphone 11 max pro
apple 11 pro
iphone 11 deals
iphone 11 pro max 256gb
diet coke
first day of winter
iphone 11 pro 256gb
coke zero
iphone pro 11
apple 11 pro max

CSVテーブルへの出力

結果のフォーマット:

[% FOREACH i IN ideas; 
tools.CSVline(i.keyword, i.volume, i.min_bid, i.max_bid);
END %]

ファイル名:

$datefile.format().csv

初期テキスト:

Keyword,Volume,"Min bid","Max bid"

ヒント

結果のフォーマットでは、FOREACH ループで $ideas 配列を出力するために Template Toolkit テンプレートエンジン が使用されています。

結果のファイル名では、ファイルの拡張子を csv に変更するだけです。

タスクエディタで「Prepend text」オプションを使用できるようにするには、「More options」を有効にする必要があります。 「Prepend text」には、カンマ区切りでカラム名を記入し、2行目を空行にします。

SQL形式での保存

結果のフォーマット:

[% FOREACH ideas;
"INSERT INTO ideas VALUES('" _ keyword _ "', '" _ volume _ "')\n";
END %]

結果の例:

INSERT INTO ideas VALUES('香水', '50000')
INSERT INTO ideas VALUES('eyfel perfume', '5000')
INSERT INTO ideas VALUES('memo marfa', '5000')
INSERT INTO ideas VALUES('duxi', '5000')
INSERT INTO ideas VALUES('kenzo intense', '5000')
INSERT INTO ideas VALUES('climat lancome', '5000')
INSERT INTO ideas VALUES('v canto', '5000')
INSERT INTO ideas VALUES('majda bekkali', '5000')
INSERT INTO ideas VALUES('v canto ricina', '500')
INSERT INTO ideas VALUES('v canto stramonio', '5000')
INSERT INTO ideas VALUES('terenzi kirke', '500')
INSERT INTO ideas VALUES('duhi', '500')
INSERT INTO ideas VALUES('max mara le parfum', '500')
INSERT INTO ideas VALUES('stramonio v canto', '500')
INSERT INTO ideas VALUES('sheikh parfum', '500')
INSERT INTO ideas VALUES('jacques zolty', '500')
INSERT INTO ideas VALUES('aj arabia', '500')
INSERT INTO ideas VALUES('christian lacroix bazar', '500')
INSERT INTO ideas VALUES('juliette has a gun romantina', '500')
INSERT INTO ideas VALUES('vilhelm parfumerie mango skin', '500')
INSERT INTO ideas VALUES('v canto mirabile', '500')
INSERT INTO ideas VALUES('donna karan dkny be delicious', '500')
INSERT INTO ideas VALUES('arteolfatto', '500')
INSERT INTO ideas VALUES('aquawoman rochas', '500')
INSERT INTO ideas VALUES('angel and demon givenchy', '500')
INSERT INTO ideas VALUES('venenum kiss', '500')
INSERT INTO ideas VALUES('v canto mandragola', '500')
INSERT INTO ideas VALUES('angel demon givenchy', '500')
INSERT INTO ideas VALUES('hugo boss boss ma vie pour femme', '500')
INSERT INTO ideas VALUES('nina ricci mademoiselle ricci', '500')

JSON形式での結果ダンプ

一般的な結果のフォーマット:

[% data = [];
FOREACH p1.ideas;
item = {};
item.keyword = keyword;
item.volume = volume;
data.push(item);
END %]$data.json\n

結果の例:

[{"keyword":"香水","volume":"50000"},{"keyword":"eyfel perfume","volume":"5000"},{"keyword":"memo marfa","volume":"5000"},{"keyword":"duxi","volume":"5000"},{"keyword":"kenzo intense","volume":"5000"},{"keyword":"climat lancome","volume":"5000"},{"keyword":"v canto","volume":"5000"},{"keyword":"majda bekkali","volume":"5000"},{"keyword":"v canto ricina","volume":"500"},{"keyword":"v canto stramonio","volume":"5000"},{"keyword":"terenzi kirke","volume":"500"},{"keyword":"duhi","volume":"500"},{"keyword":"max mara le parfum","volume":"500"},{"keyword":"stramonio v canto","volume":"500"},{"keyword":"sheikh parfum","volume":"500"},{"keyword":"jacques zolty","volume":"500"},{"keyword":"aj arabia","volume":"500"},{"keyword":"christian lacroix bazar","volume":"500"},{"keyword":"juliette has a gun romantina","volume":"500"},{"keyword":"vilhelm parfumerie mango skin","volume":"500"},{"keyword":"v canto mirabile","volume":"500"},{"keyword":"donna karan dkny be delicious","volume":"500"},{"keyword":"arteolfatto","volume":"500"},{"keyword":"aquawoman rochas","volume":"500"},{"keyword":"angel and demon givenchy","volume":"500"},{"keyword":"venenum kiss","volume":"500"},{"keyword":"v canto mandragola","volume":"500"},{"keyword":"angel demon givenchy","volume":"500"},{"keyword":"hugo boss boss ma vie pour femme","volume":"500"},{"keyword":"nina ricci mademoiselle ricci","volume":"500"},{"keyword":"mmmm juliette has a gun","volume":"500"},{"keyword":"v canto lucrethia","volume":"500"},{"keyword":"mango skin vilhelm parfumerie","volume":"500"},{"keyword":"dalissime salvador dali","volume":"500"},{"keyword":"molecula 02","volume":"50000"},{"keyword":"lucia parfum","volume":"500"},{"keyword":"boadicea pure narcotic","volume":"500"},{"keyword":"terenzi andromeda","volume":"500"}]
ヒント

JSONでの結果出力の詳細は、こちらの記事に記載されています。

可能な設定

パラメータデフォルト値説明
All cookiesすべてのクッキーの指定
Cookie "__Secure-3PSID"クッキー "__Secure-3PSID"
Cookie "__Secure-3PSIDTS"クッキー "__Secure-3PSIDTS"
Header "x-framework-xsrf-token"ヘッダー "x-framework-xsrf-token"
Url parameter "ocid"("uscid")パラメータ "ocid"("uscid")
Url parameter "authuser"0パラメータ "authuser"
E-mailKeyword Planner認証用メールアドレス
PasswordKeyword Planner認証用パスワード
Recovery e-mailリカバリー用メールアドレス
Browser headless (debug auth)ログイン・パスワード認証に使用するブラウザのヘッドレスモード
Log Login Screenshot (debug auth)認証ページのスクリーンショットを作成し、タスクログに出力する
Date fromLast 12 months開始日
Date toLast 12 months終了日
LanguageEnglish言語
Search networksGoogle検索ネットワーク
CurrencyUSD通貨
Location codeロケーション(このテーブルコピー)の最初の列からロケーションIDを指定してください)
Query typeKeywordクエリタイプ
Exclude brand names in resultsブランドフィルター
Exclude adult ideasアダルトコンテンツフィルター
Bulk (packet) modeパケットモードの有効化