# ono-selfie > Edit Ono's reference image with Google Gemini (Imagen 4 Fast) and send selfies to messaging channels via OpenClaw - Author: hoshiki - Repository: chemark/clawono - Version: 20260209210122 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-09 - Source: https://github.com/chemark/clawono - Web: https://mule.run/skillshub/@@chemark/clawono~ono-selfie:20260209210122 --- --- 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 ```bash GEMINI_API_KEY=your_gemini_api_key # Get from https://aistudio.google.com/app/apikey OPENCLAW_GATEWAY_TOKEN=your_token # From: openclaw doctor --generate-gateway-token ``` ### Workflow 1. **Get user prompt** for how to edit the image 2. **Edit image** via Google Gemini API (Imagen 4 Fast) with fixed reference 3. **Extract image URL** from response 4. **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: ```bash REFERENCE_IMAGE="https://cdn.jsdelivr.net/gh/SumeLabs/clawra@main/assets/clawra.png" GEMINI_API_KEY="your_key" # Mode 1: Mirror Selfie PROMPT="make a pic of this person, but . the person is taking a mirror selfie" # Mode 2: Direct Selfie PROMPT="a close-up selfie taken by herself at , 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" # Note: The actual API call structure for Gemini / Imagen 3 editing will depend on the specific endpoint. # Below is a conceptual example for the new Ono script. ``` ### Step 3: Send Image via OpenClaw Use the OpenClaw messaging API to send the edited image: ```bash openclaw message send \ --action send \ --channel "" \ --message "" \ --media "" ``` **Alternative: Direct API call** ```bash curl -X POST "http://localhost:18789/message" \ -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "action": "send", "channel": "", "message": "", "media": "" }' ``` ## 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) ```bash npm install ``` ### 2. Install OpenClaw CLI ```bash npm install -g openclaw ``` ### 3. Configure OpenClaw Gateway ```bash openclaw config set gateway.mode=local openclaw doctor --generate-gateway-token ``` ### 4. Start OpenClaw Gateway ```bash 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