Community코딩 & 개발github.com

x402

Browser Use Cloud의 x402 결제 설정 — 암호화폐 지갑(USDC on Base mainnet)으로 요청당 지불, 회원가입이나 API 키 불필요. 두 가지 설정 방식 제공: '그냥 사용' (지갑 설정 후 Claude Code 등이 클라우드 브라우저 작업 실행) 또는 '프로젝트에 통합' (SDK 설치 및 키+코드 추가). 지갑 설정, 자금 추가, .env 파일, ~$1 테스트 실행을 안내합니다.

x402란 무엇인가요?

이 스킬은 Coinbase의 x402 프로토콜을 사용하여 Browser Use Cloud에 대한 결제를 설정하는 방법을 안내합니다. x402는 API 키 대신 암호화폐 지갑(USDC on Base mainnet)을 통해 요청당 지불(Pay-per-use)을 가능하게 하여, 회원가입이나 신용카드 없이 브라우저 자동화 작업을 실행할 수 있게 해줍니다. 스킬은 두 가지 주요 설정 방식을 제공합니다: '그냥 사용하기' (터미널에서 에이전트가 지갑을 대신 설정하고 작업 실행)와 '프로젝트에 통합하기' (개발자가 자신의 앱에 SDK를 설치하고 코드에 통합). 또한 기존 Browser Use 계정이 있는 경우 자금을 충전할지, 아니면 새로운 계정 없는 지갑으로 사용할지 선택할 수 있습니다. 설정 과정은 지갑 준비 및 자금 조달, 비공개 키를 .env 파일에 안전하게 저장, 그리고 약 $1 USDC를 소비하는 테스트 실행을 포함합니다. 스킬은 Python과 TypeScript SDK 모두를 지원하며, 모든 단계에서 지갑 키와 자금을 안전하게 다루는 것에 중점을 둡니다. 주요 사용 사례로는 개발자나 AI 에이전트가 API 키 발급 절차 없이 빠르게 Browser Use Cloud를 사용하고자 할 때, 또는 암호화폐 결제를 통해 사용량에 따라 비용을 지불하려는 경우에 적합합니다. 무료 티어 가입(리버스 CAPTCHA → API 키)을 원한다면 `browser-use cloud signup` 또는 `cloud` 스킬을 대신 사용하세요.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/browser-use/browser-use/tree/main/skills/x402

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Browser Use Cloud — x402로 결제 (암호화폐 지갑)

이것은 스크립트 기반 흐름입니다. 단계를 순서대로 따르세요. x402는 SDK (browser-use-sdk for Python, browser-use npm package for TS)를 통해서만 작동합니다 — browser-use CLI 명령어는 없으므로 모든 단계는 짧은 SDK 스크립트를 실행합니다.

이 스크립트 사용 방법

  • 말하기: 아래 줄은 사용자에게 단어 그대로 전달합니다. 의역하거나 추가/삭제하지 마세요.
  • 말하기 블록 내 <이와 같이>는 채워넣을 값입니다 — 실제 값으로 바꾸고 나머지는 정확하게 유지하세요.
  • 묻기: 아래 줄은 AskUserQuestion 도구를 사용합니다. 질문과 옵션 텍스트를 정확히 그대로 사용하세요.
  • 질문 전에 설명을 표시하려면 AskUserQuestion question 필드 안에 넣으세요 (옵션 위에 렌더링됩니다). 도구 호출 전에 별도의 채팅 텍스트로 보내지 마세요 — 해당 텍스트는 질문 UI가 열릴 때 사라집니다. 따라서 설명 + 실제 질문을 모두 question 필드에, 한 번의 도구 호출로 넣으세요.
  • 실행: 아래 줄은 당신의 행동입니다. 소리내어 읽지 마세요.
  • 진행하면서 두 가지 사실을 추적하세요: SETUP (Step 1에서 A 또는 B)과 MODE (Step 2에서 A 또는 B).
  • SETUP, MODE, 그리고 경로 A/B/C 이름은 당신만을 위한 내부 레이블입니다. 절대 사용자에게 말하지 마세요. 대신 선택지를 평이한 단어로 설명하세요(예: "계정에 충전" / "계정 없는 지갑"), 절대 "모드 B"나 "경로 A"라고 하지 마세요.

