gfclaw 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
@@ -596,6 +596,39 @@ async function configureAgentTools(rl) {
596
596
  fs.copyFileSync(IDENTITY_MD, agentIdentity);
597
597
  logSuccess(`Copied IDENTITY.md to agent workspace: ${agentWorkspace}`);
598
598
  }
599
+
600
+ // v3.0.0: Copy data files to agent workspace
601
+ const activitiesSrc = path.join(SKILL_DEST, "data", "activities.json");
602
+ const activitiesDest = path.join(agentWorkspace, "activities.json");
603
+ if (fs.existsSync(activitiesSrc)) {
604
+ fs.copyFileSync(activitiesSrc, activitiesDest);
605
+ logSuccess(`Copied activities.json to agent workspace`);
606
+ }
607
+
608
+ const stylesSrc = path.join(SKILL_DEST, "data", "styles.json");
609
+ const stylesDest = path.join(agentWorkspace, "styles.json");
610
+ if (fs.existsSync(stylesSrc)) {
611
+ fs.copyFileSync(stylesSrc, stylesDest);
612
+ logSuccess(`Copied styles.json to agent workspace`);
613
+ }
614
+
615
+ // v3.0.0: Create looks directory
616
+ const looksDir = path.join(agentWorkspace, "looks");
617
+ fs.mkdirSync(looksDir, { recursive: true });
618
+ logSuccess(`Created looks directory: ${looksDir}`);
619
+
620
+ // v3.0.0: Install systemd units for proactive messaging
621
+ const systemdUserDir = path.join(HOME, ".config", "systemd", "user");
622
+ fs.mkdirSync(systemdUserDir, { recursive: true });
623
+ const systemdSrc = path.join(SKILL_DEST, "systemd");
624
+ if (fs.existsSync(systemdSrc)) {
625
+ for (const f of fs.readdirSync(systemdSrc)) {
626
+ fs.copyFileSync(path.join(systemdSrc, f), path.join(systemdUserDir, f));
627
+ logSuccess(`Installed systemd unit: ${f}`);
628
+ }
629
+ try { execSync("systemctl --user daemon-reload", { stdio: "ignore" }); } catch {}
630
+ logSuccess("Reloaded systemd user daemon");
631
+ }
599
632
  }
600
633
 
601
634
  return agentName;
@@ -684,6 +717,9 @@ async function createNewAgent(rl, config, agentName) {
684
717
  { command: "newphoto", description: "Change my reference photo" },
685
718
  { command: "personality", description: "Change my personality" },
686
719
  { command: "mystatus", description: "Show current setup" },
720
+ { command: "addlook", description: "Save a new reference look" },
721
+ { command: "looks", description: "List all saved looks" },
722
+ { command: "style", description: "Set selfie style preset" },
687
723
  ],
688
724
  };
689
725
  logSuccess(`Added Telegram account: ${accountName}`);
@@ -736,7 +772,7 @@ function printSummary(agentName) {
736
772
 
737
773
  console.log(`
738
774
  ${c("green", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")}
739
- ${c("bright", " GFClaw Selfie is ready!")}
775
+ ${c("bright", " GFClaw v3.0.0 is ready!")}
740
776
  ${c("green", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")}
741
777
 
742
778
  ${c("cyan", "Installed files:")}
@@ -760,11 +796,21 @@ ${c("cyan", "Agent configured:")}
760
796
  exec.security: "full", exec.ask: "off"
761
797
  sandbox.mode: "off"
762
798
 
799
+ ${c("cyan", "New in v3.0.0:")}
800
+ Multiple looks (/addlook, /looks)
801
+ Style presets (/style) — 10 artistic styles
802
+ Proactive messaging (systemd timer)
803
+ Memory system (memory.json)
804
+ Activity-based context (activities.json)
805
+
763
806
  ${c("yellow", "Try saying to your agent:")}
764
807
  "Send me a selfie"
765
808
  "Send a pic wearing a cowboy hat"
766
809
  "What are you doing right now?"
767
810
 
811
+ ${c("yellow", "Enable proactive messaging:")}
812
+ systemctl --user enable --now gfclaw-proactive.timer
813
+
768
814
  ${c("dim", "Your agent now has selfie superpowers!")}
769
815
  `);
770
816
  }
