Claude-skill-registry-data milady-meme-generator
Generate Milady NFT memes with layered composition, text overlays, and 324+ accessories. Use when creating Milady memes, adding layers like hats/glasses/earrings, working with NFT artwork, or generating custom meme images.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/milady-meme-generator" ~/.claude/skills/majiayu000-claude-skill-registry-data-milady-meme-generator && rm -rf "$T"
manifest:
data/milady-meme-generator/SKILL.mdsource content
Milady Meme Generator
Generate custom Milady NFT memes with advanced layering, text overlays, and 324+ accessory options.
Overview
This Skill enables you to create Milady-themed memes using:
- 10,000 Milady NFT base images (1000x1250 resolution)
- 324 layered accessories across 6 categories
- Text overlay system with custom fonts and styles
- Natural language parsing for easy layer selection
- Template-based generation with random combinations
Quick Start
Basic Meme Generation
from src.meme_generator_v2 import MemeGeneratorV2 # Initialize generator generator = MemeGeneratorV2() # Generate random Milady meme output = generator.generate_random_meme() # Generate specific NFT with text output = generator.generate_meme( nft_id=5050, top_text="GM", bottom_text="WAGMI" ) # Generate with custom layers output = generator.generate_meme( nft_id=5050, layers=["Hat:Beret.png", "Glasses:Sunglasses.png"] )
Natural Language Layer Selection
from src.prompt_parser import PromptParser parser = PromptParser() # Parse natural language to layers result = parser.parse_prompt( "give her a red beret and cool sunglasses" ) # Returns: ["Hat:Beret.png", "Glasses:Sunglasses.png"]
Layer System
Layer Categories (6 types)
| Category | Count | Z-Index | Description |
|---|---|---|---|
| Hat | 89 | 60 | Headwear accessories |
| Glasses | 24 | 50 | Eyewear styles |
| Earrings | 21 | 40 | Ear accessories |
| Necklaces | 13 | 30 | Neck jewelry |
| Face Decoration | 134 | 70 | Face stickers/marks |
| Overlay | 43 | 80 | Special effects |
Total: 324 layers
Layer Usage
from src.milady_composer import MiladyComposer composer = MiladyComposer() # Add single layer composer.add_layer("Hat:Cowboy.png") # Add multiple layers composer.add_layers([ "Hat:Beret.png", "Glasses:Sunglasses.png", "Overlay:Heart Meme.png" ]) # Compose final image result = composer.compose(nft_id=1234)
Text Overlays
Font Styles (4 types)
- Impact - Classic meme font (bold, outlined)
- Angelic - Decorative script font
- Chinese - Chinese character support
- Glow - Neon glow effect
from src.caption_meme import CaptionMeme captioner = CaptionMeme() # Add text with Impact font (classic meme style) captioner.add_caption( image=img, top_text="GM", bottom_text="WAGMI", font_style="impact" ) # Custom positioning and styling captioner.add_caption( image=img, top_text="Good Morning", bottom_text="Let's Go", font_style="glow", font_size=60, text_color="white" )
NFT Metadata
Each NFT (0-9999) has metadata including:
- Attributes: Background, Skin, Eyes, Hair, Shirt, etc.
- Rarity scores: For each trait
- Image path: Direct link to PNG file
# Access NFT metadata metadata = composer.get_nft_metadata(nft_id=5050) # Returns: { "id": 5050, "attributes": { "Background": "Baby Pink", "Skin": "Peach", "Eyes": "Brown", "Hair": "Long Black", "Shirt": "White Tee" }, "rarity": {...} }
Common Use Cases
1. Generate Random GM Post
generator = MemeGeneratorV2() output = generator.generate_gm_meme() # Returns random NFT with "GM" text and random accessories
2. Create Themed Meme
# Crypto-themed output = generator.generate_themed_meme(theme="crypto") # Milady culture output = generator.generate_themed_meme(theme="milady")
3. Custom Composition
composer = MiladyComposer() # Start with specific NFT composer.set_base(nft_id=1234) # Add accessories composer.add_layer("Hat:Beret.png") composer.add_layer("Glasses:Heart Shaped.png") # Add overlay effect composer.add_layer("Overlay:Sparkles.png") # Compose and save result = composer.compose() result.save("output/my_meme.png")
File Locations
- NFT Images:
(10,000 PNGs)assets/milady_nfts/images/ - Layers:
(6 subdirectories)assets/milady_layers/ - Metadata:
assets/milady_nfts/metadata.json - Output:
directoryoutput/
Installation
1. Download NFT Assets
# Download all 10,000 NFTs (requires ~500MB) python scripts/download_nfts.py # Download all 324 layers python scripts/download_layers.py # Check for missing assets python scripts/check_missing.py
2. Install Dependencies
pip install pillow requests
Advanced Features
Template System
Pre-defined text templates for quick generation:
# GM templates (30+ variations) generator.generate_from_template("gm") # Crypto templates (40+ variations) generator.generate_from_template("crypto") # Milady culture templates (25+ variations) generator.generate_from_template("milady") # Motivational templates (15+ variations) generator.generate_from_template("motivational")
Batch Generation
# Generate multiple random memes outputs = generator.batch_generate(count=10) # Generate series with same base, different accessories outputs = generator.generate_series( nft_id=5050, variations=5 )
Layer Reference
For complete layer listings and examples, see:
- LAYER_REFERENCE.md - All 324 layers with previews
- NFT_METADATA.md - NFT attributes and rarity
- EXAMPLES.md - Example generations with code
Tips & Best Practices
- Layer Order Matters: Overlays appear on top, Necklaces on bottom
- Not All Combinations Work: Some layers may clash visually
- Use Natural Language: PromptParser handles "cool sunglasses" → layer mapping
- Check Asset Availability: Run
if layers don't loadcheck_missing.py - Output Resolution: Final images are 1000x1250 (Milady standard)
Troubleshooting
Missing NFT images?
python scripts/download_nfts.py
Layer not found?
# Check available layers ls assets/milady_layers/Hat/ # Download missing layers python scripts/download_layers.py
Text not rendering?
- Ensure font files are in
assets/fonts/ - Use fallback font:
font_style="impact"
Cost
All generation is FREE - runs locally with Pillow (no API calls).
Related Skills:
- ai-image-effects - Add AI effects (Illusion, FLUX)
- lark-bot-integration - Deploy as Lark bot