firecrawl について
firecrawlは、Web検索、スクレイピング、ドキュメント解析を行うコマンドライン向けスキルで、調査やコンテンツ抽出に使えます。一部の主要コマンドはAPIキーなしで実行でき、分析前に取得内容を絞り込む手順も備えています。
主な機能
- 01Web検索と単一ページの取得
- 02サイトマップ作成とサイト全体のクロール
- 03ローカル文書のMarkdown変換
- 04構造化抽出と自律抽出
- 05キーワードやセクションによる結果の絞り込み
活用シーン
- 01関連ページの検索と取得
- 02ドキュメントサイトの指定パスのクロール
- 03ローカルPDFやDOCXのMarkdown変換
- 04分析前の取得内容の削減
MCP 対応
FirecrawlはMCPエンドポイントを提供し、APIキーなしでSearch、Scrape、ParseをMCPクライアントに公開します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tdimino/ claude-code-minoan --skill firecrawlインストール後、Claude Code で/firecrawlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/actions-reference.mdbranding-format.mdcli-reference.mdfirecrawl-agent-api.mdfirecrawl-api.mdinteract-reference.mdpython-api-reference.mdscripts/deepwiki.shfilter_web_results.pyfirecrawl_api.pytest_firecrawl.py詳細
Firecrawl と Jina によるウェブスクレイピング
Firecrawl と WebFetch の比較
WebFetch ツールよりも firecrawl scrape URL --only-main-content を優先してください。よりクリーンな Markdown を生成し、JavaScript を多用するページにも対応し、コンテンツの切り捨てを回避します(ベンチマークのカバレッジは 80%超)。Firecrawl を利用できない場合は、フォールバックとして WebFetch を使用してもかまいません。
# Preferred approach:
firecrawl scrape https://docs.example.com/api --only-main-content
キーレスモード(v2.11.0+)
Firecrawl のコアエンドポイントは、API キーなしで動作し、IP ごとに日単位でレート制限されます。登録は不要です。
キーレスで利用できるコマンド: Search、Scrape、Parse、Interact API キーが必要: Crawl、Map、Batch Scrape、Agent、Extract、Monitor
# Quick start — no API key needed:
firecrawl scrape https://example.com --only-main-content
firecrawl search "query" --limit 10
# Python script also works keyless for eligible commands:
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape https://example.com
レート制限: IP ごとに、リクエスト数とクレジット数に日次上限があります(正確な数値は未公開で、1 日あたり 1,000 クレジット未満です)。無料の API キーに登録すると、1,000 クレジットとより高いレート制限を利用できます。
キーレス MCP エンドポイント: https://mcp.firecrawl.dev/v2/mcp — キーなしで Search、Scrape、Parse を公開します。MCP ネイティブなインテグレーションで使用してください。
完全なセットアップ(より多く利用する場合に推奨):
npx -y firecrawl-cli@latest init --all --browser
# Installs CLI + skill segments into coding agents + opens browser for OAuth auth
検索精度: SimpleQA で 94.7%。カスタム関連性モデルが、クエリに対する段落のスコアを算出し、ページ全体を処理する場合と比べてトークン数を 10 分の 1 に抑えながら、最も関連性の高い抜粋を返します。
トークン効率の高いスクレイピング
Anthropic の動的フィルタリングに着想を得ています。推論の前には必ずフィルタリングしてください。Anthropic のベンチマークでは、これにより入力トークンが約 24%減少し、精度が約 11%向上しました。
原則:検索 → フィルタリング → スクレイピング → フィルタリング → 推論
推奨:
Search (titles/URLs only) → Evaluate relevance → Scrape top hits → Filter by section → Reason
非推奨:
Search → Scrape everything → Reason over all of it
効率的なワークフローの手順
# Step 1: Search — get titles/URLs only (cheap)
firecrawl search "query" --limit 20
# Step 2: Evaluate results, pick 3-5 best URLs
# Step 3: Scrape only those, filter to relevant sections
firecrawl scrape URL1 --only-main-content | \
python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py \
--sections "API,Authentication" --max-chars 5000
filter_web_results.py による後処理
Firecrawl または Exa の出力をこのスクリプトにパイプで渡すと、推論の前にコンテキストを削減できます。
# Extract only matching sections from scraped page
firecrawl scrape URL --only-main-content | \
python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py --sections "Pricing,Plans"
# Keep only paragraphs with keywords
firecrawl search "query" --scrape --pretty | \
python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py --keywords "pricing,cost" --max-chars 5000
# Extract specific JSON fields from API output
python3 ~/.claude/skills/exa-search/scripts/exa_search.py "query" --json | \
python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py --fields "title,url,text" --max-chars 3000
# Combine filters with stats
firecrawl scrape URL --only-main-content | \
python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py --sections "API" --keywords "endpoint" --compact --stats
完全なパス: python3 ~/.claude/skills/firecrawl/scripts/filter_web_results.py
フラグ: --sections、--keywords、--max-chars、--max-lines、--fields(JSON)、--strip-links、--strip-images、--compact、--stats
その他のトークン節約パターン
- ナビゲーションやフッターの定型コンテンツを除去してトークン消費を抑えるには、
--only-main-contentを使用してください。ナビゲーションやフッターの内容が特に必要な場合に限り、省略してください。 - より強力なクリーニングには、
--only-clean-content(Python API スクリプト)を使用してください。ナビゲーション、広告、Cookie バナーを除去します。--only-main-contentより強力です。メインコンテンツのフィルタリング後もページにノイズが多い場合に使用してください。 - スクレイピングの前に関連するサブページを見つけるには、
firecrawl map URL --search "topic"を最初に使用してください - URL の一覧を取得して評価し、その後必要なものだけをスクレイピングするには、
--format linksを最初に使用してください - 抽出の長さを制限するには、
exa_contents.pyと--max-charsを使用してください - 要点だけが必要で、生のコンテンツが不要な場合は、全文の代わりに
--formats summary(Python API スクリプト)を使用してください
Claude API のネイティブツール(API エージェントの構築者向け)
Anthropic の API では、組み込みの動的フィルタリングツールを利用できるようになりました。
web_search_20260209 / web_fetch_20260209
Header: anthropic-beta: code-execution-web-tools-2026-02-09
これらのツールには、コード実行による動的フィルタリングが組み込まれています。Claude API エージェントを直接構築する場合に使用してください。自律型エージェント、一括スクレイピング、構造化抽出、ドメイン固有のクローリングが必要な場合、または Claude API を利用していない場合は、Firecrawl/Exa を使用してください。
利用可能なツール
1. 公式 Firecrawl CLI(firecrawl)— 主なツール
キーレスセットアップ: npm install -g firecrawl-cli@latest(search/scrape/parse/interact はすぐに利用できます)
完全なセットアップ: npm install -g firecrawl-cli@latest && firecrawl login --api-key $FIRECRAWL_API_KEY
エージェント向けセットアップ: npx -y firecrawl-cli@latest init --all --browser(CLI + スキル + OAuth をインストール)
| コマンド | 目的 | 簡単な例 |
|---|---|---|
scrape | 単一ページ → Markdown | firecrawl scrape URL --only-main-content |
crawl | 進捗を表示しながらサイト全体をクロール | firecrawl crawl URL --wait --progress --limit 50 |
map | サイト上のすべての URL を検出 | firecrawl map URL --search "API" |
search | ウェブ検索、SimpleQA 精度 94.7%(オプションでスクレイピングも可能) | firecrawl search "query" --limit 10 |
CLI の完全なリファレンス: references/cli-reference.md
2. 自動保存エイリアス(fc-save)— シェルエイリアス
シェルエイリアスの設定が必要です(このスキルには含まれていません)。
fc-save URL
# → Saves to ~/Desktop/Screencaps & Chats/Web-Scrapes/docs-example-com-api.md
3. Python API スクリプト(firecrawl_api.py)— 高度な機能
コマンド: python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py <command>
必要条件: pip install firecrawl-py requests。キー不要のコマンド(search、scrape、parse、interact)では FIRECRAWL_API_KEY は任意です。それ以外のすべてのコマンドでは必須です。
| コマンド | 用途 | クイック例 |
|---|---|---|
search | スクレイピング機能付きのウェブ検索 | firecrawl_api.py search "query" -n 10 |
scrape | ページアクションを実行する単一 URL | firecrawl_api.py scrape URL --formats markdown summary |
batch-scrape | 複数 URL の並列処理 | firecrawl_api.py batch-scrape URL1 URL2 URL3 |
crawl | ウェブサイトのクロール | firecrawl_api.py crawl URL --limit 20 |
map | URL の検出 | firecrawl_api.py map URL --search "query" |
parse | ローカルドキュメント(PDF、DOCX、XLSX)の解析 | firecrawl_api.py parse report.pdf |
extract | LLM を活用した構造化抽出 | firecrawl_api.py extract URL --prompt "Find pricing" |
agent | 自律型抽出(URL 不要) | firecrawl_api.py agent "Find YC W24 AI startups" |
parallel-agent | エージェントへの一括クエリ(v2.8.0 以降) | firecrawl_api.py parallel-agent "Q1" "Q2" "Q3" |
interact | スクレイピング後のブラウザー操作 | firecrawl_api.py interact SCRAPE_ID --prompt "Click pricing" |
interact-stop | interact セッションの停止 | firecrawl_api.py interact-stop SCRAPE_ID |
エージェントモデル: spark-1-fast(10 クレジット、シンプル)、spark-1-mini(デフォルト)、spark-1-pro(詳細)
Python API の完全なリファレンス: references/python-api-reference.md
4. DeepWiki — GitHub リポジトリのドキュメント
~/.claude/skills/firecrawl/scripts/deepwiki.sh <owner/repo> [section] [options]
公開されている任意の GitHub リポジトリの AI 生成 Wiki です。API キーは不要です。
# Overview
~/.claude/skills/firecrawl/scripts/deepwiki.sh karpathy/nanochat
# Browse sections
~/.claude/skills/firecrawl/scripts/deepwiki.sh langchain-ai/langchain --toc
# Specific section
~/.claude/skills/firecrawl/scripts/deepwiki.sh karpathy/nanochat 4.1-gpt-transformer-implementation
# Full dump for RAG
~/.claude/skills/firecrawl/scripts/deepwiki.sh openai/openai-python --all --save
5. Jina Reader(jina)— フォールバック
Firecrawl が失敗した場合、または Twitter/X の URL を処理する場合に使用します(Firecrawl は Twitter をブロックしますが、Jina は利用できます)。
jina https://x.com/username/status/123456
Firecrawl、Exa、ネイティブ Claude ツールの比較
| ニーズ | 最適なツール | 理由 |
|---|---|---|
| API キーなしで無料スクレイピング | firecrawl scrape (keyless) | 主要なコマンドは認証なしで動作します |
| API キーなしで無料検索 | firecrawl search (keyless) | SimpleQA の精度は 94.7%で、API キーは不要です |
| 単一ページを Markdown に変換 | firecrawl scrape --only-main-content | 最もクリーンな出力です |
| 検索とスクレイピングを一度に実行 | firecrawl search --scrape | 検索とスクレイピングを組み合わせて実行できます |
| サイト全体をクロール | firecrawl crawl --wait --progress | リンクの追跡と進行状況の表示に対応します |
| ローカルファイルを Markdown に変換 | firecrawl_api.py parse FILE | URL は不要で、ファイルを直接アップロードします |
| 自律的なデータ検索 | firecrawl_api.py agent | URL は不要です |
| セマンティック/ニューラル検索 | Exa exa_search.py | AI による関連性評価 |
| 研究論文を検索 | Exa --category "research paper" | 学術論文インデックス |
| 手早く調査結果を取得 | Exa exa_research.py | 引用と情報の統合 |
| 類似ページを検索 | Exa exa_similar.py | 競合分析 |
| Claude API エージェントの構築 | ネイティブ web_search_20260209 | 動的フィルタリングを内蔵 |
| Twitter/X のコンテンツ | jina URL | 動作する唯一のツール |
| GitHub リポジトリのドキュメント | deepwiki.sh owner/repo | AI が生成する Wiki |
| ボット対策/Cloudflare の回避 | scrapling ステルスフェッチ | ローカル Turnstile ソルバー |
| 要素単位での抽出 | scrapling + CSS セレクター | 精密な対象指定と適応型トラッキング |
| API キーなしのスクレイピング | scrapling HTTP フェッチ | 100%ローカルで、認証情報は不要です |
| サイトの再設計への耐性 | scrapling 適応モード | SQLite による類似性マッチング |
| 低予算での JS レンダリング対応スクレイピング | cf_browser.py markdown URL | CF 無料枠:1 日 10 分。有料枠:1 時間あたり $0.09 |
| 静的ページを無料で取得 | cf_browser.py markdown URL --no-render | ベータ期間中は無料(JS なし) |
| 低予算での複数ページのクロール | cf_browser.py crawl URL | 1 日 5 回まで無料。1 回あたり 100 ページ |
| 増分再クロール | cf_browser.py crawl --modified-since | 標準搭載。Firecrawl にはありません |
| ページのスクリーンショット/PDF | cf_browser.py screenshot/pdf URL | CF のエンドポイントを標準搭載し、より低コストです |
| AI による構造化抽出 | cf_browser.py json URL --prompt "..." | Workers AI を無料で利用できます |
一般的なワークフロー
単一ページのスクレイピング
firecrawl scrape https://example.com/page --only-main-content
# Or auto-save: fc-save URL
# Or to file: firecrawl scrape URL --only-main-content -o page.md
ドキュメントのクロール
# Map first, then crawl relevant paths
firecrawl map https://docs.example.com --search "API"
firecrawl crawl https://docs.example.com --include-paths /api,/guides --wait --progress
調査ワークフロー
firecrawl search "machine learning best practices 2026" --scrape --scrape-formats markdown
ドキュメントの解析(ローカルファイル)
ローカルのドキュメントをクリーンな Markdown に解析します。ローカルファイルまたは一般公開されていないファイルには parse を使用し、ドキュメントを指す一般公開 URL には scrape を使用してください。どちらも同じ Rust ベースのパーサーを使用します。
# PDF to markdown
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py parse report.pdf
# Excel spreadsheet with main content only
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py parse data.xlsx --only-main-content
# Word doc with zero data retention, save to file
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py parse contract.docx --zero-data-retention -o contract.md
# Raw JSON output for programmatic use
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py parse invoice.pdf --json
対応形式:PDF、DOCX、DOC、XLSX、XLS、HTML、HTM、ODT、RTF(最大 50 MB)。
PDF の解析(Fire-PDF v2.9)
Fire-PDF は、すべての PDF スクレイピングでデフォルトの解析パイプラインになりました。3 つのモードがあります。
# Auto mode (default) — detects text layer vs scanned, chooses best method
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape "https://example.com/report.pdf"
# Fast mode — text layer only, skip OCR (use for PDFs with selectable text)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape URL --pdf-mode fast
# OCR mode — force full OCR (use for scanned docs or image-only PDFs)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape URL --pdf-mode ocr
# Limit pages parsed (large documents)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py parse report.pdf --pdf-mode auto --pdf-max-pages 20
| フラグ | 値 | 備考 |
|---|---|---|
--pdf-mode | fast、auto、ocr | デフォルト:auto。fast = テキストレイヤーのみ。ocr = OCR を強制 |
--pdf-max-pages | 整数 | 解析するページ数を制限します。大きな PDF の予算管理に便利です |
どちらのフラグも、scrape(PDF URL の場合)と parse(ローカルファイルの場合)で使用できます。
エージェントを活用した調査(URL 不要)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py agent \
"Compare pricing tiers for Firecrawl, Apify, and ScrapingBee"
Interact ワークフロー(スクレイピング後のブラウザー操作)
ページをスクレイピングした後、ボタンのクリック、フォームへの入力、動的コンテンツの抽出などの操作を行います。モードは 2 つあります。AI プロンプト(自然言語)とコード実行(Node.js/Python/Bash)です。
Interact と Actions の使い分け
| ニーズ | 使用する機能 | 理由 |
|---|---|---|
| 1 回のスクレイピング前にクリック/待機 | scrape の --actions | 実行して終了するため、セッションのオーバーヘッドがありません |
| 同じページで複数の操作を実行 | interact | 永続セッションで、やり取りを続けられます |
| フォーム入力、ログイン、移動 | interact | 状態を保持し、複数ステップに対応します |
| 「JavaScript の読み込みを待つ」だけ | wait を指定した --actions | より低コストで、セッションは不要です |
Interact の基本(AI プロンプトモード)
# Step 1: Scrape and note the Scrape ID from output
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape "https://example.com/pricing"
# Step 2: Interact using natural language
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact SCRAPE_ID \
--prompt "Click the Enterprise pricing tab"
# Step 3: More interactions on same session
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact SCRAPE_ID \
--prompt "What is the monthly price for the Enterprise plan?"
# Step 4: Stop when done
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact-stop SCRAPE_ID
コード実行モード(より低コスト)
# Execute Playwright code directly (2 credits/min vs 7 for prompts)
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact SCRAPE_ID \
--code "const text = await page.locator('.pricing-table').textContent(); console.log(text);"
# Python mode
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact SCRAPE_ID \
--code "text = await page.locator('.content').text_content(); print(text)" \
--language python
永続プロファイル(ログインセッション)
# Scrape with a named profile — browser state persists across sessions
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape "https://app.example.com/login" \
--profile my-app --json
# Interact to log in
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py interact SCRAPE_ID \
--code "await page.fill('#email', '[email protected]'); await page.fill('#password', 'pass'); await page.click('button[type=submit]');"
# Later: scrape another page with same profile — cookies restored
python3 ~/.claude/skills/firecrawl/scripts/firecrawl_api.py scrape "https://app.example.com/dashboard" \
--profile my-app
重要: Interact はページの Markdown を返しません。操作後に更新されたコンテンツを取得するには、コードモードを使用して特定の要素を抽出するか、後続のスクレイプを実行してください。
Interact の完全なリファレンス: references/interact-reference.md
課金に関する注意事項
- クレジットとトークンの統一(v2.9): クレジットとトークンが統一されました。15 トークン = 1 クレジットです。料金はすべてクレジットで表示されます。
- デフォルトのキャッシュ TTL: 結果は 2 日間キャッシュされます。キャッシュにかかわらず最新のスクレイプを強制するには、
--max-age 0(または API でmaxAge: 0)を使用してください。 query形式: 完全な Markdown ではなく、直接回答(data.answer)を取得するには、formats=["query"](Python API)を渡してください。ページ全体のコンテンツが不要な事実確認に使用できます。audio形式:formats=["audio"]を指定すると、ページの読み上げ音声を含む MP3 が返されます。アクセシビリティのパイプラインや音声インターフェースに便利です。wikimediaエンジン: 検索オプションでengine="wikimedia"を渡すと、クエリが Wikimedia 経由で実行されます。百科事典的な情報の検索に便利です。
トラブルシューティング
# Check status and credits
firecrawl --status && firecrawl credit-usage
# Re-authenticate
firecrawl logout && firecrawl login --api-key $FIRECRAWL_API_KEY
# Check API key
echo $FIRECRAWL_API_KEY
- スクレイプに失敗する:
jina URLを試すか、JavaScript を多用するサイトでは--wait-for 3000を追加してください - 非同期ジョブが停止する:
crawl-status/batch-statusで確認し、crawl-cancel/batch-cancelでキャンセルしてください - テレメトリを無効にする:
export FIRECRAWL_NO_TELEMETRY=1
リファレンスドキュメント
| ファイル | 内容 |
|---|---|
references/cli-reference.md | CLI パラメーターの完全なリファレンス(scrape、crawl、map、search、fc-save、jina、deepwiki) |
references/python-api-reference.md | Python API スクリプトの完全なリファレンス(すべてのコマンド、SDK の例) |
references/firecrawl-api.md | Firecrawl Search API のリファレンス |
references/firecrawl-agent-api.md | Agent API(spark モデル、並列エージェント、webhook) |
references/actions-reference.md | 動的コンテンツ向けのページ操作(クリック、入力、待機、スクロール) |
references/interact-reference.md | Interact API:スクレイプ後のブラウザー操作(プロンプト、コード、プロファイル) |
references/branding-format.md | ブランドアイデンティティの抽出(色、フォント、UI) |
テストスイート
python3 ~/.claude/skills/firecrawl/scripts/test_firecrawl.py --quick # Quick validation
python3 ~/.claude/skills/firecrawl/scripts/test_firecrawl.py # Full suite
python3 ~/.claude/skills/firecrawl/scripts/test_firecrawl.py --test scrape # Specific test