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.md
source 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)

CategoryCountZ-IndexDescription
Hat8960Headwear accessories
Glasses2450Eyewear styles
Earrings2140Ear accessories
Necklaces1330Neck jewelry
Face Decoration13470Face stickers/marks
Overlay4380Special 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)

  1. Impact - Classic meme font (bold, outlined)
  2. Angelic - Decorative script font
  3. Chinese - Chinese character support
  4. 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:
    assets/milady_nfts/images/
    (10,000 PNGs)
  • Layers:
    assets/milady_layers/
    (6 subdirectories)
  • Metadata:
    assets/milady_nfts/metadata.json
  • Output:
    output/
    directory

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:

Tips & Best Practices

  1. Layer Order Matters: Overlays appear on top, Necklaces on bottom
  2. Not All Combinations Work: Some layers may clash visually
  3. Use Natural Language: PromptParser handles "cool sunglasses" → layer mapping
  4. Check Asset Availability: Run
    check_missing.py
    if layers don't load
  5. 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: