avatar-invent
Skill3 starsChanged 4 months agoMITView on GitHub
Invent a brand-new FICTIONAL avatar from a text description — no real person, photo or recording needed. Generates a front-facing, well-lit, seated half-body presenter still (photorealistic by default; soft3d/Pixar, anime or a custom style on request) in a room that fits the topic, derives camera-angle variations, and DESIGNS a matching voice with ElevenLabs Voice Design which is then cloned with MiniMax — all written into the same per-avatar folder structure (scene.json, talking_profile.json, refs/, angles/, voices/, avatar.json) that avatar-reel-composer and reel-restyle consume. Defaults follow UGC talking-head reel best practices (eyes to lens, soft key from the left + soft backlight, vertical 9:16). Use when the user wants to make up / invent / fabricate an avatar, character or presenter for a reel from just a description (e.g. "inventa un avatar de una psicóloga para un reel", "create a fictional presenter", "necesito un personaje para generar un reel"), rather than cloning an existing person.
- Installs packages
In this repository45 other files it gives its agents.
- asset-generatorSkill
- audio-theaterSkill
- avatar-ambient-sfxSkill
- avatar-camera-anglesSkill
- avatar-framesSkill
- avatar-locationSkill
- avatar-reel-composerSkill
- avatar-talking-videoSkill
- bg-music-hqSkill
- bg-musicSkill
- brand-content-strategySkill
- broll-actor-copySkill
- broll-avatar-cameraSkill
- broll-browser-recorderSkill
- broll-coreSkill
- broll-cursorSkill
- broll-finderSkill
- broll-generatorSkill
- broll-storySkill
- broll-terminalSkill
- broll-web-captureSkill
- caption-word-revealSkill
- carousel-generatorSkill
- cuento-reelSkill
- facebook-videosSkill
- gpt-image-2Skill
- instagram-videosSkill
- luxury-hnwi-salesSkill
- onboarding-scriptSkill
- pdf-remixSkill
- reel-discoverySkill
- reel-restyleSkill
- rule-of-six-editSkill
- seedance-2Skill
- sound-effectsSkill
- tiktok-videosSkill
- video-bg-replaceSkill
- video-composeSkill
- video-remixSkill
- video-scene-analysisSkill
- video-transcribeSkill
- viral-video-scriptSkill
- voice-cloneSkill
- voice-isolateSkill
- youtube-videosSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 39
All baked into prompts/presets.json and overridable:
- Distinctive: line 137
Write a storyboard and compose, exactly like any other avatar:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Avatar Invent
Fabricate a complete, reel-ready fictional avatar from a single text
description. Where avatar-reel-composer's create_avatar.py clones a real
person from their Instagram reels, this skill invents one: it casts a face,
a room, a delivery style and a voice, and writes them into the exact same
per-avatar folder structure the rest of the pipeline already understands.
The result is a first-class avatar — drop it straight into
avatar-reel-composer / reel-restyle to produce reels.
Output location. A bare avatar name is created under
./avatares/<name>/(so generated avatars never clutter the project root); pass an explicit path (e.g.path/to/nora) to override, or setAVATARES_ROOT.<avatar>/below refers to that folder.
What it produces
<avatar>/
brief.json # the inputs (description, setting, style, ...)
scene.json # subject / wardrobe / scene / light (drives the still + angles)
talking_profile.json # p-video delivery prompt (calm presenter, eyes to lens)
voice_brief.json # ElevenLabs voice description + sample text
refs/<slug>_hero.png # the hero presenter still (+ _hero_master.png)
angles/<slug>_<move>_916.png # camera-angle cuts (push_in, pull_out, ...)
frames/frame_0001.png + manifest.json # hero exposed as a clean reference frame
voices/<name>.json + index.json + <name>_design_sample.mp3 # MiniMax voice_id
avatar.json # the record (invented: true, stages, artifacts)Defaults (UGC talking-head reel best practices)
All baked into prompts/presets.json and overridable:
- Photorealistic render (use
--style soft3dfor Pixar-like,--style anime, or any custom style string). - Vertical 9:16, eye-level, looking straight into the lens, leaning in slightly.
- Seated, half-body (waist/chest-up) medium shot, with clean negative space on one side for captions.
- Soft, flattering light: soft key from the left ~45°, a gentle rim/back light, open fill — no harsh shadows.
- Phone-camera look: ~35–50mm, shallow depth of field, natural color.
- Room fits the topic via
--setting(office, home, studio, street, outdoors, kitchen, cafe, gym, clinic, …). - Neutral mid-sentence expression (lips slightly parted) so the still animates well for lip-sync.
Setup
Keys are auto-discovered from the sibling skills (usually nothing to set):
- ElevenLabs (voice design) ←
audio-theater/config.json - Replicate (hero still via gpt-image-2 + MiniMax clone) ←
gpt-image-2/voice-clone - Gemini (only for
--generator gemini) ←asset-generator/config.json
pip3 install -r .cursor/skills/avatar-invent/scripts/requirements.txt
# sibling deps (usually already installed):
pip3 install -r .cursor/skills/voice-clone/requirements.txt
pip3 install -r ~/.cursor/skills/gpt-image-2/scripts/requirements.txt
python3 .cursor/skills/avatar-invent/scripts/setup_key.py --show # verify keysCloning the designed voice with MiniMax needs cloudflared (preferred) or
ngrok on PATH, same as the voice-clone skill (brew install cloudflared).
Workflow
The orchestrator runs an idempotent stage machine and stops once for an agent review (the creative casting step) before any paid generation.
# 1) Invent: auto-drafts scene/profile/voice, then pauses for review.
python3 .cursor/skills/avatar-invent/scripts/invent_avatar.py nora \
--description "Chilean woman, mid 30s, warm and reassuring, clinical psychologist" \
--setting clinic --language es
# -> review & refine nora/scene.json, talking_profile.json, voice_brief.json
# (make the SUBJECT a vivid concrete face; tune wardrobe/room/voice).
# 2) Re-run to generate the hero still + angles + designed-and-cloned voice:
python3 .cursor/skills/avatar-invent/scripts/invent_avatar.py nora
# Inspect readiness any time (no API spend):
python3 .cursor/skills/avatar-invent/scripts/invent_avatar.py nora --statusSkip the pause with --no-review for a one-shot run. Re-run any stage with
--force-stage hero / --force-stage voice etc.
The author checkpoint (why it matters)
The script seeds scene.json / talking_profile.json / voice_brief.json from
the brief + the topic's defaults, but the SUBJECT field is just your raw
description. Refine it into a concrete, vivid person (age, face, hair, skin,
expression) — gpt-image-2's identity fidelity is only as good as that text, and
the same scene.json is reused for every camera angle, so a precise subject is
what keeps the avatar from drifting between cuts.
Common variations
# Pixar-style soft 3D character instead of photoreal
python3 .../invent_avatar.py leo --description "..." --setting home --style soft3d
# Horizontal 16:9 (angles auto-off; the hero still is the deliverable)
python3 .../invent_avatar.py max --description "..." --setting office -ar 16:9
# Use Gemini for the hero (native 9:16/16:9, up to 4K) instead of gpt-image-2
python3 .../invent_avatar.py mia --description "..." --generator gemini
# Custom camera moves
python3 .../invent_avatar.py mia --description "..." --moves push_in,low_angle,negative_space_leftSingle-stage scripts (also usable standalone)
# Just the hero still from a scene.json (preview the prompt with --print-prompt):
python3 .cursor/skills/avatar-invent/scripts/generate_hero.py \
--scene-file nora/scene.json --style photoreal -ar 9:16 -o nora/refs/ --slug nora
# Just the voice (ElevenLabs design -> MiniMax clone):
python3 .cursor/skills/avatar-invent/scripts/design_voice.py \
--avatar-dir nora --name nora --voice-brief nora/voice_brief.jsonAfter it's READY
Write a storyboard and compose, exactly like any other avatar:
python3 .cursor/skills/avatar-reel-composer/scripts/compose_reel.py \
nora/reels/001_slug/storyboard.json --finishHow the voice works (ElevenLabs → MiniMax bridge)
A fictional avatar has no recording to clone, so the voice is designed from
text: ElevenLabs Voice Design (/v1/text-to-voice/design) invents a voice from
voice_brief.json's description and returns a long spoken sample. That clean
sample is then handed to the voice-clone skill (MiniMax), producing the
same voices/<name>.json + index.json (voice_id) every avatar uses — so
avatar-reel-composer's narrate.py speaks the new voice with no changes.
The ElevenLabs provenance (description, preview ids) is kept in
voices/<name>_design.json.
See REFERENCE.md for the stage machine, the prompt internals, the presets schema and design notes.
Related skills
avatar-camera-angles— the angle generator this calls.voice-clone— the MiniMax clone step (+ TTS).avatar-talking-video— animate a still into a talking clip.avatar-reel-composer— compose the finished reel.reel-restyle— apply another avatar's reel style to this one.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

