mcpField
F
firecrawl

firecrawl

github.com/dirnbauerデータ・データベース3348 回インストール13 週間前に更新
リポジトリ

firecrawl について

firecrawl は、ウェブ検索、ページ抽出、ページ操作を行い、LLM のコンテキストに適した Markdown を出力するコマンドライン技能です。調査やサイト監視の手順を案内し、アプリへの統合には関連技能を案内します。

主な機能

  1. 01ウェブページと情報源の検索
  2. 02静的ページと JavaScript 描画ページの抽出
  3. 03サイトのマップ作成とクロール
  4. 04AI による構造化データ抽出
  5. 05ページ操作とサイトのダウンロード
  6. 06差分と通知による変更監視

活用シーン

  1. 01調査テーマに関する情報源の発見
  2. 02指定 URL からのコンテンツ抽出
  3. 03ドキュメント領域の複数ページ収集
  4. 04ウェブサイトの継続的な変更追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dirnbauer/webconsulting-skills --skill firecrawl

インストール後、Claude Code で/firecrawlを入力して読み込まれたか確認します。

同梱ファイルrules/install.mdrules/security.md

詳細

Firecrawl CLI

Web を検索、スクレイピングし、操作します。LLM のコンテキストウィンドウに最適化された、クリーンな Markdown を返します。

オプションの詳細については、firecrawl --help または firecrawl <command> --help を実行してください。

Firecrawl をアプリケーションに統合する場合、プロジェクトに FIRECRAWL_API_KEY を追加する場合、またはプロダクトコードでエンドポイントの使い方を選択する場合は、firecrawl-build スキルを使用してください。ディープリサーチ、SEO 監査、QA、リード獲得、ナレッジベースの作成、ダッシュボードでのレポート作成、ショッピングリサーチ、ウェブサイトのデザインシステム抽出など、成果につながるワークフローを実行する場合は、firecrawl-workflows スキルを使用してください。firecrawl init の実行時に、これらはこの CLI スキルとともにすでにインストールされています。

前提条件

インストールと認証が必要です。firecrawl --status で確認してください。

  🔥 firecrawl cli v1.8.0

  ● Authenticated via FIRECRAWL_API_KEY
  Concurrency: 0/100 jobs (parallel scrape limit)
  Credits: 500,000 remaining
  • 同時実行数:並列ジョブの最大数です。この上限まで並列処理を実行できます。
  • クレジット:残りの API クレジット数です。操作ごとにクレジットを消費します。

準備ができていない場合は、rules/install.md を参照してください。出力の取り扱いに関するガイドラインは、rules/security.md を参照してください。

実際の作業を始める前に、小さなリクエストを 1 件実行してセットアップを確認してください。

mkdir -p .firecrawl
firecrawl scrape "https://firecrawl.dev" -o .firecrawl/install-check.md
firecrawl search "query" --scrape --limit 3

ワークフロー

次の段階的なパターンに従ってください。

  1. 検索 - 特定の URL がまだありません。ページを見つけ、質問に回答し、情報源を探します。
  2. スクレイピング - URL がわかっています。コンテンツを直接抽出します。
  3. マップ + スクレイピング - 大規模なサイト、または特定のサブページが必要です。map --search で適切な URL を探し、スクレイピングします。
  4. クロール - サイト全体のセクション(例:すべての /docs/)から大量のコンテンツが必要です。
  5. モニタリング - 定期的な確認や継続的なアラートが必要です。単発のスクレイピングを繰り返すのではなく、--page と --goal を指定してモニターを設定することを推奨します。
  6. 操作 - まずスクレイピングし、その後、ページを操作します(ページネーション、モーダル、フォーム送信、複数ステップのナビゲーションなど)。
必要なことコマンド使用する状況
トピックに関するページを探すsearch特定の URL がまだない
ページのコンテンツを取得するscrapeURL があり、ページが静的または JS でレンダリングされる
サイト内の URL を探すmap特定のサブページを見つける必要がある
サイトのセクションを一括抽出するcrawl多数のページが必要(例:すべての /docs/)
AI を活用してデータを抽出するagent複雑なサイトから構造化データを取得する必要がある
ページを操作するscrape + interactクリック、フォーム入力、ページネーション、ログインが必要
サイトをファイルにダウンロードするdownloadサイト全体をローカルファイルとして保存する
ローカルファイルを解析するparseディスク上のファイル(PDF、DOCX、XLSX など)— URL ではない
ページの変更を監視するmonitor定期的なスクレイピング/クロールをスケジュールし、スナップショットと差分を比較する

コマンドの詳細については、firecrawl <command> --help を実行してください。

スクレイピングと操作の使い分け:

  • まず scrape を使用してください。静的ページと JS でレンダリングされる SPA に対応しています。
  • ボタンのクリック、フォームへの入力、複雑なサイト内の移動、無限スクロールなど、ページの操作が必要な場合や、必要なコンテンツをすべて取得できない場合は、scrape + interact を使用してください。
  • Web 検索に interact を使用しないでください。代わりに search を使用してください。 モニター: 定期的なスクレイプまたはクロールをスケジュールし、各結果を前回保持したスナップショットと比較します。ユーザーの目的が継続的な変更検知、アラート、または経時的な反復チェックである場合は、monitor を優先してください。単一のページでは、--page <url> と --goal "..." を指定してモニターを設定するのがデフォルトです。商品ページ、ドキュメント、ブログ、変更履歴、競合他社のサイトなど、変更が重要なあらゆるページに使用します。各モニターには、重要な変更を説明する短い goal を含める必要があります。各チェックではページを same、new、changed、removed、error のいずれかに分類し、Webhook とメールによる通知も選択できます。

--goal を記述する際は、ユーザーの監視意図を、Web アプリの設定フローに似た簡潔な 2~3 文のモニター目標にまとめます。

  • Alert when ... で始め、ユーザーが示した意図に基づいて、何がアラートのトリガーになるかを記述します。
  • ユーザーが言及した範囲(上位 N 件、価格、職種、企業、地域、トピック、ステータス、特定のエンティティなど)を言い換えて明記します。
  • ポイントやコメント(ランキングの場合)、価格に関係のないマーケティング文言、求人に関係のない企業ページの更新など、リクエストから明らかな意図固有の除外に限り、Ignore ... の文を含めます。
  • 汎用的なノイズ除外をすべての目標で繰り返さないでください。判定機能は、空白、大文字・小文字、句読点、エンコーディング、書式のみの変更、リクエスト/セッション ID、キャッシュバスター、トラッキングパラメーター、一般的なメタデータのノイズ、無関係なページの装飾をすでに処理します。
  • ユーザーが言及していない限り、ページ固有のセクション、エンティティ、しきい値、除外事項、ビジネスルールを作り出さないでください。
  • ユーザーの説明が曖昧な場合は、除外事項を推測せず、広い範囲の目標にします。
  • ユーザーが「変更は何でも」と求めている場合は、その意図を保ち、除外事項を追加しないでください。
  • ユーザーが気にしないノイズに言及した場合は、それを明示的に含めます。

目標の良い例:

  • ユーザーの意図:top 10 hackernews stories 目標:Hacker News のトップ 10 内でストーリーがランクイン、圏外、または順位変更した場合にアラートします。ポイント、コメント、タイムスタンプは無視します。トップ 10 圏外の変更についてはアラートしません。
  • ユーザーの意図:pricing changes 目標:価格、プラン名、請求期間、料金区分、上限、含まれる機能など、価格情報が変更された場合にアラートします。実際の提供内容に変更がない限り、無関係なマーケティング文言、推薦文、地域別の通貨表示の変更は無視します。
  • ユーザーの意図:new engineering roles 目標:新しいエンジニアリング職が掲載された場合にアラートします。エンジニアリング職の追加、削除、変更を伴わない一般的な企業ページの更新は無視します。
  • ユーザーの意図:track this page 目標:このページの内容のうち、画面上に表示される実質的な部分が変更された場合にアラートします。
  • ユーザーの意図:any change 目標:文言、数値、タイムスタンプ、カウンター、リンク、レイアウト上のテキストなど、ページ上で見えるあらゆるコンテンツが変更された場合にアラートします。

サブコマンド:create | list | get | update | delete | run | checks | check。

# create from flags
firecrawl monitor create --name "Blog" --schedule "every 5 minutes" \
  --goal "Alert when a new blog post is published." \
  --page https://example.com/blog --email [email protected]

# multiple pages
firecrawl monitor create --name "Product pages" --schedule "every 5 minutes" \
  --goal "Alert when pricing, docs, or changelog content changes." \
  --scrape-urls https://example.com/pricing,https://example.com/docs,https://example.com/changelog

# webhook notifications
firecrawl monitor create --name "Docs webhook" --schedule "every 5 minutes" \
  --goal "Alert when docs content changes." \
  --page https://example.com/docs \
  --webhook-url https://example.com/webhook \
  --webhook-events monitor.page,monitor.check.completed

