SKILL.md
$2c
Prerequisites
- Install
okxCLI:
npm install -g @okx_ai/okx-trade-cli
- Configure credentials in
~/.okx/config.toml
- Verify setup:
okx news latest --limit 3
OKX News does not support demo mode. Always use --profile live silently — don't mention it unless there's an error.
On "not available in demo" errors: the user's current profile is configured with demo/simulated credentials. Tell the user: "News module does not support demo mode. Please switch to a live profile." Guide them to either:
- Use
--profile liveif a live profile exists:okx --profile live news latest
- Or create one:
okx config add-profile AK=<key> SK=<secret> PP=<passphrase> name=live
All commands support --json for raw JSON output.
Quickstart
# Latest news
okx news latest --limit 5
# Today's important news
okx news important --begin $(date -d 'today 00:00:00' +%s000 2>/dev/null || date -v0H -v0M -v0S +%s000)
# BTC news
okx news by-coin --coins BTC
# Search for SEC ETF news
okx news search --keyword "SEC ETF"
# BTC sentiment overview
okx news coin-sentiment --coins BTC
# Trending coins (hottest right now)
okx news sentiment-rank
# Upcoming economic events (today only)
okx news economic-calendar --before $(date -v0H -v0M -v0S +%s000) --after $(date -v+1d -v0H -v0M -v0S +%s000) --limit 100
Intent → Command Mapping
Browse News
latest, by-coin, and search default --importance low, which returns all news (both high and low importance). Pass --importance high only when the user explicitly asks for major / breaking / important news. The dedicated okx news important command is a shortcut for that case.
User says
Command
"what's been happening in crypto lately" / "catch me up on recent news"
okx news latest
"any big news today" / "what are the major stories right now"
okx news important
"what happened in crypto yesterday"
okx news latest --begin <yesterday_0am> --end <today_0am>
"any news on BTC recently" / "what's going on with BTC"
okx news by-coin --coins BTC
"any major updates on ETH or SOL"
okx news by-coin --coins ETH,SOL --importance high
Search News
User says
Command
"any updates on the SEC ETF decision"
okx news search --keyword "SEC ETF"
"what's the latest on stablecoin regulation"
okx news search --keyword "stablecoin regulation"
"any news about the Bitcoin halving"
okx news search --keyword "Bitcoin halving"
Coin Sentiment Analysis
User says
Command
"is the market bullish or bearish on BTC right now" / "how do people feel about BTC"
okx news coin-sentiment --coins BTC
"compare how people feel about ETH vs SOL"
okx news coin-sentiment --coins ETH,SOL
"how has BTC sentiment changed over the past 24 hours"
okx news coin-trend BTC --period 1h --points 24
"show me BTC sentiment over the past week"
okx news coin-trend BTC --period 24h --points 7
"what's hot in crypto right now" / "which coins are getting the most attention"
okx news sentiment-rank
"which coins are people most excited about" / "top bullish coins"
okx news sentiment-rank --sort-by bullish
"which coins have the most negative sentiment"
okx news sentiment-rank --sort-by bearish
Economic Calendar
**CRITICAL — always use BOTH --before AND --after to form a time window.** Using --before alone returns events all the way to 2028 in reverse order — --limit then clips the FARTHEST events, not the nearest. Always pair them.
Semantics (counterintuitive): --before <ts> = events NEWER than ts (lower bound), --after <ts> = events OLDER than ts (upper bound, default=now).
User says
Command
"今天有什么经济数据" / "economic events today"
okx news economic-calendar --before <today_0am_ms> --after <tomorrow_0am_ms> --limit 100
"这周美国有什么重要经济事件"
okx news economic-calendar --region united_states --importance 3 --before <week_start_ms> --after <week_end_ms> --limit 100
"非农什么时候出" / "when is NFP"
okx news economic-calendar --region united_states --importance 3 --before <now_ms> --after <now_plus_60d_ms> --limit 100 then filter event field for "Non Farm" client-side
"CPI 出来了吗" / "latest CPI data"
okx news economic-calendar --region united_states --importance 3 --limit 20 (default after=now fetches past high-importance events; check actual field)
"欧洲央行利率决议" / "ECB rate decision"
okx news economic-calendar --region euro_area --importance 3 --before <now_ms> --after <now_plus_90d_ms> --limit 100 then filter for "Interest Rate Decision"
How to choose before / after:
Intent
Parameter
Explanation
Today's events
--before <today_0am> --after <tomorrow_0am>
Window = today 0:00 → tomorrow 0:00
This week's events
--before <week_start> --after <week_end>
Window = Mon 0:00 → Sun 24:00
Next N days
--before <now> --after <now_plus_Nd>
Window = now → N days ahead
Past events (default)
omit both, or --after <upper_bound>
Default after=now, returns recent past
Historical window
--before <window_start> --after <window_end>
Both bounds explicit
Notes:
- ⚠️ **ALWAYS use both
--beforeAND--after** for future-event queries.--beforealone returns to 2028 and limit clips the wrong end. The only exception is past-event queries where default after=now is correct.
- Rate limit: 1 request per 5 seconds (IP-based). Do NOT call repeatedly.
- No keyword/event filter — scan response
eventfield client-side. Use a single API call with--limit 100and broad window, then filter results locally (do NOT loop calls trying different keywords).
- When user asks for a specific importance level (e.g. "重要的", "high importance"), pass
--importance 3AND only include importance=3 events in output. Do NOT pad the response with lower-importance events.
- When searching for a specific event (NFP, CPI, ECB decision), always add
--importance 3to reduce noise — these are all high-importance events. Use--limit 100and a wide window to ensure the target event is captured.
actual=""= not yet released; non-empty = released.
- Historical data >3 months requires VIP1+.
- Demo mode not supported — use
--profile livesilently.
--regionvalues are snake_case (e.g.united_states,euro_area). Invalid values silently return empty results (no error). If you get empty results and suspect a region typo, runokx news list-regionsto get the full list of 210 valid values, then fuzzy-match the user's input and retry. If unsure of the exact value, **omit--region** and filter results client-side by theregionfield in the response.
BTC Macro Impact (cross-skill)
User says
Workflow
"BTC 受哪些宏观数据冲击" / "macro impact on BTC this week"
"这周宏观对加密有什么影响" / "how will macro data affect crypto"
These queries require parallel execution of economic-calendar + BTC sentiment/news + market data. Do NOT run them sequentially.
Sentiment Anomaly Detection (multi-coin)
User says
Workflow
"哪些币种情绪变化最大" / "any sentiment anomalies" / "which coins flipped sentiment"
"过去一周有什么异动" / "sudden sentiment shifts" / "sentiment reversal"
"有没有突然转看涨/看跌的" / "any coins turning bullish/bearish"
These queries require a broad-then-deep approach: first scan all coins for anomalies, then deep-dive with news correlation. Follow the multi-phase workflow in references/workflows.md — do NOT just pick a few coins to analyze.
Source-Filtered News
Use --platform to filter by news source directly. Always resolve the exact value from okx news platforms — do not guess platform identifiers from the user's wording.
User says
Command
"ChainCatcher 最近报道了什么" / "show me news from ChainCatcher"
okx news latest --platform <platform_id> --limit 10
"Odaily 有什么新闻" / "news from TechFlowPost"
okx news latest --platform <platform_id> --limit 10
"吴说区块链最近有什么" / "news from a specific outlet"
okx news latest --platform <platform_id> --limit 20
Important: When filtering by source, use a larger --limit (10–20) to maximize results, since individual sources typically have fewer articles than the aggregated feed. --importance low (the default) is the right setting here; do not narrow to --importance high.
Posting cadence is uneven across platforms. The API defaults --begin to 72 hours ago, which is too narrow for bursty sources and will often return 0 results. If a --platform-filtered query returns fewer than ~5 items (or 0), **retry with --begin set to 7 days back, then 30 days back** before concluding the source has no data. Resolve candidate platform IDs from okx news platforms; do not hardcode assumptions about which platforms are active.
Cross-Skill Workflows
See references/workflows.md for multi-step scenarios (market overview, daily briefing, etc.) and full MCP tool → CLI mapping.
Command Reference
okx news latest
Get the latest crypto news sorted by time.
okx news latest [--coins BTC,ETH] [--begin <ms>] [--end <ms>]
[--importance high|low] [--platform <source>]
[--detail-lvl brief|summary|full] [--lang zh-CN|en-US]
[--limit 10] [--after <cursor>] [--json]
--importance default is low (returns all news, both high and low). Pass --importance high to narrow to breaking / major news only — or use okx news important.
okx news important
Get high-impact breaking news (reported by multiple sources).
okx news important [--coins BTC,ETH] [--begin <ms>] [--end <ms>]
[--detail-lvl brief|summary|full]
[--lang zh-CN|en-US] [--limit 10] [--json]
okx news by-coin
Get news for specific coins.
okx news by-coin --coins <BTC,ETH,...>
[--importance high|low] [--platform <source>]
[--begin <ms>] [--end <ms>] [--lang zh-CN|en-US]
[--limit 10] [--json]
--importance default is low (returns all news). Pass --importance high only for breaking / major news.
okx news search
Full-text keyword search with optional filters.
okx news search --keyword <text>
[--coins BTC,ETH] [--importance high|low]
[--platform <source>]
[--sentiment bullish|bearish|neutral]
[--sort-by latest|relevant]
[--begin <ms>] [--end <ms>] [--lang zh-CN|en-US]
[--limit 10] [--after <cursor>] [--json]
--importance default is low (returns all news). Pass --importance high only for breaking / major news.
okx news detail
Get full article content by ID.
okx news detail <id> # news ID from previous result
[--lang zh-CN|en-US] [--json]
okx news by-sentiment
Browse news filtered by sentiment (no keyword needed).
okx news by-sentiment --sentiment <bullish|bearish|neutral>
[--coins BTC,ETH] [--importance high|low]
[--sort-by latest|relevant]
[--begin <ms>] [--end <ms>] [--lang zh-CN|en-US]
[--limit 10] [--after <cursor>] [--json]
--importance default is low (returns all news). Pass --importance high only for breaking / major news.
okx news platforms
List available news platforms. Use the returned values with --platform on latest, by-coin, or search commands to filter by source.
okx news platforms [--json]
okx news coin-sentiment
Get current sentiment snapshot for specific coins.
okx news coin-sentiment --coins <BTC,ETH,...>
[--period 1h|4h|24h] # aggregation granularity, default 24h
[--json]
Returns: symbol, label (bullish/bearish/neutral/mixed), bullishRatio, bearishRatio, mentionCount.
okx news coin-trend
Get time-series sentiment trend for a coin. Note: uses positional arg (not --coins).
okx news coin-trend <coin> # positional arg, e.g. BTC
[--period 1h|4h|24h] # aggregation granularity, default 1h
[--points 24] # trend data points, default 24
[--json]
trendPoints guide: 1h period → use 24 (last 24h), 4h → use 6, 24h → use 7.
okx news sentiment-rank
Get coin ranking by social hotness or sentiment direction.
okx news sentiment-rank [--period 1h|4h|24h]
[--sort-by hot|bullish|bearish] # hot=by mentions (default), bullish, bearish
[--limit 10] # max 50
[--json]
okx news economic-calendar
Get macro-economic calendar data. Historical data beyond 3 months requires VIP1+.
okx news economic-calendar [--region <country>] [--importance <1|2|3>]
[--before <ms>] [--after <ms>]
[--limit 100] [--json]
Rate limit: 1 request per 5 seconds (IP). Much stricter than other news commands.
before/after are inverted: --before <ts> = newer than ts (future), --after <ts> = older than ts (past). See [Economic Calendar intent mapping](#economic-calendar) for examples.
Common regions: united_states, china, euro_area, united_kingdom, japan, germany, canada, australia
Importance: 1=low, 2=medium, 3=high
okx news list-regions
List all valid --region values for economic-calendar. Use when a region query returns empty to verify the value.
okx news list-regions [--json]
MCP Tool Reference
Tool
Description
news_get_latest
Latest news sorted by time. Server default importance=high (narrow); pass importance=low to broaden to all news.
news_get_by_coin
News for specific coins (coins is comma-separated string)
news_search
Full-text keyword search with filters (optional sentiment filter)
news_get_detail
Full article content by ID
news_get_domains
List available news source domains
news_get_coin_sentiment
Sentiment snapshot (no trendPoints) or time-series trend (pass trendPoints)
news_get_sentiment_ranking
Coin ranking by hotness or sentiment direction
news_get_economic_calendar
Macro-economic calendar data; rate limit 1/5s
news_list_calendar_regions
List all 210 valid region values for economic-calendar
Coin Symbol Normalization
The API only accepts standard uppercase ticker symbols (e.g. BTC, ETH, SOL). Users may refer to coins by full names, abbreviations, slang, or local-language nicknames. Always resolve these to the correct ticker before passing to any command. If the intended coin is ambiguous, ask the user to confirm before querying.
Empty Results & Web Search Fallback
OKX news data may be sparse for niche coins or highly specific keyword searches. The API default --begin window is only 72 hours, which alone accounts for many empty results. When a command returns empty or insufficient results, apply these steps in order — do not skip to web search:
- **If
--platformwas used** — broaden--beginto 7 days back, then 30 days back, before changing anything else. Bursty sources routinely return 0 items in the default window but dozens over a wider range.
- **If
--importance highwas passed** — drop it (default is alreadylow= all news).
- **Broaden
--begin/--end** for any query (not just--platform) when a narrow time window is suspected.
- **Drop
--coins** to get general news if the coin-specific query yielded nothing.
- Use web search as a supplement — search the web for
"<topic> news site:coindesk.com OR site:cointelegraph.com OR site:theblock.co"to gather additional context, then combine with any OKX results into a unified briefing.
- Be transparent — tell the user which results came from OKX API vs. web search so they can judge source credibility.
This fallback is especially valuable for:
- Coins with low coverage (e.g. newly listed tokens)
- Highly specific keyword searches with no matches
--platformqueries where the chosen source has uneven posting cadence
Known Limitations
Source Coverage
Platform posting cadence varies and changes over time. Some sources publish many articles per day; others post in bursts with quiet stretches in between. A source returning few or zero articles in the default 72-hour window is not evidence that it is inactive — it may simply not have posted recently, or its recent posts may have been deduplicated out.
Before concluding a --platform-filtered query has no data:
- Broaden
--beginto 7 days back, then 30 days back, and retry.
- If still empty after a 30-day window, report to the user that no recent articles were found for that source and suggest either removing
--platform(to fall back to the aggregated feed) or web search.
Do not hardcode assumptions about which platforms are active — resolve candidates from okx news platforms and let the data speak.
Historical Search Limitations
okx news search and okx news by-coin primarily index recent articles (typically today and recent days). Searching with --begin/--end for dates more than ~7 days ago may return empty results even if articles existed at that time. This is an API indexing limitation, not a data absence.
For historical analysis, okx news coin-trend (sentiment trend data) is more reliable than article search — it retains time-series data for longer periods.
Edge Cases
- Pagination: use
--after <cursor>to get next page; cursor comes fromnextCursorin response
- Time parameters:
--begin/--endare Unix epoch milliseconds
- Coins format: comma-separated uppercase symbols, e.g.
BTC,ETH,SOL— never pass full names or aliases
- **coin-trend
--points**: always pass explicitly; 1h→24, 4h→6, 24h→7
- Language: inferred from user's message —
--lang zh-CNfor Chinese,--lang en-USfor English (default)
- **sentiment-rank
--sort-by**:hot=by mention count (default),bullish=most bullish,bearish=most bearish