${var} — Optional. Pass a different CoinGecko ID to override the default. If empty, tracks the configured token.
Today is ${today}. Track [REPLACE: TOKEN_SYMBOL] price/volume and alert on anomalies.
Steps
Fetch current state — query CoinGecko for the latest price, 24h change, 24h volume. Use
COINGECKO_API_KEYif set, else the keyless endpoint:ID="${var:-[REPLACE: COINGECKO_ID]}" if [ -n "${COINGECKO_API_KEY:-}" ]; then URL="https://pro-api.coingecko.com/api/v3/simple/price?ids=$ID&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true" curl -sf -H "x-cg-pro-api-key: $COINGECKO_API_KEY" "$URL" > .token-cache.json else URL="https://api.coingecko.com/api/v3/simple/price?ids=$ID&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true" curl -sf "$URL" > .token-cache.json fiIf a
curlGET is flaky, use WebFetch on the same URL as a fallback (there is no network sandbox — WebFetch is just a convenience for flaky public reads).Read prior state — last 7 days of
memory/logs/YYYY-MM-DD.mdfor previous prices and volumes (parse lines like**[REPLACE: TOKEN_SYMBOL]**: price=$N, volume_24h=$N).Detect anomalies — flag if
|price_change_24h| >= [REPLACE: ALERT_THRESHOLD_PCT]%OR if 24h volume is>= 2xthe 7-day median.Write
output/articles/[REPLACE: SKILL_NAME]-${today}.mdwith:- Current price, 24h change, 24h volume
- 7-day price chart (sparkline as
▁▂▃▅▇characters) - Anomaly verdict:
QUIET/STEADY/ANOMALY(and which fired) - Links: CoinGecko page, Etherscan / explorer page if you know the contract address
Notify — if
ANOMALY, send via./notifywith the verdict + 1-2 sentences of context. Stay silent on QUIET/STEADY days.Log — append to
memory/logs/${today}.md:## [REPLACE: SKILL_NAME] - **[REPLACE: TOKEN_SYMBOL]**: price=$N, change_24h=$N%, volume_24h=$N - **Verdict**: QUIET | STEADY | ANOMALY:price | ANOMALY:volume
Network note
CoinGecko's keyless endpoint occasionally rate-limits. There is no network sandbox — curl works; use WebFetch as the fallback when a curl GET is flaky.
Constraints
- Never spam. The
ALERT_THRESHOLD_PCTgate is there to protect channel signal — don't lower it below 5%. - Always cite sources in the article. Even a one-line link is better than no link.