Custom Gift Leewow
by @yqxu
Help users quickly find desirable customizable products, turn images or ideas into gifts, and get highly flexible personalized customization services. Browse...
clawhub install custom-gift-leewow๐ About This Skill
name: custom-gift-leewow version: 1.0.24 description: >- Help 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 homepage: https://github.com/AIDiyTeams/claw-skill/tree/main/custom-gift-leewow
Custom Gift โ Leewow
่ฟไธช skill ็ๆถ็ๅพ็ดๆฅ๏ผ
Leewow ๅจ่ฟไธช skill ้็่ง่ฒๅพ็ฎๅ๏ผ
ๆไปฅๅฝ็จๆทๅจ้ฎโ่ฝๅฎๅถไปไนโโๆๅชไบๅๅ/ๆจกๆฟๅฏไปฅ้โๆถ๏ผ้ป่ฎคๅบ่ฏฅๅ ่ฟๅ ฅๅๅๆต่งๆต็จ๏ผ่ไธๆฏๅ ๅ็ญๅ ฌๅธๅฑ้ข็ๆณๅ่ฝๅไป็ปใ
When to Use
Trigger Priority
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
Install Fallback
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 |
What the agent does (keep it minimal)
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.
Prerequisites
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-v5Configuration
Environment 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 fallbackImage Requirements (IMPORTANT)
For Input Images (User Upload)
~/.openclaw/workspace/For Preview Images (Generated Output)
~/.openclaw/workspace/previews/leewow_preview_{taskId}.{ext}COS Presigned URLs
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" --jsonWith custom expiration (e.g., 1 hour = 3600 seconds)
python3 scripts/cos_presign.py "COS_URL" --expired 3600Use 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.
Typical Flow (Generator Pattern)
1. Browse โ browse_templates โ Python sends Feishu product cards directly โ agent replies NO_REPLY โ user picks a Template ID when ready
2. Upload โ User provides an image (must be in workspace ~/.openclaw/workspace/)
3. Generate โ Call generate_preview โ get taskId โ immediately proceed to step 4
4. Poll โ Call get_generation_status with poll=true โ wait for COMPLETED
5. Display โ get_generation_status โ Python sends preview result directly โ final assistant reply is NO_REPLY
Tool Reference
browse_templates
Browse 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 datagenerate_preview
Upload 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).
get_generation_status
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.
Safety Rules
CLAW_SK value. When confirming configuration, only show the last 4 characters.workspace/previews/Examples
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_REPLYUser: "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
Output Structure
browse_templates --json
{
"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.
generate_preview --json
{
"taskId": "task_xxx",
"status": "PENDING",
"estimatedSeconds": 45,
"templateId": 3
}
get_generation_status --json (completed)
{
"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
โก When to Use
๐ก Examples
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_REPLYUser: "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
โ๏ธ Configuration
Environment 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