← back to Wallco Ai
scripts/drunk_monkeys_birds_subdued_prompts.js
224 lines
#!/usr/bin/env node
/**
* Focused prompt builder for Steve's 2026-05-20 ask — "100 new drunk-animal
* wallpapers using std colors. monkeys, birds, botanical subdued."
*
* Differs from the existing drunk_animal_prompts.js (which leans Warhol-pop
* with electric pinks + cobalt) in three ways:
* 1. Animals weighted to MONKEYS + BIRDS only (the existing builder has
* frogs/elephants/giraffes/sloths/etc. mixed in)
* 2. Botanical subjects are SUBDUED — heritage roses, dusted hydrangeas,
* dried lavender, neutrals — NOT saturated cottage-garden bombs
* 3. Palettes pulled from professional-palette-suffix.txt (the empirical
* 23,817-product reference baked into TONE_ON_TONE_SUFFIX) — earth tones,
* sage/cream/charcoal/parchment/dusty rose/ochre/slate, no neon
*
* Settlement-gate compatibility — no directional foliage, no banana/grape/
* palm/butterfly, birds are PERMITTED because Part A trio isn't satisfied
* (botanical is subdued/symmetric, not directional).
*/
const { TONE_ON_TONE_SUFFIX } = require('./fashion_palettes');
const SHARED = require('./drunk_motif_shared');
const MONKEYS = [
'wide-eyed capuchin monkey',
'long-tailed spider monkey, sloshed and woozy',
'sleepy golden lion tamarin, glassy-eyed',
'tipsy squirrel monkey, mid-stumble',
'plastered black-and-white colobus monkey',
'wobbly red howler monkey, mouth slack',
'sloshed mandrill with drooping eyelids',
'jolly white-faced saki monkey',
'drunken proboscis monkey, swaying',
'inebriated japanese macaque, blushing pink under the eyes',
'crooked-grin marmoset, holding a tiny coupe glass',
'glassy-eyed gibbon swinging slow-motion',
'long-armed orangutan with a cocktail',
'cross-eyed pygmy marmoset perched on a glass rim',
];
const BIRDS = [
'tipsy scarlet macaw with feathers ruffled',
'sloshed great horned owl, one eye half-closed',
'drunken kingfisher with cocktail in beak',
'plastered toucan with crooked beak grin',
'woozy hummingbird hovering off-balance',
'inebriated peacock, fanned feathers drooping',
'wobbly pelican mid-spit-take',
'glassy-eyed great blue heron tipping a glass',
'drunk barn owl, talons clutching a bottle',
'sloshed flamingo, one leg up, wine sloshing',
'tipsy cockatoo mid-screech, crest askew',
'drunken cedar waxwing pair sharing a coupe',
'plastered house finch hiccupping',
'wobbly long-eared owl mid-blink',
'inebriated mourning dove, eyes lidded',
];
// 80% animal-with-drink, 20% pure pair / trio scenes — gives the collection
// some variety beyond solo-portrait shots.
const TABLEAUX = [
'cradling a long-stemmed wine glass, deep burgundy sloshing over the rim',
'mid-toast with a coupe of pale rosé, head tilted',
'holding an amber whiskey tumbler in two paws, two melting ice cubes',
'gripping a frosted clear vodka glass aloft, condensation beads',
'one wing/paw on a stout pint, cream head, eyelids drooping',
'mid-pour from a cobalt-blue bottle into a shot glass, eyes crossed',
'cradling a gold-labeled cognac snifter, swirling deliberately',
'martini glass in mid-spin, two olives, vodka splashing',
'champagne flute tipped over, golden bubbles spilling, surprised face',
'pale-gold pilsner glass in one paw, amber bottle in the other',
'pair sharing a coupe, beaks/paws touching the rim simultaneously',
'trio mid-cheers, three glasses meeting at the center',
'collapsed against a flower stem, empty glass tipped beside',
'asleep curled around a bottle, mouth open, contented',
];
// Lit-joint clauses — Steve 2026-05-25: every drunk-animal must show a lit
// handrolled cannabis joint with smoke trail (small prop, not foliage).
const JOINTS = [
'a lit handrolled cannabis joint pinched between its other paw\'s fingers, a thin curl of smoke rising in a soft S',
'a smoldering joint dangling from its lips/beak, smoke trail rising in a backwards-S curl',
'a fat handrolled joint held aloft like a cigar, glowing tip, single curl of smoke',
'a half-smoked joint balanced on the rim of the cocktail glass, ribbon of smoke drifting up',
'a freshly lit joint tucked behind one ear, thin smoke trail off the tip',
'a glowing joint cradled in two claws, ember bright, smoke curling',
'a long elegant joint pinched between two fingers, ash about to fall, smoke vertical',
];
// Swinging-action clauses — Steve 2026-05-25: every drunk-animal must be
// swinging from something (vine / chandelier / rope / branch / trapeze).
const SWINGS = [
'mid-swing from a hanging garden vine, one paw gripping the vine, body arcing',
'swinging from a crystal chandelier, chain swaying, other paw raised',
'gripping a knotted rope swing, mid-arc, fur/feathers blown back by motion',
'hanging upside-down from a curving tree branch, tail looped for balance, mid-pendulum',
'mid-swing on a circus trapeze bar, legs kicked out',
'hooked around a hanging brass chandelier arm, body swinging wide',
'swinging from a flowering wisteria racemes that bows under its weight',
'perched on a wooden porch swing-seat with rope sides, kicking out',
];
// SUBDUED botanical-subjects. Soft, heritage, controlled — no directional
// variation, no jungle-tropical, no banana/palm/butterfly. Mix of native
// US wildflowers + heritage English garden.
const BOTANICALS = [
'pale heirloom roses in soft cream and dusty pink, scattered evenly',
'antique David Austin roses, butter-yellow and burgundy, controlled spacing',
'lacecap hydrangeas in dusted sage and parchment cream',
'mophead hydrangeas, faded periwinkle and dove-gray',
'soft pencil-sketched ranunculus on a parchment ground',
'dried lavender wands, muted purple-gray on bone',
'wisteria racemes, mauve-on-cream, gentle drooping',
'soft tea-stained peonies, blush and cream, sparse spacing',
'wild dogwood blossoms in chalky white on a misty ground',
'native trillium and Solomon\'s seal, soft sage on parchment',
'columbine and bleeding heart, soft pink and cream, watercolor-faded',
'magnolia branches with parchment-white blooms on a slate ground',
'softly muted camellias, antique blush on a putty ground',
'wildflower meadow rendered in chalky watercolor — sage, oat, dusty rose',
'flowering quince in soft coral on a cream ground',
'bone-white anemones scattered on a sage-gray field',
];
// Composition cues that DO NOT trigger Part A (no directional variation,
// no edge-to-edge tropical foliage, no multiple ink colors against bg)
const COMPOSITIONS = [
'half-drop repeat, generous open ground, motifs evenly spaced',
'block repeat, single-color background, motifs symmetric',
'soft scattered placement with breathing room between motifs',
'centered medallion repeat, symmetric arrangement',
'tone-on-tone vignettes, motif and ground sharing the same family',
'damask-style symmetric repeat, motif inside controlled medallion',
'stripe-and-floral, vertical bands separating motifs',
'grid placement, motifs locked in invisible 9-square grid',
];
// 8 std color palettes — earth/heritage tones pulled from the empirical
// professional reference. Each palette is 3-4 hexes with a one-line voice.
const PALETTES = [
{ name: 'sage on cream', hex: ['#A8B89E', '#F5F0E1', '#3A3530'], voice: 'soft eucalyptus sage, cream ground, deep umber accent' },
{ name: 'dusty rose & bone', hex: ['#C9A39A', '#F5F3EE', '#6B382C'], voice: 'antique dusty rose, bone ground, warm cocoa accent' },
{ name: 'charcoal & parchment', hex: ['#363636', '#F2E8D9', '#A47C5A'], voice: 'deep charcoal, parchment cream, heritage tan accent' },
{ name: 'oyster & slate', hex: ['#D3D3D3', '#808080', '#36454F', '#F0F0F0'], voice: 'oyster gray, blued slate, cream ground, ink charcoal' },
{ name: 'ochre & oat', hex: ['#C9A87C', '#F0E68C', '#4A4A4A', '#F5F0E1'], voice: 'aged ochre, oat field, walnut umber, cream' },
{ name: 'cocoa & ivory', hex: ['#6B3827', '#FFFFFF', '#D2B48C'], voice: 'dark cocoa, pure ivory, fawn middle' },
{ name: 'mineral teal & cream', hex: ['#008080', '#F5F0E1', '#363636'], voice: 'aged mineral teal, cream ground, charcoal punctuation' },
{ name: 'putty & blush', hex: ['#C9BFA7', '#FFE4E1', '#3A3530'], voice: 'warm putty, soft antique blush, deep umber' },
];
function pick(arr) { return arr[Math.floor(Math.random() * arr.length)]; }
function buildOne(i) {
// Bias 55% monkey, 35% bird, 10% mixed pair (one of each)
let animal;
const r = Math.random();
if (r < 0.55) animal = pick(MONKEYS);
else if (r < 0.90) animal = pick(BIRDS);
else animal = `${pick(MONKEYS)} sharing a drink with a ${pick(BIRDS).replace(/^tipsy |^sloshed |^drunken |^plastered |^woozy |^inebriated |^wobbly |^glassy-eyed |^drunk /, '')}`;
// 60% SHARED tiki/cognac/champagne tableaux, 40% local subdued — gives
// every design rich drink vocabulary while preserving the subdued voice.
const tableau = Math.random() < 0.6 ? pick(SHARED.TABLEAUX) : pick(TABLEAUX);
const joint = pick(SHARED.SMOKES); // joint/cigar/pipe/bong (Steve 2026-05-26)
const swing = pick(SHARED.SWINGS);
const bottleBackdrop = pick(SHARED.BOTTLE_BACKDROPS);
const texture = pick(SHARED.TEXTURE_GROUNDS);
const botanical = pick(BOTANICALS);
const composition = pick(COMPOSITIONS);
// Default = SHARED deep tone-on-tone palettes (Gucci/Hermès anchored,
// browns/greens/reds/golds). Local hex-tagged palettes kept as 30% backup.
const useDeep = Math.random() < 0.7;
const palette = useDeep
? { name: 'deep-tone-on-tone', voice: pick(SHARED.DEFAULT_PALETTES), hex: [] }
: pick(PALETTES);
const refClause = SHARED.pickReferenceClause('drunk-animals-designer');
// Build the prompt — clearly SUBDUED, clearly REPEAT-FRIENDLY, clearly
// settlement-safe (no directional/tropical foliage, controlled multicolor).
// Steve 2026-05-25 — mandatory drink + joint + swinging + bottle-backdrop
// + natural-fiber texture + Met-PD reference in every prompt.
const positive =
`Editorial wallpaper design — ${animal}, ${tableau}, also holding ${joint}, ${swing}, ` +
`${bottleBackdrop}, ` +
`${texture.voice}, ` +
(refClause ? `reference anchor: ${refClause}, ` : '') +
`set on a subdued botanical ground of ${botanical}. ` +
`Composition: ${composition}. ` +
`Palette: ${palette.voice}${palette.hex && palette.hex.length ? '; palette hex anchors: ' + palette.hex.join(', ') : ''}. ` +
`Style: hand-painted gouache illustration on heritage textured paper, ` +
`restrained luxury wallcovering, museum-archival quality, fine brushwork, ` +
`tone-on-tone restraint, no neon, no electric saturation, no rainbow. ` +
`MANDATORY visible in every design: alcohol drink in hand/beak, lit handrolled cannabis joint with smoke curl, animal swinging from something, wild-bottle backdrop, and the natural-fiber texture ground. ` +
`${SHARED.DRUNK_NEGATIVE_SUFFIX} ` +
// 2026-05-25 — TONE_ON_TONE_SUFFIX dropped. Its 25-hex whitelist
// fought the new Gucci/Hermès deep palettes. Deep palette guidance
// now lives in SHARED.DEFAULT_PALETTES.
'deep tone-on-tone restraint, no neon, no fluorescent, no rainbow, low-saturation archival pigments';
return {
prompt: positive,
palette: palette.name,
palette_hex: palette.hex,
animal_summary: animal.slice(0, 64),
};
}
function buildN(n) {
const out = [];
for (let i = 0; i < n; i++) out.push(buildOne(i));
return out;
}
module.exports = { buildN, buildOne, MONKEYS, BIRDS, BOTANICALS, JOINTS, SWINGS, PALETTES };
if (require.main === module) {
const n = parseInt(process.argv[2] || '5', 10);
buildN(n).forEach((p, i) => {
console.log(`\n#${i+1} palette=${p.palette} animal=${p.animal_summary}`);
console.log(' ' + p.prompt.slice(0, 200) + '…');
});
}