옵션
집 Skill 보안 gmgn-portfolio

gmgn-portfolio

gmgnai/gmgn-skills gmgnai/gmgn-skills

솔라나(Solana), BSC, 베이스(Base) 또는 이더리움(Ethereum)에서 GMGN API를 통해 주소별로 모든 암호화폐 지갑을 분석할 수 있습니다. 보유 자산, 실현/미실현 손익, 승률, 거래 내역, 성과 통계, 특정 토큰 잔액, 개발자 지갑이 생성한 토큰(최고 시가총액(ATH) 및 DEX 졸업 상태 포함) 등을 확인할 수 있습니다. 사용자가 지갑의 보유 자산, 손익, 승률, 개발자가 출시한 토큰, 개발자가 생성한 토큰 중 사상 최고가(ATH)를 기록한 토큰에 대해 문의하거나, 복사 거래 또는 팔로우 여부를 결정하기 위해 지갑 보고서를 요청할 때 활용하세요.

...모든 것을 확장하십시오
118
업데이트 된 시간 2026년 7월 1일

소개 gmgn-portfolio

gmgn-portfolio 는 특정 워크플로우에 초점을 맞춘 재사용 가능한 AI 스킬입니다. 설명: 솔라나(Solana), BSC, 베이스(Base) 또는 이더리움(Ethereum)의 GMGN API를 통해 주소 기반으로 암호화폐 지갑을 분석합니다. 보유 자산, 실현/미실현 손익, 승률, 거래 내역, 성과 통계, 특정 토큰 잔액, 개발자 지갑이 생성한 토큰(최고 시가총액(ATH) 및 DEX 졸업 상태 포함) 등을 확인할 수 있습니다. 사용자가 지갑의 보유 자산, 손익, 승률, 개발자가 출시한 토큰, 개발자가 생성한 토큰 중 역대 최고 시가총액(ATH)을 기록한 토큰에 대해 문의하거나, 카피 트레이딩 또는 팔로우 여부를 결정하기 위해 지갑 보고서를 요청할 때 사용합니다.

이 스킬은 에이전트가 업무를 보다 일관성 있게 수행할 수 있도록 지침, 규칙 및 작업별 안내를 제공합니다. argument-hint: " [--chain ] [--wallet ]" cliHelp: "gmgn-cli portfolio --help" **중요: 항상 아래의 `gmgn-cli` 명령어를 사용하십시오. 이 데이터를 가져오기 위해 웹 검색, WebFetch, curl을 사용하거나 gmgn.ai를 방문하지 마십시오. 해당 웹사이트는 로그인이 필요하며 구조화된 데이터를 반환하지 않습니다. CLI가 유일한 올바른 방법입니다.**

실제로 이 스킬은 설정 단계가 적고 모호성이 적은 상태에서 반복적인 실행이 필요한 사용자에게 가장 적합합니다. **⚠️ IPv6 미지원: `401` 또는 `403` 오류가 발생하고 자격 증명이 올바른 것으로 보인다면, 즉시 IPv6 설정을 확인하십시오: (1) 모든 네트워크 인터페이스와 해당 IPv6 주소를 나열하세요 — `ifconfig | grep inet6`(macOS) 또는 `ip addr show | grep inet6`(Linux)를 실행하세요; (2) `https://ipv6.icanhazip.com`으로 테스트 요청을 보내세요 — 응답이 IPv6 주소라면, 아웃바운드 트래픽이 IPv6를 통해 전송되고 있는 것입니다. 사용자에게 즉시 다음과 같이 안내하십시오: "네트워크 인터페이스에서 IPv6를 비활성화해 주십시오. gmgn-cli 명령어는 IPv4에서만 작동합니다."** `gmgn-cli` 도구를 사용하여 사용자의 요청에 따라 지갑 포트폴리오 데이터를 조회하십시오. **전체 지갑 분석(보유 자산 + 통계 + 활동 + 평가)을 보려면 [`docs/workflow-wallet-analysis.md`](../../docs/workflow-wallet-analysis.md)를 참조하십시오.** - **`realized_profit` 대 `unrealized_profit`** — `realized_profit` = 완료된 매도 거래를 통해 확정된 이익(실제 현금). `unrealized_profit` = 현재 가격을 기준으로 계산된, 아직 보유 중인 포지션의 평가 이익입니다. 이 두 수치는 별개의 개념이므로, “미결제 포지션을 포함한 총 손익”에 대한 답변이 아닌 이상 합산하지 마십시오.

