nft-art-generation
Generate NFT artwork using each::sense AI. Create PFP collections, generative art, 1/1 pieces, pixel art, 3D renders, animated NFTs, and trait-based characters for Web3 projects.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-nft-art-generation
Repository
Skill path: skills/eftalyurtseven/nft-art-generation
Generate NFT artwork using each::sense AI. Create PFP collections, generative art, 1/1 pieces, pixel art, 3D renders, animated NFTs, and trait-based characters for Web3 projects.
Open repositoryBest for
Primary workflow: Analyze Data & AI.
Technical facets: Full Stack, Data / AI.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install nft-art-generation into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding nft-art-generation to shared team environments
- Use nft-art-generation for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: nft-art-generation
description: Generate NFT artwork using each::sense AI. Create PFP collections, generative art, 1/1 pieces, pixel art, 3D renders, animated NFTs, and trait-based characters for Web3 projects.
metadata:
author: eachlabs
version: "1.0"
---
# NFT Art Generation
Generate stunning NFT artwork using each::sense. This skill creates images and videos optimized for NFT collections, marketplaces, and Web3 projects.
## Features
- **PFP Collections**: 10K style profile picture collections with consistent traits
- **Generative Art**: Algorithm-inspired abstract and geometric pieces
- **1/1 Unique Artwork**: High-quality single edition masterpieces
- **Pixel Art**: Retro-style pixelated NFT artwork
- **3D NFTs**: Rendered 3D characters and objects
- **Animated NFTs**: GIF and video NFTs with motion
- **AI Art Collections**: Distinctive AI-generated art series
- **Trait-Based Characters**: Characters with combinable attributes
## Quick Start
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a PFP NFT of an ape character with cyberpunk style, neon colors, wearing futuristic sunglasses and a hoodie, dark background",
"mode": "max"
}'
```
## NFT Art Formats & Sizes
| Type | Aspect Ratio | Recommended Size | Use Case |
|------|--------------|------------------|----------|
| PFP Collection | 1:1 | 1024x1024 or 2048x2048 | Profile pictures, avatars |
| Generative Art | 1:1 | 2048x2048 or 4096x4096 | Art pieces, gallery display |
| 1/1 Artwork | Various | 2048x2048+ | High-value single editions |
| Pixel Art | 1:1 | 32x32 to 512x512 | Retro collections |
| 3D Render | 1:1 or 4:3 | 2048x2048 | 3D character NFTs |
| Animated GIF | 1:1 | 1024x1024 | Motion NFTs |
| Video NFT | 1:1 or 16:9 | 1080x1080 or 1920x1080 | Premium animated pieces |
## Use Case Examples
### 1. PFP Collection Style (10K Style)
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a 1:1 PFP NFT in the style of a 10K collection. An anthropomorphic fox character with purple fur, wearing a gold chain necklace and a backwards cap. Solid gradient background from teal to purple. Clean digital art style, bold outlines, vibrant colors.",
"mode": "max"
}'
```
### 2. Generative Art Piece
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a generative art piece inspired by algorithmic patterns. Abstract flowing lines and geometric shapes, inspired by Tyler Hobbs and Dmitri Cherniak. Use a limited color palette of deep blues, whites, and gold accents. Mathematical precision with organic flow. 1:1 aspect ratio.",
"mode": "max"
}'
```
### 3. 1/1 Unique Artwork
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a high-quality 1/1 NFT artwork. A surreal dreamscape with a floating island in a cosmic void, ancient ruins overgrown with bioluminescent plants, multiple moons in the sky, ethereal atmosphere. Ultra detailed, cinematic lighting, museum-quality digital painting.",
"mode": "max"
}'
```
### 4. Pixel Art NFT
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a pixel art NFT character. A retro-style warrior knight with glowing sword, 32x32 pixel style scaled up cleanly. Limited color palette, nostalgic 8-bit aesthetic, solid color background. CryptoPunks meets fantasy RPG vibe.",
"mode": "max"
}'
```
### 5. 3D NFT Artwork
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a 3D rendered NFT character. A stylized robot head with chrome finish, glowing LED eyes, intricate mechanical details, floating in a dark studio environment with dramatic rim lighting. Octane render quality, subsurface scattering, 1:1 aspect ratio.",
"mode": "max"
}'
```
### 6. Animated NFT (GIF/Video)
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create an animated NFT, 3-5 seconds loop. A mystical crystal orb with swirling energy inside, particles floating around it, pulsing glow effect. Seamless loop, hypnotic motion, dark background with subtle ambient particles. 1:1 square format.",
"mode": "max"
}'
```
### 7. AI Art Collection
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create an AI art piece for a collection exploring digital consciousness. Abstract portrait merging human and digital elements, data streams flowing through a face, glitch art effects, neural network visualization overlay. Vaporwave color palette with pink, cyan, and purple. Unique artistic interpretation.",
"mode": "max"
}'
```
### 8. Trait-Based Character Generation
```bash
# First character with base traits
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a trait-based NFT character for a collection. Base: Cat humanoid. Traits: Background=Sunset Orange, Fur=Calico pattern, Eyes=Laser red, Accessory=Pirate eyepatch, Clothing=Leather jacket, Headwear=None. Consistent flat illustration style suitable for a 10K PFP collection.",
"session_id": "nft-collection-cats-001"
}'
# Second character variation (same session for consistency)
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create another character with different traits. Same style as before. Traits: Background=Deep Space, Fur=White, Eyes=Diamond blue, Accessory=Monocle, Clothing=Tuxedo, Headwear=Top hat. Maintain the exact same art style.",
"session_id": "nft-collection-cats-001"
}'
```
### 9. Abstract Generative Art
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create an abstract generative art NFT. Inspired by Art Blocks aesthetic - recursive geometric patterns, flow fields, mathematical beauty. Colors emerge from chaos into order. Black background with vibrant color accents in orange, pink, and electric blue. Crisp vector-like precision. 1:1 format.",
"mode": "max"
}'
```
### 10. Cyberpunk/Futuristic NFT
```bash
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a cyberpunk NFT artwork. A futuristic street samurai character with cybernetic augmentations, neon-lit visor, holographic HUD elements, rain-soaked environment reflected on surfaces. Blade Runner meets anime aesthetic. Neon pink and cyan color scheme, dark atmospheric mood. Premium collectible quality.",
"mode": "max"
}'
```
## Best Practices
### Collection Consistency
- **Art Style**: Maintain consistent style across collection pieces
- **Color Palette**: Define and stick to a cohesive palette
- **Trait System**: Plan traits with clear categories (background, body, accessories, etc.)
- **Resolution**: Use consistent resolution across all pieces
- **Session ID**: Use same session_id for related pieces to maintain consistency
### Technical Quality
- **High Resolution**: Generate at 2048x2048+ for quality display
- **Clean Edges**: Request clean outlines for PFP collections
- **Proper Format**: Use PNG for static, MP4/GIF for animated
- **Marketplace Ready**: Ensure output meets OpenSea, Foundation, etc. requirements
### NFT-Specific Considerations
- **Rarity Planning**: Design rare traits distinctively
- **Scalability**: Ensure art looks good at small sizes (profile thumbnails)
- **Uniqueness**: Each piece should be visually distinct
- **Metadata Ready**: Generate with clear trait descriptions
## Prompt Tips for NFT Art
When creating NFT artwork, include these details in your prompt:
1. **Collection Type**: PFP, generative, 1/1, pixel art, etc.
2. **Art Style**: Describe the visual style (flat, 3D, pixel, painterly)
3. **Subject**: What is the main subject (character, abstract, landscape)
4. **Traits/Attributes**: List specific features if trait-based
5. **Color Palette**: Specify colors or mood
6. **Background**: Solid color, gradient, or detailed
7. **Quality Level**: Mention if premium/museum quality needed
### Example Prompt Structure
```
"Create a [collection type] NFT.
[Subject description] with [traits/attributes].
Style: [art style].
Colors: [color palette].
Background: [background description].
[Additional quality/format requirements]"
```
## Mode Selection
Ask your users before generating:
**"Do you want fast & cheap, or high quality?"**
| Mode | Best For | Speed | Quality |
|------|----------|-------|---------|
| `max` | Final collection pieces, 1/1 artwork, premium drops | Slower | Highest |
| `eco` | Concept exploration, trait testing, draft iterations | Faster | Good |
## Multi-Turn Collection Development
Use `session_id` to develop collections iteratively:
```bash
# Establish collection style
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a base character for my NFT collection. A stylized bear with streetwear fashion, bold flat colors, minimalist background.",
"session_id": "bear-nft-project"
}'
# Request trait variation
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create the same bear character but with different accessories - add sunglasses and a gold chain. Keep the exact same art style.",
"session_id": "bear-nft-project"
}'
# Request rare variant
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create a rare legendary variant - same bear but with cosmic/galaxy fur pattern, glowing eyes, and a crown. This is the 1/1 rare for the collection.",
"session_id": "bear-nft-project"
}'
```
## Batch Generation for Collections
Generate multiple variations efficiently:
```bash
# Variation 1 - Common trait
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create PFP NFT: Robot character, silver body, blue LED eyes, plain gray background, minimal style",
"mode": "eco"
}'
# Variation 2 - Uncommon trait
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create PFP NFT: Robot character, gold body, green LED eyes, gradient purple background, minimal style",
"mode": "eco"
}'
# Variation 3 - Rare trait
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Create PFP NFT: Robot character, holographic rainbow body, laser red eyes, cosmic space background, minimal style",
"mode": "eco"
}'
```
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| `Failed to create prediction: HTTP 422` | Insufficient balance | Top up at eachlabs.ai |
| Content policy violation | Prohibited content | Adjust prompt to comply with content policies |
| Timeout | Complex generation | Set client timeout to minimum 10 minutes |
| Style inconsistency | New session | Use same `session_id` for collection pieces |
## Related Skills
- `each-sense` - Core API documentation
- `product-photo-generation` - Product imagery
- `meta-ad-creative-generation` - Social media creatives
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "eftalyurtseven",
"slug": "nft-art-generation",
"displayName": "Nft Art Generation",
"latest": {
"version": "1.0.0",
"publishedAt": 1772584182235,
"commit": "https://github.com/openclaw/skills/commit/281aad402e149c5f5842053dc52b32b2ce7880c0"
},
"history": []
}
```
### references/SSE-EVENTS.md
```markdown
# SSE Event Reference
Detailed documentation for all Server-Sent Events (SSE) returned by the each::sense `/chat` endpoint.
## Event Format
Each event follows this format:
```
data: {"type": "event_type", ...fields}\n\n
```
Stream ends with:
```
data: [DONE]\n\n
```
---
## Event Types
### thinking_delta
Claude's reasoning as it streams in real-time. Use this to show users what the AI is thinking.
```json
{
"type": "thinking_delta",
"content": "Let me find the best model for portrait generation..."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Incremental thinking text |
---
### status
Current operation being executed. Shows tool usage and parameters.
```json
{
"type": "status",
"message": "Searching for image generation models...",
"tool_name": "search_models",
"parameters": {"use_case": "text to image portrait"}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `message` | string | Human-readable status message |
| `tool_name` | string | Internal tool being used |
| `parameters` | object | Tool parameters (optional) |
---
### text_response
Text content from the AI (explanations, answers, plans).
```json
{
"type": "text_response",
"content": "I'll create a stunning portrait for you with cinematic lighting and a warm mood."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Text response content |
---
### generation_response
Generated media URL (image or video). This is the primary output event.
```json
{
"type": "generation_response",
"url": "https://storage.eachlabs.ai/outputs/abc123.png",
"generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
"total": 1,
"tool_name": "execute_model",
"model": "nano-banana-pro"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `url` | string | Primary output URL |
| `generations` | array | All generated URLs |
| `total` | number | Total number of generations |
| `tool_name` | string | Tool that generated output |
| `model` | string | Model used for generation |
---
### clarification_needed
AI needs more information to proceed. Present options to the user.
```json
{
"type": "clarification_needed",
"question": "What type of edit would you like to make to this image?",
"options": [
"Remove the background",
"Apply a style transfer",
"Upscale to higher resolution",
"Add or modify elements"
],
"context": "I can see you've uploaded an image, but I need to understand what changes you'd like."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `question` | string | The question to ask the user |
| `options` | array | Suggested options (can be displayed as buttons) |
| `context` | string | Additional context about the clarification |
**Handling:** Display the question and options to the user. Send their response in a follow-up request with the same `session_id`.
---
### web_search_query
Web search being executed.
```json
{
"type": "web_search_query",
"query": "best AI video generation models 2024",
"recency": "month"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `query` | string | Search query |
| `recency` | string | Time filter (day, week, month, year) |
---
### web_search_citations
Citations from web search results.
```json
{
"type": "web_search_citations",
"citations": [
"https://example.com/ai-video-comparison",
"https://techblog.com/veo3-review"
],
"count": 2
}
```
| Field | Type | Description |
|-------|------|-------------|
| `citations` | array | URLs of sources cited |
| `count` | number | Number of citations |
---
### workflow_created
New workflow was created for complex multi-step generation.
```json
{
"type": "workflow_created",
"workflow_id": "wf_abc123",
"version_id": "v1",
"input_schema": {
"properties": {
"character_description": {
"type": "text",
"required": true,
"default_value": ""
}
}
},
"steps_count": 5
}
```
| Field | Type | Description |
|-------|------|-------------|
| `workflow_id` | string | Unique workflow identifier |
| `version_id` | string | Workflow version |
| `input_schema` | object | Schema for workflow inputs |
| `steps_count` | number | Number of steps in workflow |
---
### workflow_fetched
Existing workflow was loaded (when `workflow_id` is provided in request).
```json
{
"type": "workflow_fetched",
"workflow_name": "Product Video Generator",
"existing_steps": 3,
"existing_definition": {...}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `workflow_name` | string | Name of the workflow |
| `existing_steps` | number | Number of existing steps |
| `existing_definition` | object | Current workflow definition |
---
### workflow_built
Workflow definition was constructed.
```json
{
"type": "workflow_built",
"steps_count": 4,
"definition": {
"version": "v1",
"input_schema": {...},
"steps": [...]
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `steps_count` | number | Number of steps |
| `definition` | object | Full workflow definition |
---
### workflow_updated
Workflow was pushed to the EachLabs API.
```json
{
"type": "workflow_updated",
"success": true,
"workflow_id": "wf_abc123",
"version_id": "v1",
"definition": {...}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `success` | boolean | Whether update succeeded |
| `workflow_id` | string | Workflow identifier |
| `version_id` | string | Version identifier |
| `definition` | object | Updated definition |
---
### execution_started
Workflow execution has begun.
```json
{
"type": "execution_started",
"execution_id": "exec_xyz789",
"workflow_id": "wf_abc123"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `execution_id` | string | Unique execution identifier |
| `workflow_id` | string | Workflow being executed |
---
### execution_progress
Progress update during workflow execution. Sent approximately every 5 seconds.
```json
{
"type": "execution_progress",
"step_id": "step2",
"step_status": "completed",
"output": "https://storage.eachlabs.ai/outputs/step2.png",
"model": "nano-banana-pro",
"completed_steps": 2,
"total_steps": 5
}
```
| Field | Type | Description |
|-------|------|-------------|
| `step_id` | string | Current step identifier |
| `step_status` | string | Step status (running, completed, failed) |
| `output` | string | Step output URL (if available) |
| `model` | string | Model used for this step |
| `completed_steps` | number | Steps completed so far |
| `total_steps` | number | Total steps in workflow |
---
### execution_completed
Workflow execution finished successfully.
```json
{
"type": "execution_completed",
"execution_id": "exec_xyz789",
"status": "completed",
"output": "https://storage.eachlabs.ai/outputs/final.mp4",
"all_outputs": {
"step1": "https://storage.eachlabs.ai/outputs/step1.png",
"step2": "https://storage.eachlabs.ai/outputs/step2.png",
"step3": "https://storage.eachlabs.ai/outputs/final.mp4"
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `execution_id` | string | Execution identifier |
| `status` | string | Final status (completed, failed) |
| `output` | string | Final output URL |
| `all_outputs` | object | All step outputs keyed by step_id |
---
### tool_call
Details of a tool being called. Useful for debugging and transparency.
```json
{
"type": "tool_call",
"name": "execute_model",
"input": {
"model_name": "nano-banana-pro",
"inputs": {
"prompt": "A beautiful woman portrait...",
"aspect_ratio": "1:1"
}
}
}
```
| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Tool name |
| `input` | object | Tool input parameters |
---
### message
Informational message from the agent.
```json
{
"type": "message",
"content": "Your video is being processed. This typically takes 2-3 minutes."
}
```
| Field | Type | Description |
|-------|------|-------------|
| `content` | string | Message content |
---
### complete
Final event with summary. Always sent when stream completes successfully.
```json
{
"type": "complete",
"task_id": "chat_1708345678901",
"status": "ok",
"tool_calls": [
{"name": "search_models", "result": "success"},
{"name": "get_model_details", "result": "success"},
{"name": "execute_model", "result": "success", "model": "nano-banana-pro"}
],
"generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
"model": "nano-banana-pro"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `task_id` | string | Unique task identifier |
| `status` | string | Final status (ok, awaiting_input, error) |
| `tool_calls` | array | Summary of all tool calls |
| `generations` | array | All generated output URLs |
| `model` | string | Primary model used |
**Status values:**
- `ok` - Completed successfully
- `awaiting_input` - Waiting for user clarification
- `error` - An error occurred
---
### error
An error occurred during processing.
```json
{
"type": "error",
"message": "Failed to generate image: Invalid aspect ratio"
}
```
| Field | Type | Description |
|-------|------|-------------|
| `message` | string | Error message |
---
## Event Flow Examples
### Simple Image Generation
```
thinking_delta → "I'll create a beautiful portrait..."
status → "Searching for models..."
status → "Getting model details..."
status → "Generating with nano-banana-pro..."
generation_response → {url: "https://..."}
complete → {status: "ok", generations: [...]}
[DONE]
```
### Clarification Flow
```
thinking_delta → "I see an image, but need to know what edit..."
clarification_needed → {question: "What edit?", options: [...]}
complete → {status: "awaiting_input"}
[DONE]
```
### Workflow Execution
```
thinking_delta → "Creating a multi-step workflow..."
status → "Searching for models..."
workflow_created → {workflow_id: "wf_123", steps_count: 5}
execution_started → {execution_id: "exec_456"}
execution_progress → {completed_steps: 1, total_steps: 5}
execution_progress → {completed_steps: 2, total_steps: 5}
execution_progress → {completed_steps: 3, total_steps: 5}
execution_progress → {completed_steps: 4, total_steps: 5}
execution_completed → {output: "https://...", all_outputs: {...}}
complete → {status: "ok"}
[DONE]
```
### Web Search
```
thinking_delta → "Let me search for current information..."
web_search_query → {query: "best AI models 2024"}
status → "Searching the web..."
web_search_citations → {citations: [...], count: 3}
text_response → "Based on current information..."
complete → {status: "ok"}
[DONE]
```
```