Imported from bencarson001/AI-MEME-COIN-FINAL (
agent/skills/gmgn-holder-analysis/SKILL.md). Install upstream withnpx skills add bencarson001/AI-MEME-COIN-FINAL --skill gmgn-holder-analysis. Copyright stays with the author.
BEFORE RUNNING ANY COMMAND: Run gmgn-cli config --check. If exit code is 0, proceed normally. If exit code is 1, run gmgn-cli config and show output, then apply the key with gmgn-cli config --apply <KEY>. If unknown option, tell user to run npm install -g gmgn-cli.
IMPORTANT: Always use gmgn-cli commands. Do NOT use curl, WebFetch, or visit gmgn.ai.
When the user asks to analyze holders for a token, extract --chain and --address from their message, then run the analysis script below. Also detect the user's language: set LANG to 'zh' if the user wrote in Chinese, 'en' if in English (default 'zh').
Analysis Script
Run the following command, replacing the placeholders with the actual values:
python3 ~/.claude/skills/gmgn-holder-analysis/analyze.py <FILL_IN_TOKEN_ADDRESS> <FILL_IN_CHAIN> <FILL_IN_LANG>
- FILL_IN_CHAIN:
solfor Solana addresses; for EVM0x...addresses useautounless the user explicitly specifies a chain (bsc/eth/base) - FILL_IN_LANG:
zhif user wrote Chinese,enif English, defaultzh
Output Rule
After the script finishes, paste the complete stdout verbatim into your reply — every line, every section, nothing omitted or summarized. Do NOT add any introduction, commentary, or summary before or after the output block.
Field Reference
Holder object key fields
| Field | Type | Meaning |
|---|---|---|
address |
string | Wallet address |
balance |
float | Current token balance |
amount_percentage |
float | Fraction of total supply (0–1). Multiply by 100 for %. |
usd_value |
float | Current USD value of holdings |
avg_cost |
float | Average buy price per token |
unrealized_pnl |
float | Unrealized PnL ratio (0.5 = +50%) |
unrealized_profit |
float | Unrealized PnL in USD |
realized_profit |
float | Realized PnL in USD |
buy_tx_count_cur |
int | Buy transactions since token creation |
sell_tx_count_cur |
int | Sell transactions since token creation |
sell_amount_percentage |
float | Fraction of total buys that have been sold |
start_holding_at |
int | Unix timestamp of first buy |
addr_type |
int | 0=normal wallet, 1=burn/dead, 2=DEX/pool |
maker_token_tags |
list | bundler, rat_trader, sniper, whale, top_holder, transfer_in, dev_team, creator |
tags |
list | smart_degen, pump_smart, renowned, fresh_wallet, wash_trader, fomo, kol |
native_balance |
string | Raw native token balance (SOL: lamports /1e9; EVM: wei /1e18) |
native_transfer |
object | {from_address, amount, timestamp} — how wallet was funded |
twitter_name |
string | Twitter handle if known |
exchange |
string | DEX name for pool wallets |
Created-tokens response fields
| Field | Meaning |
|---|---|
inner_count |
Unmigrated token count |
open_count |
Migrated token count |
tokens[].market_cap |
Current market cap in USD |
tokens[].is_open |
true = migrated |
creator_ath_info.ath_mc |
All-time high MC across all created tokens |
creator_ath_info.ath_token |
Token address of the ATH token |
creator_ath_info.token_symbol |
Symbol of the ATH token |
Rating Standard
Entry timing pressure (批次浮盈/出货) does NOT affect the overall rating — it only affects section display.
| Rating (ZH) | Rating (EN) | Emoji | Condition |
|---|---|---|---|
| 不建议买 | Not Recommended | 🔴 | Any: rat traders >10% / largest wallet >15% / dev sock puppet |
| 谨慎参与 | Caution | ⚠️ | ≥2 of: Dev still holding / airdrop >15% / risk wallets >30% / linked >10% |
| 可轻仓 | Light Position | 🟡 | Exactly 1 of above warns |
| 正常参与 | Normal | ✅ | None of the above |
Supported Chains
sol, bsc, base, eth, robinhood, arc, stable
Notes
balance >= 1threshold avoids dust false positives when identifying dev holdings- SOL
native_balanceis in lamports (÷1e9); EVMnative_balanceis in wei (÷1e18) total_supplyis estimated as the median ofbalance / amount_percentageacross normal walletscur_priceis estimated as the median ofusd_value / balanceacross normal wallets- Top5 displays Twitter name when available; else
first4...last4format