[object Object]

← back to Dw Domain Fleet

Standalone sister-site unique hero allocation (59 sites, 0 dup, 0 generic-overlap)

d7527baa12338e679047c9027b87b52e11f5cf98 · 2026-06-01 13:46:50 -0700 · Steve Abrams

59 standalone storefronts served only 14 distinct static hero-bg.jpg files (31
shared one 1.9MB template image). scripts/gen-standalone-heroes.js assigns each
a unique, clean, niche-relevant catalog image, disjoint from the 344 generic
heroes and each other. Deploy replaces the 51 duplicate-cluster files; 8
already-unique heroes preserved.

Files touched

Diff

commit d7527baa12338e679047c9027b87b52e11f5cf98
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Jun 1 13:46:50 2026 -0700

    Standalone sister-site unique hero allocation (59 sites, 0 dup, 0 generic-overlap)
    
    59 standalone storefronts served only 14 distinct static hero-bg.jpg files (31
    shared one 1.9MB template image). scripts/gen-standalone-heroes.js assigns each
    a unique, clean, niche-relevant catalog image, disjoint from the 344 generic
    heroes and each other. Deploy replaces the 51 duplicate-cluster files; 8
    already-unique heroes preserved.
---
 data/standalone-hero-allocation.json | 356 +++++++++++++++++++++++++++++++++++
 data/standalone-hero-paths.tsv       |  59 ++++++
 scripts/gen-standalone-heroes.js     | 143 ++++++++++++++
 3 files changed, 558 insertions(+)