Step 1 — 설정 방식 열기 및 선택

묻기: (헤더: x402 사용) — 설명과 질문을 모두 question 필드에 정확히 넣으세요:

x402는 Coinbase의 프로토콜로, API 키 대신 암호화폐로 API 요청 비용을 지불할 수 있게 합니다. x402를 사용하면 Browser Use를 요청당 암호화폐 지갑의 USDC on Base mainnet으로 지불할 수 있습니다 — 회원가입, API 키, 신용카드가 필요 없으며 지갑만 있으면 됩니다. 설정은 몇 분이면 완료됩니다: 지갑을 만들거나 준비하고, 자금을 추가하고, 키를 .env에 저장하고, 테스트하세요.

x402를 어떻게 사용하시겠습니까?

  • 그냥 사용하기 — 터미널에서 저에게 요청하여 지갑에서 비용을 지불하는 Browser Use 작업을 실행합니다. 제가 지갑과 키를 설정합니다.
  • 프로젝트에 통합하기 — 앱을 코딩 중이고 x402를 통합하려는 경우입니다. SDK 설치, 프로젝트의 .env에 키 저장, 코드 추가를 도와드립니다.

실행: "그냥 사용하기" → SETUP = A. "프로젝트에 통합하기" → SETUP = B.


Step 2 — 계정 확인 (묻기 전에 확인)

실행: 기존 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 출력

키가 어디서도 발견되지 않으면:

말하기:

Browser Use 키를 찾을 수 없어서 계정 없이 설정하겠습니다: 지갑이 당신의 신원이 되며, 첫 번째 결제로 지갑 이름의 프로젝트가 생성됩니다.

실행: MODE = A. Step 3으로 이동.

키가 발견되면:

묻기: (헤더: 계정) — 질문: <위치>에서 Browser Use API 키를 찾았습니다. USDC 크레딧을 어디로 보낼까요?

  • 해당 계정에 충전 — 크레딧이 기존 API 키의 프로젝트로 전달됩니다. 무료 크레딧이 소진되었거나 카드 대신 암호화폐로 결제하고 싶은 경우 좋습니다.
  • 계정 없는 지갑 — 지갑은 별도의 신원입니다. 첫 번째 결제로 기존 계정과 별도로 지갑 이름의 새 프로젝트가 생성됩니다.

실행: "해당 계정에 충전" → MODE = B. "계정 없는 지갑" → MODE = A.


Step 3 — 지갑

묻기: (헤더: 지갑) — 질문: 준비된 지갑이 있나요, 아니면 새로 만들어 드릴까요?

  • 자금이 있는 지갑이 있습니다 — EVM 지갑(MetaMask, Rabby, Coinbase Wallet, Frame, Phantom, …)에 USDC on Base mainnet이 있습니다.
  • 단계별 안내를 원합니다 — 지갑 만들기, Base 네트워크 추가, USDC 구매를 안내해 드립니다.
  • 새로 만들어 주세요 — 자동화를 위한 일회용 지갑을 생성해 드립니다. 자금은 직접 추가하셔야 합니다.

답변에 따라 분기합니다.

경로 A — "자금이 있는 지갑이 있습니다"

실행: .gitignore에 .env가 있는지 확인하고, 없으면 추가합니다.

묻기: (헤더: 키 추가) — 참고사항과 질문을 모두 question 필드에 넣으세요:

