mcpField
W
webcap

webcap

リモート
webcap.shoutsid.fyiブラウザ自動化01 週間前に更新
リポジトリ公式サイト

webcap について

webcapは、ウェブページのキャプチャ、データ抽出、監査を行うHTTPサービス兼MCPサーバーで、定期的なページ監視にも対応します。無料プレビューとx402による有料ツールを提供し、リモートエンドポイントまたはローカルのstdioサーバーとして動作します。

主な機能

  1. 01スクリーンショットとスクロール動画を取得
  2. 02ページデータを構造化して抽出
  3. 03SEOとリンクの状態を監査
  4. 04サイトマップとクロールからURL一覧を作成
  5. 05定期監視とアラート通知
  6. 06無料プレビューとx402決済に対応

活用シーン

  1. 01目視確認用にウェブページをキャプチャ
  2. 02後続処理向けにページ内容を抽出
  3. 03サイトのSEOとリンクを監査
  4. 04ページ変更を監視してWebhook通知を受信

MCP 対応

MCPサーバーは、リモートのStreamable HTTPエンドポイントまたはローカルのstdioプロセスで利用できます。無料・有料ツールを提供し、決済が設定されていない有料呼び出しにはx402の決済チャレンジを返します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://webcap.shoutsid.fyi/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

webcap

License: MIT Live Demo

あらゆるURLのスクリーンショットを撮影し、構造化データを抽出し、ページの変更を監視できます — すべて単一のHTTP API呼び出しで実行できます。アカウントもAPIキーも不要で、呼び出しごとの従量課金です。

GET  /v1/extract/preview?url=...  →  Free preview (title, headings, links)
POST /v1/x402/capture             →  PNG/JPEG/PDF screenshot + persistent link
POST /v1/x402/extract             →  Structured JSON (title, headings, markdown)
POST /v1/x402/video               →  Scroll-capture video (WebM/VP8)
POST /v1/watches                  →  Scheduled monitoring with webhook alerts

料金:スクリーンショット1回あたり$0.001 · 抽出バッチ1回あたり$0.01 · サブスクリプションなし、最低利用額なし。

webcapを選ぶ理由

機能webcapスクリーンショットAPI(一般的なもの)
料金スクリーンショット1回あたり$0.001スクリーンショット1回あたり$0.01~0.10
アカウントの必要性なしあり
APIキーなしあり
支払い方法カード(Stripe)または暗号資産(USDC)クレジットカードのみ
バッチ対応1回の支払いで最大50件のURL限定的
セルフホスト可能はい(Docker)いいえ
オープンソースはい(MIT)いいえ

機能

エンドポイント内容料金
POST /v1/x402/capturePNG/JPEG/PDF形式のスクリーンショット(base64)+ 永続的な公開成果物リンク + OGメタデータ$0.001
POST /v1/x402/extractJSON形式の構造化されたページデータ:タイトル、説明、見出し、段落、リンク、画像、単語数、Markdown。1回の支払いで最大50件のURLをバッチ処理できます。$0.01
POST /v1/x402/auditSEOの基本情報 + リンクとOGの状態を1回の呼び出しで確認$0.002
POST /v1/x402/map-liteサイトマップ/robotsからURL一覧を取得 + 1ホップのクロール(最大50件のURL)$0.002
POST /v1/x402/videoページをスクロールしながらWebM/VP8動画としてキャプチャ$0.005
POST /v1/watchesスケジュール監視を作成(作成は無料、100回分のパックを前払い)$0.10~$1.00/パック
Bearerトークン方式(署名キー不要)

同じ製品をAPIキーでも利用できます。POST /v1/register ({"address"} → {apiKey})で登録し、POST /v1/invoice経由で通常のUSDC送金を行って残高を追加した後、 Authorization: Bearer <apiKey>を指定して POST /v1/extract、POST /v1/audit、POST /v1/map-lite、POST /v1/video、 POST /v1/analyze、またはPOST /v1/analyze/batchにリクエストを送信します。呼び出しごとに1クレジットが必要です。呼び出しが200を返さなかった場合はクレジットが返金されます。残高がない場合は、1クレジット分の追加購入用請求書とともに402を返します。監視の残高も同じ方法で追加します: POST /v1/watches/{id}/topup {"runs": 100}(captureパックは10クレジット、extractパックは100クレジット)。完全な仕様はGET /openapi.jsonを参照してください(タグ:accounts)。

