unclecode/crawl4ai
Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Crawl4AI – LLMおよびAIエージェント向けに構築されたオープンソースのWebクローラー&スクレイパー
概要 – Webページを取得し、必要に応じて実際のブラウザを実行し、LLMフレンドリーなクリーンなMarkdownドキュメントを返すPythonライブラリです(Dockerサーバーおよびホスト型クラウドサービスとしても利用可能)。CSS/XPathルールや任意のLLMを使用して構造化データ (JSON) を抽出することもでき、ディープクロール、適応型クロール、バッチ処理をサポートしています。
重要性 – 大規模言語モデルは、簡潔で構造化されたテキストを最も効率的に処理します。Crawl4AIはメニュー、フッター、その他のボイラープレートを除去し、引用リンクを追加し、定義したスキーマに一致するJSONを生成できます。これにより、RAGパイプライン、自律型エージェント、またはあらゆるデータ取り込みワークフローの便利なフロントエンドとなります。
使用方法
- ライブラリ –
pip install -U crawl4aiを実行し、crawl4ai-setupでPlaywrightブラウザをインストールします。その後、AsyncWebCrawler(または同期バージョン)を使用してresult.markdownやresult.extracted_contentを取得します。 - CLI –
crwl <url> -o markdownまたはcrwl … --deep‑crawl bfs --max-pages 10。 - Dockerサーバー – トークンを指定して
unclecode/crawl4aiを起動し、任意の言語からRESTエンドポイント(/md、/html、/crawl、/screenshotなど)を呼び出します。 - Crawl4AI Cloud – 数秒で無料のAPIキーを取得し、ブラウザを自分で管理することなく
https://api.crawl4ai.com/scrape(または/search、/answer、/extract)を呼び出します。
主な機能(READMEより)
- Markdown生成 – クリーンな見出し、テーブル、コードブロック、引用リスト。設定可能なフィルター(
PruningContentFilterLXML、BM25ContentFilter、LLMContentFilter)。 - 構造化抽出 – LLM不要で高速な抽出のためのCSS/XPath/Regexスキーマ。任意のLLMプロバイダーに対応した
LLMExtractionStrategy。自動スキーマ生成。チャンク化とコサイン類似度検索。 - ブラウザ制御 – 永続プロファイル、CDPリモートブラウザ、セッション管理、プロキシサポート、ステルス/未検出モード、Chromium/Firefox/WebKit。
- クロール – BFS/DFS/ベストファースト戦略、レジューム状態、十分な情報収集後に停止する適応型クロール、サイトマップやCommon CrawlによるURL発見、無限スクロールサイトの全ページスクロール、スクリーンショット/PDF、メディア抽出、キャッシュ、バッチ実行 (
arun_many)。 - セルフホスティング – 安全なトークン保護付きREST API、Claude Code/他のエージェント向けのMCP統合、監視ダッシュボード/プレイグラウンド、AMD64およびARM64 Dockerイメージ。
- クラウド限定アドオン – ブラウザ不要のWeb検索 (
/search)、直接回答 (/answer)、独自のLLMキーなしでの抽出、JS多用サイトやボット対策の自動処理、1行でのMCP登録。
インストールクイックスタート
pip install -U crawl4ai
crawl4ai-setup # Playwrightブラウザをインストール
# オプションのヘルスチェック
crawl4ai-doctor
Dockerを使用する場合:
export CRAWL4AI_API_TOKEN=$(openssl rand -hex 32)
docker run -d -p 11235:11235 \
-e CRAWL4AI_API_TOKEN=$CRAWL4AI_API_TOKEN \
unclecode/crawl4ai:latest
典型的なコードスニペット
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
res = await crawler.arun(url="https://news.ycombinator.com")
print(res.markdown) # LLM対応のクリーンなmarkdown
asyncio.run(main())
ライセンス – Apache 2.0(バッジやテキストによる帰属表示は任意)。
コミュニティ – Discord、GitHub issues、貢献ガイド、および継続的な開発を支援するための無料クレジット付きクラウドティア。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト