save changes

This commit is contained in:
2025-08-19 02:04:04 +02:00
parent 5278bbe2c7
commit da12056d5a
6 changed files with 913 additions and 26 deletions

View File

@ -0,0 +1,152 @@
[
{
"subGenre": "Mockumentaries",
"scene": "Behind-the-scenes of a struggling community theatre putting on an over-ambitious historical epic (light/sardonic)",
"sceneVariants": [
"Paper props labeled in felt-tip pen",
"An actor nervously adjusting a wildly inaccurate costume",
"A director coaching a soldier's valiant but clearly memorized cry",
"A collapsed folding backdrop revealing a janitor's mop",
"A program printed with misspelled cast names"
],
"actions": [
"Quick reaction cuts of the cast over-explaining motivations to an unseen interviewer",
"An earnest rehearsal interrupted by a misguided special effect that produces a comedic mess",
"Cutaways to absurd promotional material promising 'authenticity guaranteed'",
"Intertitle captions that contradict what interviewees are saying"
],
"camera": "Documentary-style hand-held coverage combined with awkwardly placed fixed interview framings and intentionally 'found' phone footage",
"accents": [
"uneven practical stage light micro-bleed and costume micro-stitch inconsistency",
"lo-fi mic rustle and a faint audience cough sound bed"
],
"mood": "playful, wry, affectionate",
"lighting": "practical stage & fluorescent backstage mixes with occasional overexposed highlight",
"style": "mockumentary observational satire"
},
{
"subGenre": "Mockumentaries",
"scene": "A faux wildlife documentary following a 'rare urban raccoon with refined habits' (light/absurd)",
"sceneVariants": [
"A raccoon perched by a tiny table with a tea cup",
"A narrator solemnly describing the raccoon's 'taste for eclectic cutlery'",
"Zoomed macro on a raccoon's paw as though it's a delicate instrument",
"A staged tracking camera that the raccoon clearly interacts with",
"A habitat 'researcher' holding a clipboard and whispering conspiratorially"
],
"actions": [
"Deadpan interviews with 'experts' offering ludicrously specific behavioral taxonomy",
"Slow-motion inserts underscoring mundane raccoon behaviors as if epic",
"On-screen scientific graphics that collapse into silly footnotes",
"A staged rescue that intentionally misreads the animal's intentions"
],
"camera": "Nature doc conventions exaggerated: long telephoto sim, cinematic slow-mo, and mock-serious macro inserts",
"accents": [
"fur micro-detail with comically over-graded color and exaggerated telephoto compression",
"fake stat overlay micro-typography and affectless narration tone"
],
"mood": "irreverent, deadpan, whimsical",
"lighting": "naturalistic golden-hour emulation with playfully cinematic grading",
"style": "satirical nature documentary"
},
{
"subGenre": "Mockumentaries",
"scene": "A startup pitch doc where founders earnestly explain an obviously useless product to investors (light/biting)",
"sceneVariants": [
"A glass-walled meeting room with smug post-it-note charts",
"Overconfident prototypes that wobble and spark",
"A whiteboard drawing devolving into incomprehensible acronyms",
"An investor nodding politely while checking their watch",
"A press kit filled with jargon-heavy one-liners"
],
"actions": [
"Founder uses sweeping hand gestures and invented metrics to sell the product",
"Cutaways to user testimonials that are obviously scripted and absurd",
"A demo fails spectacularly, followed by a forced laugh and pivot talk",
"On-screen lower-thirds show inflated titles like 'Chief Visionary Officer'"
],
"camera": "Clean corporate-style B-roll juxtaposed with handheld 'authentic' testimonial inserts and awkward cut-in close-ups",
"accents": [
"plastic prototype micro-scratch and coffee-cup micro-ring on the table",
"powdered enthusiasm in voiceover micro-intonation"
],
"mood": "satirical, cringe, gleefully critical",
"lighting": "bright corporate practicals with occasional cold tungsten to puncture optimism",
"style": "mock-expository tech startup documentary"
},
{
"subGenre": "Mockumentaries",
"scene": "Local council 'truth and reconciliation' meeting that is increasingly petty and performative (dark/comic)",
"sceneVariants": [
"A municipal meeting room with a single flag and a stale coffee urn",
"Citizens using formal language for personal grievances",
"A slide deck with bullet points devolving into passive-aggressive memes",
"A gavel tapped to reassert authority over trivial disputes",
"An earnest volunteer handing out flyers for a cause that nobody follows"
],
"actions": [
"Close interviews reveal wildly different recollections of the same small incident",
"Assembly members perform ritual apologies that avoid responsibility",
"Cutaways to archived 'minutes' that read like a tragicomedy",
"A final board vote decided by a single petulant abstention"
],
"camera": "Static institutional coverage with awkwardly framed talking heads and intentionally stale cutaway B-roll",
"accents": [
"paper micro-curl on agenda pages and microphone micro-pop when speakers change",
"low-level room hum micro-noise and fluorescent micro-flicker"
],
"mood": "dry, ironic, mildly uncomfortable",
"lighting": "flat institutional fluorescents with occasional warm practicals during personal moments",
"style": "satirical civic mockumentary"
},
{
"subGenre": "Mockumentaries",
"scene": "A faux cult documentary exploring the rise of an innocuous neighborhood fad treated as a sweeping social movement (light/absurd)",
"sceneVariants": [
"Members wearing matching but clearly homemade insignia",
"Merchandise stalls selling intentionally useless tokens",
"A slow-motion montage of followers performing a silly ritual",
"A founder interviewed with an exaggerated origin myth",
"A timeline graphic that compresses months into 'eras' with pompous titles"
],
"actions": [
"Intercut interviews with an escalating sense of earnestness and absurd commitment",
"Archival-style footage staged to look older and more significant than it is",
"A staged scandal that parodies cult controversies but over trivial details",
"Final tongue-in-cheek montage showing the fad's decline into harmless nostalgia"
],
"camera": "Hybrid archival emulation with modern interview rigs and intentionally inconsistent aspect ratios to imply document age",
"accents": [
"home-printed badge micro-fiber and staged 'aged' film grain micro-scratch",
"overly sincere music cue micro-swell"
],
"mood": "satirical, absurd, affectionate",
"lighting": "variable—archival warm sepia for flashbacks and honest daylight for present interviews",
"style": "playful cultural mockumentary"
},
{
"subGenre": "Mockumentaries",
"scene": "A mock 'lost' instructional film dramatizing simple household tasks as high drama (light/parodic)",
"sceneVariants": [
"A 16mm instructional card instructing 'how to fold a fitted sheet' as if a life-or-death skill",
"A narrator building suspense over banal steps",
"Close-ups on hands with exaggerated importance",
"A dramatic reenactment with overly intense actors",
"Title cards with faux-authoritative citations"
],
"actions": [
"Deadpan step-by-step sequences treated with cinematic gravity",
"Cutaways to faux-experts citing irrelevant 'research' for comedic effect",
"Slow crossfades exaggerate the transition between each mundane step",
"An escalating montaged score that makes the task feel epic"
],
"camera": "Intentionally reverent framing and slow push-ins to amplify banality into drama",
"accents": [
"16mm film grain micro-scratch and instructional card micro-paper texture",
"excessive reverb on narration micro-tone"
],
"mood": "parodic, deadpan, affectionate",
"lighting": "studio-key dramatic lighting applied to everyday objects",
"style": "parodic instructional mockumentary"
}
]

View File

@ -0,0 +1,202 @@
[
{
"subGenre": "Nature Documentaries",
"scene": "Pre-dawn rainforest canopy survey with researchers suspended in rope bridges (dark/immersive)",
"sceneVariants": [
"Mist weaving between layered leaf crowns",
"Bioluminescent fungi faintly glowing on a fallen log",
"A distant primate call answered in echo",
"A dew-laden spiderweb glistening in headlamp beams",
"Canopy platforms silhouetted against a slowly brightening sky"
],
"actions": [
"Researchers record vocalizations while carefully tagging a sleeping bird",
"A slow cable-camera glide follows an individual moving along a branch",
"Macro cutaways capture feather micro-structure and insect micro-interactions",
"On-screen graphics overlay species names and conservation status"
],
"camera": "Long cable-suspension wide to show canopy scale, intimate rigs for close macro, and stabilized hand-held for researcher POVs",
"accents": [
"leaf micro-rain beads and moss micro-fiber detail",
"headlamp micro-beam and breath micro-fog in cold pockets"
],
"mood": "awe, attentive, reverent",
"lighting": "soft pre-dawn diffuse light with selective headlamp practicals",
"style": "immersive field-naturalist documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Kelp forest dive with a small submersible tracking a migrating sea otter (light/ethereal)",
"sceneVariants": [
"Sunlight shafts filtering through dense kelp blades",
"Air bubbles trailing a diver's ascent",
"A curious otter inspecting a camera housing",
"Silty particles catching the light like slow snow",
"A hovering school of fish forming kinetic patterns"
],
"actions": [
"Close gentle interaction as the otter retrieves tagged equipment",
"Slow tracking shots show the otter's foraging behavior and kelp architecture",
"Hydrophone audio overlays with natural underwater soundscapes",
"Scientific annotations appear showing movement telemetry"
],
"camera": "Underwater wide lenses for environment, close macro housings for behavior, submersible-mounted stable tracking",
"accents": [
"water micro-sheen on camera domes and kelp micro-vein texture",
"bubble micro-surface tension and particulate micro-diffusion"
],
"mood": "curious, serene, intimate",
"lighting": "filtered natural sunlight underwater with practical submersible fills",
"style": "marine-behavioral observational documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Nocturnal desert transect where researchers track elusive rodents under moonlight (dark/minimalist)",
"sceneVariants": [
"Moonlit dunes with low-contrast ridgelines",
"A tiny footprint leading into a sheltered crevice",
"Thermal camera reveal of hidden burrows",
"A distant coyote silhouette atop a ridge",
"A dune camp with wind-sculpted tarps and ephemeral equipment"
],
"actions": [
"Thermal and infrared inserts reveal movement invisible to naked eye",
"Quiet capture and release of a tagged rodent with minimal disturbance",
"A researcher records notes by red-filtered light so as not to alarm subjects",
"A time-lapse shows dune morphology shifting overnight"
],
"camera": "Long-lens tele and thermal inserts for detection, low-noise audio capture, and discreet close-ups for delicate handling",
"accents": [
"sand micro-grain texture and moon micro-glow on horizon",
"thermal micro-palette and red-filter micro-illumination"
],
"mood": "patient, sparse, scientific",
"lighting": "moonlight-dominant low-key with thermal/instrument practicals",
"style": "nocturnal field-study documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Alpine meadow pollinator census at golden hour (light/delicate)",
"sceneVariants": [
"Bees and butterflies visiting swathes of alpine wildflowers",
"Mist rolling from a valley as sun warms the slope",
"A close focus on proboscis and pollen grains",
"A shepherd dog resting against a weathered fencepost",
"Tiny hand-labeled specimen vials arranged on a cloth"
],
"actions": [
"Macro sequences showing pollination mechanics in crisp slow motion",
"Researchers count and annotate species on tablet overlays",
"Cutaways to ecological graphics showing pollinator-plant networks",
"A short interview with a local botanist about seasonal shifts"
],
"camera": "Macro lenses for insect detail, gentle dolly across meadow for scale, and stabilized close-up on hands at work",
"accents": [
"pollen micro-grain detail and wing micro-membrane translucence",
"sun micro-rim on flower petals and herb micro-scent haze"
],
"mood": "delicate, hopeful, scientifically curious",
"lighting": "warm golden-hour light with shallow depth-of-field highlights",
"style": "micro-ecology observational piece"
},
{
"subGenre": "Nature Documentaries",
"scene": "Arctic ice floe survey documenting seal pupping season (light/fragile)",
"sceneVariants": [
"Low winter sun glancing on blue ice ridges",
"Tiny seal pups huddled on thin ice",
"A zodiac approaching carefully to avoid disturbance",
"Annotated satellite overlays showing shrinking floe extents",
"A battered field tent and scientific flags"
],
"actions": [
"Gentle observational coverage of nursing and pup behavior",
"Scientists deploy non-invasive sensors and tag locations",
"Aerial drone shots show fracturing floes and retreating pack ice",
"On-screen context provides historical sea-ice trend data"
],
"camera": "Cold-rated telephoto for distant behavior, drone for floe scale, and stabilized close-up lenses for animal detail",
"accents": [
"ice micro-crystal detail and fur micro-fluff on pups",
"breath micro-condensation and fabric micro-stitch on parkas"
],
"mood": "fragile, urgent, tender",
"lighting": "low-angle cool daylight with high-definition contrast",
"style": "polar conservation documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Migratory bird stopover wetlands captured at dawn with flocks taking flight (light/epic)",
"sceneVariants": [
"Silhouetted flocks forming complex murmuration patterns",
"Reed beds bending under an early breeze",
"Field technicians counting flocks from a blind",
"GPS-tagged birds shown on animated migratory maps",
"A shallow reflection mosaic on calm water"
],
"actions": [
"Time-sliced aerial reveals flight paths and congregation density",
"Close audio recorders display call signatures with spectrogram overlays",
"Scientists explain habitat importance with overlay conservation metrics",
"A community restoration team prepares nest boxes and monitoring stations"
],
"camera": "High-altitude drone for flock geometry, long lens for individual behavior, and stabilized boat-based coverage for human activity",
"accents": [
"feather micro-barb detail and water micro-ripple texture",
"GPS micro-ui overlays and spectrogram micro-detail"
],
"mood": "expansive, rhythmic, informative",
"lighting": "soft rising sunlight with reflective low-angle highlights",
"style": "migration-focused scientific documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Volcanic island succession showing life returning to cooled lava fields (light/resilient)",
"sceneVariants": [
"Black new rock interspersed with pioneering moss patches",
"A hermit crab scuttling across a basalt plain",
"A time-lapse of lichen colonization across months",
"A veteran field ecologist pointing to micro-habitats in crevices",
"Steam vents hissing in background at the island's heart"
],
"actions": [
"Macro-to-wide transitions demonstrate ecological succession stages",
"Interviews with ecologists explain nutrient cycles and colonizers",
"Animated overlays show decades of regrowth and species arrival",
"A final celebratory montage of returned seabirds and plant cover"
],
"camera": "Macro lenses for early colonizers, wide environmental panoramas, and stabilized time-lapse rigs",
"accents": [
"lava micro-pitting and moss micro-felt detail",
"salt micro-crystallization and wind micro-etching on rock"
],
"mood": "resilient, instructive, quietly triumphant",
"lighting": "bright island sunlight with strong shadow definition",
"style": "succession and resilience nature documentary"
},
{
"subGenre": "Nature Documentaries",
"scene": "Urban wildlife corridor at dusk showing foxes, hedgehogs, and foraging birds (light/hopeful)",
"sceneVariants": [
"A narrow greenbelt threaded between apartment blocks",
"Garden feeders and makeshift hedgehog homes",
"A fox slipping through a chain-link gap",
"Children peering over a fence with quiet curiosity",
"Streetlights casting soft pools across grass"
],
"actions": [
"Observational shots of nocturnal foraging with motion-activated cameras",
"Local residents describe coexistence strategies in short interviews",
"Conservation groups install habitat improvements with quick explanatory inserts",
"Before-and-after B-roll shows measurable increase in local biodiversity"
],
"camera": "Discrete trail cameras for behavior, gentle handheld for resident interviews, and stabilized night-lapse for corridor activity",
"accents": [
"fur micro-texture and grass micro-blade detail",
"streetlight micro-halo and motion-sensor micro-trigger sound beds"
],
"mood": "optimistic, communal, pragmatic",
"lighting": "soft dusk with practical urban lighting and subtle fill",
"style": "urban-nature coexistence documentary"
}
]

View File

@ -0,0 +1,202 @@
[
{
"subGenre": "Short Films",
"scene": "One-shot apartment elevator ride where two strangers share a life-changing secret (light/intimate)",
"sceneVariants": [
"A cramped elevator with a faulty fluorescent overhead",
"Close-up of intertwined hands as a bag slips",
"A practiced smile that falters mid-floor",
"A hastily scribbled note handed as the doors open",
"Silent pause before both step out into different lives"
],
"actions": [
"Two characters exchange fragmented confessions over a few floors",
"A small prop (ring, photograph, ticket) changes hands to signify trust",
"A brief misunderstanding resolves into mutual compassion",
"Doors close on a changed expression and the sound of the elevator returning"
],
"camera": "Single continuous handheld for the one-shot intimacy, subtle push-ins on reaction beats",
"accents": [
"fluorescent micro-flicker and fabric micro-weave on coats",
"elevator micro-echo sound bed and button micro-press clicks"
],
"mood": "tense then tender",
"lighting": "flat practical with a warm fill on closing beat",
"style": "minimalist one-shot short"
},
{
"subGenre": "Short Films",
"scene": "Late-night laundromat where a lost friendship is mended between cycles (light/nostalgic)",
"sceneVariants": [
"Rows of spinning chrome machines reflecting neon",
"A faded mixtape sleeve tucked beneath quarters",
"A child's drawing taped to a folding table",
"Steam fogging glass during a sudden laugh",
"Hands folding identical shirts in slow unison"
],
"actions": [
"Old friends trade small confessions while folding laundry",
"A shared memory triggers a spontaneous reconciliation ritual",
"Montage of folding intercut with flash memory fragments",
"A final handshake that replaces an awkward silence"
],
"camera": "Medium static coverage with delicate close-ups and rhythmic cutting to match wash cycles",
"accents": [
"metal micro-polish on washer rims and detergent micro-suds",
"tape micro-peel texture and coin micro-clink"
],
"mood": "warm, forgiving, bittersweet",
"lighting": "neon practicals with soft diffusion",
"style": "character vignette short"
},
{
"subGenre": "Short Films",
"scene": "Experimental: a fragmented memory portrayed through jump-cuts, practical effects, and layered sound (dark/abstract)",
"sceneVariants": [
"A cracked mirror reflecting multiple partial faces",
"A kitchen clock with its hands spinning irregularly",
"Superimposed footsteps across different floors",
"A hand tracing a child's name on frosted glass",
"An out-of-sync mouth movement against whispered audio"
],
"actions": [
"Rapid montage stitches together non-linear memory fragments",
"Practical in-camera effects create seamless and disorienting transitions",
"Sound design becomes the narrative driver, with whispers and pulses guiding emotion",
"A final still frame holds, allowing meaning to coalesce or dissolve"
],
"camera": "Intimate close-ups, unpredictable zooms, and purposeful jump-cut rhythm",
"accents": [
"film micro-grain overlays and tape micro-hiss in audio layers",
"practical micro-shadow play and textured micro-scratches"
],
"mood": "disorienting, meditative, evocative",
"lighting": "high-contrast practicals with occasional strobe accents",
"style": "experimental collage short"
},
{
"subGenre": "Short Films",
"scene": "Dark comedy: a suburban garage sale where the seller slowly realizes every item reveals an embarrassing secret (dark/wry)",
"sceneVariants": [
"Packed folding tables with mismatched tchotchkes",
"A neighbor laughing too loudly at a strangely specific anecdote",
"A price tag revealing the original owner's private note",
"A child pointing at an awkward object with blunt curiosity",
"A banner reading 'Everything Must Go' flapping comically"
],
"actions": [
"Customers barter over items while inadvertently disclosing personal gossip",
"Seller attempts damage control as each object exposes another memory",
"A sudden reveal that transforms the sale into community catharsis",
"A shadow of embarrassment dissolves into shared laughter"
],
"camera": "Observational handheld with quick reaction close-ups and wider community coverage",
"accents": [
"paper micro-tag creases and plastic micro-fade on goods",
"ambient suburban micro-traffic and distant lawn-mower hum"
],
"mood": "funny, awkward, humane",
"lighting": "natural afternoon daylight with warm fill",
"style": "deadpan suburban short"
},
{
"subGenre": "Short Films",
"scene": "Silent-era homage: a black-and-white montage of a street vendor's brief triumph and loss (light/poignant)",
"sceneVariants": [
"Hand-painted signage and a wooden cart with brass fittings",
"A passerby's hat flying off in a sudden breeze",
"A mime-like exchange over a single coin",
"A close on a newspaper headline signaling changing times",
"A slow dissolve to an empty cart at dusk"
],
"actions": [
"Pantomime-driven encounters create expressive, wordless narrative beats",
"Physical comedy transitions into a quietly tragic payoff",
"Intertitles provide ironic commentary and emotional context",
"A final tableau underscores the cycle of hope and loss"
],
"camera": "Static and measured framing, occasional gentle tracking to mimic period cinematography",
"accents": [
"film micro-grain and intertitle micro-typefaces",
"wood micro-patina and coin micro-glint"
],
"mood": "nostalgic, bittersweet, poetic",
"lighting": "high-key contrast emulating early cinema",
"style": "silent-era homage short"
},
{
"subGenre": "Short Films",
"scene": "Stop-motion: an intimate letter delivered by a handmade puppet across a miniature city (light/charming)",
"sceneVariants": [
"Tiny streetlights casting soft pools of warmth",
"A scaled mailbox with a tiny flag that pops",
"Close-ups on articulated fingers and stitched fabric",
"A layered miniature skyline with painted clouds",
"An elaborate sequence of gears and pulleys driving movement"
],
"actions": [
"Carefully choreographed stop-motion delivers tactile narrative beats",
"Physical interactions emphasize craftsmanship and small-scale emotion",
"A montage of tiny rituals culminating in the letter reaching its destination",
"A reveal that the letter heals a small, personal rift"
],
"camera": "Macro-focused frame-by-frame capture with precise puppet articulation and slow dolly reveals",
"accents": [
"fabric micro-stitch and paper micro-fiber detail",
"stop-motion micro-jerk used intentionally for charm"
],
"mood": "warm, whimsical, handcrafted",
"lighting": "soft practicals with careful shadow sculpting",
"style": "artisanal stop-motion short"
},
{
"subGenre": "Short Films",
"scene": "Micro-thriller: a locked convenience store at dawn with a lone clerk and a suspicious customer (dark/suspenseful)",
"sceneVariants": [
"Flickering refrigeration lights and a humming neon 'Open' sign",
"A receipt printer spooling in the background",
"A hulking coat concealing a tense silhouette",
"A pack of gum left conspicuously near the register",
"A CCTV monitor showing an empty street outside"
],
"actions": [
"Slow escalation of mistrust through glances, offhand questions, and minor provocations",
"Tension punctuated by tiny physical actions (a forced laugh, a slammed can)",
"A twist reveal reframes earlier benign details into threat or relief",
"An abrupt blackout leaves the resolution ambiguous"
],
"camera": "Tight medium coverage with selective handheld inserts to heighten unease; long takes for simmering tension",
"accents": [
"plastic micro-crinkle on snack wrappers and fluorescent micro-hum",
"CCTV micro-grain and faint street micro-ambience"
],
"mood": "claustrophobic, tense, uncertain",
"lighting": "cold practical fluorescents with a single warmer key for the clerk",
"style": "micro-thriller short"
},
{
"subGenre": "Short Films",
"scene": "Romantic vignette: two strangers exchange notes on opposite benches in a park over a single summer afternoon (light/delicate)",
"sceneVariants": [
"Dappled sunlight through plane-tree leaves",
"A paper plane gliding between benches",
"A carved initials heart on an old bench armrest",
"A stray dog weaving between the silence and notes",
"A wristwatch ticking prominently during a pause"
],
"actions": [
"A quiet correspondence develops via folded notes and small, thoughtful gestures",
"Soundless montages of parallel actions emphasize connection without meeting",
"A final meeting is implied rather than shown, leaving space for imagination",
"A closing visual motif recalls the very first exchanged note"
],
"camera": "Soft telephoto separations to create intimacy across physical distance; gentle cross-cutting montage",
"accents": [
"paper micro-fold creases and leaf micro-rustle",
"ambient park micro-sound with bird micro-chirps"
],
"mood": "tender, hopeful, wistful",
"lighting": "warm afternoon golden-hour with shallow depth-of-field",
"style": "romantic vignette short"
}
]

View File

@ -0,0 +1,202 @@
[
{
"subGenre": "Superhero Films",
"scene": "Nighttime rooftop confrontation above a rain-slicked neon city (dark/epic)",
"sceneVariants": [
"Sparks from a distant helicopter rotor silhouette the skyline",
"A dropped glove flutters toward the alley below",
"Neon signage reflected in puddles at the ledge",
"A villain's henchman falls past the camera in slow motion",
"A rooftop antenna creates dramatic rim-light"
],
"actions": [
"Hero grapples to regain balance as a thrown projectile shatters nearby glass",
"Villain delivers an ideological monologue while circling the rooftop",
"A sudden rescue jump redirects the conflict toward civilians below",
"A decisive punch sends a crate tumbling into frame to reveal a hidden clue"
],
"camera": "Dynamic combination of sweeping crane, tight handheld on faces for micro-expression, and slow-mo inserts for impact",
"accents": [
"rain micro-refraction on cape and visor micro-glass sheen",
"neon micro-bloom and rooftop grit micro-texture"
],
"mood": "tense, heroic, cinematic",
"lighting": "high-contrast rim and practical neon with splashes of rain-reflect catchlights",
"style": "superhero blockbuster with grounded gritty accents"
},
{
"subGenre": "Superhero Films",
"scene": "Small-town origin: discovery of the artifact in a dusty farmhouse attic (light/quiet)",
"sceneVariants": [
"Sunbeams cutting through attic dust and rafters",
"A family photo with a hidden burn mark",
"An old radio crackling with a faint emergency broadcast",
"A curious child accidentally activating a subtle glow",
"Handwritten notes tucked into a leather box"
],
"actions": [
"Character tentatively places the artifact on a table and it hums to life",
"Close-up on a palm absorbing a faint charge and twitching with new power",
"Cut to a montage of small displays lighting up across town",
"A neighbor's dog howls as a far-off siren responds"
],
"camera": "Warm close-ups and intimate dolly pushes for discovery; macro inserts on artifact details",
"accents": [
"dust micro-motes and wood micro-grain on attic floorboards",
"artifact micro-glow halo and faint electronic micro-buzz"
],
"mood": "awe, curiosity, quiet destiny",
"lighting": "soft warm daylight with a single artifact-driven glow",
"style": "origin-story drama with magical-realism touches"
},
{
"subGenre": "Superhero Films",
"scene": "Hero in civilian disguise navigating a bustling public parade before an ambush (light/chaotic)",
"sceneVariants": [
"Confetti in the air and banners snapping in a mild breeze",
"Crowd reaction shots with flags and phone-recording hands",
"A street vendor startled as a costumed figure darts past",
"A parade float passing with a cryptic logo",
"Security cameras on lamp posts angled at the crowd"
],
"actions": [
"Hero maintains cover while subtly redirecting pedestrians away from danger",
"A sudden explosion of themed balloons reveals hidden drones",
"Split-second decision to reveal powers to save a collapsing stand",
"A quick symbolic gesture that rallies bystanders to help"
],
"camera": "Fluid steadicam weaving through crowd, punctuated with rapid close handheld inserts during action",
"accents": [
"confetti micro-fiber texture and practical parade light micro-speculars",
"phone-screen micro-glare and crowd micro-interaction sound beds"
],
"mood": "urgent, public stakes, heroic restraint",
"lighting": "bright daylight with strong practical highlights and lens flare",
"style": "urban-action with emotional public drama"
},
{
"subGenre": "Superhero Films",
"scene": "Secret lab beneath city: a containment breach and moral choice (dark/forbidding)",
"sceneVariants": [
"Vapor trails from cryogenic chambers",
"Warning lights cycling red along stainless steel walls",
"A shattered containment window with frost crystals",
"A technician's abandoned tablet with an urgent note",
"A digital countdown frozen on a cracked screen"
],
"actions": [
"Containment alarms trigger as an experiment destabilizes",
"Hero must decide whether to rescind a protocol or risk collateral damage",
"A flash of power stabilizes the reactor but leaves ambiguous consequences",
"Aftermath contains evidence suggesting the villain manipulated the experiment"
],
"camera": "Clinical tracking shots for lab machinery, jittery handheld during the breach, and close-in reaction shots",
"accents": [
"metal micro-grain and condensation micro-beads on glass",
"alarm micro-pulse lighting and screen micro-pixel grid"
],
"mood": "tense, ethical, ominous",
"lighting": "cool practicals, strobed alarm reds, and monitor-dominant fills",
"style": "techno-thriller superhero sequence with moral complexity"
},
{
"subGenre": "Superhero Films",
"scene": "Midnight alley rescue where the hero's methods are questioned by an onlooker (dark/gritty)",
"sceneVariants": [
"A discarded child's toy under a chain-link fence",
"Steam rising from a sewer grate",
"A wary bystander filming from a doorway",
"Graffiti telling a local urban legend about a masked savior",
"A fractured streetlamp flickering overhead"
],
"actions": [
"Hero stops a mugging with swift non-lethal force and helps the victim up",
"An onlooker confronts the hero later, asking why they cross the line",
"Hero avoids answering and leaves a glittering emblem behind",
"Cutaways to police report files implying mixed public opinion"
],
"camera": "Handheld close to the action, then pulled back to a voyeuristic fixed frame as the moral debate unfolds",
"accents": [
"sewer-steam micro-haze and fabric micro-weave of the hero's gloves",
"streetlamp micro-flicker and pavement micro-moisture speculars"
],
"mood": "ambiguous, gritty, introspective",
"lighting": "low-key practicals with single-source highlights and deep shadows",
"style": "street-level vigilante drama"
},
{
"subGenre": "Superhero Films",
"scene": "Training montage in abandoned subway tunnels (dark/kinetic)",
"sceneVariants": [
"Old tiled columns with posters half-torn",
"A makeshift obstacle course of discarded crates and pipes",
"Sparks from improvised sparring equipment",
"A chalkboard with tactical diagrams scribbled and erased",
"A single fluorescent tube buzzing above"
],
"actions": [
"Accelerated sequences of parkour, gadget testing, and tactical drills",
"Hero and mentor exchange terse coaching advice mid-exertion",
"Close micro-shots of callused hands and focused eyes",
"A final timed run that ends in a confident stance on a platform edge"
],
"camera": "Rapid cutting rhythm with whip-pans, intercut slow-motion for form emphasis, and POV inserts",
"accents": [
"concrete micro-pitting and sweat micro-sheen on brows",
"metal micro-echo and fluorescent micro-flicker"
],
"mood": "determined, focused, emergent power",
"lighting": "directional practicals with gritty tungsten cast and selective fill",
"style": "heightened training montage blending realism and stylization"
},
{
"subGenre": "Superhero Films",
"scene": "Citywide team-up on a stormy night to stop a collapsing bridge (dark/heroic)",
"sceneVariants": [
"Suspension cables snapping with distant thunder",
"Headlights streaming through heavy rain like comet tails",
"Civilians on the bridge quickly being shepherded to safety",
"A silhouetted team emblem briefly visible in lightning",
"Emergency vehicles forming a chaotic perimeter"
],
"actions": [
"Team executes synchronized maneuvers to prevent structural collapse",
"One member sacrifices their position to hold a failing cable",
"Heroic rallying dialogue over comms unites the team and spurs the rescue",
"Final slow reveal of saved civilians applauding from safe distance"
],
"camera": "Epic wide shots to show scale, medium action coverage, and emotional close-ups for the sacrifice beats",
"accents": [
"rain micro-streaks on visors and metal micro-spray from water impact",
"cable micro-fray detail and thunder micro-room tone"
],
"mood": "epic, sacrificial, triumphant",
"lighting": "strobe-like lightning with vehicle practicals and searchlight beams",
"style": "ensemble superhero set-piece balancing spectacle and heart"
},
{
"subGenre": "Superhero Films",
"scene": "Dawn aftermath: quiet rooftop reflection and the cost of vigilance (light/melancholic)",
"sceneVariants": [
"A battered emblem patched and pinned to rooftop chain",
"Dawn birds hesitantly returning to powerlines",
"A folded newspaper headline about the night's events",
"A small bouquet left anonymously beside a memorial plaque",
"Footprints in rooftop gravel leading to the ledge"
],
"actions": [
"Hero surveys the city with a weary expression and pocketed trinkets from those saved",
"A quiet radio transmission reports no casualties; a soft exhale is heard",
"Cut to a montage of news headlines and personal messages hinting at ongoing consequences",
"A final isolated close-up of the hero removing their mask and staring at the skyline"
],
"camera": "Slow contemplative crane pullback with intimate close-ups punctuating the quiet aftermath",
"accents": [
"fabric micro-tear and sunrise micro-gold rim on cape",
"paper micro-fiber detail on newspaper and rooftop micro-grit"
],
"mood": "reflective, weary, hopeful",
"lighting": "soft warm dawn with low contrast and gentle rim-light",
"style": "character-driven quiet epilogue"
}
]

