@yeongjaeyou/claude-code-config 0.18.6 → 0.19.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/.claude/agents/web-researcher.md +68 -4
- package/.claude/commands/gh/auto-review-loop.md +2 -2
- package/.claude/commands/gh/decompose-issue.md +12 -12
- package/.claude/commands/gh/resolve-and-review.md +1 -1
- package/.claude/guidelines/id-reference.md +2 -2
- package/.claude/guidelines/prd-guide.md +13 -13
- package/.claude/guidelines/work-guidelines.md +15 -1
- package/.claude/hooks/notify_osc.sh +7 -7
- package/.claude/skills/code-explorer/SKILL.md +21 -21
- package/.claude/skills/interview-methodology/SKILL.md +196 -0
- package/.claude/skills/midjourney-imagineapi/SKILL.md +260 -0
- package/.claude/skills/midjourney-imagineapi/references/imagineapi-integration.md +197 -0
- package/.claude/skills/midjourney-imagineapi/references/midjourney-parameters.md +393 -0
- package/.claude/skills/midjourney-imagineapi/references/midjourney-style-guide.md +296 -0
- package/.claude/skills/midjourney-imagineapi/references/prompt-examples.md +428 -0
- package/.claude/skills/notion-md-uploader/scripts/__pycache__/markdown_parser.cpython-311.pyc +0 -0
- package/.claude/skills/notion-md-uploader/scripts/__pycache__/notion_client.cpython-311.pyc +0 -0
- package/.claude/skills/notion-md-uploader/scripts/__pycache__/notion_converter.cpython-311.pyc +0 -0
- package/.claude/skills/notion-md-uploader/scripts/__pycache__/upload_md.cpython-311.pyc +0 -0
- package/package.json +1 -1
- package/.claude/skills/youtube-collector/README.md +0 -107
- package/.claude/skills/youtube-collector/SKILL.md +0 -158
- package/.claude/skills/youtube-collector/references/data-schema.md +0 -110
- package/.claude/skills/youtube-collector/scripts/collect_videos.py +0 -304
- package/.claude/skills/youtube-collector/scripts/fetch_transcript.py +0 -138
- package/.claude/skills/youtube-collector/scripts/fetch_videos.py +0 -229
- package/.claude/skills/youtube-collector/scripts/register_channel.py +0 -247
- package/.claude/skills/youtube-collector/scripts/setup_api_key.py +0 -151
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: midjourney-imagineapi
|
|
3
|
+
description: Generate optimized Midjourney V7 prompts and create images via ImagineAPI MCP server. Transform basic user requests into professional, cinematic prompts using 5-layer structure. Use when users request (1) Midjourney image generation, (2) prompt optimization for V7, (3) character/style reference usage, (4) professional photography prompts. Trigger phrases include "generate image", "create photo", "Midjourney", "make picture", "image generation".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Midjourney Prompt Optimizer for ImagineAPI
|
|
7
|
+
|
|
8
|
+
Transform user image requests into optimized Midjourney V7 prompts and generate images through ImagineAPI MCP.
|
|
9
|
+
|
|
10
|
+
## Workflow Overview
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
User Request -> Clarify (if needed) -> Build Prompt -> Present Options -> Generate Image -> Return Results
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Step 1: Analyze User Request
|
|
17
|
+
|
|
18
|
+
Determine what the user wants:
|
|
19
|
+
- Main subject and concept
|
|
20
|
+
- Implied style or mood
|
|
21
|
+
- Any specific requirements mentioned
|
|
22
|
+
|
|
23
|
+
If the request is clear and specific, proceed to Step 3.
|
|
24
|
+
If the request is vague or generic (e.g., "make me a cat picture"), proceed to Step 2.
|
|
25
|
+
|
|
26
|
+
## Step 2: Clarify with User (When Needed)
|
|
27
|
+
|
|
28
|
+
For vague requests, use AskUserQuestion to clarify:
|
|
29
|
+
|
|
30
|
+
**Style Clarification:**
|
|
31
|
+
```
|
|
32
|
+
AskUserQuestion:
|
|
33
|
+
header: "Style"
|
|
34
|
+
question: "What style do you want for this image?"
|
|
35
|
+
options:
|
|
36
|
+
- label: "Photorealistic"
|
|
37
|
+
description: "Looks like a real photograph"
|
|
38
|
+
- label: "Cinematic"
|
|
39
|
+
description: "Movie-like, dramatic lighting"
|
|
40
|
+
- label: "Artistic/Illustration"
|
|
41
|
+
description: "Stylized, artistic interpretation"
|
|
42
|
+
- label: "Minimal/Clean"
|
|
43
|
+
description: "Simple, clean aesthetic"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Mood Clarification:**
|
|
47
|
+
```
|
|
48
|
+
AskUserQuestion:
|
|
49
|
+
header: "Mood"
|
|
50
|
+
question: "What mood or atmosphere?"
|
|
51
|
+
options:
|
|
52
|
+
- label: "Bright & Cheerful"
|
|
53
|
+
description: "Warm, optimistic feeling"
|
|
54
|
+
- label: "Moody & Dramatic"
|
|
55
|
+
description: "Dark, atmospheric, cinematic"
|
|
56
|
+
- label: "Calm & Serene"
|
|
57
|
+
description: "Peaceful, tranquil"
|
|
58
|
+
- label: "Energetic & Dynamic"
|
|
59
|
+
description: "Action, movement, excitement"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Aspect Ratio:**
|
|
63
|
+
```
|
|
64
|
+
AskUserQuestion:
|
|
65
|
+
header: "Format"
|
|
66
|
+
question: "What format do you need?"
|
|
67
|
+
options:
|
|
68
|
+
- label: "Widescreen (16:9)"
|
|
69
|
+
description: "Cinematic, landscape, desktop"
|
|
70
|
+
- label: "Portrait (4:5)"
|
|
71
|
+
description: "Vertical, mobile, Instagram"
|
|
72
|
+
- label: "Square (1:1)"
|
|
73
|
+
description: "Social media, profile"
|
|
74
|
+
- label: "Ultra-wide (21:9)"
|
|
75
|
+
description: "Panoramic, banner"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Step 3: Build Optimized Prompt
|
|
79
|
+
|
|
80
|
+
Use the 5-layer structure from `references/midjourney-style-guide.md`:
|
|
81
|
+
|
|
82
|
+
**Layer 1 (Required):** Subject & Composition
|
|
83
|
+
```
|
|
84
|
+
[Subject] [action/pose], [composition]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Layer 2 (Required):** Style & Aesthetic
|
|
88
|
+
```
|
|
89
|
+
[style], [mood], [color treatment]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Layer 3 (Recommended):** Lighting & Environment
|
|
93
|
+
```
|
|
94
|
+
[lighting], [time of day], [atmosphere]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Layer 4 (Recommended):** Technical Details
|
|
98
|
+
```
|
|
99
|
+
[camera] [lens] [aperture], [depth of field], [quality terms]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Layer 5 (Optional):** Artistic Reference
|
|
103
|
+
```
|
|
104
|
+
[artist/style reference]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Consult `references/prompt-examples.md` for transformation patterns.
|
|
108
|
+
|
|
109
|
+
## Step 4: Select Parameters
|
|
110
|
+
|
|
111
|
+
Based on the image type, select appropriate parameters from `references/midjourney-parameters.md`:
|
|
112
|
+
|
|
113
|
+
**Portrait:**
|
|
114
|
+
```
|
|
115
|
+
--ar 4:5 --s 100-150 --q 2
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Landscape/Cinematic:**
|
|
119
|
+
```
|
|
120
|
+
--ar 16:9 --s 150-250 --q 2
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Product:**
|
|
124
|
+
```
|
|
125
|
+
--ar 1:1 --s 50-100
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Artistic:**
|
|
129
|
+
```
|
|
130
|
+
--ar varies --s 300-500 --exp 10-25
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Quick Iteration:**
|
|
134
|
+
```
|
|
135
|
+
--draft --c 25-50
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Step 5: Present Options to User
|
|
139
|
+
|
|
140
|
+
Before generating, present 2-3 prompt variations using AskUserQuestion:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
AskUserQuestion:
|
|
144
|
+
header: "Prompt"
|
|
145
|
+
question: "Which prompt direction do you prefer?"
|
|
146
|
+
options:
|
|
147
|
+
- label: "Option A: Dramatic"
|
|
148
|
+
description: "[show key differences - lighting, mood]"
|
|
149
|
+
- label: "Option B: Natural"
|
|
150
|
+
description: "[show key differences]"
|
|
151
|
+
- label: "Option C: Artistic"
|
|
152
|
+
description: "[show key differences]"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Show the full prompts in the response text, then ask for selection.
|
|
156
|
+
|
|
157
|
+
## Step 6: Generate Image
|
|
158
|
+
|
|
159
|
+
Use the midjourney-proxy-mcp MCP tools directly. See `references/imagineapi-integration.md` for details.
|
|
160
|
+
|
|
161
|
+
**Generate:**
|
|
162
|
+
Call the `midjourney_imagine` MCP tool with the optimized prompt:
|
|
163
|
+
- `prompt`: The complete prompt string including all parameters
|
|
164
|
+
|
|
165
|
+
**Check Status:**
|
|
166
|
+
Call the `midjourney_get_status` MCP tool:
|
|
167
|
+
- `image_id`: The ID returned from midjourney_imagine
|
|
168
|
+
|
|
169
|
+
Poll every 10-15 seconds until status is "completed".
|
|
170
|
+
|
|
171
|
+
## Step 7: Return Results
|
|
172
|
+
|
|
173
|
+
Provide to user:
|
|
174
|
+
1. Generated image URL
|
|
175
|
+
2. Upscaled versions (if available in upscaled_urls)
|
|
176
|
+
3. The prompt used (for user's reference)
|
|
177
|
+
4. Offer to create variations if needed
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Reference Files
|
|
182
|
+
|
|
183
|
+
### midjourney-parameters.md
|
|
184
|
+
Complete V7 parameter reference. Consult when:
|
|
185
|
+
- Selecting appropriate parameters
|
|
186
|
+
- Explaining parameter effects to user
|
|
187
|
+
- Troubleshooting parameter combinations
|
|
188
|
+
|
|
189
|
+
Search patterns:
|
|
190
|
+
- "Quick Reference Table" - All parameters at a glance
|
|
191
|
+
- "V7-Specific Parameters" - Draft, exp, oref
|
|
192
|
+
- "Reference System" - Style and character references
|
|
193
|
+
|
|
194
|
+
### midjourney-style-guide.md
|
|
195
|
+
Prompt structure and vocabulary. Consult when:
|
|
196
|
+
- Building prompts from scratch
|
|
197
|
+
- Selecting descriptive vocabulary
|
|
198
|
+
- Checking quality guidelines
|
|
199
|
+
|
|
200
|
+
Search patterns:
|
|
201
|
+
- "5-Layer Prompt Structure" - Building prompts
|
|
202
|
+
- "Descriptive Vocabulary" - Lighting, mood, color terms
|
|
203
|
+
- "Genre-Specific Patterns" - Templates by category
|
|
204
|
+
|
|
205
|
+
### prompt-examples.md
|
|
206
|
+
Before/after transformations. Consult when:
|
|
207
|
+
- Learning transformation patterns
|
|
208
|
+
- Finding inspiration for specific genres
|
|
209
|
+
- Understanding enhancement techniques
|
|
210
|
+
|
|
211
|
+
Search patterns:
|
|
212
|
+
- "Portrait Photography" - People, characters
|
|
213
|
+
- "Landscape/Environment" - Nature, cities
|
|
214
|
+
- "Product Photography" - Objects, commercial
|
|
215
|
+
- "Character Consistency" - Using references
|
|
216
|
+
|
|
217
|
+
### imagineapi-integration.md
|
|
218
|
+
MCP tool usage. Consult when:
|
|
219
|
+
- Calling imagine tool
|
|
220
|
+
- Checking generation status
|
|
221
|
+
- Handling errors
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Quick Reference
|
|
226
|
+
|
|
227
|
+
### Minimum Viable Prompt
|
|
228
|
+
```
|
|
229
|
+
[subject], [style], [lighting], [camera spec] --ar [ratio] --s [value]
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Full Prompt Template
|
|
233
|
+
```
|
|
234
|
+
[Subject description], [composition], [style category], [lighting type],
|
|
235
|
+
[mood/atmosphere], shot on [camera] [lens], [color treatment],
|
|
236
|
+
[quality markers] --ar [ratio] --s [value] --q [value]
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Common Parameter Combos
|
|
240
|
+
|
|
241
|
+
| Purpose | Parameters |
|
|
242
|
+
|---------|------------|
|
|
243
|
+
| Quick test | `--draft` |
|
|
244
|
+
| Standard quality | `--ar 16:9 --s 100` |
|
|
245
|
+
| High quality | `--ar 16:9 --s 150 --q 2` |
|
|
246
|
+
| Artistic | `--s 400 --exp 25` |
|
|
247
|
+
| Character lock | `--oref <url> --ow 200` |
|
|
248
|
+
| Style lock | `--sref <url> --sw 300` |
|
|
249
|
+
| Both locks | `--oref <url> --ow 150 --sref <url> --sw 200` |
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Important Notes
|
|
254
|
+
|
|
255
|
+
1. V7 does not support multi-prompting (`::` syntax)
|
|
256
|
+
2. Use natural language - V7 understands creative intent
|
|
257
|
+
3. Keep prompts 20-75 words for best results
|
|
258
|
+
4. Always append parameters after the descriptive text
|
|
259
|
+
5. Use --draft for rapid iteration, then enhance winners
|
|
260
|
+
6. Combine --oref and --sref for maximum consistency
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# ImagineAPI MCP Integration Guide
|
|
2
|
+
|
|
3
|
+
Guide for using the Midjourney Proxy MCP server to generate images via ImagineAPI.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Available MCP Tools](#available-mcp-tools)
|
|
8
|
+
- [Available MCP Resources](#available-mcp-resources)
|
|
9
|
+
- [Typical Workflow](#typical-workflow)
|
|
10
|
+
- [Prompt Format](#prompt-format)
|
|
11
|
+
- [Error Handling](#error-handling)
|
|
12
|
+
- [Best Practices](#best-practices)
|
|
13
|
+
- [Integration with Prompt Optimization](#integration-with-prompt-optimization)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Available MCP Tools
|
|
18
|
+
|
|
19
|
+
These tools are available when the midjourney-proxy-mcp MCP server is connected. Call them directly as MCP tools.
|
|
20
|
+
|
|
21
|
+
### midjourney_imagine
|
|
22
|
+
|
|
23
|
+
Generate images from a prompt.
|
|
24
|
+
|
|
25
|
+
| Parameter | Type | Required | Description |
|
|
26
|
+
|-----------|------|----------|-------------|
|
|
27
|
+
| `prompt` | string | Yes | The image generation prompt with Midjourney parameters |
|
|
28
|
+
| `ref` | string | No | Optional reference ID for tracking |
|
|
29
|
+
|
|
30
|
+
Response includes:
|
|
31
|
+
- `id`: Generation ID for status tracking
|
|
32
|
+
- `status`: Current status (pending, in-progress, completed, failed)
|
|
33
|
+
- `prompt`: The submitted prompt
|
|
34
|
+
- `created_at`: Timestamp
|
|
35
|
+
|
|
36
|
+
### midjourney_get_status
|
|
37
|
+
|
|
38
|
+
Check generation status and retrieve results.
|
|
39
|
+
|
|
40
|
+
| Parameter | Type | Required | Description |
|
|
41
|
+
|-----------|------|----------|-------------|
|
|
42
|
+
| `image_id` | string | Yes | Generation ID from midjourney_imagine response |
|
|
43
|
+
|
|
44
|
+
Response includes:
|
|
45
|
+
- `status`: Current status
|
|
46
|
+
- `url`: Generated image URL (when completed)
|
|
47
|
+
- `upscaled_urls`: Array of upscaled image URLs (when available)
|
|
48
|
+
- `progress`: Progress percentage (when in-progress)
|
|
49
|
+
|
|
50
|
+
### midjourney_list_images
|
|
51
|
+
|
|
52
|
+
List recent image generations.
|
|
53
|
+
|
|
54
|
+
| Parameter | Type | Required | Description |
|
|
55
|
+
|-----------|------|----------|-------------|
|
|
56
|
+
| `limit` | integer | No | Number of results (default: 10, max: 100) |
|
|
57
|
+
| `status` | string | No | Filter by status (pending, in-progress, completed, failed) |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Available MCP Resources
|
|
62
|
+
|
|
63
|
+
### midjourney://generations
|
|
64
|
+
|
|
65
|
+
List all generations.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Read resource: midjourney://generations
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### midjourney://generations/{status}
|
|
72
|
+
|
|
73
|
+
Filter generations by status.
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Read resource: midjourney://generations/completed
|
|
77
|
+
Read resource: midjourney://generations/pending
|
|
78
|
+
Read resource: midjourney://generations/failed
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### midjourney://generation/{id}
|
|
82
|
+
|
|
83
|
+
Get single generation details.
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Read resource: midjourney://generation/abc123-def456
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### midjourney://stats
|
|
90
|
+
|
|
91
|
+
Generation statistics.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Read resource: midjourney://stats
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Typical Workflow
|
|
100
|
+
|
|
101
|
+
### 1. Generate Image
|
|
102
|
+
|
|
103
|
+
Call `midjourney_imagine` with your optimized prompt:
|
|
104
|
+
- Include all Midjourney parameters in the prompt string
|
|
105
|
+
- Save the returned `id` for status checking
|
|
106
|
+
|
|
107
|
+
### 2. Check Status
|
|
108
|
+
|
|
109
|
+
Call `midjourney_get_status` with the image ID:
|
|
110
|
+
- Poll every 10-15 seconds
|
|
111
|
+
- Status progression: `pending` -> `in-progress` -> `completed`
|
|
112
|
+
|
|
113
|
+
### 3. Retrieve Results
|
|
114
|
+
|
|
115
|
+
When status is `completed`:
|
|
116
|
+
- `url`: Main generated image (grid of 4)
|
|
117
|
+
- `upscaled_urls`: Higher resolution versions (automatically generated)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Prompt Format
|
|
122
|
+
|
|
123
|
+
The prompt string should include all Midjourney parameters:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
[description] [parameters]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Examples:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
"cinematic portrait of a samurai warrior --ar 16:9 --s 250 --q 2"
|
|
133
|
+
|
|
134
|
+
"minimalist product photography of headphones --ar 1:1 --s 100 --no background"
|
|
135
|
+
|
|
136
|
+
"fantasy landscape with floating islands --ar 21:9 --s 500 --w 100"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Parameters are appended directly to the prompt text, exactly as they would be used in Midjourney Discord.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Error Handling
|
|
144
|
+
|
|
145
|
+
### Common Errors
|
|
146
|
+
|
|
147
|
+
| Error | Cause | Solution |
|
|
148
|
+
|-------|-------|----------|
|
|
149
|
+
| `invalid_prompt` | Blocked content or invalid syntax | Revise prompt content |
|
|
150
|
+
| `rate_limited` | Too many requests | Wait and retry |
|
|
151
|
+
| `timeout` | Generation took too long | Retry or simplify prompt |
|
|
152
|
+
| `failed` | Generation failed | Check prompt and retry |
|
|
153
|
+
|
|
154
|
+
### Retry Strategy
|
|
155
|
+
|
|
156
|
+
1. Call `midjourney_imagine`
|
|
157
|
+
2. Poll `midjourney_get_status` every 10-15 seconds
|
|
158
|
+
3. If failed, analyze error and retry with adjusted prompt
|
|
159
|
+
4. Maximum 3 retries before reporting failure
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Best Practices
|
|
164
|
+
|
|
165
|
+
1. Always include essential parameters (--ar at minimum)
|
|
166
|
+
2. Check status before reporting results to user
|
|
167
|
+
3. Provide upscaled_urls when available (higher quality)
|
|
168
|
+
4. Handle failures gracefully with retry logic
|
|
169
|
+
5. Store generation IDs for later reference
|
|
170
|
+
6. Use `midjourney_list_images` to check recent generations and avoid duplicates
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Integration with Prompt Optimization
|
|
175
|
+
|
|
176
|
+
When using this skill:
|
|
177
|
+
|
|
178
|
+
1. Transform user request into optimized prompt (see midjourney-style-guide.md)
|
|
179
|
+
2. Add appropriate parameters (see midjourney-parameters.md)
|
|
180
|
+
3. Call `midjourney_imagine` with the complete prompt string
|
|
181
|
+
4. Monitor status with `midjourney_get_status` and return results
|
|
182
|
+
|
|
183
|
+
Example flow:
|
|
184
|
+
```
|
|
185
|
+
User: "photo of a cat"
|
|
186
|
+
|
|
187
|
+
1. Optimize prompt:
|
|
188
|
+
"professional photography of a tabby cat with green eyes,
|
|
189
|
+
soft natural window light, shallow depth of field,
|
|
190
|
+
warm color grading --ar 4:5 --s 150 --q 2"
|
|
191
|
+
|
|
192
|
+
2. Call midjourney_imagine with optimized prompt
|
|
193
|
+
|
|
194
|
+
3. Poll midjourney_get_status until completed
|
|
195
|
+
|
|
196
|
+
4. Return image URL and upscaled versions to user
|
|
197
|
+
```
|