x402 について
x402は、Browser Use Cloudの暗号資産ウォレット決済を設定し、SDK経由でブラウザータスクを実行するスクリプト型スキルです。ウォレット設定、USDC入金、有料テスト、SDK利用を案内します。対応するのはPythonまたはTypeScript SDKで、CLIには対応しません。
主な機能
- 01ウォレットによるUSDC決済
- 02アカウント不要またはAPIキーでの課金設定
- 03ウォレットへの入金案内
- 04有料のエンドツーエンドテスト
- 05Python・TypeScript SDKの設定
活用シーン
- 01ウォレットからBrowser Useタスクを支払う
- 02既存のAPIキープロジェクトに暗号資産で入金する
- 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 キーを次の順に探します。まだ何も言わないでください。
- 環境変数の
BROWSER_USE_API_KEY ./.env内のBROWSER_USE_API_KEY=という行~/.browser-use/config.json(browser-use cloud login/signupによって保存)- 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 —「手順を教えてください」
伝える:
- 公式サイト https://metamask.io からのみ、MetaMask(または Rabby、Coinbase Wallet、Frame、Trust Wallet、Phantom など)をインストールします。ウォレットを作成し、シードフレーズをオフラインで保存して、パスワードを設定します。
- Base をネットワークとして追加します。https://chainlist.org/chain/8453 を開き、「Connect Wallet」→「Add to MetaMask」の順にクリックし、ウォレットで承認します。
- ウォレットの「Buy」をクリックします。USDC を選び、ネットワークを Base に設定して、カード/Apple Pay/銀行振込で支払います。USDC はウォレットに直接入金されます。
- 秘密鍵を取得します:アカウントメニュー → Account details → Show private key → パスワードを入力 → コピー。
.envに追加します(.envが Git の追跡対象外になっていることを確認します)。BROWSER_USE_X402_PRIVATE_KEY=<your private key>
- 確認できるように、ウォレットの公開アドレス(
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 での同等の記述
| Python | TypeScript |
|---|---|
from browser_use_sdk.v3 import AsyncBrowserUse | import { BrowserUse } from "browser-use-sdk/v3" |
AsyncBrowserUse() | new BrowserUse() |
await client.run(task=...) → .output | await 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に追加してください。 - ウォレットには実際のお金が入っています。 キーをソース管理、ログ、スクリーンショットに含めないでください。漏えいしても問題のない金額だけを追加してください。
参考資料
- x402 ユーザードキュメント:https://docs.browser-use.com/cloud/guides/x402
- Claude Code + Browser Use Cloud:https://docs.browser-use.com/cloud/tutorials/integrations/claude-code
- x402 プロトコル:https://www.x402.org
- Base 上の USDC コントラクト:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - Base RPC:https://mainnet.base.org · Basescan:https://basescan.org