gmgn-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +45 -0
- package/.claude-plugin/plugin.json +13 -0
- package/.cursor-plugin/plugin.json +23 -0
- package/LICENSE +21 -0
- package/Readme.md +236 -0
- package/Readme.zh.md +236 -0
- package/dist/client/OpenApiClient.d.ts +58 -0
- package/dist/client/OpenApiClient.d.ts.map +1 -0
- package/dist/client/OpenApiClient.js +174 -0
- package/dist/client/OpenApiClient.js.map +1 -0
- package/dist/client/signer.d.ts +32 -0
- package/dist/client/signer.d.ts.map +1 -0
- package/dist/client/signer.js +66 -0
- package/dist/client/signer.js.map +1 -0
- package/dist/commands/market.d.ts +3 -0
- package/dist/commands/market.d.ts.map +1 -0
- package/dist/commands/market.js +50 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/portfolio.d.ts +3 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +112 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/swap.d.ts +3 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +73 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/token.d.ts +3 -0
- package/dist/commands/token.d.ts.map +1 -0
- package/dist/commands/token.js +62 -0
- package/dist/commands/token.js.map +1 -0
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +36 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +3 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +22 -0
- package/dist/output.js.map +1 -0
- package/package.json +51 -0
- package/skills/gmgn-market/SKILL.md +144 -0
- package/skills/gmgn-portfolio/SKILL.md +105 -0
- package/skills/gmgn-swap/SKILL.md +142 -0
- package/skills/gmgn-token/SKILL.md +55 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
|
+
"name": "gmgn-cli",
|
|
4
|
+
"description": "GMGN OpenAPI skills for AI coding assistants — token info, market data, wallet portfolio, and swap execution across sol / bsc / base / eth / monad",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "GMGN"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "gmgn-cli",
|
|
11
|
+
"source": "./",
|
|
12
|
+
"description": "4 GMGN skills — token info & security, K-line market data, wallet portfolio analysis, and DEX swap execution",
|
|
13
|
+
"version": "1.0.0",
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "GMGN"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://gmgn.ai",
|
|
18
|
+
"repository": "https://github.com/gmgn-ai/gmgn-skills",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"keywords": [
|
|
21
|
+
"gmgn",
|
|
22
|
+
"crypto",
|
|
23
|
+
"solana",
|
|
24
|
+
"token",
|
|
25
|
+
"defi",
|
|
26
|
+
"swap",
|
|
27
|
+
"portfolio",
|
|
28
|
+
"market",
|
|
29
|
+
"blockchain",
|
|
30
|
+
"skills"
|
|
31
|
+
],
|
|
32
|
+
"category": "web3",
|
|
33
|
+
"tags": [
|
|
34
|
+
"skills",
|
|
35
|
+
"token",
|
|
36
|
+
"market",
|
|
37
|
+
"portfolio",
|
|
38
|
+
"swap",
|
|
39
|
+
"defi",
|
|
40
|
+
"blockchain"
|
|
41
|
+
],
|
|
42
|
+
"strict": false
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gmgn-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "GMGN OpenAPI skills — token info, market data, wallet portfolio, and swap",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "GMGN",
|
|
7
|
+
"url": "https://gmgn.ai"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/gmgn-ai/gmgn-skills",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["gmgn", "crypto", "solana", "token", "defi", "swap"],
|
|
12
|
+
"skills": "./skills/"
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gmgn-cli",
|
|
3
|
+
"description": "GMGN OpenAPI skills — token info, market data, wallet portfolio, and swap execution across sol / bsc / base / eth / monad",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "GMGN"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://gmgn.ai",
|
|
9
|
+
"repository": "https://github.com/gmgn-ai/gmgn-skills",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"gmgn",
|
|
13
|
+
"crypto",
|
|
14
|
+
"solana",
|
|
15
|
+
"token",
|
|
16
|
+
"defi",
|
|
17
|
+
"swap",
|
|
18
|
+
"portfolio",
|
|
19
|
+
"market",
|
|
20
|
+
"blockchain"
|
|
21
|
+
],
|
|
22
|
+
"skills": ["./skills/"]
|
|
23
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 GMGN
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/Readme.md
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# gmgn-cli
|
|
2
|
+
|
|
3
|
+
> 中文文档:[Readme.zh.md](Readme.zh.md)
|
|
4
|
+
|
|
5
|
+
GMGN AI skills for on-chain operations — token research, market data, wallet analysis, and swap.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Skills
|
|
10
|
+
|
|
11
|
+
| Skill | Description | Reference |
|
|
12
|
+
|-------|-------------|-----------|
|
|
13
|
+
| [`/gmgn-token`](skills/gmgn-token/SKILL.md) | Token info, security, pool, holders, traders | [SKILL.md](skills/gmgn-token/SKILL.md) |
|
|
14
|
+
| [`/gmgn-market`](skills/gmgn-market/SKILL.md) | K-line market data, trending tokens | [SKILL.md](skills/gmgn-market/SKILL.md) |
|
|
15
|
+
| [`/gmgn-portfolio`](skills/gmgn-portfolio/SKILL.md) | Wallet holdings, activity, stats | [SKILL.md](skills/gmgn-portfolio/SKILL.md) |
|
|
16
|
+
| [`/gmgn-swap`](skills/gmgn-swap/SKILL.md) | Swap submission + order query | [SKILL.md](skills/gmgn-swap/SKILL.md) |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Usage Examples
|
|
21
|
+
|
|
22
|
+
Natural language prompts you can send to any AI assistant with gmgn-cli skills installed:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
buy 0.1 SOL of <token_address>
|
|
26
|
+
sell 50% of <token_address> on BSC
|
|
27
|
+
check order status <order_id>
|
|
28
|
+
is <token_address> safe to buy on solana?
|
|
29
|
+
show top holders of <token_address>
|
|
30
|
+
show my wallet holdings on SOL
|
|
31
|
+
query token details for 0x1234...
|
|
32
|
+
show trading stats for wallet <wallet_address> on BSC
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Setup
|
|
38
|
+
|
|
39
|
+
### 0. Prepare
|
|
40
|
+
|
|
41
|
+
Before applying for an API Key, get two things ready:
|
|
42
|
+
|
|
43
|
+
**Generate an Ed25519 key pair**
|
|
44
|
+
|
|
45
|
+
Download and run the [Binance Asymmetric Key Generator](https://github.com/binance/asymmetric-key-generator/releases). You will need the **public key** when filling out the API Key application, and the **private key** in your `.env` later (for swap / order).
|
|
46
|
+
|
|
47
|
+
**Get your public egress IP** (for the IP whitelist)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
curl ip.me
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Or visit **https://ip.me** in your browser.
|
|
54
|
+
|
|
55
|
+
### 1. Get an API Key
|
|
56
|
+
|
|
57
|
+
Apply at **https://gmgn.ai/ai** — enter the public key and your IP address from the step above.
|
|
58
|
+
|
|
59
|
+
### 2. Configure
|
|
60
|
+
|
|
61
|
+
**Option A — Global config (recommended)**
|
|
62
|
+
|
|
63
|
+
Create `~/.config/gmgn/.env` once — works from any directory:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mkdir -p ~/.config/gmgn
|
|
67
|
+
cat > ~/.config/gmgn/.env << 'EOF'
|
|
68
|
+
GMGN_API_KEY=your_api_key_here
|
|
69
|
+
|
|
70
|
+
# Required for swap / order (private key from step 0):
|
|
71
|
+
GMGN_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n<base64>\n-----END PRIVATE KEY-----\n"
|
|
72
|
+
EOF
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Option B — Project `.env`**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
cp .env.example .env
|
|
79
|
+
# Edit .env and fill in your values
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Config lookup order: `~/.config/gmgn/.env` → project `.env` (project takes precedence).
|
|
83
|
+
|
|
84
|
+
### 3. CLI Install
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm install -g gmgn-cli
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Local development:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm install
|
|
94
|
+
npm run build
|
|
95
|
+
node dist/index.js <command> [options]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. Connect to Your AI Tool
|
|
99
|
+
|
|
100
|
+
#### Claude Code
|
|
101
|
+
|
|
102
|
+
Skills are automatically discovered when the package is installed as a plugin.
|
|
103
|
+
|
|
104
|
+
#### Cursor
|
|
105
|
+
|
|
106
|
+
Skills are automatically discovered via the `.cursor-plugin/` configuration.
|
|
107
|
+
|
|
108
|
+
1. Complete steps 1–3 above
|
|
109
|
+
2. Configure credentials in `~/.config/gmgn/.env`
|
|
110
|
+
3. Restart Cursor — skills will be available in Agent mode via `/gmgn-*` commands
|
|
111
|
+
|
|
112
|
+
#### Cline
|
|
113
|
+
|
|
114
|
+
1. Complete steps 1–3 above
|
|
115
|
+
2. In Cline settings → **Skills directory**: point to the installed package's `skills/` folder:
|
|
116
|
+
```bash
|
|
117
|
+
echo "$(npm root -g)/gmgn-skills/skills"
|
|
118
|
+
```
|
|
119
|
+
3. Configure credentials in `~/.config/gmgn/.env`
|
|
120
|
+
4. Restart Cline — `/gmgn-token`, `/gmgn-market`, `/gmgn-portfolio`, `/gmgn-swap` will be available
|
|
121
|
+
|
|
122
|
+
#### Codex CLI
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone https://github.com/gmgn-ai/gmgn-skills ~/.codex/gmgn-cli
|
|
126
|
+
mkdir -p ~/.agents/skills
|
|
127
|
+
ln -s ~/.codex/gmgn-cli/skills ~/.agents/skills/gmgn-cli
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
See [.codex/INSTALL.md](.codex/INSTALL.md) for full instructions.
|
|
131
|
+
|
|
132
|
+
#### OpenCode
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
git clone https://github.com/gmgn-ai/gmgn-skills ~/.opencode/gmgn-cli
|
|
136
|
+
mkdir -p ~/.agents/skills
|
|
137
|
+
ln -s ~/.opencode/gmgn-cli/skills ~/.agents/skills/gmgn-cli
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
See [.opencode/INSTALL.md](.opencode/INSTALL.md) for full instructions.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Typical Workflows
|
|
145
|
+
|
|
146
|
+
**Research a token:**
|
|
147
|
+
```
|
|
148
|
+
token info → token security → token pool → token holders
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Analyze a wallet:**
|
|
152
|
+
```
|
|
153
|
+
portfolio holdings → portfolio stats → portfolio activity
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Execute a trade:**
|
|
157
|
+
```
|
|
158
|
+
token info (confirm token) → portfolio token-balance (check funds) → swap → order get (poll status)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Discover trading opportunities via trending:**
|
|
162
|
+
```
|
|
163
|
+
market trending (top 50, score-ranked) → AI selects top 5 by multi-factor analysis → user reviews → token info / token security → swap
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## CLI Reference
|
|
169
|
+
|
|
170
|
+
Full parameter reference: [docs/cli-usage.md](docs/cli-usage.md)
|
|
171
|
+
|
|
172
|
+
### Token
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npx gmgn-cli token info --chain sol --address <addr>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Market
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npx gmgn-cli market trending \
|
|
182
|
+
--chain sol \
|
|
183
|
+
--interval 1h \
|
|
184
|
+
--orderby volume --limit 20 \
|
|
185
|
+
--filter not_risk --filter not_honeypot
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Portfolio
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npx gmgn-cli portfolio holdings --chain sol --wallet <addr>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Swap (requires private key)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Submit swap
|
|
198
|
+
npx gmgn-cli swap \
|
|
199
|
+
--chain sol \
|
|
200
|
+
--from <wallet-address> \
|
|
201
|
+
--input-token <input-token-addr> \
|
|
202
|
+
--output-token <output-token-addr> \
|
|
203
|
+
--amount 1000000 \
|
|
204
|
+
--slippage 0.01
|
|
205
|
+
|
|
206
|
+
# Query order
|
|
207
|
+
npx gmgn-cli order get --chain sol --order-id <order-id>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Supported Chains
|
|
213
|
+
|
|
214
|
+
| Commands | Chains | Chain Currencies |
|
|
215
|
+
|----------|--------|-----------------|
|
|
216
|
+
| token / market / portfolio | `sol` / `bsc` / `base` | — |
|
|
217
|
+
| swap / order | `sol` / `bsc` / `base` | sol: SOL, USDC · bsc: BNB, USDC · base: ETH, USDC |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Output Format
|
|
222
|
+
|
|
223
|
+
Default: formatted JSON. Use `--raw` for single-line JSON (pipe-friendly):
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
npx gmgn-cli token info --chain sol --address <addr> --raw | jq '.price'
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Security & Disclaimer
|
|
232
|
+
|
|
233
|
+
- Never commit your `.env` file or private key to version control — add them to `.gitignore`
|
|
234
|
+
- Keep your `GMGN_API_KEY` and private key confidential; do not share them in logs, screenshots, or chat messages
|
|
235
|
+
- The private key used for swap/order must correspond to the wallet bound to your API Key
|
|
236
|
+
- **Use of this tool and any financial decisions made based on its output are entirely at your own risk. GMGN is not liable for any trading losses, errors, or unauthorized access resulting from improper credential management.**
|
package/Readme.zh.md
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# gmgn-cli
|
|
2
|
+
|
|
3
|
+
> English: [Readme.md](Readme.md)
|
|
4
|
+
|
|
5
|
+
GMGN 链上操作 AI 技能套件 — Token 研究、行情数据、钱包分析和交易。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 技能
|
|
10
|
+
|
|
11
|
+
| 技能 | 说明 | 参考 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| [`/gmgn-token`](skills/gmgn-token/SKILL.md) | Token 信息、安全、池子、持有者、交易者 | [SKILL.md](skills/gmgn-token/SKILL.md) |
|
|
14
|
+
| [`/gmgn-market`](skills/gmgn-market/SKILL.md) | K 线行情数据、热门代币 | [SKILL.md](skills/gmgn-market/SKILL.md) |
|
|
15
|
+
| [`/gmgn-portfolio`](skills/gmgn-portfolio/SKILL.md) | 钱包持仓、活动、统计 | [SKILL.md](skills/gmgn-portfolio/SKILL.md) |
|
|
16
|
+
| [`/gmgn-swap`](skills/gmgn-swap/SKILL.md) | 兑换提交 + 订单查询 | [SKILL.md](skills/gmgn-swap/SKILL.md) |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 用法示例
|
|
21
|
+
|
|
22
|
+
安装技能后,向 AI 助手直接发送自然语言指令:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
buy 0.1 SOL of <token_address>
|
|
26
|
+
sell 50% of <token_address> on BSC
|
|
27
|
+
check order status <order_id>
|
|
28
|
+
is <token_address> safe to buy on solana?
|
|
29
|
+
show top holders of <token_address>
|
|
30
|
+
show my wallet holdings on SOL
|
|
31
|
+
query token details for 0x1234...
|
|
32
|
+
show trading stats for wallet <wallet_address> on BSC
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 安装配置
|
|
38
|
+
|
|
39
|
+
### 0. 准备工作
|
|
40
|
+
|
|
41
|
+
申请 API Key 前,需要先准备两件事:
|
|
42
|
+
|
|
43
|
+
**生成 Ed25519 密钥对**
|
|
44
|
+
|
|
45
|
+
下载并运行 [Binance Asymmetric Key Generator](https://github.com/binance/asymmetric-key-generator/releases)。申请 API Key 时需要填入**公钥**,**私钥**稍后配置到 `.env`(swap / order 接口使用)。
|
|
46
|
+
|
|
47
|
+
**获取本机出口 IP**(用于填写 IP 白名单)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
curl ip.me
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
或在浏览器访问 **https://ip.me**。
|
|
54
|
+
|
|
55
|
+
### 1. 获取 API Key
|
|
56
|
+
|
|
57
|
+
申请地址:**https://gmgn.ai/ai** — 填入上一步准备好的公钥和 IP 地址。
|
|
58
|
+
|
|
59
|
+
### 2. 配置
|
|
60
|
+
|
|
61
|
+
**方式 A — 全局配置(推荐)**
|
|
62
|
+
|
|
63
|
+
创建 `~/.config/gmgn/.env`,配置一次,所有目录均生效:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mkdir -p ~/.config/gmgn
|
|
67
|
+
cat > ~/.config/gmgn/.env << 'EOF'
|
|
68
|
+
GMGN_API_KEY=your_api_key_here
|
|
69
|
+
|
|
70
|
+
# swap / order 接口额外需要(第 0 步生成的私钥):
|
|
71
|
+
GMGN_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n<base64>\n-----END PRIVATE KEY-----\n"
|
|
72
|
+
EOF
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**方式 B — 项目 `.env`**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
cp .env.example .env
|
|
79
|
+
# 编辑 .env,填入实际值
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
配置加载顺序:`~/.config/gmgn/.env` → 项目 `.env`(项目级优先)。
|
|
83
|
+
|
|
84
|
+
### 3. CLI 安装
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm install -g gmgn-cli
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
本地开发:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm install
|
|
94
|
+
npm run build
|
|
95
|
+
node dist/index.js <command> [options]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. 接入 AI 工具
|
|
99
|
+
|
|
100
|
+
#### Claude Code
|
|
101
|
+
|
|
102
|
+
安装包后通过插件机制自动发现技能。
|
|
103
|
+
|
|
104
|
+
#### Cursor
|
|
105
|
+
|
|
106
|
+
技能通过 `.cursor-plugin/` 配置自动发现。
|
|
107
|
+
|
|
108
|
+
1. 完成上方步骤 1–3
|
|
109
|
+
2. 配置凭证:`~/.config/gmgn/.env`
|
|
110
|
+
3. 重启 Cursor — Agent 模式下可通过 `/gmgn-*` 命令使用技能
|
|
111
|
+
|
|
112
|
+
#### Cline
|
|
113
|
+
|
|
114
|
+
1. 完成上方步骤 1–3
|
|
115
|
+
2. 在 Cline 设置 → **Skills directory**:填入已安装包的 `skills/` 目录路径:
|
|
116
|
+
```bash
|
|
117
|
+
echo "$(npm root -g)/gmgn-skills/skills"
|
|
118
|
+
```
|
|
119
|
+
3. 配置凭证:`~/.config/gmgn/.env`
|
|
120
|
+
4. 重启 Cline — `/gmgn-token`、`/gmgn-market`、`/gmgn-portfolio`、`/gmgn-swap` 即可使用
|
|
121
|
+
|
|
122
|
+
#### Codex CLI
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone https://github.com/gmgn-ai/gmgn-skills ~/.codex/gmgn-cli
|
|
126
|
+
mkdir -p ~/.agents/skills
|
|
127
|
+
ln -s ~/.codex/gmgn-cli/skills ~/.agents/skills/gmgn-cli
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
详细说明:[.codex/INSTALL.md](.codex/INSTALL.md)
|
|
131
|
+
|
|
132
|
+
#### OpenCode
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
git clone https://github.com/gmgn-ai/gmgn-skills ~/.opencode/gmgn-cli
|
|
136
|
+
mkdir -p ~/.agents/skills
|
|
137
|
+
ln -s ~/.opencode/gmgn-cli/skills ~/.agents/skills/gmgn-cli
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
详细说明:[.opencode/INSTALL.md](.opencode/INSTALL.md)
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 典型使用场景
|
|
145
|
+
|
|
146
|
+
**研究 Token:**
|
|
147
|
+
```
|
|
148
|
+
token info → token security → token pool → token holders
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**分析钱包:**
|
|
152
|
+
```
|
|
153
|
+
portfolio holdings → portfolio stats → portfolio activity
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**执行交易:**
|
|
157
|
+
```
|
|
158
|
+
token info(确认 Token) → portfolio token-balance(检查余额) → swap → order get(轮询状态)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**通过 Trending 发现交易机会:**
|
|
162
|
+
```
|
|
163
|
+
market trending(取 50 条,按 score 排序) → AI 多维度分析选出 top 5 → 用户确认 → token info / token security → swap
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## CLI 参考
|
|
169
|
+
|
|
170
|
+
完整参数说明:[docs/cli-usage.md](docs/cli-usage.md)
|
|
171
|
+
|
|
172
|
+
### Token
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npx gmgn-cli token info --chain sol --address <addr>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Market
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npx gmgn-cli market trending \
|
|
182
|
+
--chain sol \
|
|
183
|
+
--interval 1h \
|
|
184
|
+
--orderby volume --limit 20 \
|
|
185
|
+
--filter not_risk --filter not_honeypot
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Portfolio
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npx gmgn-cli portfolio holdings --chain sol --wallet <addr>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Swap(需要私钥)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 提交兑换
|
|
198
|
+
npx gmgn-cli swap \
|
|
199
|
+
--chain sol \
|
|
200
|
+
--from <wallet-address> \
|
|
201
|
+
--input-token <input-token-addr> \
|
|
202
|
+
--output-token <output-token-addr> \
|
|
203
|
+
--amount 1000000 \
|
|
204
|
+
--slippage 0.01
|
|
205
|
+
|
|
206
|
+
# 查询订单
|
|
207
|
+
npx gmgn-cli order get --chain sol --order-id <order-id>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 支持的链
|
|
213
|
+
|
|
214
|
+
| 接口类型 | 支持的链 | 链原生货币 |
|
|
215
|
+
|----------|----------|-----------|
|
|
216
|
+
| token / market / portfolio | `sol` / `bsc` / `base` | — |
|
|
217
|
+
| swap / order | `sol` / `bsc` / `base` | sol: SOL、USDC · bsc: BNB、USDC · base: ETH、USDC |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 输出格式
|
|
222
|
+
|
|
223
|
+
默认输出格式化 JSON。使用 `--raw` 输出单行 JSON(方便 jq 等工具处理):
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
npx gmgn-cli token info --chain sol --address <addr> --raw | jq '.price'
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 安全与免责
|
|
232
|
+
|
|
233
|
+
- 不要将 `.env` 文件或私钥提交到版本控制系统,请将其加入 `.gitignore`
|
|
234
|
+
- 请妥善保管 `GMGN_API_KEY` 和私钥,不要在日志、截图或聊天中泄露
|
|
235
|
+
- swap/order 使用的私钥必须与绑定该 API Key 的钱包一致
|
|
236
|
+
- **使用本工具及根据其输出做出的任何财务决策,风险由用户自行承担。GMGN 对因凭证管理不当导致的任何交易损失、错误或未授权访问不承担责任。**
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenApiClient — GMGN OpenAPI external client
|
|
3
|
+
*
|
|
4
|
+
* Auth modes:
|
|
5
|
+
* Normal (market/token/portfolio): X-APIKEY + timestamp + client_id
|
|
6
|
+
* Critical (swap/order): normal auth + X-Signature (private key signature)
|
|
7
|
+
*/
|
|
8
|
+
export interface Config {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
privateKeyPem?: string;
|
|
11
|
+
host: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SwapParams {
|
|
14
|
+
chain: string;
|
|
15
|
+
from_address: string;
|
|
16
|
+
input_token: string;
|
|
17
|
+
output_token: string;
|
|
18
|
+
input_amount: string;
|
|
19
|
+
swap_mode?: string;
|
|
20
|
+
input_amount_bps?: string;
|
|
21
|
+
output_amount?: string;
|
|
22
|
+
slippage?: number;
|
|
23
|
+
auto_slippage?: boolean;
|
|
24
|
+
min_output_amount?: string;
|
|
25
|
+
is_anti_mev?: boolean;
|
|
26
|
+
priority_fee?: string;
|
|
27
|
+
tip_fee?: string;
|
|
28
|
+
auto_tip_fee?: boolean;
|
|
29
|
+
max_auto_fee?: string;
|
|
30
|
+
gas_price?: string;
|
|
31
|
+
max_fee_per_gas?: string;
|
|
32
|
+
max_priority_fee_per_gas?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class OpenApiClient {
|
|
35
|
+
private readonly apiKey;
|
|
36
|
+
private readonly privateKeyPem;
|
|
37
|
+
private readonly host;
|
|
38
|
+
constructor(config: Config);
|
|
39
|
+
getTokenInfo(chain: string, address: string): Promise<unknown>;
|
|
40
|
+
getTokenSecurity(chain: string, address: string): Promise<unknown>;
|
|
41
|
+
getTokenPoolInfo(chain: string, address: string): Promise<unknown>;
|
|
42
|
+
getTokenTopHolders(chain: string, address: string): Promise<unknown>;
|
|
43
|
+
getTokenTopTraders(chain: string, address: string): Promise<unknown>;
|
|
44
|
+
getTokenKline(chain: string, address: string, resolution: string, from: number, to: number): Promise<unknown>;
|
|
45
|
+
getWalletHoldings(chain: string, walletAddress: string, extra?: Record<string, string | number>): Promise<unknown>;
|
|
46
|
+
getWalletActivity(chain: string, walletAddress: string, extra?: Record<string, string | number | string[]>): Promise<unknown>;
|
|
47
|
+
getWalletStats(chain: string, walletAddresses: string[], period?: string): Promise<unknown>;
|
|
48
|
+
getWalletTokenBalance(chain: string, walletAddress: string, tokenAddress: string): Promise<unknown>;
|
|
49
|
+
getTrendingSwaps(chain: string, interval: string, extra?: Record<string, string | number | string[]>): Promise<unknown>;
|
|
50
|
+
getUserInfo(): Promise<unknown>;
|
|
51
|
+
swap(params: SwapParams): Promise<unknown>;
|
|
52
|
+
queryOrder(orderId: string, chain: string): Promise<unknown>;
|
|
53
|
+
private normalRequest;
|
|
54
|
+
private criticalRequest;
|
|
55
|
+
private doFetch;
|
|
56
|
+
private parseResponse;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=OpenApiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApiClient.d.ts","sourceRoot":"","sources":["../../src/client/OpenApiClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,MAAM,EAAE,MAAM;IAQpB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpE,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC;IAMb,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAC1C,OAAO,CAAC,OAAO,CAAC;IAQb,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAM,GACrD,OAAO,CAAC,OAAO,CAAC;IAQb,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,MAAM,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzF,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAMb,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAM,GACrD,OAAO,CAAC,OAAO,CAAC;IAMb,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAM/B,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAMpD,aAAa;YAoBb,eAAe;YA4Bf,OAAO;YAiBP,aAAa;CAoC5B"}
|