{
  "schemaVersion": "1.0",
  "item": {
    "slug": "image-gen",
    "name": "Image Gen Skill",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/wells1137/image-gen",
    "canonicalUrl": "https://clawhub.ai/wells1137/image-gen",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/image-gen",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=image-gen",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "generate.js",
      "package-lock.json",
      "package.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/image-gen"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/image-gen",
    "agentPageUrl": "https://openagent3.xyz/skills/image-gen/agent",
    "manifestUrl": "https://openagent3.xyz/skills/image-gen/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/image-gen/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Image Generation Skill",
        "body": "This skill generates images using the best AI model for each use case. Model selection is the most important decision — read the dispatch logic carefully before generating."
      },
      {
        "title": "🧠 Intelligent Dispatch Logic",
        "body": "Always select the model based on the user's actual need, not just the request surface."
      },
      {
        "title": "Decision Tree",
        "body": "Does the request involve MULTIPLE images that share characters, scenes, or story continuity?\n  ├─ YES → Use NANO BANANA (Gemini)\n  │         Reason: Gemini understands context holistically; supports reference_images\n  │         for character/scene consistency across a series (storyboard, comic, sequence)\n  │\n  └─ NO → Is it a SINGLE standalone image?\n            ├─ Artistic / cinematic / painterly / highly detailed?\n            │   → Use MIDJOURNEY\n            │\n            ├─ Photorealistic / portrait / product photo?\n            │   → Use FLUX PRO\n            │\n            ├─ Contains TEXT (logo, poster, sign, infographic)?\n            │   → Use IDEOGRAM\n            │\n            ├─ Vector / icon / flat design / brand asset?\n            │   → Use RECRAFT\n            │\n            ├─ Quick draft / fast iteration (speed priority)?\n            │   → Use FLUX SCHNELL (<2s)\n            │\n            └─ General purpose / balanced?\n                → Use FLUX DEV"
      },
      {
        "title": "Model Capability Matrix",
        "body": "ModelIDArtisticPhotorealismTextContext ContinuitySpeedCostMidjourneymidjourney⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌ (no context)~30s~$0.05Nano Banana Pronano-banana⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐~20s$0.15Flux Proflux-pro⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌~5s~$0.05Flux Devflux-dev⭐⭐⭐⭐⭐⭐⭐⭐⭐❌~8s~$0.03Flux Schnellflux-schnell⭐⭐⭐⭐⭐⭐⭐❌<2s~$0.003Ideogram v3ideogram⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌~10s~$0.08Recraft v3recraft⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐❌~8s~$0.04SDXL Lightningsdxl⭐⭐⭐⭐⭐⭐⭐⭐❌~3s~$0.01"
      },
      {
        "title": "When to Use Nano Banana (Critical)",
        "body": "Use Nano Banana whenever the user's request involves:\n\nStoryboard / 分镜图: Multiple frames that tell a story with the same characters\nComic strip / 漫画: Sequential panels with consistent characters\nCharacter series: Multiple images of the same person/character in different poses or scenes\nScene continuation: \"Now show the same girl in the forest\" (referencing a previous image)\nStyle consistency: A set of images that must share the same visual style/world\n\nNano Banana uses Google's Gemini 3 Pro multimodal architecture, which understands context holistically rather than keyword-matching. It supports up to 14 reference images for maintaining character and scene consistency."
      },
      {
        "title": "How to Use This Skill",
        "body": "Analyze the request: Is it a single image or a series? Does it need context continuity?\nSelect model: Use the decision tree above.\nEnhance the prompt: Add style, lighting, and quality descriptors appropriate for the model.\nInform the user: Tell them which model you're using and why, and that generation has started.\nRun the script: Use exec tool with sufficient timeout.\nDeliver the result: Send image URL(s) to the user."
      },
      {
        "title": "Calling the Generation Script",
        "body": "node {baseDir}/generate.js \\\n  --model <model_id> \\\n  --prompt \"<enhanced prompt>\" \\\n  [--aspect-ratio <ratio>] \\\n  [--num-images <1-4>] \\\n  [--negative-prompt \"<negative prompt>\"] \\\n  [--reference-images \"<url1,url2,...>\"]\n\nParameters:\n\n--model: One of midjourney, flux-pro, flux-dev, flux-schnell, sdxl, nano-banana, ideogram, recraft\n--prompt: The image generation prompt (required)\n--aspect-ratio: e.g. 16:9, 1:1, 9:16, 4:3, 3:4 (default: 1:1)\n--num-images: 1-4 (default: 1; Midjourney always returns 4 regardless)\n--negative-prompt: Things to avoid (not supported by Midjourney)\n--reference-images: Comma-separated image URLs for context/character consistency (Nano Banana only)\n--mode: Midjourney speed: turbo (default, ~20-40s), fast (~30-60s), relax (free but slow)\n\nexec timeout: Set at least 120 seconds for Midjourney and Nano Banana; 30 seconds is sufficient for Flux Schnell."
      },
      {
        "title": "⚡ Midjourney Workflow (Sync Mode — No --async)",
        "body": "Always use sync mode (no --async). The script waits internally until complete.\n\nnode {baseDir}/generate.js \\\n  --model midjourney \\\n  --prompt \"<enhanced prompt>\" \\\n  --aspect-ratio 16:9"
      },
      {
        "title": "Understanding Midjourney Output",
        "body": "{\n  \"success\": true,\n  \"model\": \"midjourney\",\n  \"jobId\": \"xxxxxxxx-...\",\n  \"imageUrl\": \"https://cdn.legnext.ai/temp/....png\",\n  \"imageUrls\": [\n    \"https://cdn.legnext.ai/mj/xxxx_0.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_1.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_2.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_3.png\"\n  ]\n}\n\nCRITICAL — image field meanings:\n\nFieldWhat it isWhen to useimageUrlA 2×2 grid composite of all 4 imagesSend as preview so user can see all optionsimageUrls[0]Image 1 (top-left)Send when user wants image 1imageUrls[1]Image 2 (top-right)Send when user wants image 2imageUrls[2]Image 3 (bottom-left)Send when user wants image 3imageUrls[3]Image 4 (bottom-right)Send when user wants image 4\n\n\"放大第N张\" / \"要第N张\" / \"give me image N\" = send imageUrls[N-1] directly. Do NOT call generate.js again."
      },
      {
        "title": "Midjourney Interaction Flow",
        "body": "After generation:\n\n🎨 生成完成！这是 4 张图的预览：\n预览图\n你喜欢哪一张？回复 1、2、3 或 4，我直接发给你高清单图。\n\nWhen user picks image N:\n\n这是第 N 张的单独高清图：\n图片 N"
      },
      {
        "title": "🤖 Nano Banana (Gemini) Workflow",
        "body": "Use for storyboards, character series, and any context-dependent multi-image generation."
      },
      {
        "title": "Single image (no reference)",
        "body": "node {baseDir}/generate.js \\\n  --model nano-banana \\\n  --prompt \"<detailed scene description>\" \\\n  --aspect-ratio 16:9"
      },
      {
        "title": "With reference images (character/scene consistency)",
        "body": "node {baseDir}/generate.js \\\n  --model nano-banana \\\n  --prompt \"<scene description, referencing the character/style from the reference images>\" \\\n  --aspect-ratio 16:9 \\\n  --reference-images \"https://url-of-previous-image-1.png,https://url-of-previous-image-2.png\"\n\nHow to build a storyboard series:\n\nGenerate the first frame without reference images (establishes the character/scene)\nUse the first frame's URL as --reference-images for the second frame\nFor subsequent frames, use the most recent 1-3 images as references to maintain consistency\nKeep the character description consistent across all prompts\n\nExample storyboard workflow:\n\nFrame 1: node generate.js --model nano-banana --prompt \"A young girl with red hair, wearing a blue dress, sitting under a magical treehouse in an enchanted forest, warm golden light, storybook illustration style\" --aspect-ratio 16:9\n\nFrame 2: node generate.js --model nano-banana --prompt \"The same red-haired girl in blue dress climbing the rope ladder up to the treehouse, excited expression, enchanted forest background, same storybook illustration style\" --aspect-ratio 16:9 --reference-images \"<frame1_url>\"\n\nFrame 3: node generate.js --model nano-banana --prompt \"Inside the magical treehouse, the red-haired girl discovers a glowing book on a wooden shelf, wonder on her face, warm candlelight, same storybook illustration style\" --aspect-ratio 16:9 --reference-images \"<frame1_url>,<frame2_url>\""
      },
      {
        "title": "Nano Banana Output",
        "body": "{\n  \"success\": true,\n  \"model\": \"nano-banana\",\n  \"images\": [\"https://v3b.fal.media/files/...png\"],\n  \"imageUrl\": \"https://v3b.fal.media/files/...png\"\n}\n\nSend imageUrl directly to the user (no grid, single image)."
      },
      {
        "title": "Flux Pro / Dev / Schnell",
        "body": "Best for photorealistic standalone images. Output format same as Nano Banana (single imageUrl).\n\nnode {baseDir}/generate.js --model flux-pro --prompt \"<prompt>\" --aspect-ratio 16:9"
      },
      {
        "title": "Ideogram v3",
        "body": "Best for images containing text (logos, posters, signs).\n\nnode {baseDir}/generate.js --model ideogram --prompt \"A motivational poster with text 'DREAM BIG' in bold typography, sunset gradient background\" --aspect-ratio 3:4"
      },
      {
        "title": "Recraft v3",
        "body": "Best for vector-style, icons, flat design.\n\nnode {baseDir}/generate.js --model recraft --prompt \"A minimal flat design app icon, blue gradient, abstract geometric shape\" --aspect-ratio 1:1"
      },
      {
        "title": "Prompt Enhancement Tips",
        "body": "For Midjourney: Add cinematic lighting, ultra detailed, --v 7, --style raw. Legnext supports all MJ parameters.\n\nFor Nano Banana: Use natural language descriptions. Describe the character consistently across frames (hair color, clothing, expression). Mention \"same style as reference\" or \"consistent with previous frame\".\n\nFor Flux: Add masterpiece, highly detailed, sharp focus, professional photography, 8k.\n\nFor Ideogram: Be explicit about text content, font style, layout, and color scheme.\n\nFor Recraft: Specify vector illustration, flat design, icon style, minimal."
      },
      {
        "title": "Example Conversations",
        "body": "User: \"帮我画一只赛博朋克猫\"\n→ Single artistic image → Midjourney\n→ Tell user \"🎨 正在用 Midjourney 生成，约 30 秒...\"\n→ Send grid preview, ask which one they want\n\nUser: \"帮我生成一套分镜图，讲述一个女孩在魔法森林的冒险\"\n→ Multiple frames with story continuity → Nano Banana\n→ Tell user \"🎨 这类有上下文关联的分镜图用 Gemini 生成，能保持角色一致性...\"\n→ Generate frame by frame, using previous frames as reference images\n\nUser: \"要第2张\" / \"放大第2张\" (after Midjourney generation)\n→ Send imageUrls[1] directly. No need to call generate.js again.\n\nUser: \"做一个 App 图标，蓝色系扁平风格\"\n→ Vector/icon → Recraft\n\nUser: \"生成一张带有'欢迎光临'文字的门牌图\"\n→ Text in image → Ideogram\n\nUser: \"快速生成个草稿看看效果\"\n→ Speed priority → Flux Schnell (<2s)\n\nUser: \"生成一张产品海报，白色背景，一瓶香水\"\n→ Photorealistic product → Flux Pro"
      },
      {
        "title": "Environment Variables",
        "body": "VariableDescriptionFAL_KEYfal.ai API key (for Flux, Nano Banana, Ideogram, Recraft)LEGNEXT_KEYLegnext.ai API key (for Midjourney)"
      }
    ],
    "body": "Image Generation Skill\n\nThis skill generates images using the best AI model for each use case. Model selection is the most important decision — read the dispatch logic carefully before generating.\n\n🧠 Intelligent Dispatch Logic\n\nAlways select the model based on the user's actual need, not just the request surface.\n\nDecision Tree\nDoes the request involve MULTIPLE images that share characters, scenes, or story continuity?\n  ├─ YES → Use NANO BANANA (Gemini)\n  │         Reason: Gemini understands context holistically; supports reference_images\n  │         for character/scene consistency across a series (storyboard, comic, sequence)\n  │\n  └─ NO → Is it a SINGLE standalone image?\n            ├─ Artistic / cinematic / painterly / highly detailed?\n            │   → Use MIDJOURNEY\n            │\n            ├─ Photorealistic / portrait / product photo?\n            │   → Use FLUX PRO\n            │\n            ├─ Contains TEXT (logo, poster, sign, infographic)?\n            │   → Use IDEOGRAM\n            │\n            ├─ Vector / icon / flat design / brand asset?\n            │   → Use RECRAFT\n            │\n            ├─ Quick draft / fast iteration (speed priority)?\n            │   → Use FLUX SCHNELL (<2s)\n            │\n            └─ General purpose / balanced?\n                → Use FLUX DEV\n\nModel Capability Matrix\nModel\tID\tArtistic\tPhotorealism\tText\tContext Continuity\tSpeed\tCost\nMidjourney\tmidjourney\t⭐⭐⭐⭐⭐\t⭐⭐⭐⭐\t⭐⭐\t❌ (no context)\t~30s\t~$0.05\nNano Banana Pro\tnano-banana\t⭐⭐⭐⭐\t⭐⭐⭐⭐\t⭐⭐⭐⭐\t⭐⭐⭐⭐⭐\t~20s\t$0.15\nFlux Pro\tflux-pro\t⭐⭐⭐\t⭐⭐⭐⭐⭐\t⭐⭐⭐\t❌\t~5s\t~$0.05\nFlux Dev\tflux-dev\t⭐⭐⭐\t⭐⭐⭐⭐\t⭐⭐\t❌\t~8s\t~$0.03\nFlux Schnell\tflux-schnell\t⭐⭐\t⭐⭐⭐\t⭐⭐\t❌\t<2s\t~$0.003\nIdeogram v3\tideogram\t⭐⭐⭐\t⭐⭐⭐\t⭐⭐⭐⭐⭐\t❌\t~10s\t~$0.08\nRecraft v3\trecraft\t⭐⭐⭐⭐\t⭐⭐\t⭐⭐⭐⭐\t❌\t~8s\t~$0.04\nSDXL Lightning\tsdxl\t⭐⭐⭐\t⭐⭐⭐\t⭐⭐\t❌\t~3s\t~$0.01\nWhen to Use Nano Banana (Critical)\n\nUse Nano Banana whenever the user's request involves:\n\nStoryboard / 分镜图: Multiple frames that tell a story with the same characters\nComic strip / 漫画: Sequential panels with consistent characters\nCharacter series: Multiple images of the same person/character in different poses or scenes\nScene continuation: \"Now show the same girl in the forest\" (referencing a previous image)\nStyle consistency: A set of images that must share the same visual style/world\n\nNano Banana uses Google's Gemini 3 Pro multimodal architecture, which understands context holistically rather than keyword-matching. It supports up to 14 reference images for maintaining character and scene consistency.\n\nHow to Use This Skill\nAnalyze the request: Is it a single image or a series? Does it need context continuity?\nSelect model: Use the decision tree above.\nEnhance the prompt: Add style, lighting, and quality descriptors appropriate for the model.\nInform the user: Tell them which model you're using and why, and that generation has started.\nRun the script: Use exec tool with sufficient timeout.\nDeliver the result: Send image URL(s) to the user.\nCalling the Generation Script\nnode {baseDir}/generate.js \\\n  --model <model_id> \\\n  --prompt \"<enhanced prompt>\" \\\n  [--aspect-ratio <ratio>] \\\n  [--num-images <1-4>] \\\n  [--negative-prompt \"<negative prompt>\"] \\\n  [--reference-images \"<url1,url2,...>\"]\n\n\nParameters:\n\n--model: One of midjourney, flux-pro, flux-dev, flux-schnell, sdxl, nano-banana, ideogram, recraft\n--prompt: The image generation prompt (required)\n--aspect-ratio: e.g. 16:9, 1:1, 9:16, 4:3, 3:4 (default: 1:1)\n--num-images: 1-4 (default: 1; Midjourney always returns 4 regardless)\n--negative-prompt: Things to avoid (not supported by Midjourney)\n--reference-images: Comma-separated image URLs for context/character consistency (Nano Banana only)\n--mode: Midjourney speed: turbo (default, ~20-40s), fast (~30-60s), relax (free but slow)\n\nexec timeout: Set at least 120 seconds for Midjourney and Nano Banana; 30 seconds is sufficient for Flux Schnell.\n\n⚡ Midjourney Workflow (Sync Mode — No --async)\n\nAlways use sync mode (no --async). The script waits internally until complete.\n\nnode {baseDir}/generate.js \\\n  --model midjourney \\\n  --prompt \"<enhanced prompt>\" \\\n  --aspect-ratio 16:9\n\nUnderstanding Midjourney Output\n{\n  \"success\": true,\n  \"model\": \"midjourney\",\n  \"jobId\": \"xxxxxxxx-...\",\n  \"imageUrl\": \"https://cdn.legnext.ai/temp/....png\",\n  \"imageUrls\": [\n    \"https://cdn.legnext.ai/mj/xxxx_0.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_1.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_2.png\",\n    \"https://cdn.legnext.ai/mj/xxxx_3.png\"\n  ]\n}\n\n\nCRITICAL — image field meanings:\n\nField\tWhat it is\tWhen to use\nimageUrl\tA 2×2 grid composite of all 4 images\tSend as preview so user can see all options\nimageUrls[0]\tImage 1 (top-left)\tSend when user wants image 1\nimageUrls[1]\tImage 2 (top-right)\tSend when user wants image 2\nimageUrls[2]\tImage 3 (bottom-left)\tSend when user wants image 3\nimageUrls[3]\tImage 4 (bottom-right)\tSend when user wants image 4\n\n\"放大第N张\" / \"要第N张\" / \"give me image N\" = send imageUrls[N-1] directly. Do NOT call generate.js again.\n\nMidjourney Interaction Flow\n\nAfter generation:\n\n🎨 生成完成！这是 4 张图的预览： 预览图 你喜欢哪一张？回复 1、2、3 或 4，我直接发给你高清单图。\n\nWhen user picks image N:\n\n这是第 N 张的单独高清图： 图片 N\n\n🤖 Nano Banana (Gemini) Workflow\n\nUse for storyboards, character series, and any context-dependent multi-image generation.\n\nSingle image (no reference)\nnode {baseDir}/generate.js \\\n  --model nano-banana \\\n  --prompt \"<detailed scene description>\" \\\n  --aspect-ratio 16:9\n\nWith reference images (character/scene consistency)\nnode {baseDir}/generate.js \\\n  --model nano-banana \\\n  --prompt \"<scene description, referencing the character/style from the reference images>\" \\\n  --aspect-ratio 16:9 \\\n  --reference-images \"https://url-of-previous-image-1.png,https://url-of-previous-image-2.png\"\n\n\nHow to build a storyboard series:\n\nGenerate the first frame without reference images (establishes the character/scene)\nUse the first frame's URL as --reference-images for the second frame\nFor subsequent frames, use the most recent 1-3 images as references to maintain consistency\nKeep the character description consistent across all prompts\n\nExample storyboard workflow:\n\nFrame 1: node generate.js --model nano-banana --prompt \"A young girl with red hair, wearing a blue dress, sitting under a magical treehouse in an enchanted forest, warm golden light, storybook illustration style\" --aspect-ratio 16:9\n\nFrame 2: node generate.js --model nano-banana --prompt \"The same red-haired girl in blue dress climbing the rope ladder up to the treehouse, excited expression, enchanted forest background, same storybook illustration style\" --aspect-ratio 16:9 --reference-images \"<frame1_url>\"\n\nFrame 3: node generate.js --model nano-banana --prompt \"Inside the magical treehouse, the red-haired girl discovers a glowing book on a wooden shelf, wonder on her face, warm candlelight, same storybook illustration style\" --aspect-ratio 16:9 --reference-images \"<frame1_url>,<frame2_url>\"\n\nNano Banana Output\n{\n  \"success\": true,\n  \"model\": \"nano-banana\",\n  \"images\": [\"https://v3b.fal.media/files/...png\"],\n  \"imageUrl\": \"https://v3b.fal.media/files/...png\"\n}\n\n\nSend imageUrl directly to the user (no grid, single image).\n\nOther Models\nFlux Pro / Dev / Schnell\n\nBest for photorealistic standalone images. Output format same as Nano Banana (single imageUrl).\n\nnode {baseDir}/generate.js --model flux-pro --prompt \"<prompt>\" --aspect-ratio 16:9\n\nIdeogram v3\n\nBest for images containing text (logos, posters, signs).\n\nnode {baseDir}/generate.js --model ideogram --prompt \"A motivational poster with text 'DREAM BIG' in bold typography, sunset gradient background\" --aspect-ratio 3:4\n\nRecraft v3\n\nBest for vector-style, icons, flat design.\n\nnode {baseDir}/generate.js --model recraft --prompt \"A minimal flat design app icon, blue gradient, abstract geometric shape\" --aspect-ratio 1:1\n\nPrompt Enhancement Tips\n\nFor Midjourney: Add cinematic lighting, ultra detailed, --v 7, --style raw. Legnext supports all MJ parameters.\n\nFor Nano Banana: Use natural language descriptions. Describe the character consistently across frames (hair color, clothing, expression). Mention \"same style as reference\" or \"consistent with previous frame\".\n\nFor Flux: Add masterpiece, highly detailed, sharp focus, professional photography, 8k.\n\nFor Ideogram: Be explicit about text content, font style, layout, and color scheme.\n\nFor Recraft: Specify vector illustration, flat design, icon style, minimal.\n\nExample Conversations\n\nUser: \"帮我画一只赛博朋克猫\" → Single artistic image → Midjourney → Tell user \"🎨 正在用 Midjourney 生成，约 30 秒...\" → Send grid preview, ask which one they want\n\nUser: \"帮我生成一套分镜图，讲述一个女孩在魔法森林的冒险\" → Multiple frames with story continuity → Nano Banana → Tell user \"🎨 这类有上下文关联的分镜图用 Gemini 生成，能保持角色一致性...\" → Generate frame by frame, using previous frames as reference images\n\nUser: \"要第2张\" / \"放大第2张\" (after Midjourney generation) → Send imageUrls[1] directly. No need to call generate.js again.\n\nUser: \"做一个 App 图标，蓝色系扁平风格\" → Vector/icon → Recraft\n\nUser: \"生成一张带有'欢迎光临'文字的门牌图\" → Text in image → Ideogram\n\nUser: \"快速生成个草稿看看效果\" → Speed priority → Flux Schnell (<2s)\n\nUser: \"生成一张产品海报，白色背景，一瓶香水\" → Photorealistic product → Flux Pro\n\nEnvironment Variables\nVariable\tDescription\nFAL_KEY\tfal.ai API key (for Flux, Nano Banana, Ideogram, Recraft)\nLEGNEXT_KEY\tLegnext.ai API key (for Midjourney)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wells1137/image-gen",
    "publisherUrl": "https://clawhub.ai/wells1137/image-gen",
    "owner": "wells1137",
    "version": "2.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/image-gen",
    "downloadUrl": "https://openagent3.xyz/downloads/image-gen",
    "agentUrl": "https://openagent3.xyz/skills/image-gen/agent",
    "manifestUrl": "https://openagent3.xyz/skills/image-gen/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/image-gen/agent.md"
  }
}