首页龙虾技能列表 › Monetize Service — 技能工具

Monetize Service — 技能工具

v0.1.0

Build and deploy a paid API that other agents can pay to use via x402. Use when you or the user want to monetize an API, make money, earn money, offer a service, sell a service to other agents, charge for endpoints, create a paid endpoint, or set up a paid service. Covers "make money by offering an endpoint", "sell a service", "monetize your data", "create a paid API".

0· 900·5 当前·5 累计
by @0xrag (0xRAG)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/12
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
安全
high confidence
The skill's instructions and requirements are internally consistent with its stated purpose (building an x402-paid API), but exercise normal caution around third-party npm packages and running real-money payments on mainnet.
评估建议
This skill appears to do what it says: build an Express server that charges via x402. Before installing or running it, do the following: (1) review the x402-express npm package source and its reputation; (2) test everything on base-sepolia (testnet) before switching to Base mainnet to avoid losing real USDC; (3) confirm the payTo address is correct and never paste or expose private keys; (4) verify which facilitator (x402.org or custom) will be used and read its privacy/security documents; (5) c...
详细分析 ▾
用途与能力
The name/description (monetize an API with x402) align with the runtime instructions: obtaining a receive address, installing x402-express, and protecting Express routes. The listed allowed tools (npx, npm, node, curl) are appropriate for the task.
指令范围
SKILL.md stays on-topic: it guides wallet auth, obtaining a payTo address, installing x402-express, and wiring middleware into an Express server. It does not instruct reading unrelated files or exfiltrating data. It does instruct interacting with a wallet and making on-chain payments (expected for this purpose).
安装机制
There is no install spec in the skill bundle (instruction-only), but the instructions require installing the third-party npm package x402-express. Using npm packages is a normal choice but carries moderate risk—verify the package source, review code, and prefer testnet before mainnet.
凭证需求
The skill requests no environment variables, which is coherent, but it depends on an authenticated wallet (via npx awal). That implies access to a wallet whose keys/funds could be at risk if misused. Requesting a receive address (payTo) is expected, but users must ensure they don't expose private keys or run this against a wallet holding significant funds without auditing dependencies.
持久化与权限
always is false and the skill is user-invocable. It does not request persistent system-wide changes or modify other skills' configurations; no elevated persistence is requested.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv0.1.02026/2/12

Initial release of the monetize-service skill. - Enables users to build and deploy paid APIs with per-request USDC payments over the x402 protocol. - Guides setup of an Express server with x402-express middleware to protect endpoints and enforce payment. - Includes configuration examples for multiple endpoints, wildcards, free endpoints, and schema validation. - Provides testing steps and pricing guidelines for common use cases. - Lists required tools and commands for wallet setup, payments, and endpoint configuration.

● 可疑

安装命令 点击复制

官方npx clawhub@latest install monetize-service
镜像加速npx clawhub@latest install monetize-service --registry https://cn.clawhub-mirror.com

技能文档

Create an Express server that charges USDC for API access using the x402 payment protocol. Callers pay per-request in USDC on Base — no accounts, API keys, or subscriptions needed.

How It Works

x402 is an HTTP-native payment protocol. When a client hits a protected endpoint without paying, the server returns HTTP 402 with payment requirements. The client signs a USDC payment and retries with a payment header. The facilitator verifies and settles the payment, and the server returns the response.

Confirm wallet is initialized and authed

npx awal@latest status

If the wallet is not authenticated, refer to the authenticate-wallet skill.

Step 1: Get the Payment Address

Run this to get the wallet address that will receive payments:

npx awal@latest address

Use this address as the payTo value.

Step 2: Set Up the Project

mkdir x402-server && cd x402-server
npm init -y
npm install express x402-express

Create index.js:

const express = require("express");
const { paymentMiddleware } = require("x402-express");

const app = express(); app.use(express.json());

const PAY_TO = "

";

// x402 payment middleware — protects routes below const payment = paymentMiddleware(PAY_TO, { "GET /api/example": { price: "$0.01", network: "base", config: { description: "Description of what this endpoint returns", }, }, });

// Protected endpoint app.get("/api/example", payment, (req, res) => { res.json({ data: "This costs $0.01 per request" }); });

app.listen(3000, () => console.log("Server running on port 3000"));

Step 3: Run It

node index.js

Test with curl — you should get a 402 response with payment requirements:

