Marketplace
Opaline ships as layered APNG traits and as flattened GIF tokens. OpenSea wants the GIF bake of those loops. The APNG stack stays in this repo for the studio and any later restack.
Project description
Collection name Opaline. Symbol OPAL. Category PFPs. The same copy lives in public/metadata/opaline-description.txt.
Opaline. A 5,555-piece collection of looping smoked-glass PFP GIFs on Base. Each portrait is stacked from seven layers — atelier, vapor, cast, sheen, regard, crest, and clasp — then flattened onto one 12-frame GIF. Eight saltwater fish, each its own glass: parrotfish, blue marlin, queen angelfish, lionfish, triggerfish, seahorse, green moray, and manta. Vapor hangs in the room. Light walks the facets. Film shifts hue. Inclusions dim. Crystal reef fish. Seven films, including bare glass. No charcoal outline. No sticker cutout. The fish stays seated. One shared clock. Minting on Base (chain ID 8453). Gas is ETH.
Listing kit
OpenSea wants a square logo, a 3:2 featured image, and a wide 4:1 banner — three different pictures, no type on the marketplace images. The site hero can reuse the taller banner.

Logo
512×512, 1:1
public/brand/logo-opaline.png

Featured
1200×800, 3:2
public/brand/featured-opaline.jpg

OpenSea banner
2800×700, 4:1
public/brand/banner-opaline-opensea.jpg

Collection GIF
1000×1000 loop
public/brand/collection-opaline.gif
Wallet setup
RPC https://mainnet.base.org
Explorer https://basescan.org
OpenSea does not stack APNG layers for you. Studio is a live compositor. For a Drop you upload finished GIFs plus a CSV. Bake the full 5,555-token pack with python3 scripts/generate_opaline.py --all — gifs/, OPALINE-opensea-drop.csv, and the kit README land in generated/opaline/.
In OpenSea Studio, create a Drop on Base (chain ID 8453). Set supply to 5,555, paste the project description, and upload the listing kit from public/brand.
Upload every file in generated/opaline/gifs (1.gif–5555.gif) and generated/opaline/OPALINE-opensea-drop.csv. The CSV already uses OpenSea’s required headers (tokenID, name, description, file_name, attributes[Trait]). OpenSea plays GIF, not APNG. Preview the loops, then publish.
contracts/Opaline.sol mints token IDs 1–5,555. Pin generated/opaline/json and set the base URI. Import that contract on OpenSea instead of using a Drop if you want a custom mint. Gas is ETH.
Drop upload notes: Preparing metadata for your drop. Live collections: Base. OpenSea on Base: Blockchains compatible with OpenSea.