Put a human face on your agent with fast avatar shortlists, gender control, transparent options, and reusable profile links. Use when the user wants an avatar, profile face, or group image.
---
name: Face
slug: face
version: 1.0.0
description: Put a human face on your agent with fast avatar shortlists, gender control, transparent options, and reusable profile links. Use when the user wants an avatar, profile face, or group image.
homepage: https://clawic.com/skills/face
changelog: Refines the positioning around putting a human face on the agent with faster avatar selection.
metadata:
clawdbot:
emoji: 👤
requires:
bins:
- curl
- python3
os:
- linux
- darwin
- win32
displayName: Face
---
# Put a Face on Your Agent
Use this skill to give an agent, persona, group, or Telegram surface a real human-looking face fast.
The job is simple:
- open a stable face listing URL
- extract a small shortlist of faces
- send the options to the user to choose
- if one is approved, reuse that link as the avatar or suggest saving it in identity
## Core Workflow
### 1. Start from the stable URL
Default to:
`https://generated.photos/faces/beautified/{gender}/young-adult`
Notes:
- `beautified` and `young-adult` are the best default for this use case
- gender is the main parameter that usually matters
- the site may also accept `.../young-adult/{gender}`, but the canonical form resolves to `.../{gender}/young-adult`
### 2. Only trust filters the site already exposes
From the page HTML, the route families that were verified as stable are:
- head pose: `front-facing`, `left-facing`, `right-facing`
- race: `asian-race`, `black-race`, `latino-race`, `white-race`
- eye color: `brown-eyes`, `grey-eyes`, `blue-eyes`, `green-eyes`
- hair color: `brown-hair`, `black-hair`, `blond-hair`
- hair length: `short`, `medium`, `long`
- emotion: `joy`, `neutral`
Do not invent deeper URL combinations from memory. If the user wants narrower filtering, open the base page and follow the exact links that page emits.
### 3. Extract faces from HTML before using a browser
The page already contains:
- `/face/...` detail links
- `data-image-id`
- `https://images.generated.photos/...` preview URLs
Use a direct fetch first. Return 3 to 6 options max.
```python
python3 - <<'PY'
import json
import re
from urllib.request import Request, urlopen
url = "https://generated.photos/faces/beautified/female/young-adult"
raw = urlopen(Request(url, headers={"User-Agent": "Mozilla/5.0"})).read().decode()
cards = re.findall(
r'href="(/face/[^"]+)".*?data-image-id="([^"]+)".*?src="(https://images.generated.photos[^"]+)"',
raw,
re.S,
)
transparent = {
image_id: thumb.replace("\\u002F", "/")
for image_id, thumb in re.findall(
r'id:"([^"]+)".*?transparent:\{thumb_url:"([^"]+)"',
raw,
)
}
for n, (detail, image_id, thumb) in enumerate(cards[:6], 1):
print(json.dumps({
"n": n,
"detail": "https://generated.photos" + detail,
"thumb": thumb,
"transparent": transparent.get(image_id),
}))
PY
```
### 4. Treat background as extraction, not routing
Do not model background as a clean route parameter.
What was verified:
- the page UI shows a background area
- the route itself does not expose a simple stable public background parameter
- transparent versions appear in embedded data as `transparent.thumb_url`
Rule:
- if the user wants a transparent avatar, prefer `transparent.thumb_url`
- if the user wants a bigger preview, open the chosen detail page and use the 512px `og:image` or `twitter:image`
### 5. Always keep the user in the loop
Default output should be:
- 3 to 6 numbered options
- one normal preview per option
- transparent preview too when available
- the detail page link
Do not auto-pick unless the user asks.
### 6. Reuse the chosen face properly
Once the user chooses one:
- propose using it as the avatar for the agent, group, Telegram profile, or similar
- if it is their long-term face, suggest storing the chosen link in identity
- keep the detail page link, not just the image preview URL
## Recommended Response Shape
When you answer, keep it compact:
```text
I found 4 options for your agent face.
1. Option A
Detail: ...
Preview: ...
Transparent: ...
2. Option B
Detail: ...
Preview: ...
Transparent: ...
Tell me which one you want and I’ll prepare it as the avatar.
```
## Common Mistakes
- guessing URL variants instead of following the page's real filters
- trying to control background through the route
- showing too many faces at once
- saving only the preview URL instead of the detail link
- changing an avatar without explicit approval
## External Endpoints
| Endpoint | Data Sent | Purpose |
|----------|-----------|---------|
| https://generated.photos | Filter path segments and face detail page requests | Find faces and open detail pages |
| https://images.generated.photos | Image GET requests only | Preview and transparent preview retrieval |
No other data is sent externally.