無料エンドポイント(支払い不要)
エンドポイント説明
GET /v1/extract/preview?url=...範囲を限定したプレビュー:タイトル、見出し、リンク、単語数(IPあたり10リクエスト/分)
GET /v1/og?url=...Open Graphのリンクプレビュー用メタデータ
POST /v1/watchesスケジュール監視を作成(無料。追加購入で前払い)
GET /v1/health稼働状況の確認
POST /v1/feedbackwebcapに内容を伝える(マシンまたは人間):{"message":"…","category?"?:"bug|suggestion|pricing|docs|integration|other","endpoint"?:"…"}。アカウント不要、レート制限は60回/時。人間向けフォーム:GET /feedback

クイックスタート

MCP サーバーとして使用する(エージェントランタイム)

webcap には MCP サーバーが組み込まれているため、どの MCP ホスト(Claude Desktop、Cursor、エージェントフレームワーク)からでもツールとして呼び出せます。接続方法は 2 つあります。リモートエンドポイント(インストール不要)またはチェックアウトしたソースの stdio サーバーです。

リモートエンドポイントはエージェントにとって最も手軽な方法です。インストールも、パッケージレジストリも、アカウントも必要ありません。

{
  "mcpServers": {
    "webcap": { "url": "https://webcap.shoutsid.fyi/mcp" }
  }
}

POST /mcp は MCP Streamable HTTP(HTTPS 経由の JSON-RPC 2.0)で通信します(サーバーは SSE ストリームを開かないため、GET は意図的に 405 を返します)。ウォレットを保持していないため、呼び出し元に代わって支払いを行うことはありません。無料ツールはそのまま実行され、有料ツールは、クライアント自身が決済するための有効な x402 402 チャレンジを返します。このエンドポイントは /.well-known/mcp-tools.json および openapi.json にも記載されています。

公式 MCP Registry には io.github.shoutsid-lab/webcap として登録されているため、レジストリを参照するランタイムは、この README がなくても検出できます。

curl -s 'https://registry.modelcontextprotocol.io/v0/servers?search=webcap'

stdio サーバーはローカルで実行され、有料の呼び出しを自動で決済できます。無料ツールには設定は不要です。有料ツールを自動決済するには、Base メインネットの USDC キーを WEBCAP_MCP_WALLET_KEY に設定してください(ガス代不要 — 支払者が EIP-3009 に署名し、ファシリテーターがガス代を負担します)。キーがない場合、有料ツールはホストが支払うための x402 402 チャレンジを返します。ウォレットを使わない場合は、代わりに運営者が資金を入金したアカウントキーを WEBCAP_MCP_API_KEY に設定してください(POST /v1/register の後、POST /v1/invoice で入金します)。有料ツールは残高から 1 クレジットずつ請求されます。ウォレットを設定している場合は、キーよりも優先されます。

ソースをチェックアウトした場合は、npm ci && npm run build を実行してから、args をその dist/mcp/stdio.js に指定してください。

{
  "mcpServers": {
    "webcap": {
      "command": "node",
      "args": ["/absolute/path/to/webcap/dist/mcp/stdio.js"],
      "env": { "WEBCAP_MCP_WALLET_KEY": "0x..." }
    }
  }
}

(npm run mcp は TypeScript を直接実行するため、ビルド手順は不要です。)npm リリース名は @shoutsid/webcap になります。スコープなしの webcap という名前は無関係なパッケージが使用しており、まだ公開されていません。そのため、それまでは上記のリモートエンドポイントがインストール不要の選択肢です。

ツールは全部で 8 つです(すべて /.well-known/openai-tools.json および /.well-known/mcp-tools.json にも記載されています)。

  • 無料:webcap_service_catalog(すべての有料エンドポイントと料金、ネットワークと payTo、支払い方法、呼び出し元に残っている無料利用枠)、webcap_preview(範囲を限定したプレビュー)、webcap_og
  • 有料:webcap_capture(png/jpeg/pdf のスクリーンショットまたは PDF、あるいは mp4/webm のスクロール動画 — 常に WebM/VP8 で記録)、webcap_extract(単一 URL または最大 50 件の一括処理)、webcap_audit、webcap_map_lite、webcap_analyze