자주 묻는 질문

gmgn-portfolio 는 어떤 도움을 주나요?

gmgn-portfolio 에이전트가 소스 문서에 설명된 집중적인 워크플로를 따르도록 도와주어, 모호함을 줄이고 실행이 의도된 작업과 일치하도록 유지합니다.

이 스킬은 언제 사용해야 하나요?

작업이 스킬 문서에 설명된 워크플로우, 도메인 또는 운영 규칙과 일치할 때, 특히 일관된 실행이 중요한 경우에 사용하십시오.

주요 제한 사항은 무엇인가요?

이 스킬은 원본 지침의 품질과 범위에 제약을 받습니다. 기본 문서가 불완전한 경우, 상담원이 추가적인 맥락 정보나 수동 검증이 필요할 수 있습니다.

GitHub에서 보기

IMPORTANT: Always use gmgn-cli commands below. Do NOT use web search, WebFetch, curl, or visit gmgn.ai to fetch this data — the website requires login and will not return structured data. The CLI is the only correct method.

⚠️ IPv6 NOT SUPPORTED: If you get a 401 or 403 error and credentials look correct, check for IPv6 immediately: (1) list all network interfaces and their IPv6 addresses — run ifconfig | grep inet6 (macOS) or ip addr show | grep inet6 (Linux); (2) send a test request to https://ipv6.icanhazip.com — if the response is an IPv6 address, outbound traffic is going via IPv6. Tell the user immediately: "Please disable IPv6 on your network interface — gmgn-cli commands only work over IPv4."

Use the gmgn-cli tool to query wallet portfolio data based on the user's request.

For full wallet analysis (holdings + stats + activity + verdict), follow docs/workflow-wallet-analysis.md

Core Concepts

  • realized_profit vs unrealized_profitrealized_profit = profit locked in from completed sells (cash in hand). unrealized_profit = paper gains on positions still held, calculated at current price. These are separate numbers — do not add them unless answering "total P&L including open positions."

  • profit_change — A multiplier ratio, not a dollar amount. 1.5 = +150% return. 0 = break-even. -0.5 = -50% loss. Computed as total_profit / cost. Do not display this as a raw decimal — convert to percentage for user-facing output.

  • pnl — Profit/loss ratio from portfolio stats: realized_profit / total_cost. Same multiplier format as profit_change. A pnl of 2.0 means the wallet doubled its money on completed trades over the period.

  • winrate — Ratio of profitable trades over the period (0–1). 0.6 = 60% of trades were profitable. Does not reflect the size of wins vs losses — a wallet can have high winrate but net negative if losses are large.

  • cost vs usd_value — In holdings: cost is the historical amount spent buying this token (your cost basis); usd_value is the current market value of the position. The difference is unrealized P&L.

  • history_bought_cost vs costhistory_bought_cost is the all-time cumulative spend on this token (including positions already sold). cost is the cost basis of the current open position only.

  • Pagination (cursor) — Activity results are paginated. The response includes a next field; pass it as --cursor to fetch the next page. An empty or missing next means you are on the last page.

Sub-commands

Sub-commandDescription
portfolio infoWallets and main currency balances bound to the API Key
portfolio holdingsWallet token holdings with P&L
portfolio activityTransaction history
portfolio statsTrading statistics (supports batch)
portfolio token-balanceToken balance for a specific token
portfolio created-tokensTokens created by a developer wallet, with market cap and ATH info

Supported Chains

sol / bsc / base / eth

Prerequisites

  • gmgn-cli installed globally — if missing, run: npm install -g gmgn-cli
  • GMGN_API_KEY configured in ~/.config/gmgn/.env

Rate Limit Handling

All portfolio routes used by this skill go through GMGN's leaky-bucket limiter with rate=20 and capacity=20. Sustained throughput is roughly 20 ÷ weight requests/second, and the max burst is roughly floor(20 ÷ weight) when the bucket is full.

Critical auth (GMGN_API_KEY + GMGN_PRIVATE_KEY required):

CommandRouteWeight
portfolio holdingsGET /v1/user/wallet_holdings5

Exist auth (GMGN_API_KEY only):

CommandRouteWeight
portfolio infoGET /v1/user/info1
portfolio activityGET /v1/user/wallet_activity3
portfolio statsGET /v1/user/wallet_stats3
portfolio token-balanceGET /v1/user/wallet_token_balance1
portfolio created-tokensGET /v1/user/created_tokens2

When a request returns 429:

  • Read X-RateLimit-Reset from the response headers. It is a Unix timestamp in seconds that marks when the limit is expected to reset.
  • If the response body contains reset_at (e.g., {"code":429,"error":"RATE_LIMIT_BANNED","message":"...","reset_at":1775184222}), extract reset_at — it is the Unix timestamp when the ban lifts (typically 5 minutes). Convert to local time and tell the user exactly when they can retry.
  • The CLI may wait and retry once automatically when the remaining cooldown is short. If it still fails, stop and tell the user the exact retry time instead of sending more requests.
  • For RATE_LIMIT_EXCEEDED or RATE_LIMIT_BANNED, repeated requests during the cooldown can extend the ban by 5 seconds each time, up to 5 minutes. Do not spam retries.

First-time setup (if GMGN_API_KEY is not configured):

  1. Generate key pair and show the public key to the user:

    openssl genpkey -algorithm ed25519 -out /tmp/gmgn_private.pem 2>/dev/null && \  openssl pkey -in /tmp/gmgn_private.pem -pubout 2>/dev/null

    Tell the user: "This is your Ed25519 public key. Go to https://gmgn.ai/ai, paste it into the API key creation form, then send me the API Key value shown on the page."

  2. Wait for the user's API key, then configure:

    mkdir -p ~/.config/gmgnecho 'GMGN_API_KEY=<key_from_user>' > ~/.config/gmgn/.envchmod 600 ~/.config/gmgn/.env

Usage Examples

# API Key wallet info (no --chain or --wallet needed)gmgn-cli portfolio info# Wallet holdings (default sort)gmgn-cli portfolio holdings --chain sol --wallet <wallet_address># Holdings sorted by USD value, descendinggmgn-cli portfolio holdings \  --chain sol --wallet <wallet_address> \  --order-by usd_value --direction desc --limit 20# Include sold-out positionsgmgn-cli portfolio holdings --chain sol --wallet <wallet_address> --sell-out# Transaction activitygmgn-cli portfolio activity --chain sol --wallet <wallet_address># Activity filtered by typegmgn-cli portfolio activity --chain sol --wallet <wallet_address> \  --type buy --type sell# Activity for a specific tokengmgn-cli portfolio activity --chain sol --wallet <wallet_address> \  --token <token_address># Trading stats (default 7d)gmgn-cli portfolio stats --chain sol --wallet <wallet_address># Trading stats for 30 daysgmgn-cli portfolio stats --chain sol --wallet <wallet_address> --period 30d# Batch stats for multiple walletsgmgn-cli portfolio stats --chain sol \  --wallet <wallet_1> --wallet <wallet_2># Token balancegmgn-cli portfolio token-balance \  --chain sol --wallet <wallet_address> --token <token_address># Tokens created by a developer walletgmgn-cli portfolio created-tokens --chain sol --wallet <wallet_address># Created tokens sorted by all-time high market capgmgn-cli portfolio created-tokens \  --chain sol --wallet <wallet_address> \  --order-by token_ath_mc --direction desc# Only migrated tokensgmgn-cli portfolio created-tokens \  --chain sol --wallet <wallet_address> --migrate-state migrated# ETH wallet holdingsgmgn-cli portfolio holdings --chain eth --wallet <0x_wallet_address># ETH wallet transaction activitygmgn-cli portfolio activity --chain eth --wallet <0x_wallet_address># ETH token balancegmgn-cli portfolio token-balance \  --chain eth --wallet <0x_wallet_address> --token <0x_token_address>

portfolio created-tokens Options

OptionDescription
--order-by <field>Sort field: market_cap / token_ath_mc
--direction <asc|desc>Sort direction (default desc)
--migrate-state <state>Filter by migration status: migrated (graduated to DEX) / non_migrated (still on bonding curve)

portfolio holdings Options

OptionDescription
--limit <n>Page size (default 20, max 50)
--cursor <cursor>Pagination cursor
--order-by <field>Sort field: usd_value / last_active_timestamp / realized_profit / unrealized_profit / total_profit / history_bought_cost / history_sold_income (default usd_value)
--direction <asc|desc>Sort direction (default desc)
--hide-abnormal <bool>Hide abnormal positions: true / false (default: false)
--hide-airdrop <bool>Hide airdrop positions: true / false (default: true)
--hide-closed <bool>Hide closed positions: true / false (default: true)
--hide-openHide open positions

portfolio activity Options

OptionDescription
--token <address>Filter by token
--limit <n>Page size
--cursor <cursor>Pagination cursor (pass the next value from the previous response)
--type <type>Repeatable: buy / sell / transferIn / transferOut / add / remove

The activity response includes a next field. Pass it to --cursor to fetch the next page.

portfolio stats Options

OptionDescription
--period <period>Stats period: 7d / 30d (default 7d)

Response Field Reference

portfolio holdings — Key Fields

The response has a holdings array. Each item is one token position.

FieldDescription
token.addressToken contract address
token.symbol / token.nameToken ticker and full name
token.priceCurrent token price in USD
balanceCurrent token balance (human-readable units)
usd_valueCurrent USD value of this position
costTotal amount spent buying this token (USD)
realized_profitProfit from completed sells (USD)
unrealized_profitProfit on current unsold holdings at current price (USD)
total_profitrealized_profit + unrealized_profit (USD)
profit_changeTotal profit ratio = total_profit / cost (e.g. 1.5 = +150%)
avg_costAverage buy price per token (USD)
buy_tx_countNumber of buy transactions
sell_tx_countNumber of sell transactions
last_active_timestampUnix timestamp of the most recent transaction
history_bought_costTotal USD spent buying (all-time)
history_sold_incomeTotal USD received from selling (all-time)

portfolio activity — Key Fields

The response has a activities array and a next cursor field for pagination.

FieldDescription
transaction_hashOn-chain transaction hash
typeTransaction type: buy / sell / add / remove / transfer
token.addressToken contract address
token.symbolToken ticker
token_amountToken quantity in this transaction
cost_usdUSD value of this transaction
priceToken price denominated in the quote token of the trading pair at time of transaction
price_usdToken price in USD at time of transaction
timestampUnix timestamp of the transaction
nextPagination cursor — pass to --cursor to fetch the next page

portfolio stats — Key Fields

The response is an object (or array for batch). Key fields:

FieldDescription
realized_profitTotal realized profit over the period (USD)
unrealized_profitTotal unrealized profit on open positions (USD)
winrateWin rate — ratio of profitable trades (0–1)
total_costTotal amount spent buying in the period (USD)
buy_countNumber of buy transactions
sell_countNumber of sell transactions
pnlProfit/loss ratio = realized_profit / total_cost

The response also includes a common object when available (absent if the upstream identity service is unavailable):

FieldDescription
common.avatarWallet avatar URL
common.nameDisplay name
common.ensENS domain (EVM chains only)
common.tagPrimary wallet tag
common.tagsAll wallet tags (e.g. ["smart_money"])
common.twitter_usernameTwitter handle
common.twitter_nameTwitter display name
common.followers_countTwitter follower count
common.is_blue_verifiedTwitter blue-verified badge
common.follow_countNumber of GMGN users following this wallet
common.remark_countNumber of GMGN users who have remarked this wallet
common.created_token_countTokens created by this wallet
common.created_atWallet creation time (Unix seconds) — records when the first funding transaction arrived; use this as the wallet's age indicator
common.fund_fromFunding source label
common.fund_from_addressAddress that funded this wallet
common.fund_amountFunding amount

Use common.tags and common.twitter_username when building a wallet profile narrative. If common is absent in the response, omit identity fields silently — do not report it as an error.

portfolio created-tokens — Key Fields

The response data object has a tokens array plus aggregate stats.

Top-level fields:

FieldDescription
last_create_timestampUnix timestamp of the most recent token creation
inner_countNumber of tokens still on the bonding curve (NOT graduated)
open_countNumber of tokens that have graduated to DEX
open_ratioGraduation rate (string, e.g. "0.25")

Total created = inner_count + open_count. Do NOT use len(tokens) as the total — the tokens array is capped at 100 entries and may be truncated.| creator_ath_info | Best-performing token created by this wallet (ATH market cap) || tokens | Array of created tokens — see below |

creator_ath_info fields:

FieldDescription
creatorWallet address
ath_tokenToken address with highest ATH market cap
ath_mcATH market cap (USD string)
token_symbol / token_nameToken ticker and name
token_logoLogo URL

Per-token fields (tokens[*]):

