Firecrawl SEO拡張(Claude向け)
このスキルを使用するには、Firecrawl拡張をインストールする必要があります:
./extensions/firecrawl/install.sh
利用可能性の確認: Firecrawlツールを使用する前に、firecrawl_scrape またはその他のFirecrawlツールが利用可能かを確認してください。ツールが利用できない場合は、ユーザーに拡張がインストールされていないことを伝え、インストール手順を提供してください。
クイックリファレンス
| コマンド | 目的 |
|---|---|
/seo firecrawl crawl <url> | コンテンツ抽出付き全サイトクロール |
/seo firecrawl map <url> | サイト構造の検出(URLのみ、高速) |
/seo firecrawl scrape <url> | JSレンダリング付き単一ページスクレイピング |
/seo firecrawl search <query> <url> | クロール済みサイト内検索 |
コマンド
crawl -- 全サイトクロール
指定されたURLから開始してウェブサイト全体をクロールします。発見されたすべてのページのコンテンツ、メタデータ、リンクを返します。
MCPツール: firecrawl_crawl
パラメータ:
url(必須):クロールを開始するURLlimit:クロールする最大ページ数(デフォルト:100、最大:500)maxDepth:開始URLからの最大リンク深度(デフォルト:3)includePaths:含めるグロブパターンの配列(例:["/blog/*"])excludePaths:除外するグロブパターンの配列(例:["/admin/*", "/api/*"])scrapeOptions.formats:出力形式 --["markdown", "html", "links"]
SEO使用パターン:
- 包括的監査クロール:サイト全体をクロールし、サブエージェント分析用に全ページを抽出
- セクション限定クロール:
includePathsを使用して/blog/*や/products/*のみを監査 - リンク切れ検出:
["links"]形式でクロールし、すべてのhrefが404を返さないか確認 - コンテンツ棚卸し:全ページのタイトル、メタディスクリプション、H1を大規模に抽出
- SPA/JSレンダリングサイト:FirecrawlがJavaScriptをレンダリングするため、Issue #11の問題を解決
/seo audit でのオーケストレーション例:
1. firecrawl_map(url) -> 全URLを取得(高速、コンテンツなし)
2. 最も重要な50ページ(ホームページ、主要セクション)にフィルタリング
3. firecrawl_crawl(url, limit=50) -> 完全なコンテンツを取得
4. コンテンツをseo-technical、seo-content、seo-schemaエージェントに渡す
コスト意識:
- 無料枠:月500クレジット
- 1クレジット = 1ページのクロールまたはスクレイピング
- マップ操作はより安価(発見されたURLあたり0.5クレジット)
- 大規模クロールの前に、推定クレジット使用量を必ずユーザーに伝えること
map -- サイト構造発見
コンテンツを取得せずにウェブサイト上のすべてのURLを発見します。高速でクレジット効率の良い操作です。
MCPツール: firecrawl_map
パラメータ:
url(必須):マップするウェブサイトのURLlimit:発見する最大URL数(デフォルト:5000)search:URLをフィルタリングするオプションの検索語
SEO使用パターン:
- サイトマップ比較:サイトをマップし、発見されたURLとXMLサイトマップを比較
- 孤立ページ検出:サイトマップにあるがどのページからもリンクされていないURL
- クロール予算分析:インデックス可能な総ページ数 vs ホームページからリンクされているページ数
- URLパターン分析:URL構造パターン、重複、パラメータ肥大化を特定
- 事前監査発見:最初にマップを実行し、その後主要セクションにターゲットクロールを実行
出力: URLの配列。以下のように提示:
サイト: example.com
発見されたページ数: 342
URLパターン内訳:
/blog/* - 128ページ (37%)
/products/* - 89ページ (26%)
/category/* - 45ページ (13%)
/pages/* - 32ページ (9%)
/ (ルートページ) - 48ページ (14%)
scrape -- 単一ページ深掘りスクレイピング
完全なJavaScriptレンダリングで単一ページをスクレイピングします。fetch_page.py よりも詳細にコンテンツを取得し、JSを実行して動的コンテンツを待機します。
MCPツール: firecrawl_scrape
パラメータ:
url(必須):スクレイピングするページのURLformats:出力形式 --["markdown", "html", "links", "screenshot"]onlyMainContent:ナビ/フッター/サイドバーを除去(デフォルト:true)waitFor:コンテンツを待機するCSSセレクタまたはミリ秒timeout:リクエストタイムアウト(ミリ秒)(デフォルト:30000)actions:スクレイピング前のブラウザアクション(クリック、スクロール、待機)
SEO使用パターン:
- SPAコンテンツ抽出:JSレンダリングされたReact/Vue/Angularページをスクレイピング
- 動的コンテンツ監査:画面外に遅延読み込みコンテンツがあるページ
- ペイウォール/ログイン検出:認証壁の背後にあるコンテンツを特定
- メインコンテンツ抽出:
onlyMainContentを使用してクリーンなE-E-A-T分析用データを取得 - スクリーンショット取得:
screenshot形式を使用して視覚分析
scrape vs fetch_page.pyの使い分け:
| シナリオ | 使用 |
|---|---|
| 静的HTMLページ | fetch_page.py(APIコストなし) |
| JSレンダリングSPA | firecrawl_scrape(JSをレンダリング) |
| レスポンスヘッダーが必要 | fetch_page.py(ヘッダーを返す) |
| クリーンなマークダウンが必要 | firecrawl_scrape(抽出が優れている) |
| レート制限/ブロック | firecrawl_scrape(アンチボット対策対応) |
search -- サイト内検索
特定のコンテンツをウェブサイト内で検索します。すべてをクロールせずに特定のトピックに関連するページを見つけるのに便利です。
MCPツール: firecrawl_search
パラメータ:
query(必須):検索クエリurl(必須):検索対象のウェブサイトlimit:最大結果数(デフォルト:10)scrapeOptions.formats:一致したページの出力形式
SEO使用パターン:
- コンテンツギャップ検証:サイト上で特定のキーワードを検索し、コンテンツが存在するか確認
- 内部リンク機会:相互にリンクできるトピックに言及しているページを発見
- 重複コンテンツ検出:キーフレーズを検索してほぼ重複したページを発見
- 競合コンテンツ調査:競合サイトで特定のトピックを検索
スキル間統合
seo-audit(フル監査)との連携
/seo audit でFirecrawlが利用可能な場合:
firecrawl_mapを使用してすべてのサイトURLを発見- XMLサイトマップ(seo-sitemap)と比較して孤立ページや不足ページを発見
- 深堀分析のためのトップページを選択
- クロールしたコンテンツをすべてのサブエージェント(技術、コンテンツ、スキーマ、地理)に提供
- クロール可能な総ページ数、URLパターン、クロール深度を報告
seo-technicalとの連携
- リンク切れ検出:すべての内部リンクをクロールし、404をチェック
- リダイレクトチェーンマッピング:すべてのリダイレクトを追跡し、2ホップ以上のチェーンをフラグ
- 混在コンテンツ検出:HTTPSページ上のHTTPリソースをチェック
- 正規URL検証:正規URLと実際のURLを比較
seo-sitemapとの連携
- サイトマップカバレッジ:クロールされたページの中でサイトマップに存在する割合
- 孤立ページ:クロールで発見されたがサイトマップにないページ
- 古いサイトマップエントリ:404/410を返すサイトマップ内のURL
seo-contentとの連携
- コンテンツ抽出:クリーンなマークダウンをE-E-A-T分析に提供
- 薄いコンテンツ検出:300語未満のページを大規模に特定
- 重複コンテンツ:ページ間のコンテンツを比較してほぼ重複を検出
seo-schemaとの連携
- スキーマ抽出:すべてのクロールページからJSON-LDを抽出
- スキーマカバレッジ:構造化データを持つページの割合
- スキーマ検証:抽出されたスキーマをバッチ検証
エラーハンドリング
| エラー | 原因 | 解決策 |
|---|---|---|
FIRECRAWL_API_KEY not set | MCPが設定されていない | ./extensions/firecrawl/install.sh を実行 |
402 Payment Required | クレジット不足 | firecrawl.dev/app で使用量を確認し、プランをアップグレード |
429 Too Many Requests | レート制限 | 60秒待機、クロール同時実行数を減らす |
408 Timeout | ページが遅すぎてレンダリングできない | timeout を増やす、JSレンダリングなしで試す |
403 Forbidden | サイトがクロールをブロック | robots.txtを確認、このサイトをスキップする必要があるかも |
グレースフルフォールバック: Firecrawlが利用できない場合は、ユーザーに通知し以下を提案:
- 単一ページ分析には
fetch_page.pyを使用(APIコストなし) - 基本的なHTML取得には
WebFetchツールを使用 - Firecrawlのインストール:
./extensions/firecrawl/install.sh