無料利用枠はツールではなく、利用枠です。5 つの有料ツールのいずれかを未払いで呼び出すと、実際の製品が無料で実行され、IP ごとのローリング期間(デフォルトでは 24 時間あたり 50 回)の対象になります。ウォレット、署名、アカウントは不要です。すべてのレスポンスには現在の利用状況を示す x-webcap-allowance-* ヘッダーが含まれ、利用枠を使い切ると、同じ呼び出しに対して通常の x402 402 チャレンジが返されます。呼び出しに失敗しても利用枠は消費されません。WEBCAP_ALLOWANCE_CALLS、WEBCAP_ALLOWANCE_WINDOW_HOURS、WEBCAP_ALLOWANCE_GLOBAL_LIMIT で調整できます。

フィードバックはツールではなく REST の窓口です:POST /v1/feedback。

スクリーンショットを撮影する
# 1. POST without payment → HTTP 402 + a PAYMENT-REQUIRED header
curl -si -X POST "https://webcap.shoutsid.fyi/v1/x402/capture" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/"}'

# 2. Decode the base64 challenge → sign a gasless EIP-3009 transfer → retry with PAYMENT-SIGNATURE
JavaScript(x402 自動決済を使用)
import axios from 'axios';
import { x402Client, wrapAxiosWithPayment } from '@x402/axios';
import { ExactEvmScheme } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';

// Needs USDC on Base mainnet (no ETH needed — facilitator pays gas)
const payer = privateKeyToAccount(process.env.PAYER_KEY);
const client = new x402Client().register('eip155:*', new ExactEvmScheme(payer));
const api = wrapAxiosWithPayment(
  axios.create({ baseURL: 'https://webcap.shoutsid.fyi' }),
  client,
);

// Capture a screenshot (auto: unpaid → 402 → sign → retry)
const { data } = await api.post('/v1/x402/capture', { url: 'https://example.com', format: 'png' });
console.log(data.artifact.url);  // persistent public screenshot link
Python
import os
from x402 import X402Client
from x402.schemes import ExactEvmScheme
from eth_account import Account

payer = Account.from_key(os.environ["PAYER_KEY"])
client = X402Client().register("eip155:*", ExactEvmScheme(payer))

response = client.post(
    "https://webcap.shoutsid.fyi/v1/x402/capture",
    json={"url": "https://example.com", "format": "png"},
)
print(response.json()["artifact"]["url"])  # persistent public screenshot link
構造化データを抽出する
# Single URL
curl -s -X POST "https://webcap.shoutsid.fyi/v1/x402/extract" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com"}'

# Batch (up to 50 URLs, one payment covers the whole batch)
curl -s -X POST "https://webcap.shoutsid.fyi/v1/x402/extract" \
  -H 'content-type: application/json' \
  -d '{"urls":["https://a.com","https://b.com"],"schema":"company name + tagline"}'

支払いの仕組み

