1m-trade Aggregator - On-chain Operations Hub
Official website (wallet & account): https://www.1m-trade.com
After first install
Scan and verify all required dependencies for sub-skills and install what is needed. From this skill bundle root, run node auto_check.js to verify required binaries and .env entries (it does not print secrets).
1m-trade-news (required)
This aggregator must have the 1m-trade-news sub-skill available: market intelligence, news, and BlockBeats API calls all go through it. Do not skip this step when installing the bundle.
-
Skill files: Ensure the bundle includes skills/1m-trade-news/ (SKILL.md, etc.) and that your OpenClaw / host loads that folder as the 1m-trade-news skill.
-
curl: Required on PATH for the documented API flows (see metadata requires.bins).
-
BlockBeats API key (BLOCKBEATS_API_KEY): Market and news workflows use the BlockBeats Pro API. Install-time, ensure BLOCKBEATS_API_KEY is set in the local 1m-trade state file (paths under Optional runtime override below).
Apply for / obtain a key (free tier):
- Request a free API key:
curl --request GET --url "https://api-pro.theblockbeats.info/v1/api-key/free"
- From the JSON body, read
data.api_key and use it as BLOCKBEATS_API_KEY.
- Write it to
~/.openclaw/.1m-trade/.env (or $OPENCLAW_STATE_DIR/.1m-trade/.env if you use that override), on its own line:
BLOCKBEATS_API_KEY=<api_key>
Do not remove unrelated lines; only add or update this variable.
Reference: skills/1m-trade-news/SKILL.md → Get an API key (includes agent-safe steps to populate .env without printing the key).
Security: Do not paste API keys into chat; the model must not echo stored keys.
1m-trade-dex (required)
This aggregator must have the 1m-trade-dex sub-skill available: trading, wallet queries, and hl1m all go through it. Do not skip this step when installing the bundle.
- Skill files: Ensure the bundle includes
skills/1m-trade-dex/ (SKILL.md, reference.md, etc.) and that your OpenClaw / host loads that folder as the 1m-trade-dex skill.
- CLI (
hl1m): Install the 1m-trade package so hl1m is on PATH (Python 3.11+ recommended):
pipx install 1m-trade
hl1m --help
If pipx is missing, install it per your OS (see skills/1m-trade-dex/SKILL.md → Setup).
- Wallet / Hyperliquid state: After install, users still run
hl1m init-wallet (and related steps) so .env contains the Hyperliquid fields auto_check.js expects — see skills/1m-trade-dex/SKILL.md → Wallet initialization.
Optional runtime override:
OPENCLAW_STATE_DIR can be set to change where local .1m-trade state files are read/written.
- If not set, tools default to
~/.openclaw/.1m-trade/.
Secret source-of-truth policy:
- API key and wallet credentials are expected in the local state
.env file under the paths above (typically after the user runs hl1m init-wallet and related CLIs locally).
- Process environment variables may be used only as explicit runtime overrides by underlying tools.
- LLM boundary: The model must not read
.env into context or quote stored secrets. For wallet bind, if the user voluntarily sends wallet address + proxy private key in one message (e.g. clearly labeled fields such as wallet address and proxy private key), follow 1m-trade-dex → parse and invoke hl1m init-wallet --address … --pri_key … in a trusted shell; do not repeat full keys in assistant replies. Otherwise prefer the user running init-wallet locally without pasting keys in chat.
- Never print secret values in assistant-visible chat or user-facing logs from the model.
Overview
This skill (1m-trade) is an orchestration hub that integrates multiple sub-skills into a single coherent workflow. You describe your goal (e.g., "check today's sentiment", "analyze BTC fund flows and open a long with half my balance", "help me configure my Hyperliquid wallet with init-wallet", "auto-trade BTC"), and this skill decomposes the request and calls 1m-trade-news and 1m-trade-dex to complete the operation.
Core workflows
Based on intent keywords, this skill routes into one of the workflows below (or composes them).
Workflow 1: Market intelligence (Data & News)
Triggers: market, price, news, macro, fund flows, perps, search [keyword]
Skill: 1m-trade-news
Logic:
- Parse the user query and map it to a scenario / intent mapping.
- Call the relevant BlockBeats API endpoints in parallel.
- Format and aggregate results into a market report with brief interpretation.
Example output:
📰 Market Report · 202X-XX-XX
===
1. 📊 Snapshot
Sentiment: 35 → Neutral
BTC ETF: +$120M net inflow today
On-chain tx volume: +15% vs yesterday
2. 💰 Hot flows (Solana)
1. JTO net inflow $4.2M
2. ...
3. 🌐 Macro
Global M2: +4.5% YoY → Liquidity easing
DXY: 104.2 → Relatively strong
Overall: Macro backdrop is neutral-to-bullish for crypto.
Workflow 2: Wallet setup (initialization)
Triggers: init wallet, configure wallet, configure trading account, bind wallet, connect Hyperliquid, set up trading, wallet settings, proxy key, API key (wallet); same message with both wallet address and proxy private key (or non-English equivalents per 1m-trade-dex Natural-language binding).
Skill: 1m-trade-dex (see skills/1m-trade-dex/SKILL.md → Natural-language binding and skills/1m-trade-dex/reference.md)
Wallet operations (synced with sub-skill docs):
| Step | Where | What |
|---|
| Create / manage wallet | Browser | https://www.1m-trade.com — official UI for account and wallet; do not recreate this flow in chat. |
| Bind CLI to the account | Local shell | hl1m init-wallet only — wallet public address + proxy (API) private key. Never use the main / master wallet private key. |
| Verify | After init | hl1m query-user-state (and other hl1m query commands as needed). |
Logic:
- Send users to https://www.1m-trade.com for wallet creation and ongoing management in the browser. Do not simulate full wallet creation inside the assistant.
- For CLI binding:
- If the user provides both address and proxy key in one message (with labels such as
wallet address and proxy private key, or other languages as mapped in 1m-trade-dex), follow 1m-trade-dex Natural-language binding: parse 0x + 40 hex (address) and 0x + 64 hex (proxy key), then run hl1m init-wallet --address <parsed> --pri_key <parsed> in a trusted shell; do not echo full keys in chat.
- Otherwise, show the placeholder command only and ask the user to run locally:
hl1m init-wallet --address 0xYourWalletAddress --pri_key 0xYourProxyPrivateKey
- After a successful init, use
hl1m query-user-state to confirm the account is visible.
Workflow 3: Trading execution & management (Trading & Management)
Triggers: trade, order, open, close, positions, price, kline, HIP3, AAPL, GOLD
Skill: 1m-trade-dex
Logic:
- Market data: query kline/mids/meta as requested and format results.
- Pre-trade checks: ensure
1m-trade-dex is installed and run node auto_check.js to verify prerequisites. If it fails, do not execute any trades.
- Execution: follow the
1m-trade-dex documentation for the specific command.
Workflow 4: Hybrid orchestration (Hybrid Workflow)
Trigger examples: "check the market then decide whether to buy BTC", "after I init my wallet, show ETH kline"
Logic:
- Call Workflow 1 to fetch the market report.
- Present the report and ask whether to continue (e.g., "proceed to wallet setup or trading?").
- After confirmation, call Workflow 2 (wallet init guidance) or Workflow 3.
Examples
User: "How is the crypto market today? I also need to connect my Hyperliquid wallet."
1m-trade:
- Generate a market snapshot report (Workflow 1).
- Point to 1M-Trade for wallet creation/management as needed, then Workflow 2: if the user already sent labeled
wallet address + proxy private key (or equivalent), parse and run hl1m init-wallet; otherwise give the placeholder command for local use (proxy key only; never the main wallet private key). Do not guide send-private-key.
User: "Search for the latest news about 'Bitcoin halving', then show BTC kline."
1m-trade:
- Call search (Workflow 1, Scenario 5) and return relevant items.
- Call kline query (Workflow 3) and return recent candles.
Workflow 5: Fully autonomous mode (AI Auto-Trader)
Triggers: enable auto trading, autonomous trading, managed, AI trade for me, run every N minutes, auto trade BTC
Logic:
-
Run the checker once before enabling cron:
- Repo root:
node auto_check.js
- If installed under the OpenClaw workspace: run
node <skill_bundle_root>/auto_check.js
If it fails, do not enable auto trading.
-
Check whether the 1m-trade-auto-trader cron job exists:
- Run
openclaw cron list to verify whether it still exists.
- If it exists, ask the user to stop/remove it before creating a new one.
- If the user confirms it should be removed and it is still present, attempt to remove it with
openclaw cron rm <task id>, then re-run openclaw cron list to confirm it is gone.
-
Create a periodic workflow using the command below. --session isolated is fixed and must not be changed. The default interval is every 20 minutes (*/20); replace with */N if needed. Send the trading report to the user.
Security constraints for the cron message:
- Include ONLY the "#### Workflow content" block as the job prompt template.
- Never include any secrets (API keys, private keys, passwords,
.env contents, tokens).
- Never include unrelated user/system text, terminal logs, or file contents.
- Keep shell commands/placeholders unchanged, but you may translate natural-language instructions for locale.
-
Run:
openclaw cron add \
--name "1m-trade-auto-trader" \
--cron "*/20 * * * *" \
--session isolated \
--message "<Paste the FULL prompt from #### Workflow content through the end of the report template below; translate EVERY narrative line into the user's language (e.g. full Simplified Chinese if the user uses Chinese—no leftover English instructions). Keep skill names, hl1m subcommands, symbols, and <<...>> structure unchanged. No secrets. Each run outputs ONLY the final trading report; that report must be monolingual (all Chinese OR all English per user—no mixed prose). Replace this placeholder with that translated block.>" \
--timeoutSeconds 600 \
--announce \
--channel <channel e.g. telegram> \
--to "<user id>" \
Workflow content
Pre-start: dependency memory check
All skills are installed locally.
-
Try reading: $OPENCLAW_STATE_DIR/.1m-trade/dependencies-status.md
- If missing → first run, treat as "not confirmed installed"
- If present, look for any marker:
- Installed: true
- DependencyStatus: Installed
- SkillsReady: true
- Record status as "installed" or "not installed/unknown"
-
Decide based on the status:
- If clearly "installed" → skip checks/install and go to step 4
- Otherwise → run step 3
-
Only when initialization is needed:
Ensure these skills are available in order:
- 1m-trade-news
- 1m-trade-dex
If a skill is unavailable, attempt to install/enable it via the system's mechanism.
Then record success in the memory file.
-
Must execute: update/create the dependency memory file by overwriting:
# Dependency install marker - do not edit manually
Installed: true
Skills: 1m-trade-news (or others)
Skills Path: <skill paths>
LastChecked: 2026-03-15 14:30:00 UTC
Start execution
Start execution.
Workflow: Fully autonomous trading mode (AI Auto-Trader)
Execution Guidelines
- Evaluate the full market universe (scan multiple assets). Trades are determined by risk controls; 0 to multiple trades are allowed.
- Output must be a trading report only (no executable code). Markdown tables/quotes are allowed.
- Do not create or modify any files.
- Only call existing skills.
- Use real trading (not simulation).
Response format
- Your final assistant response must contain only the final trading report section in the required Markdown structure.
- Language: The report must be fully in one language matching the user (see Locale / Monolingual output in #### 4. Trading brief) — no mixed Chinese/English prose.
Market universe (fixed; do not modify)
BTC
ETH
SOL
xyz:GOLD (alias: Gold)
xyz:CL (alias: Crude Oil)
xyz:SILVER (alias: Silver)
xyz:NVDA (alias: NVIDIA)
xyz:GOOGLE (alias: Google)
xyz:NATGAS (alias: Natural Gas)
xyz:BRENTOIL (alias: Brent Oil)
xyz:HOOD (alias: Robinhood)
Quote currency: USDC
Execution loop:
When triggered, execute the following steps in order. Avoid requesting intermediate confirmations; proceed with execution.
1. Intelligence & data collection (sense)
- News: use
1m-trade-news to fetch the latest 20 newsflashes/news and determine whether they mention assets in the market universe to infer sentiment.
- Kline: call
1m-trade-dex → query-kline (default 1h).
- Wallet: call
1m-trade-dex → query-user-state.
- Prices: call
1m-trade-dex → query-mids.
2. Decision
Decide based on news sentiment and kline trend:
Mandatory risk controls & calculations:
- Each new position's notional value (after leverage) must be > 15 USDC (not balance).
- Calculate quantity rigorously using latest prices:
qty (--qty) = target notional (USDC) / latest price, using appropriate precision.
3. Execution (act)
Based on the decision, use 1m-trade-dex commands to trade.
- Example (market long/short): call
market-order
- Example (close): compute exact position size and place the appropriate market order
- Example (limit): call
place-order
- If decision is Hold, do not execute any trade commands.
4. Trading brief (report)
Generate a brief report (not too long) describing the decision rationale and execution results. Follow this Markdown format strictly.
Locale: Infer the user’s primary language from the session (e.g. Chinese vs English). The report must be monolingual — no zh/en mix in narrative text.
Language rule (strict):
- Monolingual output (mandatory):
- If the user’s language is Chinese (or they explicitly use Chinese): write the entire report in Chinese only — headings, bullets, table cells, and trading-status wording (e.g. use fully localized terms for hold / long / short / close, not English “Hold/Long/Short/Close” mixed into Chinese sentences).
- If the user’s language is English: write the entire report in English only — no Chinese or other-language fragments in prose.
- Allowed exceptions (do not “translate” these): canonical symbols and tickers (
BTC, ETH, xyz:GOLD, …), the literal 1m-trade, pair suffixes like -USDC, numbers, and % where standard.
<<...>> are schema hints in this template only — strip them in the final answer. Do not print literal << or >> in the user-visible report. For each slot, output normal Markdown: localized headings and body text (e.g. - **Fundamentals**: weak market sentiment…), not - **<<Fundamentals>>**: … or • <<Fundamentals>>: …. The reader must see finished prose, not bracket markers.
- Translate/replace the meaning of each former
<<...>> slot into the user’s language (including example values that stood in for real content).
- Do NOT translate placeholders inside <...>.
- Do NOT translate crypto symbols, tickers, or trading pairs (e.g. BTC, ETH, SOL, xyz:GOLD). Keep them exactly as-is.
- Do NOT translate the literal string
1m-trade anywhere.
- Asset display name rule:
- If the asset has an alias in the Market universe list, use the alias as the display name (alias text should follow the translation rule). Do NOT display the canonical symbol.
- If the asset has no alias, use the canonical symbol as-is.
🤖 1m-trade <<AUTONOMOUS_TRADING_REPORT>>:
<<ACCOUNT_BALANCE>>: <<summary>>
<<POSITIONS>>:
Table coverage (same idea as per-asset section): If the market universe is large, do not fill one row per symbol by default. Prefer: (a) a narrow table — only rows for assets with material activity this run (traded, opened/closed, non-Hold, or materially different), plus one summary line for “everything else” (e.g. all others: Hold / no action); or (b) a short bullet summary instead of a wide table. When the set is small, you may use the full table pattern below.
| <<ASSET>> | <<LATEST_PRICE>> | <<TREND_TIMEFRAME>> | <<DECISION>> | <<RESULT>> |
|---|
| BTC | xxx | <<Up>> | <<Hold>> | <<No action>> |
| ETH | xxx | <<Range>> | <<Long>> | <<Opened long 0.012 ETH>> |
| <<Gold>> | xxx | <<Up>> | <<Hold>> | <<No action>> |
| ... | ... | ... | ... | ... |
🧠 <<PER_ASSET_DECISIONS>>
Coverage rule: If the market universe is large or a full per-asset write-up would make the report too long, prefer a summary instead of repeating the block below for every symbol. In summary mode: give one cross-asset fundamentals/sentiment paragraph, portfolio-level account state, then short bullets only for assets that mattered (e.g. traded this run, non-Hold decision, material risk, or materially different from the rest). End with a brief execution recap. Strip <<...>> in final output; stay monolingual.
When the set is small (or the user asked for full detail), repeat per asset:
[ASSET]-USDC
- <<FUNDAMENTALS>>: <<top relevant news / sentiment summary>>
- <<ACCOUNT_STATE>>: <<none / long X / short X>>
- <<DECISION_RATIONALE>>: <<fundamentals + technicals>> → <<Long/Short/Hold/Close>>
- <<EXECUTION>>: <<✅ executed (or ⏸️ hold, no action)>>