blog-google について
blog-google は、Google API を使ってブログの成果を分析するスキルです。検索、流入、インデックス、ページ体験、動画、キーワードのデータを必要とするブログ運営者向けで、実行時に同意とクォータを確認します。
主な機能
- 01PageSpeed と CrUX 指標の取得
- 02Search Console と URL インデックスの照会
- 03GA4 のオーガニック流入レポート
- 04YouTube 動画とキーワード案の検索
- 05PDF または HTML レポートの作成
- 06API クォータと認証ティアの確認
活用シーン
- 01記事の Core Web Vitals を確認
- 02検索クエリとインデックス状態を調査
- 03オーガニック検索のランディングページ流入を分析
- 04キーワードや YouTube 動画を調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agricidaniel/ claude-blog --skill blog-googleインストール後、Claude Code で/blog-googleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/templates/cwv-audit-report.mdgsc-performance-report.mdindexation-status-report.mdreferences/api-reference.mdauth-setup.mdrate-limits-quotas.mdsearch-currentness.mdscripts/__init__.pycrux_history.pyga4_report.pygoogle_auth.pygoogle_report.pygsc_inspect.pygsc_query.pyindexing_notify.pykeyword_planner.pynlp_analyze.pypagespeed_check.pyrequirements.lockrequirements.txtrun.pyruntime_paths.pysetup_environment.pyyoutube_search.py詳細
Blog Google:ブログパフォーマンス向け Google API データ
以下の同梱パスでは、ホストによる Markdown の ${CLAUDE_SKILL_DIR} 置換を使用します。
これはエクスポートされたシェル変数ではありません。実行前に解決してパスを引用符で囲み、
絶対パスでないオーバーライドは拒否してください。${CLAUDE_SKILL_DIR}/../blog/references
から解決した blog_reference_root、${CLAUDE_SKILL_DIR}/../blog/templates から解決した
blog_template_root と、必要な兄弟ルートをエージェントに渡してください。プロジェクトの
コンテキストを読み込む前に、メインリファレンスの orchestration-details.md を読み、
そのヘルパー用フェンスの出力のみを下流のエージェントに渡してください。
ブログのパフォーマンス分析向けに、Google の SEO API へ直接アクセスします。実際の Chrome ユーザーメトリクス、インデックス登録状況、検索パフォーマンス、エンティティ分析、 YouTube 動画の検索、キーワード検索ボリューム、PDF/HTML のパフォーマンスレポートを提供します。
ほとんどの連携は、記載されている割り当て量の範囲内で利用料金がかかりません。Cloud Natural Language は課金を有効にする必要があり、月間無料枠を超えると料金が発生する 場合があります。Google Ads には、利用資格を満たしたアカウントとデベロッパートークンが 必要です。ユーザーの明示的な承認なしに課金を有効にしたり、有料リクエストを実行したり しないでください。
コストと同意の確認(必須、最初に読む)
このスキルは、ユーザーの Google 認証情報、割り当て量、場合によっては課金を使用します。
- 消費するもの: ユーザーの Google Cloud プロジェクトの API 割り当て量(小規模な
枠:YouTube の
search.listは独自の枠で1日100回、URL Inspection はサイトごとに 1日2,000回、Indexing API は1日200件の公開リクエスト)。Cloud Natural Language は 月間5,000無料ユニットを超えると課金されます。Keyword Planner には Google Ads アカウントが必要です。 - 外部に書き込むもの:
indexは Google に通知を送信し、setupは~/.config/claude-seo/に認証情報設定を書き込みます。それ以外はすべて読み取り専用です。 - 同意: アカウントデータを読み取るコマンド(
gsc、inspect、ga4、keywords)、 小規模な枠を消費するコマンド(youtube、バッチのinspect)、課金される可能性のある コマンド(nlp)、または書き込みを行うコマンド(index、setup)をセッション中に 初めて呼び出す前に、コマンド名、プロパティまたは URL、予想される呼び出し回数、 割り当て量またはコストの根拠を伝え、明示的な承認を待ってください。公開 URL に対するpagespeedやcruxのような、キー不要の無料読み取りでは、呼び出し内容を伝えるだけで 構いません。 - 上限のないループは禁止: バッチファイルはユーザーが承認した範囲に制限し、 割り当て量エラーが最初に発生した時点で、再試行せずに停止してください。
- スキップ: スキップしたコマンド、または利用できなかったコマンドは、「代替手段と スキップ」の要約用に、オーケストレーターへ1行でそれぞれ報告してください。例: 「Google:認証情報がないため、CrUX をスキップ」
永続ランタイムディレクトリ
CLAUDE_BLOG_RUNTIME_DIR を指定すると、信頼できる絶対パスの永続ルートを1つ選択できます。
この連携では <root>/blog-google/.venv を使用します。NotebookLM もライブラリ、認証、
ブラウザーの状態に <root>/blog-notebooklm/data を使用します。このオーバーライドを
指定しない場合は、既存のスキルローカルのデフォルトが引き続き使用されます。Google の
共有認証情報設定/トークンのパスは変更されません。状態は自動的にコピーも移行もされず、
通常の実行でセットアップが行われることもありません。
既存の検証済みオペレーターオーバーライドは維持してください。プラグインにオーバーライドが
ない場合は、セットアップ時と以降の各ランナー呼び出し時に、ホストによって置換される
${CLAUDE_PLUGIN_DATA}/claude-blog-runtime のパスを明示的に渡してください。これは
Markdown の置換であり、エクスポートされたシェル変数ではありません。絶対パスとして
解決されてから実行してください。シングルクォートを使うと、未解決のプレースホルダーが
文字列のまま保持され、別のシェルパスに展開されるのではなく、検証によって拒否されます。
CLAUDE_BLOG_RUNTIME_DIR='${CLAUDE_PLUGIN_DATA}/claude-blog-runtime' python3 "${CLAUDE_SKILL_DIR}/scripts/setup_environment.py" --check --json
CLAUDE_BLOG_RUNTIME_DIR='${CLAUDE_PLUGIN_DATA}/claude-blog-runtime' python3 "${CLAUDE_SKILL_DIR}/scripts/run.py" google_auth --check --json
依存関係をインストールするのは、--check を付けずに明示的なセットアップを行った場合
のみです。スタンドアロンユーザーは、絶対パスのランタイムルートを明示的に選択しない限り、
デフォルトを使用してください。相対パス、未解決のパス、またはリンクされた管理対象
サブディレクトリは、安全側に倒して処理を失敗させます。ルートを変更すると別個の状態が
選択されますが、古いルートの移行やクリーンアップが許可されるわけではありません。
プラグインの永続データはホストのアンインストール時の保持ルールに従います。引き続き
必要な場合は、アンインストール時に明示的に保持してください。
前提条件
コマンドを実行する前に、必ず認証情報を確認してください:
BLOG_SKILLS_DIR="${CLAUDE_BLOG_SKILLS_DIR:-${CLAUDE_SKILL_DIR}/..}"
case "$BLOG_SKILLS_DIR" in /*) ;; *) echo "ERROR: skills dir must be absolute" >&2; exit 1 ;; esac
python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" google_auth --check --json
設定ファイル: ~/.config/claude-seo/google-api.json(claude-seo と共有)
{
"api_key": "YOUR_GOOGLE_API_KEY",
"oauth_client_path": "/path/to/client_secret.json",
"default_property": "sc-domain:example.com",
"ga4_property_id": "properties/123456789",
"ads_developer_token": "...",
"ads_customer_id": "123-456-7890",
"ads_login_customer_id": "123-456-7890"
}
ファイルが見つからない場合は、${CLAUDE_SKILL_DIR}/references/auth-setup.md を読み、セットアップ手順をユーザーに案内してください。
認証情報のティア
| ティア | 検出条件 | 利用可能なコマンド |
|---|---|---|
| 0(API Key) | api_key が存在 | pagespeed、crux、crux-history、youtube、nlp |
| 1(OAuth/SA) | + OAuth トークンまたはサービスアカウント | ティア 0 + gsc、inspect、index |
| 2(フル) | + ga4_property_id が設定済み | ティア 1 + ga4 |
| 3(Ads) | + ads_developer_token + ads_customer_id | ティア 2 + keywords |
コマンドを実行する前に、検出されたティアを必ず伝えてください。
機械可読エラー
一部のレガシーヘルパーは、--json モードでプロセスの終了コードが 0 のまま、error JSON オブジェクトを出力します。既存の呼び出し元と統合する際は、これらの終了コードの契約を維持してください。ただし、解析した結果を確認し、error があれば操作は失敗です。バッチ結果も項目ごとにエラーを確認してください。終了ステータスが 0 というだけで、API 処理が成功したと判断してはいけません。今後、終了ステータスを移行する場合は、互換性変更として別途レビューを受ける必要があります。
クイックリファレンス
| コマンド | 機能 | ティア |
|---|---|---|
/blog google setup | API 認証情報の確認/設定 | : |
/blog google pagespeed <url> | PSI Lighthouse + CrUX のフィールドデータ | 0 |
/blog google crux <url> | CrUX のフィールドデータのみ(p75 指標) | 0 |
/blog google crux-history <url> | CWV の傾向。デフォルトは 25 週間、最大 40 週間 | 0 |
/blog google youtube <query> | YouTube 動画検索(視聴回数、いいね数、再生時間) | 0 |
/blog google nlp <url-or-text> | NLP エンティティ抽出 + 感情分析 | 0 |
/blog google gsc <property> | Search Console:クリック数、表示回数、CTR、掲載順位 | 1 |
/blog google inspect <url> | URL 検査:インデックス登録状況、正規 URL | 1 |
/blog google index <url> | Indexing API に通知(求人ページまたはライブ配信ページのみ。ブログ投稿は対象外) | 1 |
/blog google ga4 [property-id] | GA4 オーガニックトラフィックレポート | 2 |
/blog google keywords <seed> | Google Ads キーワードプランナーのキーワード候補 | 3 |
/blog google report <type> | PDF/HTML パフォーマンスレポート | : |
/blog google quotas | すべての API のレート制限を表示 | : |
PageSpeed + CrUX
/blog google pagespeed <url>
公開済みブログ投稿の Lighthouse ラボデータと CrUX フィールドデータを組み合わせて表示します。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" pagespeed_check <url> --json
リファレンス: ${CLAUDE_SKILL_DIR}/references/api-reference.md
ラボスコア(Lighthouse の特定時点のデータ)とフィールドデータ(Chrome ユーザーの 28 日間の指標)を統合して出力します。CrUX はまず URL レベルのデータを試し、利用できない場合はオリジンレベルのデータにフォールバックします。
/blog google crux <url>
CrUX フィールドデータのみを取得します(Lighthouse は実行しません)。より高速です。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" pagespeed_check <url> --crux-only --json
/blog google crux-history <url>
CrUX History の傾向は、デフォルトで 25 週間分の期間を使用し、--periods で最大 40 週間分まで指定できます。CWV 指標が改善しているか、安定しているか、悪化しているかを確認できます。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" crux_history <url> --json
Search Console
/blog google gsc <property>
検索アナリティクス:過去28日間のクリック数、表示回数、CTR、掲載順位です。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" gsc_query --property <property> --json
デフォルト: 28日間、ディメンション=query,page、タイプ=web、上限=1000件です。
クイックウィンの検出機能も含まれます。表示回数が多く、掲載順位が4~10位のクエリを検出します。
専用の Search Console 生成 AI レポートは、Search Console の UI で段階的に一部のユーザーへ提供されています。Search と Discover のビューが別々にあり、Search ビューでは AI Overviews と AI Mode を扱います。これらの専用ビューからクリック数、クエリ、API によるデータ取得ができると約束しないでください。Google が API を公開するまでは、その機能を SKIPPED または利用不可として報告し、ユーザーに UI を案内してください。
Google が7月29日に公開した Search Central の発表によると、Instagram、TikTok、X、YouTube の Search Console プラットフォーム プロパティは世界中で利用可能です。現在のヘルプセンターには、まだ段階的に提供中と記載されています。Google の情報源間で矛盾があると報告し、ユーザーのアカウントで利用可能か確認してください。また、/blog google gsc で現在の API を通じてこれらのプラットフォームのレポートを取得できると主張しないでください。
/blog google inspect <url>
URL 検査:Google における実際のインデックス登録状況を確認します。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" gsc_inspect <url> --json
返される情報:判定(PASS/FAIL)、カバレッジの状態、robots.txt のステータス、インデックス登録の状態、ページの取得状態、正規 URL の選択、モバイル ユーザビリティ、リッチリザルトです。
正規化の修正後、Google は最大2週間、URL を重複クラスターに保持する場合があります。実装が正しく、修正からその期間内であれば、即時の失敗ではなく PENDING_REEVALUATION と報告してください。Search Console のインデックス登録をリクエストする機能には割り当て量の制限があります。重要な URL に限って使用してください。
一括検査の場合:python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" gsc_inspect --batch <file> --json
インデックス登録 API
/blog google index <url>
Indexing API を通じて、URL の更新を Google に通知します。
対象条件: Google の Indexing API ドキュメントによると、この API は「JobPosting、または VideoObject に埋め込まれた BroadcastEvent を含むページのクロールにのみ使用できます」(https://developers.google.com/search/apis/indexing-api/v3/quickstart、2026-10-12確認)。通常のブログ記事は対象外です。このコマンドをブログ記事に対して実行したり、記事のインデックス登録を速める方法として提案したりしないでください。ブログ記事の場合は /blog google inspect <url> を使用し、必要であれば UI から Search Console のインデックス登録をリクエストする機能を使用してください(割り当て量の制限があります)。
ユーザーがそれでも URL を指定した場合は、まず JobPosting ページか、ライブ配信(VideoObject 内の BroadcastEvent)ページかを尋ねてください。ユーザーが明示的に確認した場合に限り、送信される内容を説明して、もう一度明示的な同意を得てから、次を実行してください。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" indexing_notify <url> --confirm-eligible --json
リファレンス: ${CLAUDE_SKILL_DIR}/references/api-reference.md
スクリプトは --confirm-eligible がなければ送信を拒否します。このフラグを独自に追加しないでください。1日の割り当て量は公開リクエスト200件です。URL 検査の「インデックス登録をリクエスト」機能の代替として提示しないでください。
一括処理の場合(同じ対象条件の確認が必要で、ファイル内のすべての URL に適用されます):
python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" indexing_notify --batch <file> --confirm-eligible --json
GA4 トラフィック
/blog google ga4 [property-id]
オーガニックトラフィックのレポート:日別のセッション数、ユーザー数、ページビュー数、直帰率、エンゲージメントです。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" ga4_report --property <id> --json
デフォルト: 28日間、Organic Search チャネル グループで絞り込みます。
ランディングページ上位を表示する場合:python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" ga4_report --property <id> --report top-pages --json
YouTube(動画の発見)
YouTube での調査は、有用で関連性の高いメディアや配信に関する情報の把握に役立ちます。サードパーティの可視性との相関は観測上のものであり、Google のランキングや引用の要件ではありません。無料で、API キーのみで利用できます。動画の埋め込みには blog-write と blog-rewrite が使用します。
/blog google youtube <query>
ブログのトピックに関連する動画を YouTube で検索します。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" youtube_search search "<query>" --json
クォータ: search.list には独自のクォータ枠があり、デフォルトでは 1 回あたり 1 ユニットで 1 日 100 回まで利用できます(Google のクォータ料金ページ、2026-10-12 閲覧)。その他の YouTube エンドポイントは、1 日あたり 10,000 ユニットの別枠を共有します。用途ごとに検索は 1 回だけ実行し、最初にクォータエラーが発生した時点で停止してください。
返される情報:タイトル、チャンネル、視聴回数、高評価数、再生時間、説明、タグ。
動画の詳細とコメントを取得するには:python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" youtube_search video <video_id> --json
NLP コンテンツ分析
Google のエンティティ分析とセンチメント分析は、トピックや編集内容の確認に役立ちます。 ランキングシステムのスコアは公開されておらず、E-E-A-T は Google の数値化されたランキング要因ではありません。
/blog google nlp <url-or-text>
NLP の全分析:エンティティ、センチメント、コンテンツ分類。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" nlp_analyze --url <url> --json
無料枠: 月あたり 5,000 ユニット。GCP プロジェクトで課金を有効にする必要があります。
エンティティ抽出のみを行うには:python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" nlp_analyze --url <url> --features entities --json
キーワード調査(Google Ads)
キーワード検索ボリュームの最高水準のデータを提供します。Google Ads アカウントが必要です(Tier 3)。
/blog google keywords <seed>
シード語からキーワード候補を生成し、ブログのトピック調査に利用します。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" keyword_planner ideas "<seed>" --json
検索ボリュームを調べるには:python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" keyword_planner volume "<kw1>,<kw2>" --json
レポート
/blog google report <type>
グラフと表を含む PDF/HTML レポートを生成します。
スクリプト: python3 "$BLOG_SKILLS_DIR/blog-google/scripts/run.py" google_report --type <type> --data <json> --domain <domain> --format pdf
| 種類 | 入力 | 出力 |
|---|---|---|
cwv-audit | PSI + CrUX + CrUX History データ | ゲージとタイムラインを含む Core Web Vitals 監査 |
gsc-performance | GSC クエリデータ | クエリ表を含む Search Console レポート |
indexation | 一括検査データ | カバレッジのドーナツグラフを含むインデックス登録状況 |
full | すべてのデータを統合 | 包括的な Google SEO レポート |
注: PDF の生成には WeasyPrint とそのシステムライブラリ(Pango と Cairo)が必要です。明示的なセットアップスクリプトがインストールするのは Python パッケージのみで、 実行時にもシステムパッケージはインストールされません。不足している場合、レポートは HTML にフォールバックします。ユーザーに伝え、ライブラリをインストールするかどうかはユーザーに判断してもらってください。
レート制限
| API | 1 分あたり | 1 日あたり | 認証 |
|---|---|---|---|
| PSI v5 | 240 QPM | 25,000 QPD | API キー |
| CrUX + History | 150 QPM(共有) | 無制限 | API キー |
| GSC Search Analytics | サイトごと・ユーザーごとに 1,200 QPM、プロジェクトごとに 40,000 QPM | プロジェクトごとに 30M QPD | サービスアカウント |
| GSC URL Inspection | サイトごとに 600 QPM | サイトごとに 2,000 QPD(プロジェクトごとに 10M) | サービスアカウント |
| Indexing API | 380 RPM | 1 日あたり 200 回の公開 | サービスアカウント |
| GA4 Data API | 同時 10(360 では 50) | 1 日あたり 200K Core Tokens(360 では 2M) | サービスアカウント |
| YouTube Data | : | search.list:1 日 100 回(独自の枠);その他のエンドポイントは 1 日 10,000 ユニット | API キー |
| NLP API | : | 月あたり 5,000 ユニット | API キー(課金) |
詳細なクォータ管理については ${CLAUDE_SKILL_DIR}/references/rate-limits-quotas.md を参照してください。
ブログワークフローとの統合
このスキルは、ユーザーが直接呼び出せる(/blog google pagespeed)ほか、他のブログ用サブスキルから内部的に呼び出すこともできます。
- blog-seo-check:公開済み記事の URL に対して PSI と CrUX を実行し、最新の CWV データを取得します
- blog-rewrite:NLP エンティティ分析により、E-E-A-T エンティティの不足を特定します
- blog-geo:GSC のパフォーマンスデータから、実際の検索での表示状況を把握します
- blog-audit:公開済みのすべてのブログ URL を対象に、CWV とインデックス登録状況を一括で確認します
- blog-write / blog-rewrite:動画埋め込み用に YouTube 検索を行います
認証情報が設定されていない場合は、適切にフォールバックします。
レポートテンプレート
ワークフローで長期保存可能な、人が読みやすいレポートが必要な場合は、同梱のテンプレートを使用してください。取得できないアカウントデータには SKIPPED と記載し、空のセクションに推定指標を記入しないでください。
assets/templates/cwv-audit-report.md:PageSpeed と CrUX のエビデンス用。assets/templates/gsc-performance-report.md:Search Analytics のエクスポート用。assets/templates/indexation-status-report.md:URL Inspection のエビデンス用。
技術上の注意事項
- INP は 2024 年 3 月 12 日に FID に置き換わりました。FID には言及しないでください。
- CrUX の CLS 値は文字列としてエンコードされます(例:"0.05")。スクリプトが解析を処理します。
- CrUX の 404 は、Chrome のトラフィックが不十分であることを意味し、認証エラーではありません。
- Search Analytics データには 2〜3 日の遅延があります。
- Indexing API は、JobPosting と BroadcastEvent-in-VideoObject のページのみを公式に対象としています。ブログ記事は対象外です。
- ほとんどの統合機能は、割り当て枠内であれば利用料金はかかりません。Cloud Natural Language には課金設定が必要で、料金が発生する場合があります。Google Ads にはアカウントと開発者トークンへのアクセスが必要です。
- 特定のアップデート、canonical の変更、Discover での表示状況、Google の生成 AI に関するレポート、プラットフォーム プロパティ、Preferred Sources、AMP、またはクローラーのバイト数制限に関する問題を診断する前に、
${CLAUDE_SKILL_DIR}/references/search-currentness.mdを読んでください。 - 特定のアップデートの日付だけでは、個別サイトの変化の原因は特定できません。ロールアウト後、データを比較する前に丸 1 週間待ち、ウェブ、画像、動画、ニュースのパフォーマンスを個別に確認してください。
- Googlebot が処理するのは、対応ファイルの先頭 2MB と PDF の先頭 64MB のみです。重要なメタデータと主要コンテンツは、制限に達する前に配置してください。
エラー処理
| 状況 | 対応 |
|---|---|
| 認証情報が設定されていない | /blog google setup を実行します。Tier 0 コマンド(API キーのみ)を一覧表示します。 |
| サービスアカウントに GSC へのアクセス権がない | GSC > Settings > Users and permissions > Add user で client_email を追加し、機能する最小限の権限を付与します(Performance データには Restricted、URL Inspection には Full)。Owner 権限は付与しないでください。references/auth-setup.md を参照してください。 |
| CrUX データを利用できない(404) | Chrome のトラフィックが不十分です。代替として PSI のラボデータを使用してください。 |
| GA4 プロパティが見つからない | GA4 Admin > Property Details でプロパティ ID を確認してください。 |
| Indexing API の割り当て枠を超過した | 1 日あたり 200 件の上限です。停止してください。対象となるのは、適格な求人またはライブ配信の URL のみです。 |
| レート制限(429) | 待機し、指数バックオフで再試行してください。 |