crawl4ai
ウェブサイトのスクレイピング、構造化データの抽出、JavaScriptを多用するページの処理、複数URLのクロール、自動化されたWebデータパイプラインの構築が必要な場合に使用します。LLM不要で効率的な抽出を実現するスキーマ生成を含む、最適化された抽出パターンを備えています。
description の原文を見る
This skill should be used when users need to scrape websites, extract structured data, handle JavaScript-heavy pages, crawl multiple URLs, or build automated web data pipelines. Includes optimized extraction patterns with schema generation for efficient, LLM-free extraction.
SKILL.md 本文
Crawl4AI
概要
Crawl4AIは包括的なWebクローリングとデータ抽出機能を提供します。このスキルはCLI(クイックタスク推奨)とPython SDK(プログラマティック制御用)の両方をサポートしています。
インターフェースを選択してください:
- CLI (
crwl) - クイック、スクリプト可能なコマンド:CLIガイド - Python SDK - フルプログラマティック制御:
SDKガイド
クイックスタート
インストール
pip install crawl4ai
crawl4ai-setup
# インストール確認
crawl4ai-doctor
CLI(推奨)
# 基本的なクローリング - マークダウン形式で出力
crwl https://example.com
# マークダウン出力を取得
crwl https://example.com -o markdown
# キャッシュをバイパスしてJSON出力
crwl https://example.com -o json -v --bypass-cache
# その他の例を表示
crwl --example
Python SDK
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun("https://example.com")
print(result.markdown[:500])
asyncio.run(main())
SDK設定の詳細については、SDKガイド - 設定(61-150行目)を参照してください。
主要概念
設定レイヤー
CLIとSDKの両方は同じ基盤となる設定を使用しています:
| 概念 | CLI | SDK |
|---|---|---|
| ブラウザ設定 | -B browser.yml または -b "param=value" | BrowserConfig(...) |
| クロール設定 | -C crawler.yml または -c "param=value" | CrawlerRunConfig(...) |
| 抽出 | -e extract.yml -s schema.json | extraction_strategy=... |
| コンテンツフィルタ | -f filter.yml | markdown_generator=... |
キーパラメータ
ブラウザ設定:
headless: GUIの有無で実行viewport_width/height: ブラウザサイズuser_agent: カスタムユーザーエージェントproxy_config: プロキシ設定
クローラー設定:
page_timeout: 最大ページロード時間(ミリ秒)wait_for: CSS セレクタまたは JS 条件を待機cache_mode: bypass、enabled、disabledjs_code: 実行するJavaScriptcss_selector: 特定要素に焦点を当てる
完全なパラメータについて:CLI設定 | SDK設定
出力コンテンツ
すべてのクロールは以下を返します:
- markdown - クリーンでフォーマットされたマークダウン
- html - 生のHTML
- links - 発見された内部・外部リンク
- media - 見つかった画像、動画、オーディオ
- extracted_content - 構造化データ(抽出が設定されている場合)
マークダウン生成(主な使用例)
Crawl4AIはクリーンでよくフォーマットされたマークダウン生成に優れています:
CLI
# 基本的なマークダウン
crwl https://docs.example.com -o markdown
# フィルタされたマークダウン(ノイズを削除)
crwl https://docs.example.com -o markdown-fit
# コンテンツフィルタ付き
crwl https://docs.example.com -f filter_bm25.yml -o markdown-fit
フィルター設定:
# filter_bm25.yml(関連性ベース)
type: "bm25"
query: "machine learning tutorials"
threshold: 1.0
Python SDK
from crawl4ai.content_filter_strategy import BM25ContentFilter
from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator
bm25_filter = BM25ContentFilter(user_query="machine learning", bm25_threshold=1.0)
md_generator = DefaultMarkdownGenerator(content_filter=bm25_filter)
config = CrawlerRunConfig(markdown_generator=md_generator)
result = await crawler.arun(url, config=config)
print(result.markdown.fit_markdown) # フィルタ済み
print(result.markdown.raw_markdown) # オリジナル
コンテンツフィルターについて:コンテンツ処理(2481-3101行目)
データ抽出
1. スキーマベースCSS抽出(最も効率的)
LLM不要 - 高速、決定論的、コスト無料。
CLI:
# スキーマを一度生成(LLM使用)
python scripts/extraction_pipeline.py --generate-schema https://shop.com "extract products"
# スキーマを使用して抽出(LLM不使用)
crwl https://shop.com -e extract_css.yml -s product_schema.json -o json
スキーマフォーマット:
{
"name": "products",
"baseSelector": ".product-card",
"fields": [
{"name": "title", "selector": "h2", "type": "text"},
{"name": "price", "selector": ".price", "type": "text"},
{"name": "link", "selector": "a", "type": "attribute", "attribute": "href"}
]
}
2. LLMベース抽出
複雑または不規則なコンテンツの場合:
CLI:
# extract_llm.yml
type: "llm"
provider: "openai/gpt-4o-mini"
instruction: "Extract product names and prices"
api_token: "your-token"
crwl https://shop.com -e extract_llm.yml -o json
抽出の詳細については:抽出戦略(4522-5429行目)
高度なパターン
動的コンテンツ(JavaScriptが多いサイト)
CLI:
crwl https://example.com -c "wait_for=css:.ajax-content,scan_full_page=true,page_timeout=60000"
クローラー設定:
# crawler.yml
wait_for: "css:.ajax-content"
scan_full_page: true
page_timeout: 60000
delay_before_return_html: 2.0
複数URL処理
CLI(順次実行):
for url in url1 url2 url3; do crwl "$url" -o markdown; done
Python SDK(並行実行):
urls = ["https://site1.com", "https://site2.com", "https://site3.com"]
results = await crawler.arun_many(urls, config=config)
バッチ処理について:arun_many()リファレンス(1057-1224行目)
セッション・認証
CLI:
# login_crawler.yml
session_id: "user_session"
js_code: |
document.querySelector('#username').value = 'user';
document.querySelector('#password').value = 'pass';
document.querySelector('#submit').click();
wait_for: "css:.dashboard"
# ログイン
crwl https://site.com/login -C login_crawler.yml
# 保護されたコンテンツにアクセス(セッション再利用)
crwl https://site.com/protected -c "session_id=user_session"
セッション管理について:高度な機能(5429-5940行目)
ボット検出対策・プロキシ
CLI:
# browser.yml
headless: true
proxy_config:
server: "http://proxy:8080"
username: "user"
password: "pass"
user_agent_mode: "random"
crwl https://example.com -B browser.yml
一般的な使用例
ドキュメントをマークダウンに変換
crwl https://docs.example.com -o markdown > docs.md
Eコマース商品監視
# スキーマを一度生成
python scripts/extraction_pipeline.py --generate-schema https://shop.com "extract products"
# 監視(LLMコスト無し)
crwl https://shop.com -e extract_css.yml -s schema.json -o json
ニュース集約
# 複数ソースをフィルタリング
for url in news1.com news2.com news3.com; do
crwl "https://$url" -f filter_bm25.yml -o markdown-fit
done
インタラクティブQ&A
# 最初にコンテンツを表示
crwl https://example.com -o markdown
# その後に質問
crwl https://example.com -q "What are the main conclusions?"
crwl https://example.com -q "Summarize the key points"
リソース
提供されるスクリプト
- scripts/extraction_pipeline.py - スキーマ生成と抽出
- scripts/basic_crawler.py - シンプルなマークダウン抽出
- scripts/batch_crawler.py - 複数URL処理
リファレンスドキュメント
| ドキュメント | 目的 |
|---|---|
CLIガイド | コマンドラインインターフェースリファレンス |
SDKガイド | Python SDK クイックリファレンス |
完全SDKリファレンス | 完全なAPI documentation(5900行以上) |
ベストプラクティス
- CLIで開始 - クイックタスク用、SDKは自動化用
- スキーマベース抽出を使用 - LLMより10~100倍効率的
- 開発時はキャッシングを有効化 - 必要時のみ
--bypass-cacheを使用 - 適切なタイムアウトを設定 - 通常30秒、JS多用サイトは60秒以上
- コンテンツフィルタを使用 - より分かりやすくフォーカスしたマークダウンのため
- レート制限を尊重 - リクエスト間に遅延を追加
トラブルシューティング
JavaScriptが読み込まれない
crwl https://example.com -c "wait_for=css:.dynamic-content,page_timeout=60000"
ボット検出の問題
crwl https://example.com -B browser.yml
# browser.yml
headless: false
viewport_width: 1920
viewport_height: 1080
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
コンテンツが抽出されない
# デバッグ:完全な出力を表示
crwl https://example.com -o all -v
# 異なる待機戦略を試す
crwl https://example.com -c "wait_for=js:document.querySelector('.content')!==null"
セッションの問題
# セッション確認
crwl https://site.com -c "session_id=test" -o all | grep -i session
完全なAPIドキュメントについては、完全SDKリファレンスを参照してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- brettdavies
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/brettdavies/crawl4ai-skill / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。