firecrawl について
firecrawl は、ウェブ検索、ページ抽出、ページ操作を行い、LLM のコンテキストに適した Markdown を出力するコマンドライン技能です。調査やサイト監視の手順を案内し、アプリへの統合には関連技能を案内します。
主な機能
- 01ウェブページと情報源の検索
- 02静的ページと JavaScript 描画ページの抽出
- 03サイトのマップ作成とクロール
- 04AI による構造化データ抽出
- 05ページ操作とサイトのダウンロード
- 06差分と通知による変更監視
活用シーン
- 01調査テーマに関する情報源の発見
- 02指定 URL からのコンテンツ抽出
- 03ドキュメント領域の複数ページ収集
- 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
ワークフロー
次の段階的なパターンに従ってください。
- 検索 - 特定の URL がまだありません。ページを見つけ、質問に回答し、情報源を探します。
- スクレイピング - URL がわかっています。コンテンツを直接抽出します。
- マップ + スクレイピング - 大規模なサイト、または特定のサブページが必要です。
map --searchで適切な URL を探し、スクレイピングします。 - クロール - サイト全体のセクション(例:すべての /docs/)から大量のコンテンツが必要です。
- モニタリング - 定期的な確認や継続的なアラートが必要です。単発のスクレイピングを繰り返すのではなく、
--pageと--goalを指定してモニターを設定することを推奨します。 - 操作 - まずスクレイピングし、その後、ページを操作します(ページネーション、モーダル、フォーム送信、複数ステップのナビゲーションなど)。
| 必要なこと | コマンド | 使用する状況 |
|---|---|---|
| トピックに関するページを探す | search | 特定の URL がまだない |
| ページのコンテンツを取得する | scrape | URL があり、ページが静的または 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が調整しました