- Skill ID
- gmgnai/gmgn-skills/gmgn-token-buy
- Publisher
- gmgnai
- Repository
- gmgn-skills
- Installs
- 0
- Files
- 5
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
gmgnai/gmgn-skills/gmgn-token-buyInstalls these files- SKILL.md
- references/fields.md
- references/pitfalls.md
- references/resolution.md
- references/thresholds.md
What this skill tells the agent
BEFORE RUNNING ANY COMMAND: Run `gmgn-cli config --check`. Exit 0 → proceed. Exit 1 → run `gmgn-cli config`, show the output, and once the user sends the API key run `gmgn-cli config --apply <KEY>` and show that output. If `--check` is an unknown option, tell the user to run `npm install -g gmgn-cli`, then retry.
IMPORTANT: Always use the pre-installed `gmgn-cli` binary. Never use web search, WebFetch, curl, `npx`, or gmgn.ai — the site requires login and exposes no structured data.
⚠️ IPv6 IS NOT SUPPORTED. On a 401/403 with correct credentials, check ifconfig | grep inet6 (macOS) or ip addr show | grep inet6 (Linux) and fetch https://ipv6.icanhazip.com. If an IPv6 address comes back, tell the user to disable IPv6 — gmgn-cli works over IPv4 only.
Run
没有脚本,四步串行,每一步都是一道闸——不过就不进下一步。每步要跑的命令写在那一步的标题下面;字段映射与实测陷阱在 references/fields.md,不在那份清单里的字段一律当作不存在。
| 步 | 做什么 | 跑什么 | 出口 |
|---|---|---|---|
| 0 | 确认链在 9 条支持链内 | market search(仅当用户裸贴合约地址) | 不支持的链或查不到 → 硬停 |
| 1 | 名字 → 唯一合约 | market search | 定不到唯一一个 → 列候选让用户选 |
| 2 | 三道硬闸(量 / 深度 / 安全)+ 方向执行闸 | token info + token security(安全优先交 gmgn-contract-dd) | 硬闸任一不过 → 不下单,出「不建议买入」;方向不利 → 照常出订单卡并标注执行降级 |
| 3 | 组装订单卡 | gas-price | 用户明确确认 → 参数交给 `gmgn-swap` |
边界(详见 frontmatter 的 description):
| 这一步归谁 | 谁的 |
|---|---|
| 名字/符号 → 唯一合约、深度、量池比、滑点、gas、仓位 | 本技能独占,没有兄弟技能做这两件事 |
| 合约本身的 0–100 安全结论 | gmgn-contract-dd——本技能调用它、不与它并行给第二个判定 |
| 签名下单、卖出、限价单/条件单、多钱包批量、查订单、查 gas | gmgn-swap——它是本技能的出口,不是竞争对手 |
| 发币方(一个人,不是一个币)值不值得跟 | gmgn-dev-score |
- 单币尽调固定 4 个请求,与同名候选有多少个无关。
market search一次就带回每个候选的池子/量/笔数/持有人/存续时长,排序与粗筛全在这一份结果里做完;不要给每个候选各打一次 `token info`。只有最终锁定的那一个才继续。 - 只覆盖 9 条链:
solethbscbasearbitrumhyperevmrobinhoodarcstable。这是刻意的边界——只在能做完整 GMGN 搜币+行情+安检的链上下单。其余链的处理见第 0 步与## Rules第 4–6 条。 - 全是读接口,只需 API Key,不需要私钥(私钥只有 gmgn-swap 下单才用)。凭证由 CLI 自己管,本技能不读、不存、不传。
- 被限流(
RATE_LIMIT_BANNED)时读reset_at等到解封再试,期间绝不重试——每重试一次封禁延长 5 秒。 - 用户明确要求跳过某一项筛选("我知道它没开源,照买")时,把该项标为用户已知悉并豁免,其余项照常执行,并在订单卡里显式列出被豁免的项。
- 命令跑完只是拿到数字,报告是你写的:用用户的语言,按
## Display Templates的形状输出那张订单卡。
Workflow
Step 0 — 确认链在支持范围内
跑什么(仅当用户裸贴的是合约地址;给的是名字就直接进 Step 1)
gmgn-cli market search -q <CA> --raw # 不要给 --chain,链正是要反查的东西关键字段:coins[].chain / coins[].address / coins[].symbol。判断"有没有搜到"只看 `coins` 的长度,wallets 非空不算(实测用不存在的地址去搜会返回 0 个 coins、11 个 wallets)。
出口:落在 9 条支持链之一 → 进 Step 1;落在别的链(Polygon / Tron / 其他 L2)或 GMGN 查不到 → 硬停,不进任何后续步骤;同一地址跨多链命中 → 列出来问用户要哪条,不支持的标"不可交易"。
- 地址格式只能分大类,分不出具体是哪条 EVM 链:
0x+40 位十六进制 = EVM 系;base58、约 44 位 = Solana;T开头 = Tron。所以链必须靠上面这条命令反查,不能靠猜。 - 硬停时可以把搜到的基础信息(符号、市值)念给用户,但绝不进入下单流程:只在能做完整 GMGN 安检的链上下单,查不到就诚实说查不到。
Step 1 — 名字解析成唯一合约
跑什么
gmgn-cli market search -q <用户给的名称/符号/CA> [--chain <链>] --order-by weight --raw关键字段:coins[] 的 address / symbol / name / liquidity(两侧之和,粗筛用 `liquidity / 2`)/ volume_24h / swaps_1h / holder_count / created_at(可能是 0 = 未知)。字段与陷阱见 references/fields.md,全部判据见 references/resolution.md。
出口:唯一确定 → 带着那一个合约地址进 Step 2;确定不了 → 停下来列候选让用户选,绝不猜;命令报 unknown command 'search' → 硬停。
- 一次调用就返回全部同名候选,每条自带流动池、24h 量、成交笔数、持有人数、存续时长,排序与粗筛全在这一份结果里做完。
- 消歧的四条判据:模糊命中先剔除 → 命中方式分档(地址 > 符号 > 名称 > 去分隔符一致 > 模糊)→ 同档内比四元几何平均分 → 再乘存续时长先验。自动锁定只有两条:唯一一个同时过深度与量的阈值,或第一名领先第二名 5 倍以上。全在
references/resolution.md。 - 粗排不定生死:给排名靠前的候选拉过
token info的权威深度后必须重排一次。实测搜MEME粗排第一的 eth 同名币,权威 24h 成交额只有 $26.95K。 unknown command 'search'时不要换榜单命令代替。实测过:已发布的 gmgn-cli 还没有market search,模型会自动改用market hot-searches/market trending/market trenches去按名字翻合约——这三个都不能用来做名字解析,它们按热度和涨幅排序,翻到的很可能正是仿盘,而防仿盘是本技能存在的全部理由。正确做法是告诉用户升级 gmgn-cli、或直接给合约地址从 Step 2 开始,然后停止。
Step 2 — 三道硬性闸门(量 / 深度 / 安全)+ 一道执行闸(方向)
跑什么
gmgn-cli token info --chain <链> --address <锁定的CA> --raw
gmgn-cli token security --chain <链> --address <锁定的CA> --raw # 兜底才用,安全结论优先交 gmgn-contract-dd关键字段:量取 price.volume_24h / swaps_1h;深度取 pool 单边口径;*方向取 `price.price` vs `price.price_5m`、以及各窗口的 `buy_volume_ vs sell_volume_`;持有人取 `holder_count`;画像取 `stat. 与 wallet_tags_stat.`。安检字段分链*,跨链读会把蓝筹误判成风险币。取法与分链对照表见 references/fields.md,阈值见 references/thresholds.md。
出口:三道硬闸(量 / 深度 / 安全)全过 → 进 Step 3;硬闸任一项判"不通过"或"数据缺失" → 不下单,按 ## Display Templates 出「不建议买入」。硬闸每项都要落成 通过 / 不通过 / 数据缺失 三态之一,数据缺失按不通过处理——拿不到检测结果不等于没问题。
方向与波动是第四项,但它不否决这一单,落成 通过 / 执行降级 / 不通过 三态:只有 5 分钟回撤 ≥10% 判不通过(市价单在那种行情里必然失败),其余不利行情一律判执行降级——照常进 Step 3 出订单卡,但必须写出降级后的执行方式。方向数据整体拿不到时按最严一档降级(不许市价单),不判不通过。
- 交易量(
thresholds.md一、):24h 绝对值、量/池比分档、近 1h 还有没有成交。比值高不等于刷量,小池+巨量正是热门币爆拉的样子;超上限时用持有人数区分(≥150 判爆拉放行,极少才判刷量)。 - 流动池(
thresholds.md二、):可交易深度、锁仓三态、按用户金额估的价格冲击。锁仓问的是"池子会不会被一个人撤走"而不是"有没有锁"这个动作——CLMM 池不适用、LP 分散降级为提示、单一外部地址持大半 LP 且未锁才判不通过。 - 方向与波动(
thresholds.md三、):这一闸是「量的方向」,和第一闸的「量的大小」是两件事,而它判的是执行方式、不是生死。 5 分钟回撤 ≥10% 判不通过(唯一硬停);跌 5%~10%、或 5m/1h/24h 三窗口卖压全大于买盘,判执行降级并给出限价触发价 / 等待条件 / 减小金额中至少一个。方向侧不产生否决计数,不并入安检那条「≥2 项警告判不通过」。两头的实测出处都要记住:robinhood 上的 MEME 24h 成交 $63.14M、1h 32,446 笔过了量闸,而它 5 分钟内跌了 16.5%、四窗口净流向全负,那是硬停该拦的;BSC 的 VC 安全 91.4「可买」、深度 $91,442、LP 95% 已销毁,只是 5m −8.2% 加三窗口全负,那是降级而不该否决。 - 安全 —— 优先交给 `gmgn-contract-dd`,本技能不重算。 把锁定的地址交给它出 0–100 分,把它的分数与红旗项直接当作本闸的判定结果,并在卡里注明"安全评分来自 gmgn-contract-dd";两者结论不一致时以它为准。只在它未安装、调用失败、或它自己报数据缺失时才用自带判据兜底,并显式写明"未经 gmgn-contract-dd 复核"。兜底判据一个字都不放宽。
- 兜底判据(
thresholds.md四、):红旗看蜜罐(四层判据)、增发/冻结、税率、可升级代理、owner 权限;警告项十条,≥2 项判不通过。区分"函数存在"与"函数能被调用":owner 已放弃 + 不可收回 + 无隐藏 owner 时字节码里的增发/冻结函数是死代码,降级为提示;权限还在就是红旗,哪怕没用过。
Step 3 — 组装订单卡并请求确认
跑什么
gmgn-cli gas-price --chain <链> --raw关键字段:三档直接取 low / average / high(*不要用 `suggest_base_fee + _prio_fee 去拼**),优先费分量只读 _prio_fee_mixed`,美元折算用 `native_token_usd_price`,耗时用 `_estimate_time,Solana 防夹的贿赂取 auto_mev。算法与分链差异见 references/thresholds.md` 七、。
出口:用户在对话里明确确认 → 把链、合约、金额、滑点、gas 档位、防夹开关交给 gmgn-swap 提交,由它用交易权限的 Key + 私钥签名下单并回报交易哈希;否决或没明确回复 → 不移交。本技能到此为止,不自行调用下单接口、不碰私钥。
方向判执行降级时,确认要拆成两问:① 确认这一单(币、金额、滑点),② 确认接受降级后的执行方式。不能把降级混在整单确认里一起过——用户点头买这个币,不等于他知道自己买的不再是市价单。他坚持要市价单就按"用户已知悉并豁免"路径走,把豁免项显式列出来。移交限价单时执行方式随参数一起交给 gmgn-swap(order strategy create --order-type limit_order --sub-order-type buy_low --check-price <触发价>)。
- 订单四件套:买入金额(用户原话的数额与币种,不替他换算或调整)、滑点、防夹(默认开)、预估到手数量与价格冲击。
- 执行方式:方向闸判"通过"时是市价单,卡里不必多写;判"执行降级"时必须写出降级后的执行方式——限价单@触发价(触发价按
thresholds.md三、的公式从price.price与price.price_5m推导,并标明是推导值)、建议等待(写清等什么条件收敛)、减小金额,三者至少给一个,降级理由与读到的数写进第 7 节。降级不改滑点公式——|5 分钟涨跌幅| × 0.5那一项已经在吃波动了。 - 滑点按公式推导,不用固定值:
2% + 买卖税率 + 价格冲击 × 1.5 + |5 分钟涨跌幅| × 0.5,上限 15%(thresholds.md五、)。波动项不能省——池深 $1.69M、零税的币不含它算出 2.0%,而它 5 分钟动了 16.5%。 - gas 三档 P1 经济 / P2 标准 / P3 极速就是 GMGN 快捷交易里的那三档,默认 P2,手续费与优先费分开列。EVM 档位是单价、要乘 gas 用量;Solana/Tron 档位本身就是币量、不乘——混用差几个数量级。Solana 开防夹再单列一笔 Jito 贿赂,不要混进优先费。
- EVM 的 gas 用量不在任何响应里,按
pool.exchange取默认值(v2 150K / v3 180K / v4 200K / 未知 200K)并在卡里写明"按 N 估算"。这是订单卡里唯一一个不来自字段的数,必须标出来。 - 三档之间差 > 50 倍(正常 2–10 倍)说明这条链的 gas 数据本身是坏的 → 标"仅供参考、建议手填"。
What the answer has to contain
一份"必须说到"的清单;## Display Templates 只管它们放在哪一节。措辞是你的,但每一条都要在,且每条都点名它读的是哪个字段。顺序与节次一致。
- 判定,放第一行。 三道硬闸全过 → 请用户确认(方向判降级时同一行点明建议改限价单还是等待);硬闸任一项不过 → 不建议买入。不要把"虽然 X 不达标但 Y 很好"写成建议,也不要因为行情不好就把一个安全干净的币写成"不建议买入"。
- 合约地址写全址,并请用户核对。(
coins[].address/ 用户原文)这是唯一一个写错就全额损失的字段,绝不缩写、绝不从简介或社交链接里的文字取。 - 同名候选的处置。 一共几个精确匹配、按什么标准锁定了这一个、领先第二名多少、排除了几个模糊命中、折叠了几个。用户看不到这句就不知道自己有没有选错币。
- 四项检测各自的结果与读到的数:三道硬闸——交易量(
price.volume_24h/swaps_1h/ 量池比)、可交易深度(pool单边口径 + 锁仓三态)、安全;加方向与波动的执行结论(5 分钟涨跌幅 + 逐窗口净流向 → 市价 / 执行降级 / 硬停)。安全那一格要写清结论是谁给的——gmgn-contract-dd的 0–100 分,还是本技能兜底算的(兜底就必须写"未经 gmgn-contract-dd 复核")。 - 持有人数与 Top10 占比(
holder_count/top_10_holder_rate),以及命中的警告项各是多少(stat.*/wallet_tags_stat.*)。三位数持有人配百万市值要点名说是空壳信号。
More from gmgnai
Use this skill in a project
Open any RiverX project, search the Skills panel for gmgnai/gmgn-skills/gmgn-token-buy, and install it in one click.