FieldDescription
token_addressToken contract address
symbolToken ticker
chainChain name
create_timestampUnix timestamp of creation
is_opentrue if graduated to DEX
market_capCurrent market cap (USD string)
token_ath_mcAll-time high market cap (USD string)
pool_liquidityCurrent liquidity (USD string)
holdersCurrent holder count
swap_1hSwap count in the last hour
volume_1hTrading volume in the last hour (USD string)
launchpad_platformLaunch platform name (e.g. Pump.fun)
is_pumptrue if launched on Pump.fun
bundler_rateBundler participation rate (0–1)
cto_flagtrue if community-takeover token

Do NOT guess field names not listed here. If a field appears in the response but is not in this table, do not interpret it without reading the raw output first.

Output Format

Do NOT dump raw JSON. Always parse and present data in the structured formats below. Use --raw only when piping to jq or further processing.

portfolio holdings — Holdings Table

Present a table sorted by usd_value (descending). Show total portfolio value at the top.

Wallet: {wallet} | Chain: {chain}Total value: ~${sum of usd_value across all positions}# | Token | Balance | USD Value | Total P&L | P&L% | Avg Cost | Buys / Sells

Flag positions where profit_change is strongly negative (e.g. < -50%) or positive (e.g. > 200%) with a brief note.

portfolio activity — Activity Feed

Present as a chronological list (newest first). Use human-readable timestamps.

{type} {token.symbol}  |  {token_amount} tokens  |  ${cost_usd}  |  {timestamp}  |  tx: {short hash}

Group by token if the user asks about a specific token.

portfolio stats — Stats Summary

Wallet: {wallet} | Period: {period}Realized P&L:   ${realized_profit}Unrealized P&L: ${unrealized_profit}Win Rate:        {winrate × 100}%Total Spent:     ${total_cost}Buys / Sells:    {buy_count} / {sell_count}PnL Ratio:       {pnl}x[Identity:       {common.name or common.twitter_username} | Tags: {common.tags}]

Show the [Identity: ...] line only if common is present in the response. For batch queries (multiple wallets), present one summary block per wallet.

Notes

  • portfolio holdings uses critical auth (GMGN_API_KEY + GMGN_PRIVATE_KEY required — CLI signs the request automatically). All other portfolio commands use exist auth (API Key only, no signature required).
  • portfolio stats supports multiple --wallet flags for batch queries
  • Use --raw to get single-line JSON for further processing
  • Input validation — Wallet and token addresses are validated against the expected chain format at runtime (sol: base58 32–44 chars; bsc/base/eth: 0x + 40 hex digits). The CLI exits with an error on invalid input.
  • For follow-wallet, KOL, and Smart Money trade records, use the gmgn-track skill (track follow-wallet / track kol / track smartmoney)

Workflow

For full wallet analysis including trade history and follow-through on top holdings, see docs/workflow-wallet-analysis.md

For in-depth trading style analysis, copy-trade ROI estimation, and smart money leaderboard comparison, see docs/workflow-smart-money-profile.md

When to use which:

  • User asks "is this wallet worth following" → docs/workflow-wallet-analysis.md
  • User asks "what's this wallet's trading style", "when does he take profit", "smart money profile", "if I copied this wallet what would my return be" → docs/workflow-smart-money-profile.md
  • User wants to compare multiple smart money wallets by winrate/PnL → docs/workflow-smart-money-profile.md Step 5 (leaderboard)
  • User asks "what tokens did this dev create", "dev 发过哪些币", "查一下这个 dev 的代币", "dev 创建记录" → use portfolio created-tokens --chain <chain> --wallet <creator_address> directly. Get the creator address first via token info if only a token address is given.

모든 파일

1개 파일

gmgn-portfolio 설치

스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.

ZIP 다운로드

저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.

git clone https://github.com/GMGNAI/gmgn-skills/blob/main/skills/gmgn-portfolio/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

복사 복사
빠른 설정: skill 폴더를 .claude/skills/로 복사하면 Claude가 해당 스킬을 자동으로 감지하여 사용합니다.
저장소 gmgnai/gmgn-skills

관련 스킬

zeroize-audit
업데이트 된 시간 2026년 7월 1일
flutter-use-http-package
업데이트 된 시간 2026년 6월 30일
device-integrity
업데이트 된 시간 2026년 6월 29일
auth-implementation-patterns
업데이트 된 시간 2026년 6월 29일
OR