지갑의 비공개 키를 .env에 넣어야 합니다. 여기에 붙여넣으시면 제가 추가해 드리거나, 직접 추가하실 수 있습니다. 참고: 채팅에 붙여넣은 모든 내용은 대화 기록에 저장되므로, 고가치 지갑의 경우 직접 추가하는 것이 약간 더 안전합니다. 어떻게 하시겠습니까?

  • 여기에 붙여넣기 — 비공개 키를 채팅에 붙여넣으시면 제가 .env에 작성해 드립니다.
  • 직접 추가하겠습니다 — .env에 직접 추가하시고, 공개 주소만 보내주세요.

"여기에 붙여넣기" 선택 시:

실행: BROWSER_USE_X402_PRIVATE_KEY=<붙여넣은 키>를 .env에 작성합니다(파일이 없으면 생성, .env가 gitignored인지 확인). 키를 다시 출력하거나 다른 곳에 인쇄하지 마세요.

말하기:

키를 .env에 저장했습니다 — 다시 출력하지 않겠습니다.

실행: Step 4로 이동.

"직접 추가하겠습니다" 선택 시:

말하기:

다음 줄을 .env에 추가하고, 지갑의 공개 주소(0x…로 시작하는 것 — 공유해도 안전함)를 보내주세요:

BROWSER_USE_X402_PRIVATE_KEY=<비공개 키>

실행: 사용자가 주소를 보내면, ^0x[0-9a-fA-F]{40}$ 패턴과 일치하는지 확인합니다.

말하기:

확인했습니다: <주소>. 유효한 주소입니다.

실행: Step 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. 비공개 키를 가져오세요: 계정 메뉴 → 계정 세부 정보 → 비공개 키 표시 → 비밀번호 입력 → 복사.
  5. .env에 추가하세요(.env가 gitignored인지 확인):
BROWSER_USE_X402_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);

말하기:

새 지갑을 만들었습니다. 공개 주소는 <주소>이며, 비공개 키는 .env에 저장했습니다. 이제 자금이 필요합니다.

실행: Step 4(자금 추가)로 이동.


Step 4 — 자금 추가

경로 A 또는 B(이미 자금 있음)인 경우:

말하기:

지갑에 이미 자금이 있으므로 테스트로 넘어가겠습니다.

실행: Step 5로 이동.

경로 C인 경우:

말하기:

Base 네트워크에서 지갑에 USDC를 입금하는 두 가지 방법이 있습니다:

  • 지갑 내 Buy 버튼(가장 쉬움): "Buy"를 클릭하고 USDC를 선택한 후 네트워크를 Base로 설정하고 카드로 결제하세요. 거래소가 필요 없습니다.
  • 거래소에서 전송: USDC를 <주소>로 보내고 네트워크로 "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에서 $<금액>이 보입니다. 다음으로, 간단한 테스트를 실행하겠습니다.


Step 5 — 테스트 실행 (~$1)

