UPBIT market data get skill
Scanned@kuns9
npx machina-cli add skill @kuns9/upbit-market-data-skill --openclawUpbit Market Data Skill
A CLI-based OpenClaw skill that fetches quotation/market data from the Upbit Open API.
This skill is designed to be executed via OpenClaw exec (run-once). It supports:
- Trading pair (market) list
- Candles (second/minute/day/week/month/year)
- Recent trades
- Tickers (by trading pairs / by quote currency)
- Orderbooks
- Watchlist tickers (from config)
All responses are JSON:
- Success → stdout:
{ "ok": true, "result": ... } - Error → stderr:
{ "ok": false, "error": { ... } }and exit code1
Requirements
- Node.js 18+ (uses built-in
fetch) - NPM
Installation
npm install
Configuration (JSON)
Create config/config.json.
Example:
{
"upbit": {
"baseUrl": "https://api.upbit.com",
"accessKey": "",
"secretKey": ""
},
"watchlist": ["KRW-BTC", "KRW-ETH", "KRW-SOL"]
}
Config path override
Default path:
config/config.json
Override at runtime:
node skill.js tickers --markets=KRW-BTC --config=./config/config.json
CLI Grammar
General format:
node skill.js <command> [subcommand] [--option=value]
Rules:
<command>is required.[subcommand]is optional and MUST NOT start with--.- Options must be provided as
--key=valueor--key value. - Outputs are always JSON.
STRICT MODE (Recommended for OpenClaw)
OpenClaw/LLM agents may reorder arguments when generating CLI calls. To prevent confusion, enable strict mode.
Enable strict mode
Add --strict=true to the command:
node skill.js tickers --markets=KRW-BTC,KRW-ETH --strict=true
Strict mode rules (hard requirements)
When --strict=true:
- Candle type MUST appear immediately after
candles:- ✅
node skill.js candles minutes --market=KRW-ETH --unit=5 --strict=true - ❌
node skill.js candles --market=KRW-ETH minutes --unit=5 --strict=true
- ✅
- Candle type MUST NOT be passed as an option (do not use
--type=in strict mode). - For non-candles commands,
subcommandmust be omitted. - Any unexpected positional arguments (extra words not starting with
--) will cause an error.
Why strict mode helps:
- It forces a single canonical command shape, making it far harder for OpenClaw/LLM to generate ambiguous or reordered invocations.
Commands
1) List trading pairs (markets)
node skill.js pairs --details=true --strict=true
2) Candles (CRITICAL STRUCTURE)
Candles require a candle type immediately after candles.
Canonical structure
node skill.js candles <type> --market=<MARKET> [options]
Where <type> MUST be one of:
secondsminutesdaysweeksmonthsyears
⚠️ <type> is NOT passed as --unit.
⚠️ <type> must appear immediately after candles.
Minutes candles (5-minute example)
node skill.js candles minutes --market=KRW-ETH --unit=5 --count=100 --strict=true
Allowed minute units:
1, 3, 5, 10, 15, 30, 60, 240
Other candles
node skill.js candles seconds --market=KRW-BTC --count=200 --strict=true
node skill.js candles days --market=KRW-BTC --count=50 --strict=true
node skill.js candles weeks --market=KRW-BTC --count=30 --strict=true
node skill.js candles months --market=KRW-BTC --count=12 --strict=true
node skill.js candles years --market=KRW-BTC --count=5 --strict=true
Incorrect examples (DO NOT USE)
# ❌ type passed as option
node skill.js candles --unit=minutes --market=KRW-ETH
# ❌ type after options
node skill.js candles --market=KRW-ETH minutes --unit=5
3) Recent trades
node skill.js trades --market=KRW-BTC --count=50 --strict=true
4) Tickers by trading pairs
node skill.js tickers --markets=KRW-BTC,KRW-ETH,KRW-SOL --strict=true
5) Tickers by quote currency
node skill.js quote-tickers --quote=KRW,BTC --strict=true
6) Orderbooks
node skill.js orderbook --markets=KRW-BTC --level=100000 --count=15 --strict=true
7) Watchlist tickers (from config)
node skill.js watchlist --strict=true
Error handling & rate limits
Upbit may respond with:
- 429: Too Many Requests
- 418: Request blocked
- 400: Bad request
The skill passes Upbit error payloads (when present) under error.upbit.
Reference: https://docs.upbit.com/kr/reference/rest-api-guide
Overview
This is a CLI-based OpenClaw skill that fetches quotation and market data from the Upbit Open API. It supports listing markets, candles, recent trades, tickers, orderbooks, and watchlist tickers, and returns all results as JSON for easy consumption by automation.
How This Skill Works
Built for Node.js 18+ and executed via OpenClaw exec, the skill uses the built-in fetch API to query Upbit endpoints. Outputs are strictly formatted JSON: stdout for success (ok: true) and stderr for errors (ok: false) with exit code 1.
When to Use It
- You need the current list of tradable Upbit markets (markets) for discovery or monitoring.
- You want candle data (seconds, minutes, days, weeks, months, years) for a market for charting or strategy backtests.
- You need recent trades for a market to gauge activity and liquidity.
- You require current tickers by trading pairs or by quote currency for pricing comparisons.
- You want watchlist tickers driven by a config file to monitor a curated set of assets.
Quick Start
- Step 1: npm install
- Step 2: Create config/config.json with your Upbit baseUrl and watchlist
- Step 3: Run a sample command, e.g., node skill.js tickers --markets=KRW-BTC --strict=true
Best Practices
- Run the skill with strict mode enabled to enforce a canonical CLI shape (add --strict=true).
- Ensure Node.js 18+ is installed since the skill uses the built-in fetch API.
- Always parse the JSON output and handle the ok flag to distinguish success from error.
- When using candles, place the candle type immediately after candles (e.g., candles minutes) and avoid passing the type as an option in strict mode.
- Configure a watchlist in config.json to automatically monitor preferred assets.
Example Use Cases
- node skill.js pairs --details=true --strict=true
- node skill.js candles minutes --market=KRW-ETH --unit=5 --count=100 --strict=true
- node skill.js trades --market=KRW-BTC --count=50 --strict=true
- node skill.js tickers --markets=KRW-BTC,KRW-ETH --strict=true
- node skill.js quote-tickers --quote=KRW,BTC --strict=true