| name | ono-selfie |
| description | Edit Ono's reference image with Google Gemini (Imagen 4 Fast) and send selfies to messaging channels via OpenClaw |
| allowed-tools | Bash(npm:*) Bash(npx:*) Bash(openclaw:*) Bash(curl:*) Read Write WebFetch |
Ono Selfie
Edit a fixed reference image using Google's Gemini (Imagen 4 Fast) model and distribute it across messaging platforms (WhatsApp, Telegram, Discord, Slack, etc.) via OpenClaw.
Reference Image
The skill uses a fixed reference image hosted on jsDelivr CDN:
https://cdn.jsdelivr.net/gh/SumeLabs/clawra@main/assets/clawra.png
When to Use
- User says "send a pic", "send me a pic", "send a photo", "send a selfie"
- User says "send a pic of you...", "send a selfie 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..."
- User wants Ono to appear in a specific outfit, location, or situation
Quick Reference
Required Environment Variables
GEMINI_API_KEY=your_gemini_api_key
OPENCLAW_GATEWAY_TOKEN=your_token
Workflow
- Get user prompt for how to edit the image
- Edit image via Google Gemini API (Imagen 4 Fast) 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?
- Mode (optional):
mirror or direct selfie style
- Target channel(s): Where should it be sent? (e.g.,
#general, @username, channel ID)
- Platform (optional): Which platform? (discord, telegram, whatsapp, slack)
Prompt Modes
Mode 1: Mirror Selfie (default)
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
Mode 2: Direct 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
Mode Selection Logic
| 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 |
Step 2: Edit Image with Google Gemini (Imagen 4 Fast)
Use the Google Gemini API to edit the reference image:
REFERENCE_IMAGE="https://cdn.jsdelivr.net/gh/SumeLabs/clawra@main/assets/clawra.png"
GEMINI_API_KEY="your_key"
PROMPT="make a pic of this person, but <USER_CONTEXT>. the person is taking a mirror 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"
Step 3: Send Image via OpenClaw
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>"
}'
Complete Script Example
See scripts/ono-selfie.sh for the full implementation using Gemini API.
Node.js/TypeScript Implementation
See scripts/ono-selfie.ts for the full implementation using Gemini API.
Supported Platforms
OpenClaw supports sending to:
| Platform | Channel Format | Example |
|---|
| Discord | #channel-name or channel ID | #general, 123456789 |
| Telegram | @username or chat ID | @mychannel, -100123456 |
| WhatsApp | Phone number (JID format) | 1234567890@s.whatsapp.net |
| Slack | #channel-name | #random |
| Signal | Phone number | +1234567890 |
| MS Teams | Channel reference | (varies) |
Setup Requirements
1. Install dependencies (for Node.js usage)
npm install
2. Install OpenClaw CLI
npm install -g openclaw
3. Configure OpenClaw Gateway
openclaw config set gateway.mode=local
openclaw doctor --generate-gateway-token
4. Start OpenClaw Gateway
openclaw gateway start
Error Handling
- GEMINI_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