A Python-based NFT art generator that creates layered images and metadata for Field, Yard, and Pot token types. Each type uses trait layers (backgrounds, effects, layers, plants, buildings, etc.) with configurable rarity to produce unique images and JSON metadata.
NFTArtCreator/
├── generators/ # Image + metadata generation
│ ├── nft-generator_field.py
│ ├── nft-generator_yard.py
│ └── nft-generator_pot.py
├── models/ # Trait definitions and rarity data
│ ├── modelF.py # Field
│ ├── modelY.py # Yard
│ └── modelP.py # Pot
├── converters/ # JSON metadata format conversion
│ ├── json-converter_field.py
│ ├── json-converter_yard.py
│ └── json-converter_pot.py
├── docs/
│ └── ipfs.txt # IPFS hashes and links reference
├── assets/ # Source trait images (not in repo)
│ ├── field/
│ ├── yard/
│ └── pot/
└── data/ # Generated output (created on first run)
├── field/
├── yard/
└── pot/
- generators/ — Scripts that composite PNG layers by rarity, write JPGs and raw JSON into
data/<type>/<rarity>/imageand.../json. - models/ — Trait lists and chances (e.g.
background_data,layer_1_data,border_data) used by the generators. - converters/ — Turn the raw generator JSON into marketplace-style metadata (name, description, attributes, image placeholder) and write to
data/<type>/<rarity>/newJson. - docs/ipfs.txt — Reference IPFS CIDs and gateway URLs for images and JSON.
- Python 3
- Pillow (PIL)
pip install Pillow
-
Clone the repo and install dependencies:
pip install Pillow
-
Add trait assets under the project root:
assets/field/— folders like0 - BACKGROUND,1 - BACKGROUND EFFECTS, …11 - BORDERS REWARDSassets/yard/— same idea (see generator for exact folder names)assets/pot/— same idea
-
Run all commands from the project root (
NFTArtCreator/).
From the project root:
# Field (default 1000)
python generators/nft-generator_field.py
# Yard (default 10000)
python generators/nft-generator_yard.py
# Pot (default 100000)
python generators/nft-generator_pot.pyOutput goes to:
data/<field|yard|pot>/<diamond|ruby|pearl|carbon>/image/<id>.jpgdata/<field|yard|pot>/<diamond|ruby|pearl|carbon>/json/<id>.json
Rarity caps (e.g. 20 Diamond, 100 Ruby for Yard) are enforced in each generator.
After generation, convert raw JSON to marketplace-style metadata (with name, description, attributes):
python converters/json-converter_field.py
python converters/json-converter_yard.py
python converters/json-converter_pot.pyConverted files are written to data/<type>/<rarity>/newJson/.
Edit TOTAL_NFT_COUNT in the corresponding generator:
- Field:
generators/nft-generator_field.py(e.g. 1000) - Yard:
generators/nft-generator_yard.py(e.g. 10000) - Pot:
generators/nft-generator_pot.py(e.g. 100000)
- Diamond — rarest
- Ruby
- Pearl
- Carbon — most common
Exact caps per type are defined in each generator.
See docs/ipfs.txt for IPFS gateway URLs and CIDs for images and JSON (e.g. CloverNFT Field/Yard/Pot).
See repository for license information.