mcpField
X
x402

x402

github.com/browser-useクラウド・DevOps119.5k1.3k 回インストール3 日前に更新
リポジトリ

x402 について

x402は、Browser Use Cloudの暗号資産ウォレット決済を設定し、SDK経由でブラウザータスクを実行するスクリプト型スキルです。ウォレット設定、USDC入金、有料テスト、SDK利用を案内します。対応するのはPythonまたはTypeScript SDKで、CLIには対応しません。

主な機能

  1. 01ウォレットによるUSDC決済
  2. 02アカウント不要またはAPIキーでの課金設定
  3. 03ウォレットへの入金案内
  4. 04有料のエンドツーエンドテスト
  5. 05Python・TypeScript SDKの設定

活用シーン

  1. 01ウォレットからBrowser Useタスクを支払う
  2. 02既存のAPIキープロジェクトに暗号資産で入金する
  3. 03アプリにx402決済を組み込む

インストール

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

$npx skills add https://github.com/browser-use/browser-use --skill x402

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

詳細

Browser Use Cloud — x402 で支払う(暗号資産ウォレット)

これはスクリプト化されたフローです。手順に沿って進めてください。x402 は SDK(Python の browser-use-sdk、TS の browser-use npm パッケージ)経由でのみ動作します。x402 用の browser-use CLI コマンドはないため、各手順で短い SDK スクリプトを実行します。

このスクリプトの使い方

  • Say: の下にある行は、一言一句そのままユーザーに伝えます。言い換えたり、追加したり、省略したりしないでください。
  • Say ブロック内の <このような表記> は値を埋める箇所です。実際の値に置き換え、それ以外は正確に保ってください。
  • Ask: の下にある行では、AskUserQuestion ツールを使います。質問と選択肢のテキストは、記載どおり正確に使ってください。
  • 質問の前に説明を表示するには、AskUserQuestion の question フィールド内に記述してください(選択肢の上に表示されます)。ツールを呼び出す前にチャットへ別途送信しないでください。質問 UI が開くと、そのテキストは表示されません。つまり、説明と実際の質問を両方とも question フィールドに入れて、1 回のツール呼び出しで送信します。
  • Do: の下にある行は実行する操作です。読み上げないでください。
  • 進行中は次の 2 つの情報を記録します。SETUP(ステップ 1 の A または B)と MODE(ステップ 2 の A または B)です。
  • SETUP、MODE、Path A/B/C の名前は内部ラベルであり、ユーザーには決して伝えないでください。 選択肢は平易な言葉で説明してください(例:「アカウントにチャージする」「アカウント不要のウォレット」)。「モード B」や「パス A」とは言わないでください。

ステップ 1 — セットアップを開始して選択する

Ask: (ヘッダー:Use x402)— 説明と質問の両方を question フィールドに、以下のとおり正確に記述します。

x402 は Coinbase のプロトコルです。API キーを提示する代わりに、暗号資産で API リクエストの支払いができます。x402 では、Base 上の USDC を使い、暗号資産ウォレットから Browser Use にリクエストごとに支払えます。サインアップも API キーもクレジットカードも不要で、ウォレットだけで利用できます。セットアップには数分かかります。ウォレットを用意または作成し、資金を追加して、キーを .env に保存し、動作をテストします。

x402 をどのように使いますか?

  • そのまま使う — ここで私に頼んで、ターミナル上でウォレットから支払いながら Browser Use のタスクを実行します。ウォレットとキーをセットアップします。
  • アプリに組み込む — アプリをコーディングしていて、x402 を組み込みたい場合です。SDK のインストール、キーのプロジェクトの .env への保存、コードの追加をお手伝いします。

Do: 「そのまま使う」→ SETUP = A。「アプリに組み込む」→ SETUP = B。


ステップ 2 — アカウントを確認する(質問する前に確認)

Do: 既存の Browser Use API キーを次の順に探します。まだ何も言わないでください。

  1. 環境変数の BROWSER_USE_API_KEY
  2. ./.env 内の BROWSER_USE_API_KEY= という行
  3. ~/.browser-use/config.json(browser-use cloud login / signup によって保存)
  4. CLI がインストールされている場合は、browser-use doctor の出力

キーがどこにも見つからない場合:

Say:

Browser Use のキーが見つからなかったため、アカウント不要の方法でセットアップします。ウォレットがあなたの ID となり、最初の支払いによって、ウォレット名のプロジェクトが作成されます。

Do: MODE = A。ステップ 3 に進みます。

キーが見つかった場合:

Ask: (ヘッダー:Account)— 質問:<location> に Browser Use API キーが見つかりました。USDC クレジットをどこに追加しますか?

  • そのアカウントにチャージする — クレジットは既存の API キーのプロジェクトに追加されます。無料クレジットを使い切った場合や、カードではなく暗号資産で支払いたい場合に適しています。
  • アカウント不要のウォレット — ウォレットは別の ID になります。最初の支払いによって、既存のアカウントとは別に、ウォレット名の新しいプロジェクトが作成されます。

Do: 「そのアカウントにチャージする」→ MODE = B。「アカウント不要のウォレット」→ MODE = A。


ステップ 3 — ウォレット

Ask: (ヘッダー:Wallet)— 質問:利用できるウォレットはありますか? それともセットアップしましょうか?

  • 資金を入れたウォレットを持っています — Base メインネット上の USDC が入った EVM ウォレット(MetaMask、Rabby、Coinbase Wallet、Frame、Phantom など)。
  • 手順を教えてください — ウォレットの作成、Base の追加、USDC の購入を順に案内します。
  • 新しく作成する — 自動化用の使い捨てウォレットを生成します。資金はご自身で追加する必要があります。

回答に応じて分岐します。

パス A —「資金のあるウォレットを持っています」

実行: .env が .gitignore に含まれていることを確認します。含まれていない場合は追加します。

質問:(ヘッダー:Add key)— メモと質問の両方を question フィールドに入れます。

ウォレットの秘密鍵を .env に入れる必要があります。ここに貼り付けていただければ、こちらで追加します。または、ご自身で追加してもかまいません。ご注意ください。チャットに貼り付けた内容はトランスクリプトに保存されるため、高額な資金が入ったウォレットの場合は、ご自身で追加するほうが少し安全です。どちらにしますか?

  • ここに貼り付ける — チャットに秘密鍵を貼り付けてください。こちらで .env に書き込みます。
  • 自分で追加する — .env に追加してから、公開アドレスだけを送ってください。

「ここに貼り付ける」の場合:

実行: BROWSER_USE_X402_PRIVATE_KEY=<pasted key> を .env に書き込みます(必要に応じてファイルを作成し、.env が Git の追跡対象外になっていることを確認します)。鍵をそのまま返したり、どこかに表示したりしてはいけません。

伝える:

鍵を .env に保存しました。こちらから再表示することはありません。

実行: ステップ 4 に進みます。

「自分で追加する」の場合:

伝える:

次の行を .env に追加してから、ウォレットの公開アドレス(共有しても安全な 0x… 形式のもの)を送ってください。

BROWSER_USE_X402_PRIVATE_KEY=<your private key>

実行: アドレスが送られてきたら、^0x[0-9a-fA-F]{40}$ に一致することを確認します。

伝える:

確認しました:<address>。有効なアドレスです。

実行: ステップ 4 に進みます。

パス B —「手順を教えてください」

伝える:

  1. 公式サイト https://metamask.io からのみ、MetaMask(または Rabby、Coinbase Wallet、Frame、Trust Wallet、Phantom など)をインストールします。ウォレットを作成し、シードフレーズをオフラインで保存して、パスワードを設定します。
  2. Base をネットワークとして追加します。https://chainlist.org/chain/8453 を開き、「Connect Wallet」→「Add to MetaMask」の順にクリックし、ウォレットで承認します。
  3. ウォレットの「Buy」をクリックします。USDC を選び、ネットワークを Base に設定して、カード/Apple Pay/銀行振込で支払います。USDC はウォレットに直接入金されます。
  4. 秘密鍵を取得します:アカウントメニュー → Account details → Show private key → パスワードを入力 → コピー。
  5. .env に追加します(.env が Git の追跡対象外になっていることを確認します)。
BROWSER_USE_X402_PRIVATE_KEY=<your private key>
  1. 確認できるように、ウォレットの公開アドレス(0x… 形式のもの)を送ってください。

実行: アドレスの確認以降は、パス A の手順に従います。

パス C —「新しく作成してください」

実行: ウォレットを生成します。鍵を .env に保存します。アドレスだけを表示します。

Python:

pip install eth-account
from eth_account import Account
acc = Account.create()
print("Address:", acc.address)
print("Private key:", acc.key.hex())

TypeScript:

npm install viem
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
const key = generatePrivateKey();
console.log("Address:", privateKeyToAccount(key).address);
console.log("Private key:", key);

伝える:

新しいウォレットを作成しました。公開アドレスは <address> で、秘密鍵は .env に保存しました。次は資金を入れる必要があります。

実行: ステップ 4(資金の入金)に進みます。


ステップ 4 — 資金を入金する

パス A または B の場合(すでに資金がある):

伝える:

ウォレットにはすでに資金があるため、テストに進みます。

実行: ステップ 5 に進みます。

パス C の場合:

伝える:

Base 上のウォレットに USDC を入金する方法は 2 つあります。

  • ウォレット内の「Buy」ボタン(最も簡単):「Buy」をクリックし、USDC を選んで、ネットワークを Base に設定し、カードで支払います。取引所は不要です。
  • 取引所から送金:USDC を <address> に送金し、ネットワークに「Base」を選びます。手数料が $5~$20 かかる Ethereum ではありません。

少なくとも $20 を入金してください。$1 のテストと実際のタスクをいくつか実行するのに十分な額です。残高を確認し、入金されたらお知らせします。

実行: Base の公開 RPC を使って、5 秒ごとにオンチェーン残高を確認します。

PADDED=$(printf "%064s" "${WALLET_ADDR:2}" | tr ' ' '0')
curl -s https://mainnet.base.org \
  -H "Content-Type: application/json" \
  -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\"data\":\"0x70a08231${PADDED}\"},\"latest\"],\"id\":1}"

result を 16 進数として読み取り、1_000_000 で割ります(USDC の小数点以下は 6 桁です)。$20 以上になったら終了します。

伝える:

入金を確認しました。Base 上に $ あります。次は簡単なテストです。


ステップ 5 — テスト実行(約 1 ドル)

実行: SETUP = A の場合は、スクリプトを実行する環境(デフォルトでは Python)に SDK がインストールされていることを確認します。SETUP = B の場合は、プロジェクトで使われている言語で SDK をプロジェクトにインストールします。言語は現在の作業ディレクトリから判断します(package.json/tsconfig.json → TypeScript、pyproject.toml/requirements.txt/*.py → Python。判断できない場合に限り、ユーザーに尋ねてください)。

# Python (needs 3.10+ for the x402 extra)
pip install "browser-use-sdk[x402]"
# TypeScript
npm install browser-use-sdk @x402/fetch @x402/evm viem

質問:(ヘッダー:Test run)— 質問:テストの準備はできていますか?支払いを確認し、作業を最初から最後まで実行するために、ウォレットから正確に 1 ドルの USDC を使います。

  • デフォルトのタスクを使う — 「example.com にアクセスして、見出しのテキストを教えてください。」(約 5 秒。低コストです)
  • タスクを指定する — 代わりに実行する短いタスクを教えてください。
  • テストをスキップする — テストをスキップして、x402 の使用に進みます。

実行:

  • 「タスクを指定する」→ 発言: どのタスクにしますか?短くまとめてください。 回答を待ちます。
  • 「テストをスキップする」→ ステップ 6 に進みます。
  • それ以外の場合は、デフォルトのタスクを使います。

実行: テストを実行します。SDK のデフォルト設定で使われる 5 ドルではなく 1 ドルを支払うよう、max_value を 1.50 ドルに設定して、生の x402 クライアントを使います。

import asyncio, os
from decimal import Decimal
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
from eth_account import Account

async def main():
    client = x402Client()
    register_exact_evm_client(
        client,
        EthAccountSigner(Account.from_key(os.environ["BROWSER_USE_X402_PRIVATE_KEY"])),
    )
    # max_value caps the spend per request — picks the $1 option over the $5 default.
    async with x402HttpxClient(client, max_value=Decimal("1.5"), timeout=180.0) as http:
        resp = await http.post(
            "https://x402.api.browser-use.com/api/v3/sessions",
            json={"task": "<the task>"},
        )
        print(resp.status_code, resp.json())

asyncio.run(main())

MODE = B の場合は、API キーのヘッダーを追加します。そうしないと、追加したいプロジェクトではなく、新しいウォレットプロジェクトに 1 ドルが送られます。

async with x402HttpxClient(
    client, max_value=Decimal("1.5"), timeout=180.0,
    headers={"X-Browser-Use-API-Key": os.environ["BROWSER_USE_API_KEY"]},
) as http:
    ...

インストールされている x402 ライブラリに max_value がない場合は、発言: このバージョンの x402 では 1 ドルの請求を強制できないため、テストには 5 ドルかかります。続行してもよいですか? と伝え、実行してよいという返事を待ってください。

発言:

支払いが完了しました。オンチェーンの証明はこちらです:https://basescan.org/address/

#tokentxns — ちょうど 1.000000 USDC の送金を確認してください。

実行: 残高を読み取ります。MODE = A の場合(browser-use-sdk ≥ 3.8.0 が必要です。古い場合は、pip install -U "browser-use-sdk[x402]" を実行するよう伝えるか、これをスキップしてください):

import asyncio, os
from browser_use_sdk.v3 import get_wallet_balance

async def main():
    bal = await get_wallet_balance(os.environ["BROWSER_USE_X402_PRIVATE_KEY"])
    print(bal['total_credits_usd'])

asyncio.run(main())

MODE = B の場合は、get_wallet_balance をスキップします(404 が返ります。クレジットは API キーのプロジェクトにあるため、これは正常です。エラーとして表示しないでください)。通常の方法で残高を読み取ります。

from browser_use_sdk.v3 import AsyncBrowserUse
client = AsyncBrowserUse(api_key=os.environ["BROWSER_USE_API_KEY"])
acct = await client.billing.account()
print(acct.total_credits_balance_usd)

発言:

完了しました。Browser Use の残高は現在 $ です(テスト費用は約 $ でした)。タスクはこの残高から差し引かれ、残高がなくなると SDK がさらに 5 ドルを追加します。


ステップ 6 — 終了

SETUP = A の場合:

発言:

準備ができました。ブラウザーで実行するタスクを頼んでいただければ、ウォレットからの支払いで SDK を通じて実行します。

実行: タスクを頼まれたら、一時的なスクリプト(/tmp に置くか、長時間かかる場合はバックグラウンドジョブ)を書いて実行し、結果を報告した後で削除します。現在の作業ディレクトリにファイルを残さないでください。SDK は BROWSER_USE_X402_PRIVATE_KEY を読み取り、x402 エンドポイントを自動的に検出します。

import asyncio, os
from browser_use_sdk.v3 import AsyncBrowserUse

async def main():
    client = AsyncBrowserUse()  # Mode B: AsyncBrowserUse(api_key=os.environ["BROWSER_USE_API_KEY"])
    result = await client.run(task="<the task>")
    print(result.output)

asyncio.run(main())

SETUP = B の場合:

発言:

準備ができました。コードで使うクライアントはこちらです。.env からキーとエンドポイントを読み取ります。

実行: プロジェクトで使われている言語でクライアントを追加し、残りの手順については cloud スキル/SDK ドキュメントを案内します。

from browser_use_sdk.v3 import AsyncBrowserUse

client = AsyncBrowserUse()                                  # Mode A (accountless)
# client = AsyncBrowserUse(api_key="bu_...")                # Mode B (top up existing account)

(x402 には 非同期 クライアントが必要です。x402 の環境変数が設定されている場合、同期版の BrowserUse は実行されません。)


TypeScript での同等の記述

PythonTypeScript
from browser_use_sdk.v3 import AsyncBrowserUseimport { BrowserUse } from "browser-use-sdk/v3"
AsyncBrowserUse()new BrowserUse()
await client.run(task=...) → .outputawait client.run({ task }) → .output
get_wallet_balance(key)getWalletBalance(key) (from "browser-use-sdk/v3")
pip install "browser-use-sdk[x402]"npm install browser-use-sdk @x402/fetch @x402/evm viem

どちらの SDK も、環境変数から BROWSER_USE_X402_PRIVATE_KEY を読み取ります。

ルール

  • スクリプトを順番どおりに実行してください。「発言」ブロックは一言一句そのまま伝えてください。
  • ユーザーから明確な許可を得ずに、ユーザーの USDC を使うことは絶対に避けてください(ステップ 5 の質問への回答が許可にあたります)。
  • キーの追加方法を必ず両方提示してください:チャットに貼り付けてもらう(その場合は .env に書き込みます)方法と、ユーザー自身に追加してもらう方法です。貼り付けてもらった場合は、キーをそのまま .env に書き込み、二度とユーザーに表示したり、ほかの場所に保存したりしないでください。
  • キーを保存する前に .env を .gitignore に追加してください。
  • ウォレットには実際のお金が入っています。 キーをソース管理、ログ、スクリーンショットに含めないでください。漏えいしても問題のない金額だけを追加してください。

参考資料

コメント