Install
openclaw skills install google-financeTrack stock prices and company news from Google Finance on a schedule. Use when user wants to monitor stocks, get buy/sell recommendations, check price changes, follow company news, set up stock alerts, or track portfolio symbols. Triggers: 'track stock', 'watch AAPL', 'stock alert', 'buy or sell', 'stock news', 'Google Finance'. Default watchlist: NVDA, AAPL, META, GOOGL.
openclaw skills install google-financeMonitor stocks, generate buy/sell signals, and track your portfolio.
Check all watched stocks (auto-fetches data):
python3 {baseDir}/scripts/parse-stock.py --check --summary
Check single stock:
python3 {baseDir}/scripts/parse-stock.py --check --symbol AAPL
Add/remove stocks:
python3 {baseDir}/scripts/parse-stock.py --add TSLA
python3 {baseDir}/scripts/parse-stock.py --remove TSLA
Show watchlist:
python3 {baseDir}/scripts/parse-stock.py --list
The parse-stock.py script handles everything:
~/.openclaw/workspace/stock-tracker-state.jsonApply the scoring framework in {baseDir}/references/analysis-framework.md to produce:
Symbol: AAPL
Price: $182.30 (+1.4% today)
Signal: BUY [score: +6/10]
Confidence: MEDIUM
Key factors:
✅ Price above 50-day SMA (estimated)
✅ Volume 1.3× above average
✅ 2 positive news items in past 24h
⚠️ P/E 28.5 — elevated but within sector norm
❌ Within 3% of 52-week high (limited upside)
Recent headlines:
• "Apple reportedly in talks with..." — Reuters (2h ago)
• "iPhone sales beat estimates..." — Bloomberg (5h ago)
Recommendation: Consider buying on dips. Set stop-loss at 5% below current price.
Store watchlist and last-seen prices in ~/.openclaw/workspace/stock-tracker-state.json.
Default watchlist (pre-loaded on first run if state file does not exist):
NVDA:NASDAQ — NVIDIAAAPL:NASDAQ — AppleMETA:NASDAQ — Meta PlatformsGOOGL:NASDAQ — Alphabet (Google)Format:
{
"watchlist": ["NVDA:NASDAQ", "AAPL:NASDAQ", "META:NASDAQ", "GOOGL:NASDAQ"],
"lastChecked": "2026-03-03T09:00:00Z",
"snapshots": {
"NVDA:NASDAQ": { "price": 875.40, "change_pct": 2.1, "ts": "2026-03-03T09:00:00Z" },
"AAPL:NASDAQ": { "price": 182.30, "change_pct": 1.4, "ts": "2026-03-03T09:00:00Z" },
"META:NASDAQ": { "price": 512.60, "change_pct": -0.8, "ts": "2026-03-03T09:00:00Z" },
"GOOGL:NASDAQ": { "price": 175.20, "change_pct": 0.5, "ts": "2026-03-03T09:00:00Z" }
}
}
Load state at the start of every run. Compare new price against snapshots to compute Δ since last check.
Emit a highlighted alert if any of the following thresholds are crossed:
earnings, merger, acquisition, SEC, lawsuit, recall, CEO, bankruptcyRun the following to add a recurring job that checks stocks every weekday at market open (09:30 ET) and close (16:00 ET):
# Market open — 09:30 ET (UTC-4 during EDT)
openclaw cron add \
--name "Stock Open Check" \
--cron "30 13 * * 1-5" \
--tz "America/New_York" \
--session isolated \
--message "Run /stock-tracker check and output a full report with buy/sell signals for all watched stocks." \
--announce \
--channel slack \
--to "channel:REPLACE_WITH_CHANNEL_ID"
# Market close — 16:00 ET
openclaw cron add \
--name "Stock Close Check" \
--cron "0 20 * * 1-5" \
--tz "America/New_York" \
--session isolated \
--message "Run /stock-tracker check and output end-of-day summary with buy/sell signals for all watched stocks." \
--announce
For a simpler every-4-hours check (including after-hours):
openclaw cron add \
--name "Stock Tracker" \
--every 14400000 \
--session isolated \
--message "Run /stock-tracker check for all watched symbols. Report price changes > 1%, news, and signals."
See {baseDir}/references/data-sources.md for timezone and exchange hours reference.
⚠️ ALERT to any symbol that crossed a threshold0700.HK, 7203.T, BABA.N). See data-sources.md for the full mapping.This skill makes outbound requests to the following public URLs only:
| URL | Purpose |
|---|---|
https://www.google.com/finance/quote/* | Stock price & stats |
No user data, credentials, or personal information is sent to any external endpoint.
~/.openclaw/workspace/stock-tracker-state.json on your machine. Nothing is sent to remote servers.parse-stock.py is sandboxed. It reads/writes only the state file at the path above. It does not access environment variables or other files.