View File

@ -18,10 +18,10 @@ const servers = [
baseUrl: process.env.SERVER1_COMFY_BASE_URL,
outputDir: process.env.SERVER1_COMFY_OUTPUT_DIR,
},
{
baseUrl: process.env.SERVER2_COMFY_BASE_URL,
outputDir: process.env.SERVER2_COMFY_OUTPUT_DIR,
},
//{
// baseUrl: process.env.SERVER2_COMFY_BASE_URL,
// outputDir: process.env.SERVER2_COMFY_OUTPUT_DIR,
//},
];
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));

View File

@ -5,7 +5,7 @@ import { logger } from './lib/logger';
import { callLMStudio } from './lib/lmstudio';
async function main() {
//await insertGenres();
await insertGenres();
await generatePrompts();
process.exit();
}
@ -13,23 +13,63 @@ async function main() {
async function insertGenres() {
logger.info('Starting genre insertion...');
try {
const genresPath = path.join(__dirname, 'data', 'genres.json');
const genresData = JSON.parse(fs.readFileSync(genresPath, 'utf-8'));
const dataDir = path.join(__dirname, 'data');
const files = fs.readdirSync(dataDir).filter((f) => f.endsWith('.json'));
for (const genre in genresData) {
if (genresData.hasOwnProperty(genre)) {
const items = genresData[genre];
for (let item of items) {
if (Array.isArray(item)) {
for (const subItem of item) {
await processItem(genre, subItem);
for (const file of files) {
// skip the central genres.json (if present) since individual files represent sub-genres
if (file === 'genres.json') continue;
const filePath = path.join(dataDir, file);
let raw: string;
try {
raw = fs.readFileSync(filePath, 'utf-8');
} catch (err) {
logger.warn(`Could not read file ${file}: ${err}`);
continue;
}
let jsonData: any;
try {
jsonData = JSON.parse(raw);
} catch (err) {
logger.warn(`Skipping ${file} - invalid JSON: ${err}`);
continue;
}
// Derive a genre from the filename (e.g. abstract_art_3d_renderings.json -> abstract_art)
const base = path.basename(file, '.json');
const parts = base.split('_');
const genre = parts[0] || base;
// Normalize to an array of items
let items: any[] = [];
if (Array.isArray(jsonData)) {
items = jsonData;
} else if (typeof jsonData === 'object' && jsonData !== null) {
// If there is an 'items' property, prefer it
if (Array.isArray((jsonData as any).items)) {
items = (jsonData as any).items;
} else {
// Otherwise, try to collect object values that look like items (fallback)
const vals = Object.values(jsonData);
for (const v of vals) {
if (Array.isArray(v)) {
items = items.concat(v);
} else if (v && typeof v === 'object') {
items.push(v);
}
}
}
}
for (const item of items) {
if (item && typeof item === 'object') {
await processItem(genre, item);
}
}
}
}
logger.info('Finished processing genres.');
} catch (error) {
logger.error('Error processing genres:', error);
@ -92,23 +132,112 @@ async function generatePrompts() {
async function processItem(genre: string, item: any) {
if (item && typeof item === 'object' && !Array.isArray(item)) {
const { subGenre, scene, action, camera } = item;
const {
subGenre,
scene,
sceneVariants,
actions,
action,
camera,
accents,
mood,
lighting,
style,
} = item;
// Check if the item already exists
// Determine final scene text
const finalScene =
(typeof scene === 'string' && scene.trim().length > 0)
? scene
: Array.isArray(sceneVariants) && sceneVariants.length > 0
? sceneVariants[0]
: '';
// Choose one random action (fall back to legacy 'action' if needed)
let chosenAction = '';
if (Array.isArray(actions) && actions.length > 0) {
chosenAction = actions[Math.floor(Math.random() * actions.length)];
} else if (typeof action === 'string') {
chosenAction = action;
}
// Choose random accents (pick 1 or 2 if available)
let chosenAccents = '';
if (Array.isArray(accents) && accents.length > 0) {
const pickCount = Math.min(accents.length, Math.random() < 0.5 ? 1 : 2);
const shuffled = accents.slice().sort(() => Math.random() - 0.5);
chosenAccents = shuffled.slice(0, pickCount).join('; ');
}
// Build a meta string that includes accents, mood, lighting, and style
const metaParts: string[] = [];
if (chosenAccents) metaParts.push(`Accents: ${chosenAccents}`);
if (mood) metaParts.push(`Mood: ${mood}`);
if (lighting) metaParts.push(`Lighting: ${lighting}`);
if (style) metaParts.push(`Style: ${style}`);
const meta = metaParts.join(' | ');
// Compose the action text that will be stored in the DB (so later prompt generation can use it)
const actionText = [chosenAction, meta].filter(Boolean).join(' ').trim();
// Generate image_prompt and video_prompt using LM Studio (with retries)
let imagePrompt: string | null = null;
let videoPrompt: string | null = null;
const lmInput = `
Generate two prompts in JSON: { "imagePrompt": "...", "videoPrompt": "..." }.
Image prompt: ~125 words describing a still image representing the scene. Include lighting, mood, style and any accents provided.
Video prompt: ~125 words describing an 8-second piece starting from the scene, describing the action and camera movement. Include lighting, mood, style and any accents provided.
Use the following details:
- Genre: ${genre}
- Sub-Genre: ${subGenre}
- Scene: ${finalScene}
- Action: ${chosenAction}
- Camera: ${camera || 'neutral camera movement'}
- Accents: ${chosenAccents || 'none'}
- Mood: ${mood || 'n/a'}
- Lighting: ${lighting || 'n/a'}
- Style: ${style || 'n/a'}
`;
let lmResponse: any = null;
for (let attempt = 0; attempt < 5; attempt++) {
try {
lmResponse = await callLMStudio(lmInput);
if (lmResponse && (lmResponse.imagePrompt || lmResponse.videoPrompt)) {
imagePrompt = lmResponse.imagePrompt || null;
videoPrompt = lmResponse.videoPrompt || null;
break;
}
} catch (err) {
logger.warn(`LMStudio attempt ${attempt + 1} failed for ${genre} - ${subGenre}: ${err}`);
}
// small delay between attempts could be added if desired
}
// If LM didn't return prompts, still insert with null prompts but log warning
if (!imagePrompt || !videoPrompt) {
logger.warn(`LMStudio did not return both prompts for ${genre} - ${subGenre} - ${finalScene}. Inserting without prompts.`);
}
// Check if the item already exists (compare stored action text so duplicates are avoided)
const existing = await query(
'SELECT id FROM video WHERE genre = ? AND sub_genre = ? AND scene = ? AND action = ? AND camera = ?',
[genre, subGenre, scene, action, camera]
[genre, subGenre, finalScene, actionText, camera]
) as any[];
if (existing.length === 0) {
// Insert the new item
// Insert the new item with generated prompts
await query(
'INSERT INTO video (genre, sub_genre, scene, action, camera) VALUES (?, ?, ?, ?, ?)',
[genre, subGenre, scene, action, camera]
'INSERT INTO video (genre, sub_genre, scene, action, camera, image_prompt, video_prompt) VALUES (?, ?, ?, ?, ?, ?, ?)',
[genre, subGenre, finalScene, actionText, camera, imagePrompt, videoPrompt]
);
logger.info(`Inserted: ${genre} - ${subGenre} - ${scene}`);
logger.info(`Inserted: ${genre} - ${subGenre} - ${finalScene}`);
logger.info(`Image prompt: ${imagePrompt}`);
logger.info(`Video prompt: ${videoPrompt}`);
} else {
logger.info(`Skipped (exists): ${genre} - ${subGenre} - ${scene}`);
logger.info(`Skipped (exists): ${genre} - ${subGenre} - ${finalScene}`);
}
}
}