Find the top 5 tokens that ran hardest in the past 24h across major chains using GeckoTerminal
Read memory/MEMORY.md for context.
Read the last 2 days of memory/logs/ to see if any of these tokens were flagged before (repeat runners are interesting).
GeckoTerminal API (free, no API key). Docs: https://api.geckoterminal.com/api/v2
Key endpoints:
GET /networks/trending_pools?page=1 — trending pools across all networksGET /networks/{network}/trending_pools?page=1 — per-network trending poolsGET /networks/{network}/new_pools?page=1 — newly created poolsEach pool object includes:
attributes.name — pool name (e.g. "TOKEN / SOL")attributes.price_change_percentage.{m5,m15,m30,h1,h6,h24} — price changesattributes.volume_usd.{m5,m15,m30,h1,h6,h24} — volumeattributes.market_cap_usd / attributes.fdv_usd — market capattributes.transactions.h24.{buys,sells} — transaction countsattributes.pool_created_at — pool creation timestampattributes.reserve_in_usd — liquidityrelationships.network.data.id — chain namePull trending pools from global + individual chains sequentially:
TMPDIR=$(mktemp -d)
# Fetch sequentially with 1s delay to avoid GeckoTerminal 429 rate limits
for NETWORK in "" solana eth base bsc arbitrum; do
if [ -z "$NETWORK" ]; then
URL="https://api.geckoterminal.com/api/v2/networks/trending_pools?page=1"
OUT="$TMPDIR/global.json"
else
URL="https://api.geckoterminal.com/api/v2/networks/${NETWORK}/trending_pools?page=1"
OUT="$TMPDIR/${NETWORK}.json"
fi
curl -s "$URL" > "$OUT"
# If 429, wait 2s and retry once
if grep -q '"status":"429"' "$OUT" 2>/dev/null; then
sleep 2
curl -s "$URL" > "$OUT"
fi
sleep 1
done
If ${var} is set to a specific chain, only fetch that chain's trending pools.
Also fetch new pools to catch tokens that just launched and are already running:
curl -s "https://api.geckoterminal.com/api/v2/networks/new_pools?page=1" > "$TMPDIR/new.json"
From all fetched data:
price_change_percentage.h24 descendingPick the 5 tokens with the largest 24h price increase that pass the quality filters.
For each runner, collect:
For each of the 5, write a quick assessment:
Send via ./notify (under 4000 chars). No leading spaces on any line:
*runners — ${today}*
1. TOKEN (chain) +X,XXX% 24h
vol $Xm | fdv $Xm | still running / cooling off — [1-2 sentence analysis]
2. TOKEN (chain) +XXX% 24h
vol $Xm | fdv $Xm | momentum note — [1-2 sentence analysis]
3. ...
4. ...
5. ...