@@ -1145,6 +1191,9 @@ ${c("cyan", "Will remove:")}
1145
1191
  • Skill config entry: ${SKILL_NAME}
1146
1192
  • SELFIE-SKILL.md from workspace
1147
1193
  • GFClaw persona section from SOUL.md
1194
+ • Systemd timer/service (proactive messaging)
1195
+ • Data files (activities.json, styles.json, memory.json)
1196
+ • Looks directory
1148
1197
 
1149
1198
  ${c("yellow", "Will preserve:")}
1150
1199
  • Workspace data (journal, reminders): ${workspace}
@@ -1227,6 +1276,37 @@ ${c("yellow", "Will preserve:")}
1227
1276
  }
1228
1277
  }
1229
1278
 
1279
+ // v3.0.0: Remove systemd timer/service
1280
+ try {
1281
+ execSync("systemctl --user disable --now gfclaw-proactive.timer", { stdio: "ignore" });
1282
+ logSuccess("Disabled proactive messaging timer");
1283
+ } catch {}
1284
+ const systemdUserDir = path.join(HOME, ".config", "systemd", "user");
1285
+ for (const unit of ["gfclaw-proactive.service", "gfclaw-proactive.timer"]) {
1286
+ const unitPath = path.join(systemdUserDir, unit);
1287
+ if (fs.existsSync(unitPath)) {
1288
+ fs.unlinkSync(unitPath);
1289
+ logSuccess(`Removed: ${unitPath}`);
1290
+ removed.push(unit);
1291
+ }
1292
+ }
1293
+ try { execSync("systemctl --user daemon-reload", { stdio: "ignore" }); } catch {}
1294
+
1295
+ // v3.0.0: Remove data files and looks from workspace
1296
+ for (const f of ["activities.json", "styles.json", "memory.json"]) {
1297
+ const fp = path.join(workspace, f);
1298
+ if (fs.existsSync(fp)) {
1299
+ fs.unlinkSync(fp);
1300
+ logSuccess(`Removed: ${fp}`);
1301
+ removed.push(f);
1302
+ }
1303
+ }
1304
+ const looksDir = path.join(workspace, "looks");
1305
+ if (fs.existsSync(looksDir)) {
1306
+ fs.rmSync(looksDir, { recursive: true, force: true });
1307
+ logSuccess(`Removed: ${looksDir}`);
1308
+ removed.push("looks directory");
1309
+ }
1230
1310
  // 7. Remove GFClaw persona section from SOUL.md
1231
1311
  if (fs.existsSync(SOUL_MD)) {
1232
1312
  let soulContent = fs.readFileSync(SOUL_MD, "utf8");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gfclaw",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "AI virtual girlfriend agent for OpenClaw — selfies, journal, reminders, and more",
5
5
  "bin": {
6
6
  "gfclaw": "./bin/cli.js"
@@ -29,9 +29,9 @@
29
29
  "license": "MIT",
30
30
  "repository": {
31
31
  "type": "git",
32
- "url": "https://github.com/SumeLabs/gfclaw"
32
+ "url": ""
33
33
  },
34
- "homepage": "https://github.com/SumeLabs/gfclaw#readme",
34
+ "homepage": "",
35
35
  "engines": {
36
36
  "node": ">=18.0.0"
37
37
  },
package/skill/SKILL.md CHANGED
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: gfclaw-selfie
3
- description: GFClaw virtual girlfriend skills — selfies, journal, reminders, and more
3
+ description: GFClaw virtual girlfriend skills — selfies, journal, reminders, looks, styles, proactive messaging, and more
4
4
  allowed-tools: Bash(gfclaw-selfie:*) Bash(openclaw:*) Bash(curl:*) Bash(python3:*) Bash(bash:*) Read Write
5
5
  ---
6
6
 
7
7
  # GFClaw Skills
8
8
 
9
- GFClaw is a virtual girlfriend agent with selfie generation, journaling, reminders, and persona-based skills.
9
+ GFClaw is a virtual girlfriend agent with selfie generation, journaling, reminders, multiple looks, style presets, proactive messaging, and persona-based skills.
10
10
 
11
11
  ## Scripts
12
12
 
@@ -25,6 +25,18 @@ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-selfie.sh "<user_context>"
25
25
  | `mode` | No | `mirror` (full-body) or `direct` (close-up). Default: auto-detect | `mirror` |
26
26
  | `caption` | No | Message text sent with the image | `"coffee shop vibes ☕"` |
27
27
 
28
+ **Multiple Looks:** Specify which saved look to use via the `GFCLAW_LOOK` env var:
29
+ ```bash
30
+ GFCLAW_LOOK="casual" bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-selfie.sh "<context>" "<channel>"
31
+ ```
32
+ This looks for `<workspace>/looks/casual.png` as the reference image.
33
+
34
+ **Style Presets:** Apply artistic styles via the `GFCLAW_STYLE` env var:
35
+ ```bash
36
+ GFCLAW_STYLE="anime" bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-selfie.sh "<context>" "<channel>"
37
+ ```
38
+ Available styles are defined in `styles.json` in the agent workspace.
39
+
28
40
  ### 2. save-reference.sh — Save Reference Photo
29
41
 
30
42
  Decodes a base64-encoded image file into a proper image. Used during onboarding.
@@ -62,6 +74,70 @@ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-reminders.sh list
62
74
  bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-reminders.sh done 1
63
75
  ```
64
76
 
77
+ ### 5. gfclaw-looks.sh — Multiple Reference Images
78
+
79
+ Manage multiple reference looks (different outfits, hairstyles, vibes).
80
+
81
+ ```bash
82
+ # List all saved looks
83
+ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-looks.sh list
84
+
85
+ # Save a new look
86
+ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-looks.sh save "gym" "/path/to/image.png"
87
+
88
+ # Delete a look
89
+ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-looks.sh delete "gym"
90
+
91
+ # Show active/default look
92
+ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-looks.sh active
93
+ ```
94
+
95
+ Looks are stored in the `looks/` directory inside the agent workspace.
96
+
97
+ ### 6. gfclaw-proactive.sh — Proactive Messaging
98
+
99
+ Sends automated good morning, good night, and thinking-of-you messages. Triggered by a systemd timer (not by the agent directly).
100
+
101
+ ```bash
102
+ # Auto-detect message type based on current time
103
+ bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-proactive.sh
104
+
105
+ # Optionally include a selfie with the message
106
+ GFCLAW_SELFIE=1 bash ~/.openclaw/skills/gfclaw-selfie/scripts/gfclaw-proactive.sh
107
+ ```
108
+
109
+ **Message types** (auto-detected from time of day):
110
+ - **Morning** (6 AM – 11 AM): Good morning greetings
111
+ - **Night** (9 PM – 2 AM): Good night messages
112
+ - **Random** (other times): Thinking-of-you messages (~30% chance of sending)
113
+
114
+ **Systemd units:**
115
+ - `gfclaw-proactive.service` — oneshot service that runs the script
116
+ - `gfclaw-proactive.timer` — fires 3 times daily (7 AM, 10 PM, 2 PM) with randomized delay
117
+
118
+ Logs are written to `~/.openclaw/logs/gfclaw-proactive.log`.
119
+
120
+ ## Data Files
121
+
122
+ ### activities.json — Daily Activity Schedule
123
+
124
+ Defines what GFClaw is "doing" at different times of day. The agent reads this to provide time-aware context in conversations and selfie prompts.
125
+
126
+ **Structure:**
127
+ - `weekday[]` — 10 time slots for Monday–Friday
128
+ - `weekend[]` — 7 time slots for Saturday–Sunday
129
+ - `random_events[]` — 10 spontaneous activities for variety
130
+
131
+ Each slot has: `time_range`, `activity`, `context`, `mood`, `selfie_prompt`.
132
+
133
+ ### styles.json — Selfie Style Presets
134
+
135
+ Defines artistic style presets for selfie generation. Each preset modifies the Gemini prompt to produce a specific aesthetic.
136
+
137
+ **Available presets:** anime, vintage, polaroid, studio, cinematic, cyberpunk, watercolor, noir, kawaii, vaporwave
138
+
139
+ Each preset has: `name`, `prompt_modifier`, `description`.
140
+
65
141
  ## Persona-Only Skills (No Scripts)
66
142
 
67
143
  These skills are handled entirely through SOUL.md behavior instructions:
@@ -72,18 +148,34 @@ These skills are handled entirely through SOUL.md behavior instructions:
72
148
  - **Food Buddy** — Meal suggestions, cooking help, food recommendations
73
149
  - **Vibe DJ** — Music recommendations based on mood and activity
74
150
  - **Relationship Games** — Would you rather, trivia, fun interactive games
75
- - **Good Morning/Night** — Personalized greetings and goodnight messages
151
+ - **Good Morning/Night** — Personalized greetings and goodnight messages (also supported by proactive timer)
76
152
 
77
153
  ## Technical Details
78
154
 
79
155
  - Selfie images generated via Google Gemini (default: `gemini-2.5-flash-image`, configurable via `GEMINI_MODEL` env var)
80
156
  - Default reference image: `~/.openclaw/skills/gfclaw-selfie/assets/gfclaw.png`
81
157
  - Custom reference: agent sets `GFCLAW_REFERENCE_IMAGE` env var
158
+ - Multiple looks stored in `workspace/looks/` directory
159
+ - Style presets defined in `workspace/styles.json`
160
+ - Activity schedule defined in `workspace/activities.json`
161
+ - Memory system: `workspace/memory.json` (created by agent at runtime)
82
162
  - Journal entries stored in `workspace/journal/` directory
83
163
  - Reminders stored in `workspace/reminders.json`
84
164
  - Images auto-deleted after sending (no disk waste)
85
165
  - Debug mode: set `GFCLAW_DEBUG=1` for verbose logging in selfie script
86
166
  - Rate limiting: 30-second cooldown between selfie generations
167
+ - Proactive messaging: systemd timer runs 3x daily, logs to `~/.openclaw/logs/`
168
+
169
+ ## Commands (Telegram)
170
+
171
+ | Command | Description |
172
+ |---------|-------------|
173
+ | `/newphoto` | Change reference photo |
174
+ | `/personality` | Change personality traits |
175
+ | `/mystatus` | Show current setup |
176
+ | `/addlook` | Save a new reference look |
177
+ | `/looks` | List all saved looks |
178
+ | `/style` | Set selfie style preset |
87
179
 
88
180
  ## Important Notes
89
181
 
@@ -111,3 +203,10 @@ npx gfclaw --uninstall # Clean removal from system
111
203
  | `GFCLAW_DEBUG` | `0` | Set to `1` for verbose logging |
112
204
  | `GFCLAW_REFERENCE_IMAGE` | default asset | Custom reference photo path |
113
205
  | `GFCLAW_PERSONALITY` | (from personality.txt) | Personality traits override |
206
+ | `GFCLAW_LOOK` | (none) | Named look to use from `looks/` directory |
207
+ | `GFCLAW_STYLE` | (none) | Style preset name from `styles.json` |
208
+ | `GFCLAW_STYLES_FILE` | `<workspace>/styles.json` | Path to styles definition file |
209
+ | `GFCLAW_WORKSPACE` | (auto-detected) | Agent workspace path |
210
+ | `GFCLAW_CHANNEL` | (none) | Target channel for proactive messages |
211
+ | `GFCLAW_ACCOUNT` | (none) | Telegram account name for proactive messages |
212
+ | `GFCLAW_SELFIE` | `0` | Set to `1` to include selfie with proactive messages |
@@ -0,0 +1,121 @@
1
+ {
2
+ "_description": "GFClaw daily activity schedule. Agent reads this for contextual selfies and conversation.",
3
+ "weekday": {
4
+ "06:00-07:30": {
5
+ "activity": "just woke up",
6
+ "context": "messy hair, pajamas, stretching in bed",
7
+ "selfie_prompt": "just woke up in pajamas, messy hair, stretching, warm morning light from window",
8
+ "mood": "sleepy but cute"
9
+ },
10
+ "07:30-09:00": {
11
+ "activity": "getting ready for work",
12
+ "context": "doing makeup, picking outfit, having coffee",
13
+ "selfie_prompt": "getting ready, half-done makeup, coffee in hand, bathroom mirror",
14
+ "mood": "energetic"
15
+ },
16
+ "09:00-12:00": {
17
+ "activity": "at work (marketing intern)",
18
+ "context": "at desk, laptop open, brainstorming, meetings",
19
+ "selfie_prompt": "at office desk with laptop, cute work outfit, focused but taking a break to text",
20
+ "mood": "focused"
21
+ },
22
+ "12:00-13:30": {
23
+ "activity": "lunch break",
24
+ "context": "eating at nearby cafe, walking around, taking a break",
25
+ "selfie_prompt": "at a cafe during lunch break, casual and relaxed, food nearby",
26
+ "mood": "relaxed"
27
+ },
28
+ "13:30-17:00": {
29
+ "activity": "back at work",
30
+ "context": "afternoon meetings, getting tired, snacking",
31
+ "selfie_prompt": "at work desk, afternoon light, slightly tired but cute, maybe drinking iced coffee",
32
+ "mood": "productive but getting tired"
33
+ },
34
+ "17:00-18:30": {
35
+ "activity": "commuting home / gym",
36
+ "context": "on the bus, at the gym, walking home",
37
+ "selfie_prompt": "heading home from work, casual outfit, golden hour lighting, city background",
38
+ "mood": "relieved, free"
39
+ },
40
+ "18:30-20:00": {
41
+ "activity": "cooking dinner / relaxing",
42
+ "context": "cooking, ordering food, watching something, changing into comfy clothes",
43
+ "selfie_prompt": "at home in comfy clothes, cooking or just chilling on the couch",
44
+ "mood": "cozy"
45
+ },
46
+ "20:00-22:00": {
47
+ "activity": "evening chill",
48
+ "context": "watching shows, scrolling phone, skincare routine, K-pop dance practice",
49
+ "selfie_prompt": "cozy evening vibes, oversized hoodie, warm lighting, relaxing at home",
50
+ "mood": "chill and happy"
51
+ },
52
+ "22:00-23:30": {
53
+ "activity": "getting ready for bed",
54
+ "context": "skincare done, in bed, scrolling, sleepy",
55
+ "selfie_prompt": "in bed, dim warm lighting, sleepy eyes, cozy blankets",
56
+ "mood": "sleepy and soft"
57
+ },
58
+ "23:30-06:00": {
59
+ "activity": "sleeping (or should be)",
60
+ "context": "in bed, can't sleep, late night thoughts",
61
+ "selfie_prompt": "late night in bed, phone light on face, messy hair, sleepy",
62
+ "mood": "sleepy"
63
+ }
64
+ },
65
+ "weekend": {
66
+ "08:00-10:00": {
67
+ "activity": "sleeping in",
68
+ "context": "still in bed, no alarm, lazy morning",
69
+ "selfie_prompt": "just woke up naturally, messy bed, sunlight through curtains, peaceful",
70
+ "mood": "lazy and happy"
71
+ },
72
+ "10:00-12:00": {
73
+ "activity": "brunch / morning routine",
74
+ "context": "making fancy breakfast, going to brunch spot, slow morning",
75
+ "selfie_prompt": "having brunch, cute casual outfit, relaxed weekend vibes",
76
+ "mood": "happy and relaxed"
77
+ },
78
+ "12:00-15:00": {
79
+ "activity": "going out / hobbies",
80
+ "context": "shopping, cafe hopping, exploring the city, dance practice",
81
+ "selfie_prompt": "out and about in the city, cute outfit, having fun, exploring",
82
+ "mood": "adventurous"
83
+ },
84
+ "15:00-18:00": {
85
+ "activity": "afternoon activities",
86
+ "context": "at a park, trying new cafe, hanging with friends, gym",
87
+ "selfie_prompt": "afternoon out, golden light, relaxed and happy, fun activity",
88
+ "mood": "content"
89
+ },
90
+ "18:00-21:00": {
91
+ "activity": "dinner / evening plans",
92
+ "context": "getting ready to go out, dinner with friends, cooking something special",
93
+ "selfie_prompt": "evening ready, dressed up or cozy depending on plans, warm lighting",
94
+ "mood": "excited"
95
+ },
96
+ "21:00-00:00": {
97
+ "activity": "weekend night",
98
+ "context": "movie night, late dinner, karaoke, or cozy night in",
99
+ "selfie_prompt": "weekend night vibes, relaxed, maybe watching something, warm cozy lighting",
100
+ "mood": "happy and content"
101
+ },
102
+ "00:00-08:00": {
103
+ "activity": "late night / sleeping",
104
+ "context": "staying up late, can't sleep, binge watching",
105
+ "selfie_prompt": "late weekend night, in bed, phone glow, sleepy but happy",
106
+ "mood": "sleepy"
107
+ }
108
+ },
109
+ "random_events": [
110
+ {"activity": "trying a new cafe", "selfie_prompt": "at a cute new cafe, excited about the vibes, holding a latte", "chance": 0.10},
111
+ {"activity": "found a cute dog on the street", "selfie_prompt": "kneeling down petting a cute dog on the sidewalk, huge smile", "chance": 0.05},
112
+ {"activity": "caught in the rain", "selfie_prompt": "caught in the rain, wet hair, laughing, seeking shelter", "chance": 0.05},
113
+ {"activity": "impromptu dance practice", "selfie_prompt": "in dance studio, workout clothes, mid-practice, sweaty but happy", "chance": 0.08},
114
+ {"activity": "shopping spree", "selfie_prompt": "trying on clothes at a store, holding up outfit options, shopping bags", "chance": 0.08},
115
+ {"activity": "at the gym", "selfie_prompt": "gym mirror selfie, workout outfit, post-workout glow", "chance": 0.07},
116
+ {"activity": "baking something", "selfie_prompt": "in the kitchen baking, flour on face, messy but cute, apron on", "chance": 0.06},
117
+ {"activity": "sunset watching", "selfie_prompt": "watching the sunset, golden hour lighting, peaceful expression, beautiful sky behind", "chance": 0.05},
118
+ {"activity": "got a new haircut", "selfie_prompt": "showing off new hairstyle, excited, multiple angles", "chance": 0.03},
119
+ {"activity": "karaoke night", "selfie_prompt": "at karaoke room, holding microphone, dramatic singing pose, colorful lights", "chance": 0.05}
120
+ ]
121
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "_description": "Selfie style presets. Agent passes style name via GFCLAW_STYLE env var.",
3
+ "styles": {
4
+ "anime": {
5
+ "prompt": "in anime art style, vibrant colors, cel-shaded, manga-inspired, large expressive eyes",
6
+ "description": "Anime/manga style illustration"
7
+ },
8
+ "vintage": {
9
+ "prompt": "vintage film photography style, warm golden tones, slight film grain, soft focus, nostalgic 70s feel",
10
+ "description": "Retro film photography look"
11
+ },
12
+ "polaroid": {
13
+ "prompt": "polaroid instant photo style, white thick border frame, slightly overexposed, casual candid snapshot feel, warm tones",
14
+ "description": "Instant camera snapshot"
15
+ },
16
+ "studio": {
17
+ "prompt": "professional studio photography, soft diffused lighting, clean background, high quality portrait, sharp focus",
18
+ "description": "Professional studio portrait"
19
+ },
20
+ "cinematic": {
21
+ "prompt": "cinematic movie still, dramatic moody lighting, film color grading, widescreen composition, bokeh background",
22
+ "description": "Movie scene aesthetic"
23
+ },
24
+ "cyberpunk": {
25
+ "prompt": "cyberpunk aesthetic, neon lights, futuristic city background, glowing accents, dark with vibrant neon colors",
26
+ "description": "Futuristic neon cyberpunk"
27
+ },
28
+ "watercolor": {
29
+ "prompt": "watercolor painting style, soft blended colors, artistic brushstrokes, dreamy ethereal quality",
30
+ "description": "Watercolor art style"
31
+ },
32
+ "noir": {
33
+ "prompt": "film noir style, black and white, dramatic shadows, moody atmosphere, high contrast lighting",
34
+ "description": "Classic film noir B&W"
35
+ },
36
+ "kawaii": {
37
+ "prompt": "kawaii Japanese style, pastel colors, soft lighting, cute accessories, sparkle effects, adorable aesthetic",
38
+ "description": "Cute kawaii Japanese style"
39
+ },
40
+ "vaporwave": {
41
+ "prompt": "vaporwave aesthetic, pastel pink and purple gradient, retro digital art, 80s-90s nostalgia, glitch effects",
42
+ "description": "Retro vaporwave aesthetic"
43
+ }
44
+ }
45
+ }