# or from JSON (positional file, or piped stdin)
firecrawl monitor create monitor.json
cat monitor.json | firecrawl monitor create

firecrawl monitor list --limit 20
firecrawl monitor run <monitorId>             # trigger a check now
firecrawl monitor checks <monitorId>          # list checks
firecrawl monitor check <monitorId> <checkId> --page-status changed
firecrawl monitor update <monitorId> --state paused
firecrawl monitor delete <monitorId>

スケジュールには cron(--cron "*/5 * * * *")または自然言語(--schedule "every 5 minutes")を指定できます。最短間隔は 5 分です。対象には、単一ページ用の --page <url>、複数のスクレイプ URL 用の --scrape-urls a,b,c、各チェックでサイト全体をクロールするための --crawl-url <url> を指定します。フラグを使ってモニターを作成する場合は --goal を使用するか、JSON ペイロードに "goal": "..." を含めてください。注:--state(--status ではありません)でアクティブ/一時停止を設定し、--page-status(--status ではありません)で check のページ結果をフィルタリングします。これにより、グローバルな --status フラグとの衝突を避けられます。データをゼロ保持するチームではモニタリングを利用できません。

JSON モードの変更追跡: デフォルトでは、モニターは各ページの Markdown を比較し、統合テキスト差分を返します。ページ全体ではなく、特定の構造化フィールド(価格、見出し、在庫フラグ、リスト内の項目など)を追跡する場合は、対象の scrapeOptions.formats に modes: ["json"] と JSON スキーマを含む changeTracking 形式を追加します。フラグを使った形式では対応できないため、ファイルまたは標準入力から JSON 本文を渡します。

cat > pricing-monitor.json <<'EOF'
{
  "name": "Pricing watch",
  "goal": "Alert when plan prices or headline features change",
  "schedule": { "text": "hourly", "timezone": "UTC" },
  "targets": [{
    "type": "scrape",
    "urls": ["https://example.com/pricing"],
    "scrapeOptions": {
      "formats": [{
        "type": "changeTracking",
        "modes": ["json"],
        "prompt": "Extract pricing tiers and headline features for each plan.",
        "schema": {
          "type": "object",
          "properties": {
            "plans": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name":     { "type": "string" },
                  "price":    { "type": "string" },
                  "features": { "type": "array", "items": { "type": "string" } }
                }
              }
            }
          }
        }
      }]
    }
  }]
}
EOF
firecrawl monitor create pricing-monitor.json

その後、check のレスポンスには、Markdown の差分に代わって(またはそれに加えて)、フィールドごとの差分(plans[0].price のようなパス)と、この実行での抽出結果全体が含まれます。pages[] 内で変更された各ページは、次のようになります。

{
  "url": "https://example.com/pricing",
  "status": "changed",
  "diff": {
    "json": {
      "plans[0].price": { "previous": "$19/mo", "current": "$24/mo" },
      "plans[1].features[2]": {
        "previous": "10 GB storage",
        "current": "25 GB storage"
      }
    }
  },
  "snapshot": {
    "json": {
      "plans": [
        /* current full extraction */
      ]
    }
  }
}

modes: ["json", "git-diff"] を指定すると混合モードになります。diff.json(フィールドごとの差分)と diff.text(Markdown のサイドカー)の両方を取得でき、どちらかの形式に変更があればページは changed とマークされます。Markdown 専用のモニターでは、diff.text に統合差分が格納され、diff.json は parse-diff AST({ files: [...] })になります。snapshot はありません。

重複したフェッチを避ける:

  • search --scrape はすでにページ全体のコンテンツを取得しています。それらの URL を再スクレイプしないでください。
  • 再度フェッチする前に、.firecrawl/ に既存のデータがないか確認してください。

参照情報を読み込むタイミング

  • まずウェブを検索する、または情報源を探す → firecrawl-search
  • 既知の URL をスクレイピングする → firecrawl-scrape
  • 既知のサイト内で URL を探す → firecrawl-map
  • ドキュメントのセクションまたはサイトから一括抽出する → firecrawl-crawl
  • 複雑なサイトから AI を活用して構造化データを抽出する → firecrawl-agent
  • クリック、フォーム、ログイン、ページネーション、スクレイピング後のブラウザー操作 → firecrawl-interact
  • サイトをローカルファイルにダウンロードする → firecrawl-download
  • ローカルファイル(PDF、DOCX、XLSX、HTML など)を解析する → firecrawl-parse
  • ウェブサイトのコンテンツ変更を検出し、Webhook またはメールで通知を受け取る(価格、求人、投稿、ドキュメント、ステータスページなど、継続的に監視するもの) → firecrawl-monitor
  • インストール、認証、セットアップに関する問題 → rules/install.md
  • 出力の処理と安全なファイル読み取りのパターン → rules/security.md
  • Firecrawl をアプリに統合する、.env に FIRECRAWL_API_KEY を追加する、または製品コードでのエンドポイントの使い方を選択する → firecrawl-build スキルを使用してください(この CLI スキルと一緒にインストール済みです)
  • 調査ブリーフ、SEO 監査、QA レポート、リードリスト、ナレッジベース、デザインシステムの抽出など、Firecrawl を活用した成果物を作成する → firecrawl-workflows スキルを使用してください(この CLI スキルと一緒にインストール済みです)。これらのスキルはまずコンテキストから推測し、必要な場合に限って、作業を妨げる短い確認質問をします。

出力と整理

ユーザーがコンテキスト内での返答を指定しない限り、-o を使って結果を .firecrawl/ に書き込みます。.firecrawl/ を .gitignore に追加してください。シェルでは ? と & が特殊文字として解釈されるため、URL は必ず引用符で囲んでください。

firecrawl search "react hooks" -o .firecrawl/search-react-hooks.json --json
firecrawl scrape "<url>" -o .firecrawl/page.md

命名規則:

.firecrawl/search-{query}.json
.firecrawl/search-{query}-scraped.json
.firecrawl/{site}-{path}.md

出力ファイル全体を一度に読み込まないでください。grep、head、または段階的な読み込みを使用してください。

wc -l .firecrawl/file.md && head -50 .firecrawl/file.md
grep -n "keyword" .firecrawl/file.md

単一形式の出力は、生のコンテンツです。複数形式(例:--format markdown,links)の出力は JSON です。

結果の処理

複雑なタスクでファイルベースの出力(-o フラグ)を扱う際は、次のパターンが役立ちます。

# Extract URLs from search
jq -r '.data.web[].url' .firecrawl/search.json

# Get titles and URLs
jq -r '.data.web[] | "\(.title): \(.url)"' .firecrawl/search.json

検索後:フィードバックを送信する(1 クレジットが返金されます)

検索 1 回あたり 2 クレジットかかります。検索結果を使い終えたら、バックグラウンドで構造化フィードバックを送信してください。検索 ID ごとの最初のフィードバックで 1 クレジットが返金され、検索品質の改善に役立てられます。

SEARCH_ID=$(jq -r '.id' .firecrawl/search-react-hooks.json)

firecrawl search-feedback "$SEARCH_ID" \
  --rating good \
  --valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Authoritative"}]' \
  --missing-content '[{"topic":"useDeferredValue example"},{"topic":"Server Components hooks"}]' \
  --query-suggestions "Boost react.dev for react-hooks queries" \
  --silent &

最も有用なフィールドは --missing-content です。これは、見つかると期待していたものの、見つからなかった具体的なコンテンツを示す 配列 です。見つからなかったトピックごとに 1 つの項目を指定してください。--missing-content を詳しく記載した、不正確または不完全なフィードバックも、良質なフィードバックと同じくらい価値があります。

オプトアウト: export FIRECRAWL_NO_SEARCH_FEEDBACK=1 を設定すると、CLI はすべてのフィードバック呼び出しを通知なくスキップします。このフラグを尊重し、回避しようとしないでください。詳しい手順は firecrawl-search を参照してください。

並列処理

独立した操作は並列で実行します。同時実行数の上限を確認するには、firecrawl --statusを実行します:

firecrawl scrape "<url-1>" -o .firecrawl/1.md &
firecrawl scrape "<url-2>" -o .firecrawl/2.md &
firecrawl scrape "<url-3>" -o .firecrawl/3.md &
wait

操作する場合は、複数のページをスクレイプし、それぞれのスクレイプ ID を使って個別に操作します。

クレジットの使用

firecrawl credit-usage
firecrawl credit-usage --json --pretty -o .firecrawl/credits.json

クレジットと謝辞

このスキルは、 **Firecrawl**による優れた成果を基にしています。

元のリポジトリ:https://github.com/firecrawl/cli

このスキルコレクションの形成に役立った、寛大なオープンソースへの貢献をしてくださったFirecrawlに心より感謝いたします。 このスキルコレクション向けにwebconsulting.atが調整しました

コメント