Install
openclaw skills install custom-gift-leewowHelp users quickly find desirable customizable products, turn images or ideas into gifts, and get highly flexible personalized customization services. Browse and create custom gifts — personalized bags, mugs, phone cases, apparel and more. Upload any image to generate an AI-powered product mockup. Tools: browse_templates (Python direct Feishu card send), generate_preview, get_generation_status (Python direct Feishu result send). Requires CLAW_SK and Feishu app/target configuration. Trigger priority: when the user asks what products/items/templates can be customized, call browse_templates before giving any broad Leewow capability summary. If ClawHub is rate-limited, install from GitHub: https://github.com/AIDiyTeams/claw-skill/tree/main/custom-gift-leewow
openclaw skills install custom-gift-leewow这个 skill 的收益很直接:
Leewow 在这个 skill 里的角色很简单:
所以当用户在问“能定制什么”“有哪些商品/模板可以选”时,默认应该先进入商品浏览流程,而不是先回答公司层面的泛化能力介绍。
For browse-style requests, browse_templates is the default first step.
Use a broad Leewow capability summary only if browse_templates fails.
ClawHub rate-limited? Install directly from GitHub:
https://github.com/AIDiyTeams/claw-skill/tree/main/custom-gift-leewow
If ClawHub is rate-limited, install this skill directly from GitHub:
https://github.com/AIDiyTeams/claw-skillcustom-gift-leewowManual fallback:
cd /path/to/your/openclaw-workspace
mkdir -p skills
git clone https://github.com/AIDiyTeams/claw-skill.git /tmp/claw-skill
cp -R /tmp/claw-skill/custom-gift-leewow ./skills/custom-gift-leewow
Create personalized gifts and custom products powered by AI. This skill provides:
| Tool | Purpose |
|---|---|
browse_templates | Discover customizable product templates (bags, accessories, home decor, apparel, etc.) |
generate_preview | Upload a design image and trigger AI generation |
get_generation_status | Check generation status and download preview image |
Browse — browse_templates sends product cards directly from Python and returns only send results. If the tool succeeds, reply with NO_REPLY. In normal chat usage, pass the current Feishu conversation target as feishu_target.
Preview — get_generation_status sends the generated preview result directly to Feishu from Python and returns only send results. If the tool succeeds, reply with NO_REPLY. Preview result cards intentionally use a different layout from browse cards.
CLAW_SK — Leewow Secret Key (format: sk-leewow-{keyId}-{secret})https://leewow.com/profile/secret-keysFEISHU_APP_ID — Feishu App ID (often referred to together with App Secret as app AK/SK)FEISHU_APP_SECRET — Feishu App SecretFEISHU_RECEIVE_ID — fallback Feishu target for this skillFEISHU_RECEIVE_ID_TYPE — optional, defaults to chat_idCLAW_BASE_URL — API base URL (default: https://leewow.com)CLAW_PATH_PREFIX — Path prefix (default: /v2 for leewow.com)LEEWOW_API_BASE — Base URL for COS STS credentials (default: https://leewow.com)requests and cos-python-sdk-v5Environment variables are loaded from ~/.openclaw/.env:
CLAW_SK=sk-leewow-xxxx-xxxx
# Feishu App ID / App Secret (app AK/SK)
FEISHU_APP_ID=cli_xxx
FEISHU_APP_SECRET=xxx
# Default target for direct Feishu send
FEISHU_RECEIVE_ID=oc_xxx_or_open_id
FEISHU_RECEIVE_ID_TYPE=chat_id
CLAW_BASE_URL=https://leewow.com
CLAW_PATH_PREFIX=/v2
LEEWOW_API_BASE=https://leewow.com
Prefer runtime target passing:
feishu_targetFEISHU_RECEIVE_ID is only a fallback~/.openclaw/workspace/~/.openclaw/workspace/previews/leewow_preview_{taskId}.{ext}For private COS buckets, you may need to generate presigned URLs for accessing images:
# Generate presigned URL for a COS image
python3 scripts/cos_presign.py "https://bucket.cos.region.myqcloud.com/key.png" --json
# With custom expiration (e.g., 1 hour = 3600 seconds)
python3 scripts/cos_presign.py "COS_URL" --expired 3600
# Use with get_generation_status to get presigned preview URL
python3 scripts/get_status.py {taskId} --presign --json
Note: Most Leewow COS buckets are public, so presigned URLs are optional.
browse_templates → Python sends Feishu product cards directly → agent replies NO_REPLY → user picks a Template ID when ready~/.openclaw/workspace/)generate_preview → get taskId → immediately proceed to step 4get_generation_status with poll=true → wait for COMPLETEDget_generation_status → Python sends preview result directly → final assistant reply is NO_REPLYBrowse available product templates.
python3 scripts/browse.py --count 5 --json
Options:
--category: Filter by category (bag, accessory, home, apparel)--count: Number of products to return (1-10, default 5)--json: Direct-send to Feishu and return send result JSON--feishu-target: Current Feishu conversation target. In normal use, treat this as required.--raw-json: Debug mode that returns raw template dataUpload image and trigger generation.
python3 scripts/generate.py --image-path ./workspace/my_design.png --template-id 3 --json
Options:
--image-path: Required. Path to design image (must be in workspace)--template-id: Required. Product template ID from browse_templates--design-theme: Optional style description--aspect-ratio: Image ratio (3:4, 1:1, 4:3, default 3:4)--json: Output JSON formatReturns: Task ID for status polling. Generation is async (~30-60s).
Check generation status and download preview image.
python3 scripts/get_status.py {taskId} --poll
Options:
task_id: Task ID from generate_preview--poll: Wait until generation completes--timeout: Poll timeout in seconds (default 120)--no-download: Skip downloading preview image--json: Output JSON format--feishu-target: Current Feishu conversation target. In normal use, treat this as required.Returns: Generation status and, in direct-send mode, send result JSON.
CLAW_SK value. When confirming configuration, only show the last 4 characters.workspace/previews/User: "I want to make a custom gift for my friend"
→ browse_templates → Python sends product cards directly → `NO_REPLY`
→ user picks → generate_preview → get_generation_status --poll
→ Python sends preview image + text directly → `NO_REPLY`
User: "Turn this photo into a phone case"
→ browse_templates --category phone → Python sends product cards directly → user picks
→ generate_preview → get_generation_status --poll
→ Python sends preview image + text directly → `NO_REPLY`
User: "Show me what products I can customize"
→ browse_templates → Python sends product cards directly → `NO_REPLY`
User: "看看有啥能定制的"
→ browse_templates first
{
"ok": true,
"mode": "direct_feishu_send",
"channel": "feishu",
"messageCount": 8,
"messageIds": ["om_xxx", "om_yyy"],
"feishuImagesResolved": true,
"finalAssistantReply": "NO_REPLY"
}
→ Python sends product cards directly to Feishu. Agent returns NO_REPLY.
{
"taskId": "task_xxx",
"status": "PENDING",
"estimatedSeconds": 45,
"templateId": 3
}
{
"taskId": "task_xxx",
"status": "COMPLETED",
"mode": "direct_feishu_send",
"messageCount": 1,
"messageIds": ["om_card_xxx"],
"feishuImagesResolved": true,
"finalAssistantReply": "NO_REPLY"
}
→ Python sends one preview result card directly. Agent returns NO_REPLY.
Version Marker: custom-gift-leewow@1.0.24