programmatic-seo-spy について
競合のURL構造を分析し、プログラマティックSEOのパターン、成果の推定、ページテンプレートの品質、未対応領域を調べるマーケティング向けスキルです。基本分析に加え、ドメイン分析APIを使った拡張分析にも対応します。
主な機能
- 01競合サイトマップとURLのクロール
- 02URLをページパターンごとに分類
- 03プログラマティックページと編集記事を判別
- 04パターン別トラフィックを推定または測定
- 05サンプルページのテンプレート品質を評価
- 06対応範囲とバリエーションの不足を特定
活用シーン
- 01競合が使うプログラマティックSEOを把握
- 02連携先や業界ページの競合状況を比較
- 03不足しているページのバリエーションを特定
- 04競合テンプレートの弱点から機会の優先度を決定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gooseworks-ai/ goose-skills --skill programmatic-seo-spyインストール後、Claude Code で/programmatic-seo-spyを入力して読み込まれたか確認します。
同梱ファイルskill.meta.json
詳細
プログラマティック SEO 競合調査
独自のプログラマティック SEO ページを作る前に、競合がすでに何をしているかを把握しましょう。このスキルは競合のサイトマップをクロールし、プログラマティックな URL パターンを検出し、実際にトラフィックを獲得しているパターンを推定し、テンプレートの品質を評価して、競合が見落としている機会を見つけます。
基本原則: 最高の pSEO 戦略は、競合インテリジェンスから始まります。3 社の競合が /vs/ ページを持ち、/for-{industry}/ ページを持つ競合がいないなら、それは兆候です。このスキルは競合サイトの構造を戦略的インテリジェンスに変換します。
使用するタイミング
- 「競合はどのようなプログラマティック SEO を行っていますか?」
- 「競合の SEO ページをリバースエンジニアリングする」
- 「私たちの業界で実際に効果のある pSEO パターンはどれですか?」
- 「競合が見落としている pSEO の機会を見つける」
- 「SEO パターンを探すために、競合の URL 構造を分析する」
ツールの拡張(任意)
このスキルは既存の機能でも使えますが、URL パターンごとの実際のトラフィックを示すドメイン分析データがあれば、精度が大幅に向上します。
エージェントからユーザーへのプロンプト
「既存のクロールツールを使って、競合サイトの構造を分析できます。特に、どのパターンが実際にトラフィックを獲得しているのか、単に存在しているだけなのかを把握するには、ドメイン分析 API を接続することをおすすめします。」
おすすめ:DataForSEO(従量課金、ドメイン分析 1 回あたり約 $0.02~$0.05)
- dataforseo.com で登録 → API ログイン情報とパスワードを取得
DATAFORSEO_LOGINとDATAFORSEO_PASSWORDの環境変数を設定利用可能な代替サービス:
- SEMrush API(サブスクリプションをお持ちの場合)→
SEMRUSH_API_KEYを設定- Ahrefs API(サブスクリプションをお持ちの場合)→
AHREFS_API_TOKENを設定- SimilarWeb API(利用権限がある場合)→
SIMILARWEB_API_KEYを設定「これらのいずれかを使いますか?それともベースラインモードで進めますか?ベースラインモードではパターンを検出してテンプレートの品質を評価できますが、トラフィックは実測ではなく推定になります。」
モードの選択
- 拡張モード — ドメイン分析 API によって、オーガニック検索キーワードと URL ごとの推定トラフィックが得られます。「このパターンは X のトラフィックを獲得している」という結論を確信を持って導けます。また、パターン内でどの特定ページの検索順位が高いかも確認できます。
- ベースラインモード — URL のクロールには
site-content-catalog、ドメインレベルの指標にはseo-domain-analyzer、検索順位のスポットチェックにはweb_searchを使用します。パターン検出の精度は同等です。トラフィックの推定は、ページ数 × ドメインオーソリティ × キーワードの指標に基づく大まかなものです。
フェーズ 0:情報収集
- 競合 — 分析する競合の URL を 1~5 件
- 自社プロダクトの URL — カバー範囲を比較するため
- カテゴリー — 競合が属する市場/カテゴリー
- 特に知りたいこと —
/vs/ページや連携機能など、特定の項目を調べるか、全体を分析するか - ツールの設定 — ドメイン分析 API を使う拡張モードか、ベースラインモードか(上記の「ツールの拡張」を参照)
フェーズ 1:サイトマップのクロール
各競合について、site-content-catalog を実行します。
python3 skills/site-content-catalog/scripts/catalog_content.py \
--url "<competitor_url>" \
--output json
収集する情報:
- サイトマップと内部クロールから取得したすべての URL
- ページタイトル
- URL の構造/階層
- 最終更新日(取得可能な場合)
フェーズ 2:パターン検出
2A: URL クラスタリング
正規表現マッチングを使用して、構造パターンごとに URL をグループ化します。
| パターンの正規表現 | URL の例 | カテゴリ |
|---|---|---|
/vs/.* または /compare/.* | /vs/competitor-a, /vs/competitor-b | 比較 |
/integrations?/.* | /integrations/slack, /integrations/hubspot | インテグレーション |
/for-.* または /solutions/.* | /for-startups, /for-enterprise | 業種別 |
/use-cases?/.* | /use-cases/project-management | ユースケース |
/alternatives?(-to)?/.* | /alternatives/competitor-a | 代替製品 |
/templates?/.* または /examples?/.* | /templates/invoice, /templates/proposal | テンプレート |
/glossary/.* または /what-is/.* | /glossary/term-a, /what-is/crm | 用語集 |
/tools?/.* または `/calculat(or | e)/.*` | /tools/roi-calculator |
/blog/.*(pSEO の対象外) | /blog/how-to-x | 編集記事(pSEO ではない) |
検出された各パターンについて、以下を確認します。
- ページ数 — このパターンに該当するページはいくつありますか?
- データ軸 — ページごとに何が変化しますか?(競合名、ツール名、業界など)
- URL の一貫性 — URL の構造は整っていますか、それとも乱雑ですか?
- 網羅性 — 明らかなバリエーションは網羅されていますか?
2B: プログラマティックと編集記事の分類
すべての URL パターンがプログラマティックとは限りません。各クラスターを分類します。
- プログラマティック — 明確なテンプレートがあります。URL 構造に一貫性があり、ページタイトルもパターンに沿って類似し、ページ数が多く、コンテンツが構造化されています
- セミプログラマティック — テンプレートを使用しつつ、大幅な手動カスタマイズが加えられています
- 編集記事 — ページごとに個別に執筆されており、テンプレートのパターンはありません
- 自動生成 — 内容が薄い、または品質の低いプログラマティックページ(タグページ、アーカイブページ)
プログラマティックとセミプログラマティックのクラスターのみを分析対象にします。
フェーズ 3: トラフィックとパフォーマンスの分析
拡張モード(DataForSEO / SEMrush / Ahrefs)
競合ドメインごとに、オーガニックキーワードのデータを取得します。
# DataForSEO example
POST /v3/dataforseo_labs/google/ranked_keywords/live
{
"target": "competitor.com",
"filters": [
["ranked_serp_element.serp_item.url", "contains", "/vs/"]
]
}
パターンのクラスターごとに、以下を確認します。
- ランキングキーワードの合計数 — パターン内のすべてのページを対象
- 推定月間オーガニックトラフィック — パターンへの流入
- 平均掲載順位 — このパターンのページを対象
- パフォーマンス上位のページ — パターン内で、どのバリエーションが最も上位にランクインしていますか?
- キーワード難易度の分布 — 難易度の低いキーワードと高いキーワードのどちらを狙っていますか?
ベースラインモード
トラフィック指標を推定します。
- ドメイン全体の指標を確認するために
seo-domain-analyzerを実行します - 各パターンから 3~5 ページを
web_searchで抜き取り確認し、上位 10 件に表示されているかを調べます - ページがインデックスに登録されているかを確認します(site:competitor.com/vs/)
- パターンのページ数 × インデックス登録率 × ドメインオーソリティの推定値から、相対的なトラフィックを推測します
- 注:これらは大まかな推定値であり、正確な数値ではありません
フェーズ 4: テンプレート品質の評価
プログラマティックな各パターンについて、fetch_webpage を使ってサンプルページを 3~5 件取得します。
# Pick pages from the pattern — one high-variation, one low-variation, one middle
以下の項目でテンプレートの品質を評価します。
| 項目 | スコア 1~5 | 確認する内容 |
|---|---|---|
| コンテンツの深さ | 文字数、セクション数、詳細度 | |
| ページごとの独自価値 | テンプレートだけでは得られない価値を各ページが提供していますか? | |
| データの豊富さ | 表、比較、統計、スクリーンショット | |
| 鮮度を示す要素 | 更新日、最新の価格、最近のレビュー | |
| 内部リンク | 関連ページへのリンク、ハブ構造 | |
| CTA の統合 | 文脈に沿った CTA と、一般的なバナー | |
| 構造化データ | 構造化データ、FAQ スキーマ、レビュー スキーマ |
品質の段階:
- 平均 4~5: pSEO がうまく実施されています。大きく差別化しない限り、上回るのは困難です
- 平均 3~4: まずまずですが、改善の余地があります。より優れたテンプレートを作るチャンスです
- 平均 1~3: 内容が薄い、または品質が低い状態です。より優れたコンテンツで容易に優位に立てます
フェーズ 5: ギャップ分析
5A: パターン網羅性マトリクス
| パターンタイプ | 競合 A | 競合 B | 競合 C | 自社 | ギャップ? |
|---|---|---|---|---|---|
| vs/ 比較 | 25 ページ ★★★★ | 10 ページ ★★★ | 0 | 0 | ✓ A がリード |
| integrations/ | 40 ページ ★★★ | 60 ページ ★★★★ | 20 ページ ★★ | 0 | ✓ B がリード |
| for-{industry}/ | 0 | 0 | 8 ページ ★★ | 0 | ✓ 競争相手がほとんどいない |
| alternatives/ | 5 ページ ★★★ | 0 | 0 | 0 | ✓ 競争は少ない |
| glossary/ | 100 ページ ★★ | 0 | 50 ページ ★★★ | 0 | ⚠️ ページ数で勝負 |
5B: バリエーションのギャップ
各パターンで、競合が使っているものの不足しているバリエーションを探します:
- 競合がまだ vs/ ページを作成していない対象
- 対応しているものの、ページを作成していないインテグレーション
- サービスを提供しているものの、まだターゲットにしていない業界
- これらは短期間で成果を上げやすい参入機会です
5C: パターンの空白領域
競合がまだ構築していないパターンタイプ全体:
- 最も大きな機会です。上位表示を競う相手がおらず、先行者利益を得られます
- 検索需要があることを検証します(programmatic-seo-planner のフェーズ 1D)
5D: 品質のギャップ
競合がページを持っているものの、品質が低いパターン:
- 内容が薄い(500 語未満で、独自データがない)
- 情報が古い(古いスクリーンショット、誤った価格)
- スキーママークアップがない
- ページ間に視覚的な差別化がない
- これらは「テンプレートを超える」機会です
フェーズ 6:出力
# Programmatic SEO Competitive Landscape — [Category] — [DATE]
## Competitors Analyzed
- [Competitor A] — [domain metrics, total pages crawled]
- [Competitor B] — [domain metrics, total pages crawled]
- [Competitor C] — [domain metrics, total pages crawled]
## Executive Summary
- [N] programmatic patterns detected across [M] competitors
- Strongest competitor pSEO: [Competitor X] with [pattern] ([N] pages, [quality])
- Biggest opportunity: [pattern type] — [reasoning]
- Quick wins: [N] variation gaps in existing competitor patterns
---
## Pattern-by-Pattern Analysis
### Pattern: [vs/ Comparisons]
**Who's doing it:** [Competitor A (25 pages, ★★★★), Competitor B (10 pages, ★★★)]
**Traffic estimate:** [X monthly visits across pattern] (enhanced) / [directional estimate] (baseline)
**Template quality:** [summary of strengths/weaknesses]
**Top-performing pages:** [specific pages that rank well]
**Variation gaps:** [competitors/variations they're missing]
**Your opportunity:** [specific recommendation]
### Pattern: [integrations/]
...
---
## Opportunity Ranking
| Priority | Pattern | Opportunity Type | Effort | Expected Impact |
|----------|---------|-----------------|--------|----------------|
| P0 | [pattern] | White space — no competitors | Medium | High |
| P0 | [pattern] | Quality gap — beat weak templates | Low | Medium |
| P1 | [pattern] | Variation gap — fill missing pages | Low | Medium |
| P2 | [pattern] | Head-to-head — outrank strong competitor | High | High |
---
## Recommended Action Plan
1. **Immediate (Week 1-2):** Build [pattern] — [rationale]
2. **Short-term (Month 1):** Build [pattern] — [rationale]
3. **Medium-term (Month 2-3):** Build [pattern] — [rationale]
---
## Raw Data
[Link to crawl data, pattern clusters, sample pages analyzed]
現在の作業ディレクトリ、またはユーザーが希望する場所に保存します。
コスト
| コンポーネント | コスト |
|---|---|
| 競合ごとのサイトカタログ(Apify) | ~$0.05-0.10 |
| 競合ごとの SEO ドメイン分析 | ~$0.10-0.20 |
| ページ取得(パターンごとに 3~5 ページ × N パターン) | ~$0.01-0.05 |
| DataForSEO ドメイン分析(拡張) | 競合ごとに ~$0.10-0.50 |
| 分析 | 無料(LLM による推論) |
| 合計(基本、競合 3 社) | ~$0.50-1.00 |
| 合計(拡張、競合 3 社) | ~$0.80-2.00 |
必要なツール
- Apify API トークン —
APIFY_API_TOKEN環境変数 - 上流スキル:
site-content-catalog、seo-domain-analyzer、fetch_webpage - 任意(拡張): DataForSEO(
DATAFORSEO_LOGIN+DATAFORSEO_PASSWORD)、SEMrush(SEMRUSH_API_KEY)、Ahrefs(AHREFS_API_TOKEN)、または SimilarWeb(SIMILARWEB_API_KEY)
トリガーフレーズ
- 「競合はどのような pSEO を行っていますか?」
- 「競合のプログラマティックページをリバースエンジニアリングする」
- 「競合の URL 構造を分析する」
- 「自社の領域における pSEO のギャップを見つける」
- 「競合にはどのような比較ページがありますか?」