AI AGENT SKILLS

okx-sentiment-tracker

一个面向 Research 场景的 Agent 技能。原始说明:Use this skill when the user asks about: 'any crypto news', 'latest news', 'market update', 'daily briefing', 'BTC news', 'ETH news', 'news on SOL', 'search...

SKILL.md

SKILL.md


name: okx-sentiment-tracker
description: "Use this skill when the user asks about: 'any crypto news', 'latest news', 'market update', 'daily briefing', 'BTC news', 'ETH news', 'news on SOL', 'search SEC ETF', 'regulation news', 'Bitcoin halving', 'is BTC bullish or bearish', 'coin sentiment', 'sentiment trend', 'trending coins', 'top bullish coins', 'bearish sentiment', 'social buzz', 'market mood', 'fear and greed', 'full article', 'read more', 'economic calendar', '经济日历', 'macro data', '宏观数据', 'NFP', 'nonfarm', '非农', 'CPI', 'GDP', 'FOMC', '利率决议', 'interest rate decision', 'PMI', 'unemployment rate', '失业率', 'economic events', '经济事件', or any request for crypto news, market intelligence, sentiment analysis, social trend data, or macro-economic calendar. Requires API credentials. Do NOT use for market prices/candles (okx-cex-market), placing orders (okx-cex-trade), or account info (okx-cex-portfolio)."
license: MIT
metadata:
author: okx
version: "1.3.5"
homepage: "https://www.okx.com"
agent:
requires:
bins: ["okx"]
install:

  • id: npm

kind: node
package: "@okx_ai/okx-trade-cli@1.3.3"
bins: ["okx"]
label: "Install okx CLI (npm)"


OKX News & Sentiment

Crypto news aggregation, coin sentiment analysis, and macro-economic calendar for OKX. All commands are read-only and require API credentials (OAuth2.1).

Capabilities

| User Intent | Command |
|-------------|---------|
| Latest/important news | okx news latest |
| Coin-specific news | okx news by-coin |
| Keyword news search | okx news search |
| Sentiment-filtered news | okx news by-sentiment |
| Full article content | okx news detail |
| Coin sentiment snapshot | okx news coin-sentiment |
| Sentiment trend | okx news coin-trend |
| Sentiment ranking | okx news sentiment-rank |
| News source list | okx news platforms |
| Economic calendar query | okx news economic-calendar |
| Valid calendar regions | okx news list-regions |

Prerequisites

  1. Install okx CLI:
   npm install -g @okx_ai/okx-trade-cli
  1. Configure credentials in ~/.okx/config.toml
  2. 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 live if 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 --before AND --after for future-event queries. --before alone 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 event field client-side. Use a single API call with --limit 100 and 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 3 AND 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 3 to reduce noise — these are all high-importance events. Use --limit 100 and 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 live silently.
  • --region values 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, run okx news list-regions to 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 the region field in the response.

BTC Macro Impact (cross-skill)

| User says | Workflow |
|-----------|---------|
| "BTC 受哪些宏观数据冲击" / "macro impact on BTC this week" | → BTC Macro Impact workflow |
| "这周宏观对加密有什么影响" / "how will macro data affect crypto" | → BTC Macro Impact workflow |

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" | → Anomaly Detection workflow |
| "过去一周有什么异动" / "sudden sentiment shifts" / "sentiment reversal" | → Anomaly Detection workflow |
| "有没有突然转看涨/看跌的" / "any coins turning bullish/bearish" | → Anomaly Detection workflow |

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 for examples.

Common regions: unitedstates, china, euroarea, 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:

  1. If --platform was used — broaden --begin to 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.
  2. If --importance high was passed — drop it (default is already low = all news).
  3. Broaden --begin / --end for any query (not just --platform) when a narrow time window is suspected.
  4. Drop --coins to get general news if the coin-specific query yielded nothing.
  5. 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.
  6. 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
  • --platform queries 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:

  1. Broaden --begin to 7 days back, then 30 days back, and retry.
  2. 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 from nextCursor in response
  • Time parameters: --begin / --end are 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-CN for Chinese, --lang en-US for English (default)
  • sentiment-rank --sort-by: hot=by mention count (default), bullish=most bullish, bearish=most bearish