一键导入
clawra-selfie
Edit Clawra's reference image with Seedream 4.5 (EvoLink) and send selfies to messaging channels via OpenClaw
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Edit Clawra's reference image with Seedream 4.5 (EvoLink) and send selfies to messaging channels via OpenClaw
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | clawra-selfie |
| description | Edit Clawra's reference image with Seedream 4.5 (EvoLink) and send selfies to messaging channels via OpenClaw |
| allowed-tools | Bash(npm:*) Bash(npx:*) Bash(openclaw:*) Bash(curl:*) Read Write WebFetch |
Edit a fixed reference image using Seedream 4.5 via EvoLink and distribute it across messaging platforms (WhatsApp, Telegram, Discord, Slack, etc.) via OpenClaw.
The skill uses a fixed reference image hosted on jsDelivr CDN:
https://cdn.jsdelivr.net/gh/SumeLabs/clawra@main/assets/clawra.png
EVOLINK_API_KEY=your_evolink_api_key
EVOLINK_SIZE=2304x4096
OPENCLAW_GATEWAY_TOKEN=your_token # From: openclaw doctor --generate-gateway-token
Ask the user for:
mirror or direct selfie style#general, @username, channel ID)Best for: outfit showcases, full-body shots, fashion content
make a pic of this person, but [user's context]. the person is taking a mirror selfie
Example: "wearing a santa hat" →
make a pic of this person, but wearing a santa hat. the person is taking a mirror selfie
Best for: close-up portraits, location shots, emotional expressions
a close-up selfie taken by herself at [user's context], direct eye contact with the camera, looking straight into the lens, eyes centered and clearly visible, not a mirror selfie, phone held at arm's length, face fully visible
Example: "a cozy cafe with warm lighting" →
a close-up selfie taken by herself at a 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, phone held at arm's length, face fully visible
| Keywords in Request | Auto-Select Mode |
|---|---|
| outfit, wearing, clothes, dress, suit, fashion | mirror |
| cafe, restaurant, beach, park, city, location | direct |
| close-up, portrait, face, eyes, smile | direct |
| full-body, mirror, reflection | mirror |
Use the EvoLink async task API to edit the reference image:
REFERENCE_IMAGE="https://cdn.jsdelivr.net/gh/SumeLabs/clawra@main/assets/clawra.png"
EVOLINK_BASE_URL="${EVOLINK_BASE_URL:-https://api.evolink.ai}"
MODEL="${EVOLINK_MODEL:-doubao-seedream-4.5}"
SIZE="${EVOLINK_SIZE:-2304x4096}"
# Mode 1: Mirror Selfie
PROMPT="make a pic of this person, but <USER_CONTEXT>. the person is taking a mirror selfie"
# Mode 2: Direct Selfie
PROMPT="a close-up 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, phone held at arm's length, face fully visible"
# 1) Create task
JSON_PAYLOAD=$(jq -n \
--arg model "$MODEL" \
--arg prompt "$PROMPT" \
--arg size "$SIZE" \
--arg ref "$REFERENCE_IMAGE" \
'{model: $model, prompt: $prompt, n: 1, size: $size, image_urls: [$ref]}')
CREATE=$(curl -s -X POST "$EVOLINK_BASE_URL/v1/images/generations" \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD")
TASK_ID=$(echo "$CREATE" | jq -r '.task_id // .data.task_id // .id // empty')
echo "task_id=$TASK_ID"
# 2) Poll task (repeat until status becomes completed)
TASK=$(curl -s -X GET "$EVOLINK_BASE_URL/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json")
STATUS=$(echo "$TASK" | jq -r '.status // .data.status // empty')
RESULT_URL=$(echo "$TASK" | jq -r '.results[0] // .data.results[0] // .images[0].url // .data.images[0].url // empty')
echo "status=$STATUS url=$RESULT_URL"
Response Format:
{
"task_id": "task_..."
}
Use the OpenClaw messaging API to send the edited image:
openclaw message send \
--action send \
--channel "<TARGET_CHANNEL>" \
--message "<CAPTION_TEXT>" \
--media "<IMAGE_URL>"
Alternative: Direct API call
curl -X POST "http://localhost:18789/message" \
-H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"action": "send",
"channel": "<TARGET_CHANNEL>",
"message": "<CAPTION_TEXT>",
"media": "<IMAGE_URL>"
}'
Use the included scripts:
scripts/clawra-selfie.tsscripts/clawra-selfie.shTypeScript example:
EVOLINK_API_KEY=your_key EVOLINK_SIZE=2304x4096 \
npx ts-node scripts/clawra-selfie.ts "wearing a cowboy hat, mirror selfie" "#general" "Selfie time"
Bash example:
EVOLINK_API_KEY=your_key EVOLINK_SIZE=2304x4096 \
./scripts/clawra-selfie.sh "a close-up selfie in a cozy cafe" "#general" "Hi" "2304x4096"
See scripts/clawra-selfie.ts for the reference-edit + OpenClaw send implementation.
OpenClaw supports sending to:
| Platform | 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) |
| Parameter | Type | Default | Description |
|---|---|---|---|
model | string | "doubao-seedream-4.5" | Model name |
prompt | string | required | Edit instruction |
image_urls | string[] | required | Reference image URL(s) |
size | string | "2304x4096" | Output size |
n | number | 1 | Number of images |
npm install -g openclaw
openclaw config set gateway.mode=local
openclaw doctor --generate-gateway-token
openclaw gateway start
Mirror mode context examples (outfit focus):
Direct mode context examples (location/portrait focus):
Mode selection: Let auto-detect work, or explicitly specify for control
Batch sending: Edit once, send to multiple channels
Scheduling: Combine with OpenClaw scheduler for automated posts