extract について
Extractは、指定URLから読みやすいコンテンツを取得するスキルです。URLの個別・一括処理に対応し、クエリに沿ったチャンク抽出や、JavaScriptで描画されるページ向けの高度な抽出を選べます。
主な機能
- 01最大20件のURLから抽出
- 02クエリによる結果の絞り込み
- 03基本・高度な抽出モード
- 04Markdownまたはプレーンテキストで出力
- 05画像URLを含める
活用シーン
- 01既知の記事URLから内容を取得
- 02ドキュメントから関連箇所を抽出
- 03JavaScript主体のページを処理
- 04複数ページを一括処理
MCP 対応
このスキルはTavily MCPサーバー経由のOAuthを使用するほか、Tavily APIキーも利用できます。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tavily-ai/ skills --skill extractインストール後、Claude Code で/extractを入力して読み込まれたか確認します。
同梱ファイルscripts/extract.sh
詳細
スキルの抽出
指定した URL からクリーンなコンテンツを抽出します。取得したいページが分かっている場合に最適です。
認証
このスクリプトは、Tavily MCP サーバー経由で OAuth を使用します。手動でのセットアップは不要です。初回実行時に、次の処理を行います。
~/.mcp-auth/に既存のトークンがあるか確認します- トークンが見つからない場合、OAuth 認証のためにブラウザーを自動的に開きます
注: 既存の Tavily アカウントが必要です。OAuth フローではログインのみがサポートされており、アカウントの作成はできません。アカウントをお持ちでない場合は、まず tavily.com で登録してください。
代替方法:API キー
API キーを使用する場合は、https://tavily.com で取得し、~/.claude/settings.json に追加してください。
{
"env": {
"TAVILY_API_KEY": "tvly-your-api-key-here"
}
}
クイックスタート
スクリプトを使用する
./scripts/extract.sh '<json>'
例:
# Single URL
./scripts/extract.sh '{"urls": ["https://example.com/article"]}'
# Multiple URLs
./scripts/extract.sh '{"urls": ["https://example.com/page1", "https://example.com/page2"]}'
# With query focus and chunks
./scripts/extract.sh '{"urls": ["https://example.com/docs"], "query": "authentication API", "chunks_per_source": 3}'
# Advanced extraction for JS pages
./scripts/extract.sh '{"urls": ["https://app.example.com"], "extract_depth": "advanced", "timeout": 60}'
基本的な抽出
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": ["https://example.com/article"]
}'
クエリで対象を絞って複数の URL を指定する
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": [
"https://example.com/ml-healthcare",
"https://example.com/ai-diagnostics"
],
"query": "AI diagnostic tools accuracy",
"chunks_per_source": 3
}'
API リファレンス
エンドポイント
POST https://api.tavily.com/extract
ヘッダー
| ヘッダー | 値 |
|---|---|
Authorization | Bearer <TAVILY_API_KEY> |
Content-Type | application/json |
リクエストボディ
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
urls | 配列 | 必須 | 抽出する URL(最大 20 件) |
query | 文字列 | null | 関連度に基づいてチャンクを再ランク付けします |
chunks_per_source | 整数 | 3 | URL ごとのチャンク数(1~5。query が必要) |
extract_depth | 文字列 | "basic" | basic または advanced(JS ページ向け) |
format | 文字列 | "markdown" | markdown または text |
include_images | ブール値 | false | 画像 URL を含めます |
timeout | 浮動小数点数 | 変動 | 最大待機時間(1~60 秒) |
レスポンス形式
{
"results": [
{
"url": "https://example.com/article",
"raw_content": "# Article Title\n\nContent..."
}
],
"failed_results": [],
"response_time": 2.3
}
抽出の深さ
| 深さ | 使用する場面 |
|---|---|
basic | シンプルなテキスト抽出。高速です |
advanced | 動的に生成されるページや JS でレンダリングされるページ、表、構造化データ |
例
単一 URL の抽出
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": ["https://docs.python.org/3/tutorial/classes.html"],
"extract_depth": "basic"
}'
クエリで対象を絞った抽出
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": [
"https://example.com/react-hooks",
"https://example.com/react-state"
],
"query": "useState and useEffect patterns",
"chunks_per_source": 2
}'
JavaScript を多用するページ
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": ["https://app.example.com/dashboard"],
"extract_depth": "advanced",
"timeout": 60
}'
一括抽出
curl --request POST \
--url https://api.tavily.com/extract \
--header "Authorization: Bearer $TAVILY_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"urls": [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3",
"https://example.com/page4",
"https://example.com/page5"
],
"extract_depth": "basic"
}'
ヒント
- 1 回のリクエストにつき URL は最大 20 件です。それ以上のリストは分割してください
queryとchunks_per_sourceを使用して、関連するコンテンツのみを取得してください- まず
basicを試し、コンテンツが不足している場合はadvancedに切り替えてください - ページの読み込みが遅い場合は
timeoutを長めに設定してください(最大 60 秒) - 抽出できなかった URL は
failed_resultsを確認してください
コメント
Markdown 対応