실행: SETUP = A이면, 스크립트를 실행할 위치(기본 Python)에 SDK가 설치되어 있는지 확인합니다. SETUP = B이면, 프로젝트에 해당 언어로 SDK를 설치합니다 — cwd에서 언어를 파악합니다(package.json/tsconfig.json → TypeScript; pyproject.toml/requirements.txt/*.py → Python; 알 수 없으면 물어보세요):

# Python (x402 extra를 위해 3.10+ 필요)
pip install "browser-use-sdk[x402]"
# TypeScript
npm install browser-use-sdk @x402/fetch @x402/evm viem

묻기: (헤더: 테스트 실행) — 질문: 테스트할 준비가 되셨나요? 이 테스트는 지갑에서 정확히 $1 USDC를 사용하여 결제와 작업 실행을 종단간 확인합니다.

  • 기본 작업 사용 — "Go to example.com and tell me the heading text." (~5초, 저렴함)
  • 직접 작업을 알려주겠습니다 — 대신 실행할 짧은 작업을 알려주세요.
  • 테스트 건너뛰기 — 테스트를 건너뛰고 바로 x402 사용으로 넘어갑니다.

실행:

  • "직접 작업을 알려주겠습니다" → 말하기: 작업이 무엇인가요? 짧게 작성해 주세요. 대기.
  • "테스트 건너뛰기" → Step 6으로 이동.
  • 그 외에는 기본 작업을 사용합니다.

실행: 테스트를 실행합니다. max_value가 $1.50인 raw x402 클라이언트를 사용하여 SDK 기본값인 $5 대신 $1를 결제하도록 합니다:

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는 요청당 지출上限을 설정 — 기본 $5 대신 $1 옵션을 선택합니다.
    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를 추가합니다.


Step 6 — 마무리

SETUP = A인 경우:

말하기:

모든 설정이 완료되었습니다. 브라우저 작업을 요청하시면 SDK를 통해 지갑에서 결제하여 실행해 드리겠습니다.

실행: 사용자가 작업을 요청하면, 일회용 스크립트를 작성하고(/tmp 또는 장기 작업의 경우 백그라운드 작업으로), 실행하고, 결과를 보고하고, 삭제합니다 — cwd에 파일을 남기지 마세요. 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="<작업>")
    print(result.output)

asyncio.run(main())

SETUP = B인 경우:

말하기:

모든 설정이 완료되었습니다. 코드에서 사용할 클라이언트입니다 — .env에서 키와 엔드포인트를 읽습니다:

실행: 프로젝트 언어에 맞는 클라이언트를 추가하고 나머지는 cloud 스킬 / SDK 문서를 참조하도록 안내합니다:

from browser_use_sdk.v3 import AsyncBrowserUse

client = AsyncBrowserUse()                                  # Mode A (계정 없음)
# client = AsyncBrowserUse(api_key="bu_...")                # Mode B (기존 계정 충전)

(x402는 비동기 클라이언트가 필요합니다 — 동기 BrowserUse는 x402 환경 변수가 설정된 경우 실행되지 않습니다.)


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를 사용하지 마세요 (Step 5의 질문이 그 동의입니다).
  • 키 추가 방법은 항상 두 가지를 모두 제시하세요: 채팅에 붙여넣기(당신이 .env에 작성) 또는 사용자가 직접 추가. 사용자가 붙여넣으면, 즉시 .env에 작성하고 절대 다시 출력하거나 다른 곳에 저장하지 마세요.
  • 키를 저장하기 전에 .gitignore에 .env를 추가하세요.
  • 지갑에는 실제 돈이 들어 있습니다. 키를 소스 코드, 로그, 스크린샷에서 멀리하세요; 유출될 경우 손실을 감당할 수 있는 금액만 추가하세요.

참고

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

browser-use

Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages.

browser-use/cloud

Documentation reference for using Browser Use Cloud — the hosted API and SDK for browser automation. Use this skill whenever the user needs help with the Cloud REST API (v2 or v3), browser-use-sdk (Python or TypeScript), X-Browser-Use-API-Key authentication, cloud sessions, browser profiles, profile sync, CDP WebSocket connections, stealth browsers, residential proxies, CAPTCHA handling, webhooks, workspaces, skills marketplace, liveUrl streaming, pricing, or integration patterns (chat UI, subagent, adding browser tools to existing agents). Also trigger for questions about n8n/Make/Zapier integration, Playwright/ Puppeteer/Selenium on cloud infrastructure, or 1Password vault integration. Do NOT use this for the open-source Python library (Agent, Browser, Tools config) — use the open-source skill instead.

browser-use/open-source

Documentation reference for writing Python code using the browser-use open-source library. Use this skill whenever the user needs help with Agent, Browser, or Tools configuration, is writing code that imports from browser_use, asks about @sandbox deployment, supported LLM models, Actor API, custom tools, lifecycle hooks, MCP server setup, or monitoring/observability with Laminar or OpenLIT. Also trigger for questions about browser-use installation, prompting strategies, or sensitive data handling. Do NOT use this for Cloud API/SDK usage or pricing — use the cloud skill instead. Do NOT use this for directly automating a browser via CLI commands — use the browser-use skill instead.

browser-use/remote-browser

Controls a local browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.

관련 스킬