mcpField
X
xcrawl-scrape

xcrawl-scrape

github.com/xcrawl-apiデータ・データベース450243 回インストール32 週間前に更新
リポジトリ

xcrawl-scrape について

xcrawl-scrapeは、XCrawl Scrape APIで個別ページのデータを抽出するスキルです。リクエストや出力を設定でき、同期・非同期実行に対応し、標準ではAPIレスポンスをそのまま返します。

主な機能

  1. 01単一ページのURL抽出
  2. 02同期・非同期実行
  3. 03リクエストとレンダリングの設定
  4. 04HTML、Markdown、リンク、JSONなどに対応
  5. 05レスポンスのそのまま返却

活用シーン

  1. 01特定ページのコンテンツ抽出
  2. 02構造化JSONフィールドの取得
  3. 03スクリーンショットやページリンクの取得
  4. 04非同期スクレイプ結果のポーリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/xcrawl-api/xcrawl-skills --skill xcrawl-scrape

インストール後、Claude Code で/xcrawl-scrapeを入力して読み込まれたか確認します。

詳細

XCrawl スクレイプ

概要

このスキルは、XCrawl スクレイプ API を使用して単一ページを抽出します。 デフォルトの動作は生のレスポンスをそのまま返すことで、上流 API のレスポンス本文を変更せずに返します。

必須のローカル設定

このスキルを使用する前に、ユーザーはローカル設定ファイルを作成し、XCRAWL_API_KEY を書き込む必要があります。

パス:~/.xcrawl/config.json

{
  "XCRAWL_API_KEY": "<your_api_key>"
}

API キーはローカル設定ファイルからのみ読み取ります。グローバル環境変数は必要ありません。

クレジットとアカウントの設定

XCrawl API を使用するとクレジットを消費します。 アカウントを持っていない場合、または利用可能なクレジットがない場合は、https://dash.xcrawl.com/ で登録するよう案内してください。 登録後、リクエストを実行する前に、無料の 1000 クレジットプランを有効にできます。

ツールの権限ポリシー

curl と node のランタイム権限のみをリクエストしてください。 Python、シェルヘルパースクリプト、その他のランタイム権限はリクエストしないでください。

API の概要

  • スクレイプ開始:POST /v1/scrape
  • 非同期結果の取得:GET /v1/scrape/{scrape_id}
  • ベース URL:https://run.xcrawl.com
  • 必須ヘッダー:Authorization: Bearer <XCRAWL_API_KEY>

使用例

cURL(同期)
API_KEY="$(node -e "const fs=require('fs');const p=process.env.HOME+'/.xcrawl/config.json';const k=JSON.parse(fs.readFileSync(p,'utf8')).XCRAWL_API_KEY||'';process.stdout.write(k)")"

curl -sS -X POST "https://run.xcrawl.com/v1/scrape" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_KEY}" \
  -d '{"url":"https://example.com","mode":"sync","output":{"formats":["markdown","links"]}}'
cURL(非同期の作成+結果取得)
API_KEY="$(node -e "const fs=require('fs');const p=process.env.HOME+'/.xcrawl/config.json';const k=JSON.parse(fs.readFileSync(p,'utf8')).XCRAWL_API_KEY||'';process.stdout.write(k)")"

CREATE_RESP="$(curl -sS -X POST "https://run.xcrawl.com/v1/scrape" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_KEY}" \
  -d '{"url":"https://example.com/product/1","mode":"async","output":{"formats":["json"]},"json":{"prompt":"Extract title and price."}}')"

echo "$CREATE_RESP"

SCRAPE_ID="$(node -e 'const s=process.argv[1];const j=JSON.parse(s);process.stdout.write(j.scrape_id||"")' "$CREATE_RESP")"

curl -sS -X GET "https://run.xcrawl.com/v1/scrape/${SCRAPE_ID}" \
  -H "Authorization: Bearer ${API_KEY}"
Node
node -e '
const fs=require("fs");
const apiKey=JSON.parse(fs.readFileSync(process.env.HOME+"/.xcrawl/config.json","utf8")).XCRAWL_API_KEY;
const body={url:"https://example.com",mode:"sync",output:{formats:["markdown","json"]},json:{prompt:"Extract title and publish date."}};
fetch("https://run.xcrawl.com/v1/scrape",{
  method:"POST",
  headers:{"Content-Type":"application/json",Authorization:`Bearer ${apiKey}`},
  body:JSON.stringify(body)
}).then(async r=>{console.log(await r.text());});
'

リクエストパラメーター

リクエストのエンドポイントとヘッダー
  • エンドポイント:POST https://run.xcrawl.com/v1/scrape
  • ヘッダー:
  • Content-Type: application/json
  • Authorization: Bearer <api_key>
