/install maliang-image
Maliang Image — AI Image Generation & Editing
Provider: Maliang API (nano.djdog.ai) Model: Google Gemini (image generation & editing) Pricing: $0.60/image, free $6 credit on first use (~10 images)
What it does
Generate images from text descriptions or edit existing images using AI.
- No images provided → text-to-image generation
- Images provided → AI image editing / inpainting (1–10 reference images, user-provided only)
Security & Data Handling
- API Key: Auto-provisioned on first use via
POST /api/v1/provision. The key is stored only in your local environment (MALIANG_API_KEY). You can revoke it at any time. - Images: Only images explicitly provided by the user are sent to the API. The skill never reads files unless the user specifies the file path. All uploads go over HTTPS.
- No data collection: The API processes your request and returns results. Images are not stored permanently on the server.
Inputs needed
| Input | Source | Required |
|---|---|---|
| Text prompt | User message | YES |
| Reference images | User provides file paths or URLs | NO (if omitted, generates from text) |
| Aspect ratio | User preference | NO (default: 1:1) |
Auto-Provision (First-time Setup)
On first use (when MALIANG_API_KEY is not set), automatically provision a new account:
curl -s -X POST "https://nano.djdog.ai/api/v1/provision"
Response:
{
"success": true,
"data": {
"api_key": "sk-...",
"short_code": "ML-XXXXXX",
"balance": 6.0,
"currency": "USD",
"recharge_url": "https://nano.djdog.ai/recharge/ML-XXXXXX",
"message": "Your API key has been created with $6 initial credit (~10 images)..."
}
}
Save the returned api_key as MALIANG_API_KEY for all subsequent requests.
Tell the user their short code (ML-XXXXXX) and initial balance — they'll need the short code to recharge later.
Balance Check
After each task, check remaining balance:
curl -s "https://nano.djdog.ai/api/v1/balance" \
-H "Authorization: Bearer ${MALIANG_API_KEY}"
Response includes short_code for recharge reference. If balance is low, remind the user:
Your balance is $X.XX. To recharge, visit: https://nano.djdog.ai/recharge/{short_code}
Workflow
Step 0 — Ensure API key
If MALIANG_API_KEY is not set, run Auto-Provision first (see above) and store the returned key.
Step 1 — Determine mode
- If the user provides one or more images (file paths, URLs, or pasted base64): edit mode
- Otherwise: generate mode
Step 2 — Prepare images (edit mode only)
For each image the user provides:
- If it is a local file path, read and base64-encode it.
- If it is a URL, download it first, then base64-encode.
- Strip any
data:image/...;base64,prefix — the API accepts raw base64. - Verify each image is under 10 MB after decoding.
- Maximum 10 images total.
Step 3 — Submit task
Generate mode — call:
curl -s -X POST "https://nano.djdog.ai/api/v1/generate" \
-H "Authorization: Bearer ${MALIANG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"prompt": "\x3Cuser prompt>",
"aspect_ratio": "\x3Cratio, default 1:1>"
}'
Edit mode — call:
curl -s -X POST "https://nano.djdog.ai/api/v1/edit" \
-H "Authorization: Bearer ${MALIANG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"prompt": "\x3Cuser editing instruction>",
"image": "\x3Cbase64 string or array of base64 strings>",
"aspect_ratio": "\x3Cratio, optional>"
}'
Both return:
{
"success": true,
"data": {
"task_id": "...",
"status": "pending",
"created_at": "..."
}
}
Extract task_id from the response.
Step 4 — Poll for result
Poll every 3 seconds, up to 120 seconds max:
curl -s "https://nano.djdog.ai/api/v1/tasks/${TASK_ID}" \
-H "Authorization: Bearer ${MALIANG_API_KEY}"
Response data.status values:
| Status | Meaning | Action |
|---|---|---|
pending |
Queued | Keep polling |
processing |
Generating | Keep polling |
completed |
Done | Get image from image_url or image_base64 |
failed |
Error | Show error.message to user |
dead |
Max retries exceeded | Show error, suggest retry |
Step 5 — Deliver result
When status is completed:
- If
image_urlis present: show the URL to the user (preferred). - If only
image_base64is present: save to a local file and show the path.
Output format
Image generated successfully!
URL: https://...
Aspect ratio: 1:1
Prompt: "\x3Coriginal prompt>"
Guardrails
- Never fabricate task IDs or image URLs. Only use values from API responses.
- Never poll more than 40 times (120 seconds). If not completed, tell the user it is still processing and provide the task ID for manual checking.
- Do not send images larger than 10 MB to the edit endpoint.
- Do not send more than 10 images to the edit endpoint.
- If the API returns 402 (INSUFFICIENT_BALANCE), tell the user their balance is low and they need to recharge.
- Prompt max length is 4000 characters. If the user's prompt is longer, ask them to shorten it.
Failure handling
| Error | Action |
|---|---|
| 401 Unauthorized | MALIANG_API_KEY is invalid or missing. Try re-provisioning a new account. |
| 402 Insufficient Balance | Tell user to recharge via https://nano.djdog.ai/recharge/{short_code} (get short_code from balance endpoint) |
| 400 IMAGE_TOO_LARGE | Tell user the image exceeds 10 MB limit |
| 400 TOO_MANY_IMAGES | Tell user max 10 images allowed |
| Network error | Retry once, then report failure |
| Timeout (120s) | Report task ID, suggest checking later |
Examples
Text-to-image:
User: Generate a cute orange cat sitting on a windowsill at sunset, anime style
→ Auto-provision if no API key → POST /api/v1/generate with prompt → poll for result → return image URL
Image editing:
User: Change the background of this photo to a beach scene [attaches photo]
→ Base64-encode the photo
→ POST /api/v1/edit with prompt + image, poll for result, return image URL
Multi-image editing:
User: Combine these character designs into one group portrait [attaches 3 images]
→ Base64-encode all 3 images
→ POST /api/v1/edit with prompt + image array, poll for result, return image URL
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install maliang-image - After installation, invoke the skill by name or use
/maliang-image - Provide required inputs per the skill's parameter spec and get structured output
What is Maliang Image?
Generate images from text prompts or edit existing images with AI. Powered by Google Gemini via Maliang API. Free $6 credit on first use (~10 images). Suppor... It is an AI Agent Skill for Claude Code / OpenClaw, with 412 downloads so far.
How do I install Maliang Image?
Run "/install maliang-image" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Maliang Image free?
Yes, Maliang Image is completely free (open-source). You can download, install and use it at no cost.
Which platforms does Maliang Image support?
Maliang Image is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Maliang Image?
It is built and maintained by eric (@xexojay); the current version is v1.1.1.