現在の決済レールは暗号資産(x402、Base 上の USDC)です。アカウントも API キーも必要ありません。カード決済は運営者向けのオプションであり、ホスト型の機能ではありません。運営者が STRIPE_SECRET_KEY を設定するまでは、POST /v1/stripe/checkout は stripe_not_configured を返し、暗号資産決済の案内を表示します。(現在、https://webcap.shoutsid.fyi のホスト型デプロイではカード決済を利用できません。)

カード決済(Stripe、設定済みの場合)
  1. パック ID を指定して POST /v1/stripe/checkout を呼び出します。以降は Stripe Checkout が処理します。
  2. カード情報を入力します。クレジットがアカウントに即時追加されます。
  3. 以降の呼び出しでは API キー認証を使用します。
暗号資産による支払い(x402 — アカウント不要)

webcap は、HTTP 402 を基盤とするガス代不要・アカウント不要の決済プロトコル x402 v2 を使用します。

  1. 支払いなしで有料ルートに POST すると、HTTP 402 と、base64 形式の x402 v2 チャレンジを含む PAYMENT-REQUIRED ヘッダーが返されます。
  2. チャレンジを読み取ります。USDC の金額、加盟店のアドレス、チェーン情報が含まれます。
  3. ガス代不要の EIP-3009 transferWithAuthorization に署名します(ご自身のウォレットから加盟店へ、指定金額を送金します)。ETH は不要です。ファシリテーターがトランザクションを送信し、ガス代を負担します。
  4. 署名済みペイロードを PAYMENT-SIGNATURE ヘッダーに含めて、同じリクエストを再試行します。ファシリテーターが USDC 残高を確認し、オンチェーンで決済して、結果を返します。

アカウントも、API キーも、クレジットも不要です。HTTP と、お好みの支払い方法だけで利用できます。

セルフホスティング

# Clone the repo
git clone https://github.com/shoutsid-lab/webcap.git
cd webcap

# Install dependencies
npm install

# Copy and configure environment
cp .env.example .env
# Edit .env with your settings

# Build and run
npm run build
npm start
リリース tarball からインストールする(npm レジストリのアカウント不要)

パッケージ化された MCP サーバーは GitHub のリリースアセットとしても配布されています。npm に公開せずに、ほかの npm 依存関係と同じようにインストールできます。

# npm 12+ (Node 24) blocks remote tarball URLs by default — opt in explicitly:
npm install --allow-remote=all https://github.com/shoutsid-lab/webcap/releases/download/v0.1.0/shoutsid-webcap-0.1.0.tgz
# npm <= 11 accepts the URL without the flag:
npm install https://github.com/shoutsid-lab/webcap/releases/download/v0.1.0/shoutsid-webcap-0.1.0.tgz
npx webcap-mcp   # stdio MCP server

MCP ホストには、インストール不要の方法を引き続き優先してください。リモートエンドポイント https://webcap.shoutsid.fyi/mcp を指定します(ストリーミング可能な HTTP、パッケージ不要)。

Docker
docker compose build
docker compose up -d

Docker の構成には、ヘルスチェック、リソース制限、永続データボリュームが含まれています。詳細は docker-compose.yml を参照してください。

このスタックにはパブリックエッジも含まれています。cloudflared サービスが webcap Cloudflare トンネルを実行し、イングレス設定は cloudflared/config.yml、認証情報は CF_TUNNEL_TOKEN(.env)にあります。アプリはループバック以外に公開されないため、トンネルコンテナだけが接続経路になります。トンネルなしで docker compose up -d を実行すると、webcap.shoutsid.fyi は Cloudflare の 530 を返します。

docker compose ps cloudflared                       # Up, not Restarting
docker compose logs --tail 20 cloudflared           # "Registered tunnel connection"
curl -s -o /dev/null -w '%{http_code}\n' https://webcap.shoutsid.fyi/v1/health   # 200
ローカル開発(Anvil テストネット)
npm install
npm run chain:up    # Starts Anvil with mintable USDC

WEBCAP_CHAIN=local \
WEBCAP_USDC_ADDRESS=$(jq -r .usdcContract /tmp/webcap-chain.json) \
WEBCAP_MERCHANT_ADDRESS=$(jq -r .merchant.address /tmp/webcap-chain.json) \
npm start

設定

すべての環境変数は .env.example に記載されています。主な変数は次のとおりです。

変数説明デフォルト
WEBCAP_CHAINネットワーク:base、base-sepolia、または localbase-sepolia
WEBCAP_PUBLIC_BASE_URLアーティファクトリンク用の公開 URL必須
WEBCAP_X402_PRICE_USDCスクリーンショット 1 枚あたりの価格(USDC)0.001
WEBCAP_X402_EXTRACT_PRICE_USDC抽出 1 回あたりの価格(USDC)0.01
X402_FACILITATOR_URL決済ファシリテーターのエンドポイントhttps://x402.org/facilitator

API リファレンス

OpenAPI 3.1 の完全な仕様:GET /openapi.json

エージェント向けの検出用エンドポイント:GET /.well-known/x402、GET /v1/x402/service、GET /llms.txt、GET /skill.md

テスト

npm test           # full vitest suite (tests/**/*.test.ts, no exclusions)
npm run typecheck  # Type checking

変更をリリースする前に、両方のテストに合格する必要があります。意図的にテスト数やファイル数を記載していません。これらの数値はこれまでに 2 回古くなっており(2 回目は読者が issue #1 で指摘しました)、誰も更新しない数値は、記載しないよりも問題だからです。npm test を実行すると最新の合計が表示されます。

記載内容の監査
npm run audit:claims                                        # against localhost:8080
npm run audit:claims -- --base-url https://webcap.shoutsid.fyi  # against a deployment

テストはコードを検証しますが、こちらは記載内容を検証します。README.md、/skill.md、/llms.txt を読み込み、記載されているすべての METHOD /path が実際に提供されていること、ドキュメントに記載されたすべての価格が 402 チャレンジの金額と一致すること、無料で利用できる範囲に記載された価格が有料ルートの価格と同じであることを確認します。失敗があるとゼロ以外の終了コードを返すため、デプロイのゲートとして使用できます。issue #1 は、手作業でこの確認を行ったエージェントによって報告されました。このコマンドは、同じ確認を実行します。

ライセンス

MIT — 詳細は LICENSE を参照してください。

リンク

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。