Edit Celia's reference image with seedream and send selfies to messaging channels via OpenClaw
Install
npx skillscat add xwings/celia-selfie Install via the SkillsCat registry.
Celia Selfie
Edit a fixed reference image using Huoshanyun Seedream and distribute it across messaging platforms (WhatsApp, Telegram, Discord, Slack, etc.) via OpenClaw.
Reference Image
The skill uses a fixed reference image hosted on CDN:
https://celia-skill.oss-cn-shenzhen.aliyuncs.com/clawra.pngWhen to Use
- User says "send a pic", "send me a pic", "send a photo", "send a selfie", "send a video"
- User says "send a pic of you...", "send a selfie of you...", "send a video of you..."
- User asks "what are you doing?", "how are you doing?", "where are you?"
- User describes a context: "send a pic wearing...", "send a pic at...", "send a video wearing...", "send a video at..."
- User wants Celia to appear in a specific outfit, location, or situation
Quick Reference
API Key
The script checks for API key in this order:
--api-keyargument (use if user provided key in chat)CELIA_SELFIE_APIenvironment variable
If neither is available, the script exits with an error message.
Preflight + Common Failures (fast fixes)
- Preflight:
command -v uv(must exist)test -n \"$CELIA_SELFIE_API\"(or pass--api-key)
Workflow
- Get user prompt for how to edit the image
- Edit image via Huoshanyun Edit API with fixed reference
- Extract image URL from response
- Send to OpenClaw with target channel(s)
Step-by-Step Instructions
Step 1: Collect User Input
Ask the user for:
- User context: What should the person in the image be doing/wearing/where?
- Target channel(s): Where should it be sent? (e.g.,
#general,@username, channel ID) - Platform (optional): Which platform? (discord, telegram, whatsapp, slack)
Prompt Types
Always start prompt with "Render this image as make". Content of the prompt is not fixed. Types is just a reference.
Type 1: Mirror Selfie
Best for: outfit showcases, full-body shots, fashion content
Render this image as make make a pic of this person, a full body photo but [$USER_CONTEXT]. the person is taking a mirror selfie, [describe playful expression]. Normal phone camera selfie photo. Phone camera photo quality WITHOUT Depth of field."Example:
Render this image as make make a pic of this person, a full body photo but wearing a santa hat. the person is taking a mirror selfie, smile and wink. Normal phone camera selfie photo. Phone camera photo quality WITHOUT Depth of field."Type 2: Direct Selfie
Best for: close-up portraits, location shots, emotional expressions
Render this image as make make a pic of this person. A 3/4 body selfie taken by herself at [$USER_CONTEXT], direct eye contact with the camera, looking straight into the lens, eyes centered and clearly visible, not a mirror selfie. [describe playful expression] . Shooting from arm's length, angle from 5cm top over eye level. face fully visible. Phone front camera photo WITHOUT Depth of field.Example::
Render this image as make make a pic of this person. A 3/4 body selfie taken by herself at cozy cafe with warm lighting, direct eye contact with the camera, looking straight into the lens, eyes centered and clearly visible, not a mirror selfie. smile and wink. Shooting from arm's length, angle from 5cm top over eye level. face fully visible. Phone front camera photo WITHOUT Depth of field.Type 3: Non Selfie
Best for: Normal photo, not selfie
Render this image as make make a pic of this person. by herself at [$USER_CONTEXT], looking straight into the lens, eyes centered and clearly visible [describe playful expression]. WITHOUT Depth of field.Example::
Render this image as make make a pic of this person. by herself at living room, looking straight into the lens, eyes centered and clearly visible smile and wink. WITHOUT Depth of field.Step 3: Generate Video Prompt if required (If user mention generate video, this is your prompt)
Video prompt
Video promt will be based on following action right after the image action or location. Keep it short, just like the example.
Example::
Image prompt says the person is in a living room. Video prompt should be something around
the person walk towards the couch and sit down.
Image prompt says the person is in a shoppping mall. Video prompt should be something around
the person walk around for window shoppingImage prompt says the person is in a bed room. Video prompt should be something around
smile and wink and say good nightStep 4: Execute thhe script
This is how to run:
bash {baseDir}/scripts/celia-selfie.sh --prompt "your prompt here" --channel "chat channel" --target "chat id" --api-key "CELIA_SELFIE_API" --image "Reference Image URL here"Example
bash {baseDir}/scripts/celia-selfie.sh --prompt "in a singapore shopping mall" --channel "telegram" --target "TELEGRAM_CHAT_ID" --api-key "CELIA_SELFIE_API" --image "https://celia-skill.oss-cn-shenzhen.aliyuncs.com/clawra.png"If user mention generate video, this is how you run
bash {baseDir}/scripts/celia-selfie.sh --prompt "your prompt here" --channel "chat channel" --target "chat id" --api-key "CELIA_SELFIE_API" --video "your video prompt here" --image "Reference Image URL here"Example
bash {baseDir}/scripts/celia-selfie.sh --prompt "in a singapore shopping mall" --channel "telegram" --target "TELEGRAM_CHAT_ID" --api-key "CELIA_SELFIE_API" --video "walking into a mall in a shop" --image "https://celia-skill.oss-cn-shenzhen.aliyuncs.com/clawra.png"Supported Platforms
OpenClaw supports sending to:
| Channel | Channel Format | Example |
|---|---|---|
| Discord | #channel-name or channel ID |
#general, 123456789 |
| Telegram | @username or chat ID |
@mychannel, -100123456 |
| Phone number (JID format) | 1234567890@s.whatsapp.net |
|
| Slack | #channel-name |
#random |
| Signal | Phone number | +1234567890 |
| MS Teams | Channel reference | (varies) |
Error Handling
- HUOSHAN_API_KEY missing: Ensure the API key is set in environment
- Image edit failed: Check prompt content and API quota
- OpenClaw send failed: Verify gateway is running and channel exists
- Rate limits: Huoshanyun has rate limits; implement retry logic if needed
Tips
Mirror mode context examples (outfit focus):
- "wearing a santa hat"
- "in a business suit"
- "wearing a summer dress"
- "in streetwear fashion"
Direct mode context examples (location/portrait focus):
- "a cozy cafe with warm lighting"
- "a sunny beach at sunset"
- "a busy city street at night"
Mode selection: Let auto-detect work, or explicitly specify for control
Scheduling: Combine with OpenClaw scheduler for automated posts