Install
openclaw skills install vpick-ai-image-generatorMulti-model AI image generation on a visual canvas. Supports Midjourney (relaxed/fast/turbo, v7.0, 4-image grid), Grok Imagine (6 images per call, auto I2I), nano-banana-2 (multi-reference), Seedream 5.0 (up to 3K HD). Features: text-to-image, image-to-image, style transfer, multi-reference composition, batch generation, aspect ratio control. Use when the user says 'generate image', 'create an image', 'AI image', 'Midjourney', 'generate artwork', 'character design', 'create illustration', or wants AI image generation.
openclaw skills install vpick-ai-image-generatorMulti-model AI image generation on a visual canvas — Midjourney, Grok, nano-banana, Seedream — with reference image support, style transfer, and batch generation. Powered by VPick.
https://vpick.10xboost.org/mcp/t/xxxxx...). Treat it like a password — do not share it publicly.vpick.10xboost.org on Google Cloud). VPick routes requests to third-party AI model providers (Midjourney, Grok, Seedream, nano-banana) on your behalf. Your prompts and uploaded reference images are sent to these providers for processing.| Model | Cost | Output | Best For |
|---|---|---|---|
| nano-banana-2 | $0.16/image | 1 image | Default, fast, multi-reference support |
| Midjourney Relaxed | $0.045/grid | 4 images (grid) | Budget artistic generation |
| Midjourney Fast | $0.12/grid | 4 images (grid) | Quick artistic generation |
| Midjourney Turbo | $0.24/grid | 4 images (grid) | Fastest Midjourney |
| Grok Imagine | $0.06/call | 6 images (T2I) or 2 (I2I) | Budget bulk generation |
| Seedream 5.0 Lite | $0.0825/image | 1 image (2K) | High resolution, affordable |
| Seedream 5.0 HD | $0.0825/image | 1 image (3K) | Ultra high resolution |
Aspect Ratios: 1:1, 16:9, 9:16, 3:4, 4:3 (all models)
Check user's canvas and project:
get_canvas → See current state
list_projects → Check existing projects
create_project → Start fresh if needed
add_node(type: "image-generator", name: "My Image")
Option A — Direct prompt:
update_node(id: "<node_id>", data: { prompt: "a cyberpunk cityscape at sunset, neon lights, rain reflections" })
Option B — Connect a Text node:
add_node(type: "text", name: "Prompt", data: { content: "a cyberpunk cityscape at sunset" })
connect_nodes(sourceId: "<text_node>", targetId: "<image_node>", sourceHandle: "text-out", targetHandle: "prompt-in")
Reference images guide the generation style or subject. Up to 10 reference images supported.
upload_image(url: "https://example.com/reference.jpg")
connect_nodes(sourceId: "<upload_node>", targetId: "<image_node>", sourceHandle: "file-out", targetHandle: "image-in")
Use @NodeLabel in prompts to reference connected images:
"A portrait in the style of @reference, vibrant colors"
The @reference is resolved at generation time to the connected image URL.
run_image_generator(
nodeId: "<image_node>",
prompt: "a cyberpunk cityscape at sunset, neon lights",
model: "nano-banana-2",
aspectRatio: "16:9"
)
Midjourney-specific options:
run_image_generator(
nodeId: "<image_node>",
prompt: "a cyberpunk cityscape at sunset",
model: "midjourney",
aspectRatio: "16:9",
mjSpeed: "fast", // "relaxed", "fast", "turbo"
mjVersion: "7.0" // Midjourney version
)
Grok — auto-detects T2I vs I2I:
Models may generate multiple images:
currentImageIndex (0-3)Check results:
get_node(id: "<image_node>") → See generatedImageUrl, status
list_nodes → Overview of all nodes
Generated images can be used as input for:
start-image-in portconnect_nodes(sourceId: "<image_node>", targetId: "<video_node>", sourceHandle: "image-out", targetHandle: "start-image-in")
For video production, generate character references on white backgrounds:
run_image_generator(
nodeId: "<node>",
prompt: "full body portrait of a young woman, casual outfit, white background, isolated figure, front view",
model: "nano-banana-2",
aspectRatio: "3:4"
)
Generate multiple angles (front, side, 3/4) for use as MultiShot Elements.
Create multiple ImageGenerator nodes and generate in parallel:
add_node(type: "image-generator", name: "Variant A")
add_node(type: "image-generator", name: "Variant B")
add_node(type: "image-generator", name: "Variant C")
run_image_generator(nodeId: "<A>", prompt: "sunset beach, warm tones", model: "midjourney")
run_image_generator(nodeId: "<B>", prompt: "sunset beach, cool tones", model: "grok-imagine")
run_image_generator(nodeId: "<C>", prompt: "sunset beach, dramatic", model: "nano-banana-2")
upload_image(url: "https://example.com/style-reference.jpg")
connect_nodes(sourceId: "<upload>", targetId: "<image_node>", sourceHandle: "file-out", targetHandle: "image-in")
run_image_generator(
nodeId: "<image_node>",
prompt: "a portrait in the style of @style-reference, detailed, high quality",
model: "nano-banana-2"
)
Keep things tidy:
auto_layout(nodeIds: [...], direction: "horizontal", spacing: 200)
create_group(nodeIds: [...], overrides: { label: "Character Designs", color: "#E57373" })
list_generated_files(limit: 20, model: "midjourney") → Recent generations filtered by model
get_generation_stats → Cost breakdown by model
relaxed speed to save cost@NodeLabel references are resolved at generation time — make sure labels match exactlylist_models tool to check current pricing and available models| Error | Solution |
|---|---|
| Generation timeout | Auto-retries up to 2 times; check status with get_node |
| Insufficient credits | Top up at vpick.10xboost.org |
| Invalid aspect ratio | Use: 1:1, 16:9, 9:16, 3:4, or 4:3 |
| Reference not resolved | Ensure @NodeLabel matches the connected node's label exactly |
| Node not found | Use list_nodes to get current node IDs |
list_models tool for current pricing and capabilities