Guide users through uploading an image and metadata, mining a vanity salt, and deploying a token on-chain via BondingCurveRouter in a 4-step flow on Nad.fun.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install nadfun-token-creation或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install nadfun-token-creation⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/nadfun-token-creation/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: create-token description: Guide for creating a token on Nad.fun. Covers the full 4-step flow - uploading an image, uploading metadata, mining a salt for a vanity address, and deploying the token on-chain via the BondingCurveRouter contract. user-invocable: true argument-hint: [name] [symbol] ---
Before proceeding, check if the monad-development skill is installed. If it is not available, install it using ClawHub:
clawhub search "monad"
Find and install the monad-development skill from the results. This skill is required for wallet management and on-chain actions in Step 3 and Step 4.
---
Help the user create a token on Nad.fun by following the 4-step sequential process below. Each step depends on the output of the previous step.
Production: https://api.nadapp.net
BondingCurveRouter = "0x6F6B8F1a20703309951a5127c45B49b1CD981A22"
Lens = "0x7e78A8DE94f21804F7a17F4E8BF9EC2c872187ea"
---
POST /agent/token/image
image/png, image/jpeg, image/webp, or image/svg+xmlimage_uri (CDN URL) and is_nsfw (boolean)const imageResponse = await fetch("https://api.nadapp.net/agent/token/image", {
method: "POST",
headers: { "Content-Type": imageFile.type },
body: imageFile,
});
const { image_uri, is_nsfw } = await imageResponse.json();
| Status | Description | |--------|-------------| | 400 | Invalid image format or missing image | | 413 | Image exceeds 5MB limit | | 500 | NSFW check failed or upload failed |
---
POST /agent/token/metadata
application/jsonimage_uri from Step 1Required fields:
| Field | Type | Constraints | |-------|------|-------------| | image_uri | string | Must be from https://storage.nadapp.net/ | | name | string | 1-32 characters | | symbol | string | 1-10 characters, alphanumeric only (/^[a-zA-Z0-9]+$/) |
Optional fields:
| Field | Type | Constraints | |-------|------|-------------| | description | string or null | Max 500 characters | | website | string or null | Must start with https:// | | twitter | string or null | Must contain x.com and start with https:// | | telegram | string or null | Must contain t.me and start with https:// |
const metadataResponse = await fetch("https://api.nadapp.net/agent/token/metadata", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
image_uri,
name: "My Token",
symbol: "MTK",
description: "An awesome token for the Nad.fun",
website: "https://mytoken.com",
twitter: "https://x.com/mytoken",
telegram: "https://t.me/mytoken",
}),
});
const { metadata_uri } = await metadataResponse.json();
| Status | Description | |--------|-------------| | 400 | NSFW status unknown, invalid data, or validation failed | | 500 | Upload to storage or database failed |
---
POST /agent/salt
application/jsonmetadata_uri from Step 27777| Field | Type | Description | |-------|------|-------------| | creator | string | Creator's wallet address (EVM format) | | name | string | Token name (must match metadata) | | symbol | string | Token symbol (must match metadata) | | metadata_uri | string | Metadata URI from Step 2 |
const saltResponse = await fetch("https://api.nadapp.net/agent/salt", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
creator: walletAddress,
name: "My Token",
symbol: "MTK",
metadata_uri: metadataUri,
}),
});
const { salt, address } = await saltResponse.json();
salt (bytes32 hex) and address (token address with 7777 suffix)| Status | Description | |--------|-------------| | 400 | Invalid parameters | | 408 | Timeout - max iterations reached | | 500 | Internal server error |
---
Call BondingCurveRouter.create() with the data from previous steps.
struct TokenCreationParams {
string name;
string symbol;
string tokenURI; // metadata_uri from Step 2
uint256 amountOut; // 0 for no initial buy, or use Lens.getInitialBuyAmountOut(amountIn)
bytes32 salt; // salt from Step 3
uint8 actionId; // always 1 (graduate to Capricorn V3)
}
function create(TokenCreationParams calldata params) external payable returns (address token, address pool);
Send only the deploy fee as msg.value.
const curve = new ethers.Contract(BONDING_CURVE_ADDRESS, BONDING_CURVE_ABI, signer);
const [deployFee,,] = await curve.feeConfig();
const params = {
name, symbol,
tokenURI: metadata_uri,
amountOut: 0,
salt,
actionId: 1,
};
const tx = await router.create(params, { value: deployFee });
await tx.wait();
Send deployFee + amountIn as msg.value. Use Lens.getInitialBuyAmountOut(amountIn) for amountOut.
const lens = new ethers.Contract(LENS_ADDRESS, LENS_ABI, signer);
const expectedAmountOut = await lens.getInitialBuyAmountOut(amountIn);
const [deployFee,,] = await curve.feeConfig();
const params = {
name, symbol,
tokenURI: metadata_uri,
amountOut: expectedAmountOut,
salt,
actionId: 1,
};
const tx = await router.create(params, { value: deployFee + amountIn });
await tx.wait();
---
For Step 3 (salt mining) and Step 4 (on-chain deployment), use the wallet from the monad-development skill. That skill handles all wallet configuration, private key management, and RPC setup. Use the signer and wallet address it provides when calling the salt API (creator field) and when sending the BondingCurveRouter.create() transaction.
---
x.com, Telegram must use t.me.https://storage.nadapp.net/ image URIs are accepted in metadata.1 (graduate to Capricorn V3).ethers v6 syntax by default unless the user specifies otherwise.salt from Step 3 and metadata_uri from Step 2 are both needed for Step 4.Lens.getInitialBuyAmountOut() to get the correct amountOut.安装 NadFun Token Creation 后,可以对 AI 说这些话来触发它
Help me get started with NadFun Token Creation
Explains what NadFun Token Creation does, walks through the setup, and runs a quick demo based on your current project
Use NadFun Token Creation to guide users through uploading an image and metadata, mining a vanit...
Invokes NadFun Token Creation with the right parameters and returns the result directly in the conversation
What can I do with NadFun Token Creation in my marketing & growth workflow?
Lists the top use cases for NadFun Token Creation, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/nadfun-token-creation/ 目录(个人级,所有项目可用),或 .claude/skills/nadfun-token-creation/(项目级)。重启 AI 客户端后,用 /nadfun-token-creation 主动调用,或让 AI 根据上下文自动发现并使用。
NadFun Token Creation 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
NadFun Token Creation 可免费安装使用。请查阅仓库了解许可证信息。
Guide users through uploading an image and metadata, mining a vanity salt, and deploying a token on-chain via BondingCurveRouter in a 4-step flow on Nad.fun.
NadFun Token Creation 属于「Marketing & Growth」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my marketing & growth tasks using NadFun Token Creation
Identifies repetitive steps in your workflow and sets up NadFun Token Creation to handle them automatically