From 176eb126ac97e072acc71eea83824238113e670e Mon Sep 17 00:00:00 2001 From: chenjunfeng Date: Thu, 10 Sep 2026 17:02:18 +0800 Subject: [PATCH] gmgn-heat-rank: print contract addresses without a gmgn.ai link The CA block was headed `CA (verify at https://gmgn.ai//token/)`. That path shape is the one thing in this file nobody was allowed to check: the skill's own rules forbid reaching gmgn.ai by web search, WebFetch, curl or a browser, so the URL was printed on the strength of an assumption. If the shape is wrong the reader lands on a 404 and doubts the list rather than the link. The addresses themselves were already complete and one per line, so dropping the link costs nothing -- an address pastes into whatever front-end the reader actually uses. The heading now says exactly that and names no host. Behaviour is otherwise unchanged: replayed against five stored sweeps, the scorer's output differs on that single heading line and nowhere else. Co-Authored-By: Claude Opus 5 --- skills/gmgn-heat-rank/SKILL.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/skills/gmgn-heat-rank/SKILL.md b/skills/gmgn-heat-rank/SKILL.md index 3b876c7..8adeed6 100644 --- a/skills/gmgn-heat-rank/SKILL.md +++ b/skills/gmgn-heat-rank/SKILL.md @@ -612,7 +612,11 @@ for i,c in enumerate(rows,1): chg='n/a' if c['rage']<1.0 else format(t.get('price_change_percent') or 0,'+.1f')+'%' print(f"{i:>2} {c['ch']:<9} {sym(t)[:11]:11s} {c['score']:>5} | {p['vacc']:>5.2f} {p['size']:>4.2f} {p['pos']:>4.2f} {p['grow']:>4.2f} {p['smart']:>5.2f} {p['qual']:>4.2f} {p['heat']:>4.2f} | ${t['market_cap']:>11,.0f} ${t['liquidity']:>8,.0f} ${c['v']['24h'] or 0:>10,.0f} {(str(round(c['rage']*24,1))+'h' if c['rage']<1 else str(round(c['rage'],1))+'d'):>5} {ap:>5} {chg:>8}") -print("\nCA (verify at https://gmgn.ai//token/):") +# Addresses only, no link. Nothing in this file may point at a gmgn.ai path: the rules at the top +# forbid reaching that site, so any URL printed here is a path shape nobody was allowed to verify. +# The full address is the portable thing anyway -- it pastes into whatever front-end the reader +# already uses, and the reader searches it there. +print("\nCA (full addresses -- search one on whichever front-end you use):") for i,c in enumerate(rows,1): t=c['t'] print(f"{i:>2}. {c['ch']:<9} {sym(t)[:12]:12s} {c['a']} vacc={(c['vacc'] or 0):.2f} hold/d={c['hgrow']:.0f} kol/d={c['kgrow']:.1f} top10={(t.get('top_10_holder_rate') or 0)*100:.1f}%")