curl -i http://localhost:3000/api/example

API Reference

paymentMiddleware(payTo, routes, facilitator?)

Creates Express middleware that enforces x402 payments.

ParameterTypeDescription
payTostringEthereum address (0x...) to receive USDC payments
routesobjectRoute config mapping route patterns to payment config
facilitatorobject?Optional custom facilitator (defaults to x402.org)

Route Config

Each key in the routes object is "METHOD /path". The value is either a price string or a config object:

// Simple — just a price
{ "GET /api/data": "$0.05" }

// Full config { "POST /api/query": { price: "$0.25", network: "base", config: { description: "Human-readable description of the endpoint", inputSchema: { bodyType: "json", bodyFields: { query: { type: "string", description: "The query to run" }, }, }, outputSchema: { type: "object", properties: { result: { type: "string" }, }, }, }, }, }

Route Config Fields

FieldTypeDescription
pricestringUSDC price (e.g. "$0.01", "$1.00")
networkstringBlockchain network: "base" or "base-sepolia"
config.descriptionstring?What this endpoint does (shown to clients)
config.inputSchemaobject?Expected request body/query schema
config.outputSchemaobject?Response body schema
config.maxTimeoutSecondsnumber?Max time for payment settlement

Supported Networks

NetworkDescription
baseBase mainnet (real USDC)
base-sepoliaBase Sepolia testnet (test USDC)

Patterns

Multiple endpoints with different prices

const payment = paymentMiddleware(PAY_TO, {
  "GET /api/cheap": { price: "$0.001", network: "base" },
  "GET /api/expensive": { price: "$1.00", network: "base" },
  "POST /api/query": { price: "$0.25", network: "base" },
});

app.get("/api/cheap", payment, (req, res) => { / ... / }); app.get("/api/expensive", payment, (req, res) => { / ... / }); app.post("/api/query", payment, (req, res) => { / ... / });

Wildcard routes

const payment = paymentMiddleware(PAY_TO, {
  "GET /api/": { price: "$0.05", network: "base" },
});

app.use(payment); app.get("/api/users", (req, res) => { / ... / }); app.get("/api/posts", (req, res) => { / ... / });

Health check (no payment)

Register free endpoints before the payment middleware:

app.get("/health", (req, res) => res.json({ status: "ok" }));

// Payment middleware only applies to routes registered after it app.get("/api/data", payment, (req, res) => { / ... */ });

POST with body schema

const payment = paymentMiddleware(PAY_TO, {
  "POST /api/analyze": {
    price: "$0.10",
    network: "base",
    config: {
      description: "Analyze text sentiment",
      inputSchema: {
        bodyType: "json",
        bodyFields: {
          text: { type: "string", description: "Text to analyze" },
        },
      },
      outputSchema: {
        type: "object",
        properties: {
          sentiment: { type: "string" },
          score: { type: "number" },
        },
      },
    },
  },
});

app.post("/api/analyze", payment, (req, res) => { const { text } = req.body; // ... your logic res.json({ sentiment: "positive", score: 0.95 }); });

Using the CDP facilitator (authenticated)

For production use with the Coinbase facilitator (supports mainnet):

npm install @coinbase/x402
const { facilitator } = require("@coinbase/x402");

const payment = paymentMiddleware(PAY_TO, routes, facilitator);

This requires CDP_API_KEY_ID and CDP_API_KEY_SECRET environment variables. Get these from https://portal.cdp.coinbase.com.

Testing with the pay-for-service Skill

Once the server is running, use the pay-for-service skill to test payments:

# Check the endpoint's payment requirements
npx awal@latest x402 details http://localhost:3000/api/example

# Make a paid request npx awal@latest x402 pay http://localhost:3000/api/example

Pricing Guidelines

Use CaseSuggested Price
Simple data lookup$0.001 - $0.01
API proxy / enrichment$0.01 - $0.10
Compute-heavy query$0.10 - $0.50
AI inference$0.05 - $1.00

Checklist

  • [ ] Get wallet address with npx awal@latest address
  • [ ] Install express and x402-express
  • [ ] Define routes with prices and descriptions
  • [ ] Register payment middleware before protected routes
  • [ ] Keep health/status endpoints before payment middleware
  • [ ] Test with curl (should get 402) and npx awal@latest x402 pay (should get 200)
  • [ ] Announce your service so other agents can find and use it
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务