[object Object]

← back to Wallco Ai

cherry-blossom-animals: prompt library mirroring wisteria — hanami-style canopy, animals face UP, public-domain ukiyo-e motif

9e4293da9ae66e7d2bdce38a48c66904d899f564 · 2026-05-13 12:06:05 -0700 · SteveStudio2

Files touched

Diff

commit 9e4293da9ae66e7d2bdce38a48c66904d899f564
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 13 12:06:05 2026 -0700

    cherry-blossom-animals: prompt library mirroring wisteria — hanami-style canopy, animals face UP, public-domain ukiyo-e motif
---
 scripts/cherry_blossom_animal_prompts.js | 191 +++++++++++++++++++++++++++++++
 1 file changed, 191 insertions(+)

diff --git a/scripts/cherry_blossom_animal_prompts.js b/scripts/cherry_blossom_animal_prompts.js
new file mode 100644
index 0000000..8ee92ec
--- /dev/null
+++ b/scripts/cherry_blossom_animal_prompts.js
@@ -0,0 +1,191 @@
+#!/usr/bin/env node
+/**
+ * Cherry-blossom + drunk/stoned animals prompt library — drinking animals
+ * perched on horizontal flowering cherry branches, gazing UP through a canopy
+ * of falling petals. Inherits the same butterfly-trellis / wisteria heritage
+ * botanical aesthetic (refined, no Warhol neon).
+ *
+ * SAME RULES AS WISTERIA — flowers-only, no leaves, no foliage. Cherry-blossom
+ * tradition (Japanese ukiyo-e, hanami) is itself a flowers-only motif so this
+ * is a natural fit rather than a constraint dodge. Public-domain Japanese
+ * iconography — no Hinson/Schumacher trademark exposure to worry about.
+ *
+ * Compositional shift vs. wisteria: cherry blossoms grow on horizontal
+ * flowering branches, so the "face UP" rule manifests as "perched on a
+ * blossoming branch with chin lifted to the canopy of petals above" rather
+ * than "dangling from a cascading raceme."
+ *
+ * Used by:
+ *   - scripts/generate-cherry-blossom-animals-batch.js  (when scaffolded)
+ *   - direct CLI: node scripts/cherry_blossom_animal_prompts.js 100
+ */
+
+const DRUNK_TABLEAUX = [
+  'chin tipped up to the blossoms, mouth wide, mid-guzzle from a long-stemmed wine glass — burgundy sloshing down its throat',
+  'face turned skyward through falling petals, draining a frosted vodka bottle held in both paws, condensation dripping onto its chest',
+  'looking straight up at the cherry canopy, mid-toast with a champagne flute, golden bubbles cascading',
+  'head tilted back among the blossoms, gulping from an emerald-green sake bottle, foam sliding down its chin',
+  'gazing up through pink petals, sipping rosé from a coupe glass, pink liquid clinging to its lip',
+  'mouth agape toward the flowering canopy, pouring a martini directly into its open jaw, two olives mid-air',
+  'snout aimed at the sky beneath the cherry branches, draining a crystal whiskey tumbler, last amber drops trailing',
+  'chin up beneath cascading petals, both paws gripping a sake bottle, lime wedge falling from its lips',
+  'tipsy, head lolled back staring at the blossom canopy, half-empty cognac snifter dangling',
+  'face skyward through the falling petals, mid-swig from a stout pint, cream head smeared across its muzzle',
+];
+
+const STONED_TABLEAUX = [
+  'eyes half-closed and turned upward to the cherry blossoms, slow contented sip from a coupe glass',
+  'face beatifically upturned to the petal canopy, slow-motion drink from a wine glass, dreamy smile',
+  'chin lifted toward the falling petals, blissed-out, savoring a slow pour of amber whiskey down its throat',
+  'eyes lidded, gazing up through the cherry blossoms, languid sip from a tall pilsner',
+  'mellow, head tilted back amid swirling petals, slow guzzle from a frosted sake bottle, deeply at peace',
+  'face dreamily upturned beneath the canopy, sucking on a long curly straw rooted in a magnum of champagne',
+  'eyes soft and skyward, savoring a slow sip from a martini glass, cheeks rosy with petal-pink reflection',
+  'tranquil, gazing up through pink blossoms, both paws hugging a bottle of rosé tipped into its mouth',
+  'mouth lazily open to the blossoms, slow sip from a cognac snifter, blissful trance',
+  'eyes closed, chin up beneath falling petals, contented sigh mid-sip from a champagne flute',
+];
+
+const CHERRY_COLORS = [
+  'pale-pink yoshino cherry blossoms, classic hanami softness, dense five-petal clusters',
+  'snow-white somei cherry blossoms streaked with faint blush at the petal base',
+  'deep coral kanzan double-flowered cherry blossoms, lush and saturated',
+  'pale-blush shidare weeping-cherry blossoms, drooping branches heavy with flowers',
+  'rose-red kawazu cherry blossoms, early-spring vivid pink',
+  'cream-and-pink okame cherry blossoms, gradient petals from ivory to soft rose',
+  'almost-white ukon (yellow-green) cherry blossoms, unusual chartreuse-tinged ivory',
+  'antique mauve fugenzo double cherry blossoms, mature blush tones',
+  'pure ivory shogetsu cherry blossoms, refined and ceremonial',
+  'sunset-coral autumn cherry blossoms (jugatsuzakura), warm and rare',
+];
+
+const NO_LEAVES =
+  'NO leaves, NO foliage, NO bamboo, NO ferns, NO palm fronds, NO banana, NO tropical, NO jungle, NO drooping greenery — cherry blossoms are the ONLY botanical element, branches show flowers only (per ukiyo-e tradition), and any incidental greenery must point UPWARD, never downward or sideways';
+
+const PALETTES = [
+  'emerald and bone-ivory background, gold-leaf accents, archival watercolor',
+  'sage green and cream, blush-pink highlights, soft dusty rose accents',
+  'deep navy ink on bone white, monochromatic indigo gradient',
+  'champagne on midnight navy, subtle metallic shimmer',
+  'forest green with iridescent jewel-tone accents — sapphire, amethyst, emerald, ruby',
+  'soft watercolor pastels — peach, lavender, mint, sky blue — on warm cream',
+  'antique gold and matte black, ivory background',
+  'powder blue and parchment, faded sepia accents',
+  'oxblood and cream, dark olive accents',
+  'pale-celadon green on bone-white, faded coral accents, vintage botanical',
+  'sumi-e ink wash on rice-paper cream, pale-pink accents only',
+  'edo-era woodblock palette — indigo, vermillion, ochre, ivory',
+];
+
+const COMPOSITIONS = [
+  'allover seamless repeat, animals scattered along horizontal flowering cherry branches, ALL faces tipped UP toward the petal canopy above',
+  'half-drop repeat, animals nested in blossom clusters, ALL chins lifted upward through falling petals',
+  'tight 24-inch tile repeat, dense scatter of upward-gazing animals among drifting cherry petals',
+  'mirrored axis repeat, animals in pairs facing skyward beneath an arching blossom canopy',
+  'horizontal branch repeat, branches traversing the wall left-to-right, animals climbing and looking up',
+  'tossed-bouquet repeat, animals interspersed with cut cherry sprays, all faces lifted to the petals',
+  'large-scale mural repeat, hero animal centered face-up under a hero blossom branch, petals radiating',
+  'striped column repeat, animals in vertical bands gazing upward through layered blossom canopies',
+  'diagonal flow repeat, blossom branches guiding the eye upward, animals turned to follow',
+  'allover botanical repeat with breathing space, every animal’s gaze tilted toward the cherry petals above',
+  'ukiyo-e-inspired asymmetric repeat, a single arching branch dominates each tile, animals perched and looking up',
+  'falling-petal repeat — drifting petals fill the negative space, animals anchor among the flowering branches, all eyes skyward',
+];
+
+const STYLES = [
+  'fine archival watercolor in the style of a 19th-century botanical plate',
+  'gouache illustration with crisp ink linework, gallery-quality',
+  'hand-pulled silkscreen wallpaper, soft layered tones, refined repeat',
+  'chinoiserie-inspired brushwork on aged silk, mineral pigment',
+  'block-printed wallpaper feel, hand-carved edges, archival paper grain',
+  'pen-and-watercolor garden journal aesthetic, refined and personal',
+  'mid-century botanical lithograph, slight halftone, archival print',
+  'modern fine-art illustration with luminous color washes, no neon',
+  'painterly gouache with confident brushwork, fabric-pattern feel',
+  'antique decorator wallpaper, bone-paper texture, slightly faded',
+  'ukiyo-e woodblock print, flat color planes, confident black outline',
+  'sumi-e brushwork, monochrome ink with single accent color, breathing rice-paper feel',
+];
+
+const ANIMALS_FACE_UP = [
+  'long-armed Bornean orangutan perched on a flowering cherry branch, chin tipped UP through the petals',
+  'small gibbon balancing on a blossoming bough, face skyward beneath the canopy',
+  'fluffy red panda curled on a horizontal cherry branch, gazing up through pink petals',
+  'spider monkey looped by its prehensile tail around a flowering branch, mouth open to the sky',
+  'capuchin monkey perched on a cherry branch, head tilted back to the blossoms above',
+  'sloth hugging a cherry bough, slow blink upward at the falling petals',
+  'lemur with ringed tail wrapped around a flowering stem, ears forward, looking up through the cherry canopy',
+  'small lar gibbon swinging from a blossoming branch, face turned to the petal sky',
+  'colobus monkey draped over a cherry bough, gaze tipped upward through the flowers',
+  'wide-eyed tarsier clinging to a flowering branch, neck craned skyward beneath the blossoms',
+  'koala wedged into a fork of cherry branches, face turned up to the petal canopy',
+  'tipsy raccoon balancing on a blossoming branch, snout up, eyes on the falling petals',
+  'shiba inu standing on a low cherry branch, face lifted to the canopy, tail curled (Edo-era nod)',
+  'fox cub crouched on a flowering bough, eyes upturned to the drifting petals',
+  'snow monkey (Japanese macaque) seated on a cherry branch, gaze beatifically skyward through the blossoms',
+];
+
+function pickRand(arr, exclude = new Set()) {
+  for (let tries = 0; tries < 50; tries++) {
+    const v = arr[Math.floor(Math.random() * arr.length)];
+    if (!exclude.has(v)) return v;
+  }
+  return arr[Math.floor(Math.random() * arr.length)];
+}
+
+function buildPrompt({ state = null, seed = null } = {}) {
+  const rng = (seed != null)
+    ? (() => { let s = seed >>> 0; return () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 2 ** 32; }; })()
+    : Math.random;
+  const pick = arr => arr[Math.floor(rng() * arr.length)];
+  const s = state || (rng() < 0.5 ? 'drunk' : 'stoned');
+  const tableau = s === 'drunk' ? pick(DRUNK_TABLEAUX) : pick(STONED_TABLEAUX);
+  return [
+    pick(ANIMALS_FACE_UP),
+    tableau,
+    `beneath ${pick(CHERRY_COLORS)}`,
+    NO_LEAVES,
+    `palette: ${pick(PALETTES)}`,
+    pick(STYLES),
+    pick(COMPOSITIONS),
+    'CRITICAL: every animal MUST be facing UP toward the cherry blossoms above — chin lifted, eyes/snout skyward, no animals looking down or sideways',
+    'seamless wallpaper repeat, archival quality, refined heritage botanical aesthetic, no neon, no text, no watermark',
+  ].join(', ');
+}
+
+function buildN(n, opts = {}) {
+  const out = [];
+  const usedAnimals = new Set();
+  const usedCherry = new Set();
+  for (let i = 0; i < n; i++) {
+    if (usedAnimals.size >= ANIMALS_FACE_UP.length - 1) usedAnimals.clear();
+    if (usedCherry.size >= CHERRY_COLORS.length - 1) usedCherry.clear();
+    const animal = pickRand(ANIMALS_FACE_UP, usedAnimals);   usedAnimals.add(animal);
+    const cherry = pickRand(CHERRY_COLORS, usedCherry);      usedCherry.add(cherry);
+    const state = opts.state || (Math.random() < 0.5 ? 'drunk' : 'stoned');
+    const tableau = state === 'drunk' ? pickRand(DRUNK_TABLEAUX) : pickRand(STONED_TABLEAUX);
+    out.push([
+      animal, tableau,
+      `beneath ${cherry}`,
+      NO_LEAVES,
+      `palette: ${pickRand(PALETTES)}`,
+      pickRand(STYLES),
+      pickRand(COMPOSITIONS),
+      'CRITICAL: every animal MUST be facing UP toward the cherry blossoms above — chin lifted, eyes/snout skyward',
+      'seamless wallpaper repeat, archival quality, refined heritage botanical, no neon, no text, no watermark',
+    ].join(', '));
+  }
+  return out;
+}
+
+module.exports = {
+  buildPrompt, buildN,
+  DRUNK_TABLEAUX, STONED_TABLEAUX, CHERRY_COLORS, NO_LEAVES,
+  PALETTES, STYLES, COMPOSITIONS, ANIMALS_FACE_UP,
+};
+
+if (require.main === module) {
+  const n = parseInt(process.argv[2] || '100', 10);
+  const prompts = buildN(n);
+  for (const p of prompts) console.log('---\n' + p + '\n');
+}

← e145932 wisteria-animals: also block ferns + drooping plants; any in  ·  back to Wallco Ai  ·  cherry-blossom-animals: batch runner (default N=10) — fans p 7620d5d →