#!/usr/bin/env python3 """Hero banner variants. The slot is 21:9 and the current art is a PORTRAIT image cropped to fit, so most of it is thrown away. The page scrims the left side for the headline, so the robot is composed hard right with clean dark space on the left.""" import json, os OUT = '/private/tmp/claude-501/-Users-m3ultra-Documents/097e3817-807d-439d-b5f5-95a6ffd4a1f9/scratchpad/hero' SUBJ = ("a colossal chrome monster robot standing menacingly among glowing arcade " "cabinets in a dark neon arcade, reflections on a wet tiled floor, " "composed on the right hand side of a wide frame") READS = ("ultra wide cinematic banner, the left third is empty dark negative space, " "strong silhouette, high contrast, saturated neon on near black") NOTEXT = ("completely wordless, no text, no letters, no words, no logo, no marquee " "lettering, no watermark, no signature, blank unmarked cabinet panels") STYLES = { 'neon': "1987 British home-computer game box art, airbrushed gouache, glossy highlights, screaming neon cyan and magenta on black", 'vector': "1980s arcade cabinet side art, bold flat vector shapes, thick black outlines, blazing neon on black, geometric", 'comic': "early-1990s Amiga game cover painting, chunky saturated brushwork, bold cel shading, dark vignette", 'paint': "classic 1980s airbrush poster painting, silhouettes against a glowing backlit haze, lush deep colour, cinematic", } spec = [] for k, st in STYLES.items(): p = {'prompt': f'{st}. {SUBJ}. {READS}. {NOTEXT}', 'model': 'z-image-turbo' if k == 'paint' else 'flux2-klein-4b', 'steps': 8 if k == 'paint' else 4, 'width': 1344, 'height': 576, 'seed': 13} if k == 'paint': p['quantize'] = '4' spec.append({'out': f'{OUT}/hero__{k}.png', 'operator': 'flux_local', 'params': p}) os.makedirs(OUT, exist_ok=True) json.dump(spec, open(OUT + '/spec.json', 'w'), indent=1) print(len(spec), 'hero jobs')