Global Market Snapshot

v0.1.5

Generate a structured global market snapshot report including major stock indices and commodities. Use when user asks for market data, stock market report, d...

0· 538·6 current·6 all-time
byJimmy Botman@jiediking
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the behavior: the included helper script and SKILL.md both focus on fetching raw market payloads from Yahoo Finance and Sina Finance for China tickers; Trading Economics is mentioned as a caller-side fallback. No unrelated services, binaries, or credentials are requested.
Instruction Scope
SKILL.md confines the helper to raw fetch responsibilities and instructs the caller to parse/compute/fallback to Trading Economics. It does not ask the agent to read unrelated files or environment variables. The only external interactions are HTTP GETs to the documented finance endpoints.
Install Mechanism
No install spec; the skill is instruction-only with a small shell helper that will be executed if invoked. No third-party downloads, archives, or unusual install locations are present.
Credentials
The skill does not request environment variables, credentials, or config paths. The helper uses curl and optionally iconv (falls back to cat), which is proportional to URL fetching and decoding GB2312 responses.
Persistence & Privilege
always is false and the skill does not modify other skills or system configuration. Autonomous invocation is allowed (platform default) but does not combine with broad privileges here.
Assessment
This skill is coherent and low-risk: it only fetches public market pages (Yahoo, Sina, and expects caller-side Trading Economics scraping) and returns raw text/JSON for the caller to parse. Before installing, consider: 1) the agent (or your environment) will run a shell script that issues network requests — ensure you trust outbound connections to the documented endpoints; 2) the script assumes curl is available and will use iconv if present for GB2312→UTF-8 decoding; 3) the caller must implement parsing and should validate and sanitize remote responses (don't blindly trust returned text/JSON); 4) be aware of rate limits and Terms of Service for the scraped sites; and 5) run or review the script in a sandbox if you want to verify behavior. No secrets are required by this skill.

Like a lobster shell, security has layers — review code before you run it.

latestvk971qgsd2qehncmtwtpgp4jakd82yqyd
538downloads
0stars
7versions
Updated 1mo ago
v0.1.5
MIT-0

Market Report Skill

Generate a structured global market snapshot report with stock indices and commodities data.

Architecture / Responsibility Split

Use a two-layer design:

  1. scripts/fetch_market.sh is a raw-fetch helper.
  2. The caller or agent is responsible for parsing, calculations, fallback decisions, and final formatting.

Helper responsibilities:

  • Fetch raw Yahoo Finance payloads.
  • Fetch and decode raw Sina Finance payloads for supported China-market tickers.
  • Return raw source responses on stdout when successful.
  • Write helper diagnostics to stderr and exit non-zero on failure.

Caller responsibilities:

  • Choose the source using the fallback order below.
  • Parse Yahoo close arrays from the returned JSON.
  • Fetch and parse Trading Economics pages outside scripts/fetch_market.sh.
  • Parse Sina numeric fields from the decoded response text.
  • Calculate change and percent.
  • Format the final market report.

scripts/fetch_market.sh does not parse market payloads into final numeric results.

Source Support And Fallback Order

  1. Yahoo Finance (Primary) - Fast, comprehensive
  2. Trading Economics (Higher-level fallback for most indices)
  3. Sina Finance (Helper-script fallback for supported China-market tickers)

If Yahoo Finance fails (rate limit, error, no data), use Trading Economics as a fallback in the calling workflow. scripts/fetch_market.sh only supports yahoo and sina; it does not implement a te mode. For STAR Market Composite specifically, use Sina Finance as the helper-script fallback. Callers should treat non-zero exit status as helper failure and read diagnostics from stderr rather than stdout.

Primary: Yahoo Finance

Ticker Symbols

Use these exact ticker symbols:

  • S&P 500: ^GSPC
  • Dow Jones: ^DJI
  • NASDAQ: ^IXIC
  • SSE Composite: 000001.SS
  • Shenzhen Component: 399001.SZ
  • STAR Market: 000680.SS (NOT 000688.SS)
  • Nikkei 225: ^N225
  • Sensex: ^BSESN
  • Gold: GC=F
  • Silver: SI=F
  • Crude Oil: CL=F
  • Copper: HG=F

Query Method

Use scripts/fetch_market.sh <ticker> yahoo or equivalent curl to fetch raw Yahoo Finance JSON:

curl -s "https://query1.finance.yahoo.com/v8/finance/chart/{TICKER}?interval=1d&range=5d" -H "User-Agent: Mozilla/5.0"

The caller must parse the returned JSON and compute the reported numbers.

Fallback: Trading Economics

If Yahoo Finance fails, use Trading Economics web fetch in the calling workflow rather than via scripts/fetch_market.sh:

Indices URLs

  • US (S&P 500): https://tradingeconomics.com/united-states/stock-market
  • China (SSE): https://tradingeconomics.com/china/stock-market
  • China (Shenzhen): https://tradingeconomics.com/china/stock-market (same page, different data)
  • Japan (Nikkei): https://tradingeconomics.com/japan/stock-market
  • India (Sensex): https://tradingeconomics.com/india/stock-market

Extract Data from Trading Economics

The caller must fetch the page content and extract:

  • Actual value: Current price (e.g., 6762.88)
  • Previous value: Previous close (e.g., 6830.71)

Calculate:

  • Change = Actual - Previous
  • Percent = (Change / Previous) * 100

Example from US page:

Actual: 6762.88
Previous: 6830.71
Change: 6762.88 - 6830.71 = -67.83
Percent: -67.83 / 6830.71 * 100 = -0.99%

Fallback: Sina Finance (scripts/fetch_market.sh support)

If Yahoo Finance fails for the supported China-market tickers below, use scripts/fetch_market.sh <ticker> sina:

  • SSE Composite: 000001.SS -> sh000001
  • Shenzhen Component: 399001.SZ -> sz399001
  • STAR Market Composite: 000680.SS -> sh000680

For STAR Market Composite specifically, this is the preferred helper-script fallback.

Query Method

curl -s "https://hq.sinajs.cn/list=sh000680" \
  -H "User-Agent: Mozilla/5.0" \
  -H "Referer: https://finance.sina.com.cn" | iconv -f GB2312 -t UTF-8

scripts/fetch_market.sh follows this query shape and decodes with iconv when available. It returns decoded raw response text; the caller must parse the numeric fields.

Response Format

var hq_str_sh000680="科创综指,open,prev_close,low,high,close,...

Extract Data

The caller must parse the response to extract:

  • Name: 科创综指 (STAR Market Composite)
  • Current: Field 6 (close price)
  • Previous: Field 3 (previous close)

Example:

科创综指,1771.6386,1774.0261,1744.2182,1782.4838,1744.0835,...
                                         ↑            ↑
                                     previous      current
Change: 1744.0835 - 1774.0261 = -29.94
Percent: -29.94 / 1774.0261 * 100 = -1.69%

Critical: Calculating Daily Change (Yahoo Finance)

NEVER use chartPreviousClose - it's often incorrect for Asian markets.

For Chinese indices (SSE, Shenzhen, STAR Market), the caller must:

  1. Query with range=5d to get multiple days
  2. Parse the indicators.quote[0].close array from the returned payload
  3. Find the LAST non-null close value - this is today's close
  4. Find the SECOND TO LAST non-null close value - this is previous trading day's close
  5. Calculate: Today's Close - Previous Close = Change

Example for SSE:

close array: [4182.59, 4122.68, 4082.47, 4108.57, 4124.19]
                                                      ↑ today (last)
                                                  ↑ previous (second to last)
Change: 4124.19 - 4108.57 = +15.62

Output Format

After parsing and calculation, generate this exact format with timestamps:

Latest snapshot from the `market-global-snapshot` skill, generated at `UTC timestamp` and `China time`.

📊 Stock indices:

- 🇺🇸 S&P 500: `price` 📈/📉 `change` (`percent`)
- 🇺🇸 Dow Jones Industrial Average: `price` 📈/📉 `change` (`percent`)
- 🇺🇸 NASDAQ Composite: `price` 📈/📉 `change` (`percent`)

- 🇨🇳 SSE Composite: `price` 📈/📉 `change` (`percent`)
- 🇨🇳 Shenzhen Component Index: `price` 📈/📉 `change` (`percent`)
- 🇨🇳 STAR Market Composite: `price` 📈/📉 `change` (`percent`)

- 🇯🇵 Nikkei 225: `price` 📈/📉 `change` (`percent`)

- 🇮🇳 Sensex: `price` 📈/📉 `change` (`percent`)

🛢️ Commodities:

- 🟡 Gold: `price USD / troy oz` 📈/📉 `change` (`percent`)
- ⚪ Silver: `price USD / troy oz` 📈/📉 `change` (`percent`)
- 🛢️ Crude Oil: `price USD / barrel` 📈/📉 `change` (`percent`)
- 🟠 Copper: `price USD / lb` 📈/📉 `change` (`percent`)

Error Handling

If Yahoo Finance, Trading Economics, AND Sina all fail:

  1. Return partial data with available indices
  2. Mark unavailable data as "N/A"
  3. Include error message at bottom: "⚠️ Some data unavailable due to API errors"

Treat source fetch failures and parse failures separately. If raw data is unavailable or unparsable, the caller should mark that item as "N/A".

Historical Data

To get previous day's data instead of today, the caller should:

  • Use second-to-last close value in the array (not today's)
  • This is the default behavior when asking for "yesterday"

Example:

close array: [4124.19, 4108.57, 4082.47, 4122.68, 4182.59]
                                        ↑            ↑
                                   yesterday      today

Formatting Rules

  • Use two decimal places for all numbers
  • Wrap prices in backticks
  • Use 📈 for positive, 📉 for negative
  • Include + or - sign for changes
  • Use percentage in parentheses with % sign

Comments

Loading comments...