リクエストボディ:トップレベルのフィールド
FieldTypeRequiredDefaultDescription
urlstringYes-対象 URL
modestringNosyncsync または async
proxyobjectNo-プロキシ設定
requestobjectNo-リクエスト設定
js_renderobjectNo-JS レンダリング設定
outputobjectNo-出力設定
webhookobjectNo-非同期 Webhook 設定(mode=async)
proxy
FieldTypeRequiredDefaultDescription
locationstringNoUSISO-3166-1 alpha-2 の国コード(例:US / JP / SG)
sticky_sessionstringNo自動生成スティッキーセッション ID。同じ ID の場合は同じ出口の再利用を試みます
request
FieldTypeRequiredDefaultDescription
localestringNoen-US,en;q=0.9Accept-Language に影響します
devicestringNodesktopdesktop / mobile。UA とビューポートに影響します
cookiesobject mapNo-Cookie のキーと値のペア
headersobject mapNo-ヘッダーのキーと値のペア
only_main_contentbooleanNotrueメインコンテンツのみを返します
block_adsbooleanNotrue広告リソースのブロックを試みます
skip_tls_verificationbooleanNotrueTLS 検証をスキップします
js_render
FieldTypeRequiredDefaultDescription
enabledbooleanNotrueブラウザーのレンダリングを有効にします
wait_untilstringNoloadload / domcontentloaded / networkidle
viewport.widthintegerNo-ビューポートの幅(デスクトップ 1920、モバイル 402)
viewport.heightintegerNo-ビューポートの高さ(デスクトップ 1080、モバイル 874)
output
FieldTypeRequiredDefaultDescription
formatsstring[]No["markdown"]出力形式
screenshotstringNoviewportfull_page / viewport(formats に screenshot が含まれる場合のみ)
json.promptstringNo-抽出プロンプト
json.json_schemaobjectNo-JSON Schema

output.formats の列挙値:

  • html
  • raw_html
  • markdown
  • links
  • summary
  • screenshot
  • json
webhook
FieldTypeRequiredDefaultDescription
urlstringNo-コールバック URL
headersobject mapNo-カスタムコールバックヘッダー
eventsstring[]No["started","completed","failed"]イベント:started / completed / failed

レスポンスパラメーター

同期作成レスポンス(mode=sync)
フィールド型説明
scrape_idstringタスク ID
endpointstring常に scrape
versionstringバージョン
statusstringcompleted / failed
urlstring対象 URL
dataobject結果データ
started_atstring開始時刻(ISO 8601)
ended_atstring終了時刻(ISO 8601)
total_credits_usedinteger使用したクレジットの合計

data フィールド(output.formats に基づく):

  • html、raw_html、markdown、links、summary、screenshot、json
  • metadata(ページのメタデータ)
  • traffic_bytes
  • credits_used
  • credits_detail

credits_detail フィールド:

フィールド型説明
base_costinteger基本スクレイピングコスト
traffic_costintegerトラフィックコスト
json_extract_costintegerJSON 抽出コスト
非同期作成レスポンス(mode=async)
フィールド型説明
scrape_idstringタスク ID
endpointstring常に scrape
versionstringバージョン
statusstring常に pending
非同期結果レスポンス(GET /v1/scrape/{scrape_id})
フィールド型説明
scrape_idstringタスク ID
endpointstring常に scrape
versionstringバージョン
statusstringpending / crawling / completed / failed
urlstring対象 URL
dataobject同期時の data と同じ形式
started_atstring開始時刻(ISO 8601)
ended_atstring終了時刻(ISO 8601)

ワークフロー

  1. ユーザーの目標を抽出条件として言い換えます。
  • URL の範囲、必須フィールド、許容される null、求められる精度。
  1. スクレイピングリクエストの本文を作成します。
  • 必要なオプションだけを残します。
  • output.formats を明示的に指定することを推奨します。
  1. スクレイピングを実行し、タスクのメタデータを記録します。
  • scrape_id、status、タイムスタンプを追跡します。
  • 非同期の場合は、completed または failed になるまでポーリングします。
  1. 生の API レスポンスをそのまま返します。
  • デフォルトでは、フィールドを生成したり要約したりしないでください。

出力条件

以下を返します。

  • 使用したエンドポイントとモード(sync または async)
  • リクエストに使用した request_payload
  • 各 API 呼び出しの生のレスポンス本文
  • リクエストが失敗した場合のエラー詳細

ユーザーが明示的に要約を求めない限り、要約を生成しないでください。

ガードレール

  • 未対応の出力フィールドを作り出さないでください。
  • コアロジックにプロバイダー固有のツールスキーマをハードコードしないでください。
  • ページ構造が不安定な場合は、不確実性を明示してください。

コメント