diff --git a/data/standalone-hero-allocation.json b/data/standalone-hero-allocation.json
new file mode 100644
index 0000000..1fb5d65
--- /dev/null
+++ b/data/standalone-hero-allocation.json
@@ -0,0 +1,356 @@
+{
+  "micawallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/78a03ce1ce0a81a4a1ce1f305e0990bf.jpg?v=1775082834",
+    "title": "Mica Madness Real Cork Chip s | Phillipe Romano",
+    "path": "/var/www/micawallpaper.com/public/hero-bg.jpg",
+    "niche": "mica"
+  },
+  "corkwallcovering.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cork-801-sample-espana-cork-hollywood-wallcoverings.jpg?v=1775711300",
+    "title": "Espana Cork | Hollywood Wallcoverings",
+    "path": "/var/www/corkwallcovering.com/public/hero-bg.jpg",
+    "niche": "cork"
+  },
+  "embroideredwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Galleria_Prado_Husk.jpg?v=1772655162",
+    "title": "Prado - Husk Vegan Leather | Phillipe Romano",
+    "path": "/var/www/embroideredwallpaper.com/public/hero-bg.jpg",
+    "niche": "embroider,stitch"
+  },
+  "jutewallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58136-sample-jutely-vinyl-hollywood-wallcoverings.jpg?v=1775720460",
+    "title": "Jutely Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/jutewallpaper.com/public/hero-bg.jpg",
+    "niche": "jute"
+  },
+  "raffiawallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/room-living_room-dwtt-80998-designer-wallcoverings-los-angeles.jpg?v=1775070895",
+    "title": "Charlotte Raffia Tan Wallcovering",
+    "path": "/var/www/raffiawallcoverings.com/public/hero-bg.jpg",
+    "niche": "raffia"
+  },
+  "raffiawalls.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/T5704_85fdb5c1-ca39-472c-b845-c66a1f46196f.jpg?v=1733892941",
+    "title": "Regatta Raffia Navy | Thibaut",
+    "path": "/var/www/raffiawalls.com/public/hero-bg.jpg",
+    "niche": "raffia"
+  },
+  "raffiawalls": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/T6821.jpg?v=1733892293",
+    "title": "Bankun Raffia Cranberry | Thibaut",
+    "path": "/root/Projects/raffiawalls/public/hero-bg.jpg",
+    "niche": "raffia"
+  },
+  "silkwallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xje-53772-sample-juno-faux-silk-durable-hollywood-wallcoverings.jpg?v=1775720170",
+    "title": "Juno Faux Silk Durable | Hollywood Wallcoverings",
+    "path": "/var/www/silkwallcoverings.com/public/hero-bg.jpg",
+    "niche": "silk"
+  },
+  "silkwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Galleria-SF_Galzed-Linen_Daffodil_d39373df-cd2d-49ec-9a6f-51af5cea9fa5.jpg?v=1772568989",
+    "title": "Grand Turk Linen - Gold Vegan Leather | Phillipe Romano",
+    "path": "/var/www/silkwallpaper.com/public/hero-bg.jpg",
+    "niche": "silk"
+  },
+  "silkwallpaper": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DUR-72176-sample-clean.jpg?v=1774484680",
+    "title": "St. Silken Durable Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/silkwallpaper/public/hero-bg.jpg",
+    "niche": "silk"
+  },
+  "suedewallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Verdi_Velvet_Dynasty_Magenta.jpg?v=1772568603",
+    "title": "Dutch Harbor - Dune Vegan Leather | Phillipe Romano",
+    "path": "/var/www/suedewallpaper.com/public/hero-bg.jpg",
+    "niche": "suede,velvet"
+  },
+  "pastelwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/nina_crop_7513498714163.jpg?v=1775522617",
+    "title": "Penglai 01 - Pastel Green Wallcovering | Nina Campbell",
+    "path": "/var/www/pastelwallpaper.com/public/hero-bg.jpg",
+    "niche": "pastel,soft"
+  },
+  "blockprintedwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/ad614226347d0932eb21335b2744c744_a2d9fa0b-da38-4a67-9279-60c032779ea2.jpg?v=1572309203",
+    "title": "Le Dot - Polka Dot Wallcovering",
+    "path": "/var/www/blockprintedwallpaper.com/public/hero-bg.jpg",
+    "niche": "block print,print"
+  },
+  "screenprintedwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/room-living_room-t70425.jpg?v=1775155085",
+    "title": "Austin Spa Blue Printed Fabric | Thibaut",
+    "path": "/var/www/screenprintedwallpaper.com/public/hero-bg.jpg",
+    "niche": "screen,print"
+  },
+  "saloonwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Bristol-BalmucciaDamaskWP-softgreen-EnsburyFernFAB-green-detail.jpg?v=1770340093",
+    "title": "Balmuccia Damask Soft Green Wallcovering",
+    "path": "/var/www/saloonwallpaper.com/public/hero-bg.jpg",
+    "niche": "damask,bordeaux,dramatic"
+  },
+  "glitterwalls.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/wbs-39667-sample-moroccan-silver-mica-hollywood-wallcoverings.jpg?v=1775726723",
+    "title": "Moroccan Silver Mica | Hollywood Wallcoverings",
+    "path": "/var/www/glitterwalls.com/public/hero-bg.jpg",
+    "niche": "glitter,mica,metallic"
+  },
+  "glitterwalls": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DE529__white.jpg?v=1775511857",
+    "title": "Coccodrillo - Beige Wallcovering | Phillipe Romano",
+    "path": "/root/Projects/glitterwalls/public/hero-bg.jpg",
+    "niche": "glitter,mica,metallic"
+  },
+  "metallicwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Nuvtex_Valencia_Cognac.jpg?v=1772656691",
+    "title": "Phillipe Romano - Renaissance Metal Leaf - European Wallcoverings | Phillipe Romano",
+    "path": "/var/www/metallicwallpaper.com/public/hero-bg.jpg",
+    "niche": "metallic,metal"
+  },
+  "linenwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/T35103_43a9e47b-1cd6-409b-8063-020748c842a6.jpg?v=1733893395",
+    "title": "Russell Square Linen on Grey | Thibaut",
+    "path": "/var/www/linenwallpaper.com/public/hero-bg.jpg",
+    "niche": "linen"
+  },
+  "linenwallpaper": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/WolfGordonWallcovering_DWWG_sp10205.jpg?v=1733872393",
+    "title": "SP10206 | Wolf Gordon Wallcoverings",
+    "path": "/root/Projects/linenwallpaper/public/hero-bg.jpg",
+    "niche": "linen"
+  },
+  "recycledwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWPX-500051_Ash_Wallcovering.jpg?v=1775677216",
+    "title": "Ash Wallcovering | Phillipe Romano",
+    "path": "/var/www/recycledwallpaper.com/public/hero-bg.jpg",
+    "niche": "recycled,sustainable,natural"
+  },
+  "silverleafwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/wbs-39604-sample-moroccan-grey-horizontal-tight-emboss-hollywood-wallcoverings.jpg?v=1775726619",
+    "title": "Moroccan Grey Horizontal Tight Emboss | Hollywood Wallcoverings",
+    "path": "/var/www/silverleafwallpaper.com/public/hero-bg.jpg",
+    "niche": "silver,leaf,metallic"
+  },
+  "restaurantwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Capri_A192-331-New_Moon.jpg?v=1773852667",
+    "title": "Capri - New Moon Wallcovering | Versa Designed Surfaces",
+    "path": "/var/www/restaurantwallpaper.com/public/hero-bg.jpg",
+    "niche": "dramatic,hospitality"
+  },
+  "hotelwallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/vanadis-sif.jpg?v=1777480231",
+    "title": "Verwood Type II Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/hotelwallcoverings.com/public/hero-bg.jpg",
+    "niche": "hospitality,contract"
+  },
+  "hospitalitywallcoverings": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58149-sample-artisma-croco-vinyl-hollywood-wallcoverings.jpg?v=1775699189",
+    "title": "Artisma Croco Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/hospitalitywallcoverings/public/hero-bg.jpg",
+    "niche": "hospitality,contract,dramatic"
+  },
+  "hospitalitywallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xjp-47224-sample-barnard-type-ii-vinyl-hollywood-wallcoverings.jpg?v=1775702447",
+    "title": "Barnard Type II Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/hospitalitywallpaper.com/public/hero-bg.jpg",
+    "niche": "hospitality,contract,dramatic"
+  },
+  "selfadhesivewallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/133d96b3aa7d494901789845e7ac309b.jpg?v=1750789753",
+    "title": "Ono Island Bamboo Trellis | Jeffrey Stevens",
+    "path": "/var/www/selfadhesivewallpaper.com/public/hero-bg.jpg",
+    "niche": "peel,modern"
+  },
+  "apartmentwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/nina_crop_7513506742323.jpg?v=1775523849",
+    "title": "Benmore 02 - Green Wallcovering | Nina Campbell",
+    "path": "/var/www/apartmentwallpaper.com/public/hero-bg.jpg",
+    "niche": "modern,neutral"
+  },
+  "greenwallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Galleria_Nile_Pond.jpg?v=1772570094",
+    "title": "Nile - Pond Graffiti-Free Vinyl | Phillipe Romano",
+    "path": "/var/www/greenwallcoverings.com/public/hero-bg.jpg",
+    "niche": "green,botanical,natural"
+  },
+  "fabricwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Bianca-Pina-1024x914_1e805301-0050-4df0-8e87-a2fb92690ee4.jpg?v=1774996133",
+    "title": "Moonbeam - Ananas | Commercial Fabric | Los Angeles Fabrics",
+    "path": "/var/www/fabricwallpaper.com/public/hero-bg.jpg",
+    "niche": "fabric,textile"
+  },
+  "retrowalls.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/turn-tun-6297.jpg?v=1762311508",
+    "title": "Turn - Sienna | Wolf Gordon Wallcoverings",
+    "path": "/var/www/retrowalls.com/public/hero-bg.jpg",
+    "niche": "retro,geometric,mod"
+  },
+  "retrowalls": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58014-sample-contempo-diamond-vinyl-hollywood-wallcoverings.jpg?v=1775709042",
+    "title": "Contempo Diamond Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/retrowalls/public/hero-bg.jpg",
+    "niche": "retro,geometric,mod"
+  },
+  "restorationwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/702-56_image1_0736eedb-b7a8-4431-b286-40617c3207de.jpg?v=1646104917",
+    "title": "Einar blue Sample Wallcovering | Sandberg",
+    "path": "/var/www/restorationwallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,damask"
+  },
+  "agedwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLOURISH-NUIT.jpg?v=1774995655",
+    "title": "Gardens - Midnight | Commercial Fabric | Los Angeles Fabrics",
+    "path": "/var/www/agedwallpaper.com/public/hero-bg.jpg",
+    "niche": "distressed,traditional,vintage"
+  },
+  "museumwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eac4614636df7bdf23f1c3a5f4060af8.png?v=1775520488",
+    "title": "Nina Campbell Fabric - Off-White Wallcovering | Nina Campbell",
+    "path": "/var/www/museumwallpaper.com/public/hero-bg.jpg",
+    "niche": "archival,traditional,classic"
+  },
+  "1800swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0163238_midolin-pewter-texture-wallpaper.jpg?v=1775164750",
+    "title": "Midolin - Pewter Residential Wallpaper | Jeffrey Stevens",
+    "path": "/var/www/1800swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1890swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Aire-Si_Era_Red-Maple_1736784006.jpg?v=1772568739",
+    "title": "Estate Thomas - Coffee Vegan Leather | Phillipe Romano",
+    "path": "/var/www/1890swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1900swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/AF16124.jpg?v=1774069619",
+    "title": "Holly Trellis Fabric – Sage | Anna French",
+    "path": "/var/www/1900swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1920swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0163383_siv-chestnut-botanical-wallpaper.jpg?v=1775164763",
+    "title": "Siv - Chestnut Residential Wallpaper | Jeffrey Stevens",
+    "path": "/var/www/1920swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1930swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Carville-Matahari-1-1024x914.jpg?v=1775007954",
+    "title": "Mangrove - Sunrise | Commercial Fabric | Los Angeles Fabrics",
+    "path": "/var/www/1930swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1940swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/AF57830.jpg?v=1774328457",
+    "title": "Peacock Toile - Blue and Green Fabric | Anna French",
+    "path": "/var/www/1940swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1950swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xld-47710-sample-ferryhill-type-ii-vinyl-hollywood-wallcoverings.jpg?v=1775712768",
+    "title": "Ferryhill Type II Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/1950swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1960swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0067075_anemone-mustard-floral-wallpaper.jpg?v=1775164027",
+    "title": "Anemone - Mustard Residential Wallpaper | Jeffrey Stevens",
+    "path": "/var/www/1960swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1970swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DUR-72076-sample-clean.jpg?v=1774484300",
+    "title": "La Roche Durable Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/1970swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "1980swallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xwc-53223-sample-doral-faux-silk-durable-hollywood-wallcoverings.jpg?v=1775710296",
+    "title": "Doral Faux Silk Durable | Hollywood Wallcoverings",
+    "path": "/var/www/1980swallpaper.com/public/hero-bg.jpg",
+    "niche": "traditional,classic,damask,floral"
+  },
+  "textilewallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/HLW-73038-sample-clean.jpg?v=1774483153",
+    "title": "Benedict Canyon Sisal | Hollywood Wallcoverings",
+    "path": "/var/www/textilewallpaper.com/public/hero-bg.jpg",
+    "niche": "textile,fabric,woven"
+  },
+  "handcraftedwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DUR-72446-sample-clean.jpg?v=1774485605",
+    "title": "Siti Diabla Durable Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/handcraftedwallpaper.com/public/hero-bg.jpg",
+    "niche": "handcraft,artisan,textured"
+  },
+  "madagascarwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xgr-6206-sample-le-embossed-faux-grasscloth-hollywood-wallcoverings.jpg?v=1775721648",
+    "title": "Le Embossed Faux Grasscloth | Hollywood Wallcoverings",
+    "path": "/var/www/madagascarwallpaper.com/public/hero-bg.jpg",
+    "niche": "grasscloth,natural,textured"
+  },
+  "naturalwallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0058486_benson-dark-blue-variegated-stripe-wallpaper.jpg?v=1775164639",
+    "title": "Benson - Dark Blue Residential Wallpaper | Jeffrey Stevens",
+    "path": "/var/www/naturalwallcoverings.com/public/hero-bg.jpg",
+    "niche": "natural,grasscloth,textured"
+  },
+  "stringwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/lyr-3381_8.jpg?v=1762300016",
+    "title": "Lyra - Slate | Wolf Gordon Wallcoverings",
+    "path": "/var/www/stringwallpaper.com/public/hero-bg.jpg",
+    "niche": "string,textured,natural"
+  },
+  "architecturalwallcoverings.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/HLW-73084-sample-clean.jpg?v=1774483407",
+    "title": "Zebra Drive - Metal and Wood | Hollywood Wallcoverings",
+    "path": "/var/www/architecturalwallcoverings.com/public/hero-bg.jpg",
+    "niche": "contract,modern,textured"
+  },
+  "contractwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Galleria_Nile_Pitch.jpg?v=1772570091",
+    "title": "Nile - Pitch Graffiti-Free Vinyl | Phillipe Romano",
+    "path": "/var/www/contractwallpaper.com/public/hero-bg.jpg",
+    "niche": "contract,commercial,performance"
+  },
+  "healthcarewallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DUR-72444-sample-clean.jpg?v=1774485595",
+    "title": "Siti Diabla Durable Vinyl | Hollywood Wallcoverings",
+    "path": "/var/www/healthcarewallpaper.com/public/hero-bg.jpg",
+    "niche": "contract,performance,vinyl"
+  },
+  "mylarwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/XWJ-52481-sample-clean.jpg?v=1774481363",
+    "title": "Sesame Contemporary Embossed Durable | Hollywood Wallcoverings",
+    "path": "/var/www/mylarwallpaper.com/public/hero-bg.jpg",
+    "niche": "mylar,metallic,vinyl"
+  },
+  "vinylwallpaper.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xwq-52973-sample-flagler-embossed-durable-hollywood-wallcoverings.jpg?v=1775713325",
+    "title": "Flagler Embossed Durable | Hollywood Wallcoverings",
+    "path": "/var/www/vinylwallpaper.com/public/hero-bg.jpg",
+    "niche": "vinyl"
+  },
+  "ffepurchasing": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58168-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724221",
+    "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/ffepurchasing/public/hero-bg.jpg",
+    "niche": ""
+  },
+  "wallpapercanada": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xbg-44001-sample-baja-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775701937",
+    "title": "Baja Grasscloth Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/wallpapercanada/public/hero-bg.jpg",
+    "niche": ""
+  },
+  "wallpapersback.com": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/fls-2756-sample-faux-leaf-squares-hollywood-wallcoverings.jpg?v=1775712017",
+    "title": "Faux Leaf Squares | Hollywood Wallcoverings",
+    "path": "/var/www/wallpapersback.com/public/hero-bg.jpg",
+    "niche": ""
+  },
+  "wallpapersback": {
+    "url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xwj-52442-sample-rivington-rice-paper-durable-vinyl-hollywood-wallcoverings.jpg?v=1775730742",
+    "title": "Rivington Rice Paper Durable Vinyl | Hollywood Wallcoverings",
+    "path": "/root/Projects/wallpapersback/public/hero-bg.jpg",
+    "niche": ""
+  }
+}
\ No newline at end of file
diff --git a/data/standalone-hero-paths.tsv b/data/standalone-hero-paths.tsv
new file mode 100644
index 0000000..614a376
--- /dev/null
+++ b/data/standalone-hero-paths.tsv
@@ -0,0 +1,59 @@
+1800swallpaper.com	/var/www/1800swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1890swallpaper.com	/var/www/1890swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1900swallpaper.com	/var/www/1900swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1920swallpaper.com	/var/www/1920swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1930swallpaper.com	/var/www/1930swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1940swallpaper.com	/var/www/1940swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1950swallpaper.com	/var/www/1950swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1960swallpaper.com	/var/www/1960swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+1970swallpaper.com	/var/www/1970swallpaper.com/public/hero-bg.jpg	3451792fb4e0c337a9658aad9374e2d9	727670
+1980swallpaper.com	/var/www/1980swallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+agedwallpaper.com	/var/www/agedwallpaper.com/public/hero-bg.jpg	2bc901b8397a7bef37b754713f8dc5fd	1732218
+apartmentwallpaper.com	/var/www/apartmentwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+architecturalwallcoverings.com	/var/www/architecturalwallcoverings.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+blockprintedwallpaper.com	/var/www/blockprintedwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+contractwallpaper.com	/var/www/contractwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+corkwallcovering.com	/var/www/corkwallcovering.com/public/hero-bg.jpg	2bc901b8397a7bef37b754713f8dc5fd	1732218
+embroideredwallpaper.com	/var/www/embroideredwallpaper.com/public/hero-bg.jpg	3451792fb4e0c337a9658aad9374e2d9	727670
+fabricwallpaper.com	/var/www/fabricwallpaper.com/public/hero-bg.jpg	f35492f22172af1c29d806cfad298d04	1733849
+ffepurchasing	/root/Projects/ffepurchasing/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+glitterwalls.com	/var/www/glitterwalls.com/public/hero-bg.jpg	83e2a8a6621222452c86309ca57e6bb6	924190
+glitterwalls	/root/Projects/glitterwalls/public/hero-bg.jpg	83e2a8a6621222452c86309ca57e6bb6	924190
+greenwallcoverings.com	/var/www/greenwallcoverings.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+handcraftedwallpaper.com	/var/www/handcraftedwallpaper.com/public/hero-bg.jpg	3451792fb4e0c337a9658aad9374e2d9	727670
+healthcarewallpaper.com	/var/www/healthcarewallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+hospitalitywallcoverings	/root/Projects/hospitalitywallcoverings/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+hospitalitywallpaper.com	/var/www/hospitalitywallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+hotelwallcoverings.com	/var/www/hotelwallcoverings.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+jutewallpaper.com	/var/www/jutewallpaper.com/public/hero-bg.jpg	0a4c2038b23cdd0e388ab1f1393aabb6	655169
+linenwallpaper.com	/var/www/linenwallpaper.com/public/hero-bg.jpg	f35492f22172af1c29d806cfad298d04	1733849
+linenwallpaper	/root/Projects/linenwallpaper/public/hero-bg.jpg	f35492f22172af1c29d806cfad298d04	1733849
+madagascarwallpaper.com	/var/www/madagascarwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+metallicwallpaper.com	/var/www/metallicwallpaper.com/public/hero-bg.jpg	83e2a8a6621222452c86309ca57e6bb6	924190
+micawallpaper.com	/var/www/micawallpaper.com/public/hero-bg.jpg	83e2a8a6621222452c86309ca57e6bb6	924190
+museumwallpaper.com	/var/www/museumwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+mylarwallpaper.com	/var/www/mylarwallpaper.com/public/hero-bg.jpg	83e2a8a6621222452c86309ca57e6bb6	924190
+naturalwallcoverings.com	/var/www/naturalwallcoverings.com/public/hero-bg.jpg	f35492f22172af1c29d806cfad298d04	1733849
+pastelwallpaper.com	/var/www/pastelwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+raffiawallcoverings.com	/var/www/raffiawallcoverings.com/public/hero-bg.jpg	07402abdbabc8516f3021c4866b041b0	591093
+raffiawalls.com	/var/www/raffiawalls.com/public/hero-bg.jpg	de4f4119181651484262c53e5317f46a	372450
+raffiawalls	/root/Projects/raffiawalls/public/hero-bg.jpg	de4f4119181651484262c53e5317f46a	372450
+recycledwallpaper.com	/var/www/recycledwallpaper.com/public/hero-bg.jpg	57fe837150a8db800afca2f00b5c83d1	514930
+restaurantwallpaper.com	/var/www/restaurantwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+restorationwallpaper.com	/var/www/restorationwallpaper.com/public/hero-bg.jpg	eb7d8f81ce0725789f35973f78d9f4d0	392749
+retrowalls.com	/var/www/retrowalls.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+retrowalls	/root/Projects/retrowalls/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+saloonwallpaper.com	/var/www/saloonwallpaper.com/public/hero-bg.jpg	de4f4119181651484262c53e5317f46a	372450
+screenprintedwallpaper.com	/var/www/screenprintedwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+selfadhesivewallpaper.com	/var/www/selfadhesivewallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+silkwallcoverings.com	/var/www/silkwallcoverings.com/public/hero-bg.jpg	d89ea0145f5a29fd9a47c821124ac02a	170432
+silkwallpaper.com	/var/www/silkwallpaper.com/public/hero-bg.jpg	3451792fb4e0c337a9658aad9374e2d9	727670
+silkwallpaper	/root/Projects/silkwallpaper/public/hero-bg.jpg	3451792fb4e0c337a9658aad9374e2d9	727670
+silverleafwallpaper.com	/var/www/silverleafwallpaper.com/public/hero-bg.jpg	b421c861fae9b88117ce7716434c80e5	2348295
+stringwallpaper.com	/var/www/stringwallpaper.com/public/hero-bg.jpg	d18f6c51943d095dc00af35a5be52f17	150997
+suedewallpaper.com	/var/www/suedewallpaper.com/public/hero-bg.jpg	af97d87d280a95110686f67415d40f91	2288863
+textilewallpaper.com	/var/www/textilewallpaper.com/public/hero-bg.jpg	f35492f22172af1c29d806cfad298d04	1733849
+vinylwallpaper.com	/var/www/vinylwallpaper.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+wallpapercanada	/root/Projects/wallpapercanada/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+wallpapersback.com	/var/www/wallpapersback.com/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
+wallpapersback	/root/Projects/wallpapersback/public/hero-bg.jpg	985a251baf2ebc3d7dd7b5828b14e752	1906130
diff --git a/scripts/gen-standalone-heroes.js b/scripts/gen-standalone-heroes.js
new file mode 100644
index 0000000..d2cb8ed
--- /dev/null
+++ b/scripts/gen-standalone-heroes.js
@@ -0,0 +1,143 @@
+#!/usr/bin/env node
+/**
+ * gen-standalone-heroes.js
+ *
+ * The standalone DW sister sites (decade sites, material sites, hospitality
+ * cluster, etc.) each serve a STATIC public/hero-bg.jpg. ~51 of 59 of them
+ * serve byte-identical template images (31 share one 1.9MB file). This assigns
+ * every standalone site a UNIQUE, clean, niche-relevant catalog image —
+ * globally disjoint from the 344 generic-fleet heroes (data/hero-allocation.json)
+ * AND from each other.
+ *
+ * Input : data/standalone-hero-paths.tsv  (domain \t diskpath \t md5 \t size)
+ * Output: data/standalone-hero-allocation.json  { domain: {url,title,path} }
+ *
+ * A companion deploy step downloads each url over the prod side into the disk
+ * path, replacing the duplicated template hero.
+ */
+const fs = require('fs');
+const path = require('path');
+const catalog = require('../shared/catalog');
+const { sortProducts } = require('../shared/sort');
+
+const ROOT = path.join(__dirname, '..');
+const PATHS_TSV = path.join(ROOT, 'data', 'standalone-hero-paths.tsv');
+const OUT = path.join(ROOT, 'data', 'standalone-hero-allocation.json');
+
+function hash(str) {
+  let h = 0x811c9dc5;
+  for (let i = 0; i < str.length; i++) { h ^= str.charCodeAt(i); h = Math.imul(h, 0x01000193); }
+  return h >>> 0;
+}
+function isCleanImg(url) {
+  if (!url || typeof url !== 'string' || !/^https:\/\//i.test(url)) return false;
+  const l = url.toLowerCase();
+  if (/(_swatch|_thumb|-thumb|icon|sprite|placeholder|\.svg)/.test(l)) return false;
+  return true;
+}
+// prefer lifestyle/room shots (/files/) over square product swatches (/products/)
+function heroScore(p) {
+  return (/\/files\//.test(p.image_url) ? 1000 : 0);
+}
+
+// Map a site slug to niche keywords so its hero matches the material/theme.
+function nicheKeywords(slug) {
+  const s = slug.replace(/\.(com|org|net)$/, '');
+  const map = [
+    ['silk', ['silk']], ['linen', ['linen']], ['cork', ['cork']],
+    ['grasscloth', ['grasscloth', 'grass cloth']], ['grass', ['grasscloth']],
+    ['raffia', ['raffia']], ['jute', ['jute']], ['mica', ['mica']],
+    ['metallic', ['metallic', 'metal']], ['glitter', ['glitter', 'mica', 'metallic']],
+    ['goldleaf', ['gold', 'leaf', 'metallic']], ['silverleaf', ['silver', 'leaf', 'metallic']],
+    ['suede', ['suede', 'velvet']], ['flock', ['flock', 'flocked', 'velvet']],
+    ['embroider', ['embroider', 'stitch']], ['chinoiserie', ['chinoiserie', 'floral', 'scenic']],
+    ['blockprint', ['block print', 'print']], ['screenprint', ['screen', 'print']],
+    ['handcraft', ['handcraft', 'artisan', 'textured']], ['handmade', ['handcraft', 'artisan']],
+    ['mylar', ['mylar', 'metallic', 'vinyl']], ['vinyl', ['vinyl']],
+    ['pastel', ['pastel', 'soft']], ['recycled', ['recycled', 'sustainable', 'natural']],
+    ['restoration', ['traditional', 'damask']], ['retro', ['retro', 'geometric', 'mod']],
+    ['saloon', ['damask', 'bordeaux', 'dramatic']], ['string', ['string', 'textured', 'natural']],
+    ['textile', ['textile', 'fabric', 'woven']], ['fabric', ['fabric', 'textile']],
+    ['museum', ['archival', 'traditional', 'classic']],
+    ['glassbeaded', ['beaded', 'glass', 'metallic']], ['glassbead', ['beaded', 'glass']],
+    ['naturaltextile', ['natural', 'textile', 'woven']], ['naturalwall', ['natural', 'grasscloth', 'textured']],
+    ['hospitality', ['hospitality', 'contract', 'dramatic']], ['hotel', ['hospitality', 'contract']],
+    ['healthcare', ['contract', 'performance', 'vinyl']], ['restaurant', ['dramatic', 'hospitality']],
+    ['contract', ['contract', 'commercial', 'performance']], ['commercial', ['contract', 'commercial']],
+    ['apartment', ['modern', 'neutral']], ['architectural', ['contract', 'modern', 'textured']],
+    ['aged', ['distressed', 'traditional', 'vintage']], ['green', ['green', 'botanical', 'natural']],
+    ['madagascar', ['grasscloth', 'natural', 'textured']],
+    ['custommural', ['mural', 'scenic']], ['mural', ['mural', 'scenic']],
+    ['selfadhesive', ['peel', 'modern']], ['best', ['floral', 'classic']],
+    ['carmel', ['coastal', 'neutral', 'natural']], ['monterey', ['coastal', 'natural']],
+    ['malibu', ['coastal', 'blue', 'natural']],
+  ];
+  for (const [k, kw] of map) if (s.includes(k)) return kw;
+  // decade sites (1800s..1980s) + generic → traditional/classic
+  if (/^\d{3,4}s?wallpaper/.test(s) || /^\d{4}/.test(s)) return ['traditional', 'classic', 'damask', 'floral'];
+  return [];
+}
+
+function main() {
+  const rows = fs.readFileSync(PATHS_TSV, 'utf8').trim().split('\n').map(l => {
+    const [domain, diskpath, md5, size] = l.split('\t');
+    return { domain, diskpath, md5, size: +size };
+  });
+
+  // seed claimed set with the 344 generic-fleet heroes so standalone never collides with them
+  const claimed = new Set();
+  try {
+    const gen = JSON.parse(fs.readFileSync(path.join(ROOT, 'data', 'hero-allocation.json'), 'utf8'));
+    Object.values(gen).forEach(arr => arr.forEach(u => claimed.add(u)));
+  } catch (e) { console.warn('WARN: generic hero-allocation.json not found — standalone may collide with generic'); }
+
+  const cleanGlobal = catalog.nicheSlice({ pos: [], neg: [], types: ['Wallcovering'], limit: 100000 })
+    .filter(p => isCleanImg(p.image_url));
+
+  // most-constrained (smallest niche pool) first
+  const prepared = rows.map(r => {
+    const kw = nicheKeywords(r.domain);
+    let pool = kw.length
+      ? catalog.nicheSlice({ pos: kw, neg: [], types: [], limit: 6000 }).filter(p => isCleanImg(p.image_url))
+      : cleanGlobal.slice();
+    if (pool.length < 6) pool = cleanGlobal.slice();
+    // hero-quality first (lifestyle shots), then newest
+    pool = sortProducts(pool, 'newest').sort((a, b) => heroScore(b) - heroScore(a));
+    return { ...r, kw, pool };
+  }).sort((a, b) => a.pool.length - b.pool.length);
+
+  const alloc = {};
+  const pick = (pool, seed) => {
+    if (!pool.length) return null;
+    const start = hash(seed) % pool.length;
+    for (let i = 0; i < pool.length; i++) {
+      const p = pool[(start + i) % pool.length];
+      if (claimed.has(p.image_url)) continue;
+      claimed.add(p.image_url);
+      return p;
+    }
+    return null;
+  };
+
+  for (const site of prepared) {
+    let p = pick(site.pool, site.domain);
+    if (!p) p = pick(cleanGlobal, site.domain + ':global'); // last resort
+    if (!p) { console.error('FATAL no image for', site.domain); process.exit(1); }
+    alloc[site.domain] = { url: p.image_url, title: p.title || '', path: site.diskpath, niche: site.kw.join(',') };
+  }
+
+  // verify uniqueness across standalone AND vs generic
+  const urls = Object.values(alloc).map(a => a.url);
+  const dup = urls.length - new Set(urls).size;
+  fs.writeFileSync(OUT, JSON.stringify(alloc, null, 2));
+  console.log(`[standalone] ${rows.length} sites · ${new Set(urls).size} unique heroes · ${dup} dup`);
+  if (dup !== 0) { console.error('FATAL duplicates'); process.exit(1); }
+  // also confirm zero overlap with generic
+  const gen = (() => { try { return JSON.parse(fs.readFileSync(path.join(ROOT, 'data', 'hero-allocation.json'), 'utf8')); } catch { return {}; } })();
+  const genSet = new Set(Object.values(gen).flat());
+  const overlap = urls.filter(u => genSet.has(u)).length;
+  console.log(`[standalone] overlap with generic-fleet heroes: ${overlap} (must be 0)`);
+  if (overlap !== 0) process.exit(1);
+  console.log(`[standalone] wrote ${path.relative(ROOT, OUT)} ✓`);
+}
+main();

← 5d250af Honor prior bleachfriendly drop (domain not renewing): remov  ·  back to Dw Domain Fleet  ·  Standalone hero apply + size-vetted retry scripts (prod-side 10970b9 →