{
  "schemaVersion": "1.0",
  "item": {
    "slug": "alicloud-ai-image-qwen-image",
    "name": "Alicloud Ai Image Qwen Image",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/cinience/alicloud-ai-image-qwen-image",
    "canonicalUrl": "https://clawhub.ai/cinience/alicloud-ai-image-qwen-image",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/alicloud-ai-image-qwen-image",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=alicloud-ai-image-qwen-image",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "agents/openai.yaml",
      "references/api_reference.md",
      "references/prompt-guide.md",
      "references/sources.md",
      "scripts/generate_image.py"
    ],
    "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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/alicloud-ai-image-qwen-image"
    },
    "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/alicloud-ai-image-qwen-image",
    "agentPageUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/agent",
    "manifestUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/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": "Validation",
        "body": "mkdir -p output/alicloud-ai-image-qwen-image\npython -m py_compile skills/ai/image/alicloud-ai-image-qwen-image/scripts/generate_image.py && echo \"py_compile_ok\" > output/alicloud-ai-image-qwen-image/validate.txt\n\nPass criteria: command exits 0 and output/alicloud-ai-image-qwen-image/validate.txt is generated."
      },
      {
        "title": "Output And Evidence",
        "body": "Write generated image URLs, prompts, and metadata to output/alicloud-ai-image-qwen-image/.\nKeep at least one sample JSON response per run.\n\nBuild consistent image generation behavior for the video-agent pipeline by standardizing image.generate inputs/outputs and using DashScope SDK (Python) with the exact model name."
      },
      {
        "title": "Prerequisites",
        "body": "Install SDK (recommended in a venv to avoid PEP 668 limits):\n\npython3 -m venv .venv\n. .venv/bin/activate\npython -m pip install dashscope\n\nSet DASHSCOPE_API_KEY in your environment, or add dashscope_api_key to ~/.alibabacloud/credentials (env takes precedence)."
      },
      {
        "title": "Critical model names",
        "body": "Use one of these exact model strings:\n\nqwen-image\nqwen-image-plus\nqwen-image-max\nqwen-image-2.0\nqwen-image-2.0-pro\nqwen-image-max-2025-12-30\nqwen-image-plus-2026-01-09"
      },
      {
        "title": "Request",
        "body": "prompt (string, required)\nnegative_prompt (string, optional)\nsize (string, required) e.g. 1024*1024, 768*1024\nstyle (string, optional)\nseed (int, optional)\nreference_image (string | bytes, optional)"
      },
      {
        "title": "Response",
        "body": "image_url (string)\nwidth (int)\nheight (int)\nseed (int)"
      },
      {
        "title": "Quickstart (normalized request + preview)",
        "body": "Minimal normalized request body:\n\n{\n  \"prompt\": \"a cinematic portrait of a cyclist at dusk, soft rim light, shallow depth of field\",\n  \"negative_prompt\": \"blurry, low quality, watermark\",\n  \"size\": \"1024*1024\",\n  \"seed\": 1234\n}\n\nPreview workflow (download then open):\n\ncurl -L -o output/alicloud-ai-image-qwen-image/images/preview.png \"<IMAGE_URL_FROM_RESPONSE>\" && open output/alicloud-ai-image-qwen-image/images/preview.png\n\nLocal helper script (JSON request -> image file):\n\npython skills/ai/image/alicloud-ai-image-qwen-image/scripts/generate_image.py \\\\\n  --request '{\"prompt\":\"a studio product photo of headphones\",\"size\":\"1024*1024\"}' \\\\\n  --output output/alicloud-ai-image-qwen-image/images/headphones.png \\\\\n  --print-response"
      },
      {
        "title": "Parameters at a glance",
        "body": "FieldRequiredNotespromptyesDescribe a scene, not just keywords.negative_promptnoBest-effort, may be ignored by backend.sizeyesWxH format, e.g. 1024*1024, 768*1024.stylenoOptional stylistic hint.seednoUse for reproducibility when supported.reference_imagenoURL/file/bytes, SDK-specific mapping."
      },
      {
        "title": "Quick start (Python + DashScope SDK)",
        "body": "Use the DashScope SDK and map the normalized request into the SDK call.\nNote: For qwen-image-max, the DashScope SDK currently succeeds via ImageGeneration (messages-based) rather than ImageSynthesis.\nIf the SDK version you are using expects a different field name for reference images, adapt the input mapping accordingly.\n\nimport os\nfrom dashscope.aigc.image_generation import ImageGeneration\n\n# Prefer env var for auth: export DASHSCOPE_API_KEY=...\n# Or use ~/.alibabacloud/credentials with dashscope_api_key under [default].\n\n\ndef generate_image(req: dict) -> dict:\n    messages = [\n        {\n            \"role\": \"user\",\n            \"content\": [{\"text\": req[\"prompt\"]}],\n        }\n    ]\n\n    if req.get(\"reference_image\"):\n        # Some SDK versions accept {\"image\": <url|file|bytes>} in messages content.\n        messages[0][\"content\"].insert(0, {\"image\": req[\"reference_image\"]})\n\n    response = ImageGeneration.call(\n        model=req.get(\"model\", \"qwen-image-max\"),\n        messages=messages,\n        size=req.get(\"size\", \"1024*1024\"),\n        api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n        # Pass through optional parameters if supported by the backend.\n        negative_prompt=req.get(\"negative_prompt\"),\n        style=req.get(\"style\"),\n        seed=req.get(\"seed\"),\n    )\n\n    # Response is a generation-style envelope; extract the first image URL.\n    content = response.output[\"choices\"][0][\"message\"][\"content\"]\n    image_url = None\n    for item in content:\n        if isinstance(item, dict) and item.get(\"image\"):\n            image_url = item[\"image\"]\n            break\n    return {\n        \"image_url\": image_url,\n        \"width\": response.usage.get(\"width\"),\n        \"height\": response.usage.get(\"height\"),\n        \"seed\": req.get(\"seed\"),\n    }"
      },
      {
        "title": "Error handling",
        "body": "ErrorLikely causeAction401/403Missing or invalid DASHSCOPE_API_KEYCheck env var or ~/.alibabacloud/credentials, and access policy.400Unsupported size or bad request shapeUse common WxH and validate fields.429Rate limit or quotaRetry with backoff, or reduce concurrency.5xxTransient backend errorsRetry with backoff once or twice."
      },
      {
        "title": "Output location",
        "body": "Default output: output/alicloud-ai-image-qwen-image/images/\nOverride base dir with OUTPUT_DIR."
      },
      {
        "title": "Operational guidance",
        "body": "Store the returned image in object storage and persist only the URL in metadata.\nCache results by (prompt, negative_prompt, size, seed, reference_image hash) to avoid duplicate costs.\nAdd retries for transient 429/5xx responses with exponential backoff.\nSome backends ignore negative_prompt, style, or seed; treat them as best-effort inputs.\nIf the response contains no image URL, surface a clear error and retry once with a simplified prompt."
      },
      {
        "title": "Size notes",
        "body": "Use WxH format (e.g. 1024*1024, 768*1024).\nPrefer common sizes; unsupported sizes can return 400."
      },
      {
        "title": "Anti-patterns",
        "body": "Do not invent model names or aliases; use official model IDs only.\nDo not store large base64 blobs in DB rows; use object storage.\nDo not omit user-visible progress for long generations."
      },
      {
        "title": "Workflow",
        "body": "Confirm user intent, region, identifiers, and whether the operation is read-only or mutating.\nRun one minimal read-only query first to verify connectivity and permissions.\nExecute the target operation with explicit parameters and bounded scope.\nVerify results and save output/evidence files."
      },
      {
        "title": "References",
        "body": "See references/api_reference.md for a more detailed DashScope SDK mapping and response parsing tips.\n\n\nSee references/prompt-guide.md for prompt patterns and examples.\n\n\nFor edit workflows, use skills/ai/image/alicloud-ai-image-qwen-image-edit/.\n\n\nSource list: references/sources.md"
      }
    ],
    "body": "Category: provider\n\nModel Studio Qwen Image\nValidation\nmkdir -p output/alicloud-ai-image-qwen-image\npython -m py_compile skills/ai/image/alicloud-ai-image-qwen-image/scripts/generate_image.py && echo \"py_compile_ok\" > output/alicloud-ai-image-qwen-image/validate.txt\n\n\nPass criteria: command exits 0 and output/alicloud-ai-image-qwen-image/validate.txt is generated.\n\nOutput And Evidence\nWrite generated image URLs, prompts, and metadata to output/alicloud-ai-image-qwen-image/.\nKeep at least one sample JSON response per run.\n\nBuild consistent image generation behavior for the video-agent pipeline by standardizing image.generate inputs/outputs and using DashScope SDK (Python) with the exact model name.\n\nPrerequisites\nInstall SDK (recommended in a venv to avoid PEP 668 limits):\npython3 -m venv .venv\n. .venv/bin/activate\npython -m pip install dashscope\n\nSet DASHSCOPE_API_KEY in your environment, or add dashscope_api_key to ~/.alibabacloud/credentials (env takes precedence).\nCritical model names\n\nUse one of these exact model strings:\n\nqwen-image\nqwen-image-plus\nqwen-image-max\nqwen-image-2.0\nqwen-image-2.0-pro\nqwen-image-max-2025-12-30\nqwen-image-plus-2026-01-09\nNormalized interface (image.generate)\nRequest\nprompt (string, required)\nnegative_prompt (string, optional)\nsize (string, required) e.g. 1024*1024, 768*1024\nstyle (string, optional)\nseed (int, optional)\nreference_image (string | bytes, optional)\nResponse\nimage_url (string)\nwidth (int)\nheight (int)\nseed (int)\nQuickstart (normalized request + preview)\n\nMinimal normalized request body:\n\n{\n  \"prompt\": \"a cinematic portrait of a cyclist at dusk, soft rim light, shallow depth of field\",\n  \"negative_prompt\": \"blurry, low quality, watermark\",\n  \"size\": \"1024*1024\",\n  \"seed\": 1234\n}\n\n\nPreview workflow (download then open):\n\ncurl -L -o output/alicloud-ai-image-qwen-image/images/preview.png \"<IMAGE_URL_FROM_RESPONSE>\" && open output/alicloud-ai-image-qwen-image/images/preview.png\n\n\nLocal helper script (JSON request -> image file):\n\npython skills/ai/image/alicloud-ai-image-qwen-image/scripts/generate_image.py \\\\\n  --request '{\"prompt\":\"a studio product photo of headphones\",\"size\":\"1024*1024\"}' \\\\\n  --output output/alicloud-ai-image-qwen-image/images/headphones.png \\\\\n  --print-response\n\nParameters at a glance\nField\tRequired\tNotes\nprompt\tyes\tDescribe a scene, not just keywords.\nnegative_prompt\tno\tBest-effort, may be ignored by backend.\nsize\tyes\tWxH format, e.g. 1024*1024, 768*1024.\nstyle\tno\tOptional stylistic hint.\nseed\tno\tUse for reproducibility when supported.\nreference_image\tno\tURL/file/bytes, SDK-specific mapping.\nQuick start (Python + DashScope SDK)\n\nUse the DashScope SDK and map the normalized request into the SDK call. Note: For qwen-image-max, the DashScope SDK currently succeeds via ImageGeneration (messages-based) rather than ImageSynthesis. If the SDK version you are using expects a different field name for reference images, adapt the input mapping accordingly.\n\nimport os\nfrom dashscope.aigc.image_generation import ImageGeneration\n\n# Prefer env var for auth: export DASHSCOPE_API_KEY=...\n# Or use ~/.alibabacloud/credentials with dashscope_api_key under [default].\n\n\ndef generate_image(req: dict) -> dict:\n    messages = [\n        {\n            \"role\": \"user\",\n            \"content\": [{\"text\": req[\"prompt\"]}],\n        }\n    ]\n\n    if req.get(\"reference_image\"):\n        # Some SDK versions accept {\"image\": <url|file|bytes>} in messages content.\n        messages[0][\"content\"].insert(0, {\"image\": req[\"reference_image\"]})\n\n    response = ImageGeneration.call(\n        model=req.get(\"model\", \"qwen-image-max\"),\n        messages=messages,\n        size=req.get(\"size\", \"1024*1024\"),\n        api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n        # Pass through optional parameters if supported by the backend.\n        negative_prompt=req.get(\"negative_prompt\"),\n        style=req.get(\"style\"),\n        seed=req.get(\"seed\"),\n    )\n\n    # Response is a generation-style envelope; extract the first image URL.\n    content = response.output[\"choices\"][0][\"message\"][\"content\"]\n    image_url = None\n    for item in content:\n        if isinstance(item, dict) and item.get(\"image\"):\n            image_url = item[\"image\"]\n            break\n    return {\n        \"image_url\": image_url,\n        \"width\": response.usage.get(\"width\"),\n        \"height\": response.usage.get(\"height\"),\n        \"seed\": req.get(\"seed\"),\n    }\n\nError handling\nError\tLikely cause\tAction\n401/403\tMissing or invalid DASHSCOPE_API_KEY\tCheck env var or ~/.alibabacloud/credentials, and access policy.\n400\tUnsupported size or bad request shape\tUse common WxH and validate fields.\n429\tRate limit or quota\tRetry with backoff, or reduce concurrency.\n5xx\tTransient backend errors\tRetry with backoff once or twice.\nOutput location\nDefault output: output/alicloud-ai-image-qwen-image/images/\nOverride base dir with OUTPUT_DIR.\nOperational guidance\nStore the returned image in object storage and persist only the URL in metadata.\nCache results by (prompt, negative_prompt, size, seed, reference_image hash) to avoid duplicate costs.\nAdd retries for transient 429/5xx responses with exponential backoff.\nSome backends ignore negative_prompt, style, or seed; treat them as best-effort inputs.\nIf the response contains no image URL, surface a clear error and retry once with a simplified prompt.\nSize notes\nUse WxH format (e.g. 1024*1024, 768*1024).\nPrefer common sizes; unsupported sizes can return 400.\nAnti-patterns\nDo not invent model names or aliases; use official model IDs only.\nDo not store large base64 blobs in DB rows; use object storage.\nDo not omit user-visible progress for long generations.\nWorkflow\nConfirm user intent, region, identifiers, and whether the operation is read-only or mutating.\nRun one minimal read-only query first to verify connectivity and permissions.\nExecute the target operation with explicit parameters and bounded scope.\nVerify results and save output/evidence files.\nReferences\n\nSee references/api_reference.md for a more detailed DashScope SDK mapping and response parsing tips.\n\nSee references/prompt-guide.md for prompt patterns and examples.\n\nFor edit workflows, use skills/ai/image/alicloud-ai-image-qwen-image-edit/.\n\nSource list: references/sources.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/cinience/alicloud-ai-image-qwen-image",
    "publisherUrl": "https://clawhub.ai/cinience/alicloud-ai-image-qwen-image",
    "owner": "cinience",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image",
    "downloadUrl": "https://openagent3.xyz/downloads/alicloud-ai-image-qwen-image",
    "agentUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/agent",
    "manifestUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/alicloud-ai-image-qwen-image/agent.md"
  }
}