Communitygithub.com

exiao/skills

Create and manage consistent AI video characters — define the persona, generate the portrait with Nano Banana, and store the config for reuse across all videos in the series.

skills 是什么?

skills is a Claude Code agent skill that create and manage consistent AI video characters — define the persona, generate the portrait with Nano Banana, and store the config for reuse across all videos in the series.

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/exiao/skills/tree/HEAD/video/character-creation

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Character Creation

Design a character once. Reuse it forever.

A character is: a name, a personality, a visual identity (portrait image), and a voice archetype. Every video in a series pulls from the same config so the character stays consistent across 100 episodes.

Characters are stored at ~/clawd/characters/<slug>/.


Step 1: Define the Character

Before touching Nano Banana, answer these questions:

FieldDescriptionExample
NameCharacter's on-screen name"Max", "Dr. Erica", "The Analyst"
SlugFilesystem-safe IDmax, dr-erica, the-analyst
PlatformPrimary targetTikTok, Reels, Shorts
Niche / TopicWhat does this character talk about?Investing, personal finance, crypto
Personality3 adjectives maxConfident, dry, contrarian
Speech styleHow they talkShort sentences. No hedging. Uses "here's the thing:" a lot.
Voice archetypeFor ElevenLabs selectionDeep male, mid-range female, energetic young male
Visual styleOverall aestheticPhotorealistic, 3D animated, illustrated
AppearanceAge, ethnicity, clothing, setting35yo, business casual, minimalist office background

Save answers — you'll use them in every step.


Step 2: Generate the Portrait

Two images required: portrait (for thumbnails, branding) and face reference (for InfiniteTalk consistency).

Portrait (9:16 for TikTok/Reels)

uv run ~/clawd/skills/nano-banana-pro/scripts/generate_image.py \
  --prompt "<appearance description>, looking directly at camera, confident expression, <visual style>, professional lighting, clean background" \
  --filename "~/clawd/characters/<slug>/portrait-$(date +%Y-%m-%d).png" \
  --aspect-ratio 9:16 \
  --resolution 2K \
  --thinking high

Face Reference (1:1 for InfiniteTalk)

uv run ~/clawd/skills/nano-banana-pro/scripts/generate_image.py \
  --prompt "<appearance description>, extreme close-up headshot, neutral expression, facing forward, <visual style>, studio lighting, white background" \
  --filename "~/clawd/characters/<slug>/face-ref-$(date +%Y-%m-%d).png" \
  --aspect-ratio 1:1 \
  --resolution 2K \
  --thinking high

Iteration

  • Start at --resolution 512 for fast drafts. Lock the look first.
  • Once approved, regenerate at 2K with --thinking high.
  • If 80% is right, edit: --input-image the draft + prompt the specific fix.
  • For consistency across future regenerations: always pass the approved face reference as --input-image with "Keep the person's facial features exactly the same as the input image".

Step 3: Save the Config

Create ~/clawd/characters/<slug>/config.json:

{
  "name": "Max",
  "slug": "max",
  "platform": "TikTok",
  "niche": "Investing / Stock Market",
  "personality": ["confident", "dry", "contrarian"],
  "speech_style": "Short punchy sentences. No hedging. Calls out conventional wisdom. Uses 'here's the thing:' as a transition.",
  "voice_archetype": "Deep male, 35-45yo, measured pace, slight edge",
  "elevenlabs_voice_id": "",
  "visual_style": "Photorealistic",
  "appearance": "35yo male, sharp jawline, business casual (navy blazer, no tie), minimalist modern office background, warm key light from left",
  "portrait": "portrait-2026-03-03.png",
  "face_ref": "face-ref-2026-03-03.png",
  "created": "2026-03-03",
  "accounts": {
    "tiktok": "",
    "reels": "",
    "shorts": ""
  }
}

Fill in elevenlabs_voice_id after selecting/cloning the voice in ElevenLabs. Fill in accounts with platform handles once set up.


Step 4: Verify Consistency

Before the character is production-ready, generate 3 test images using the face reference as input and verify:

  • Same facial features across all 3
  • Expression changes work (neutral, smile, serious)
  • The character reads clearly at thumbnail size (small screen test)

If consistency breaks: pass 2-3 approved reference images simultaneously via comma-separated --input-image.


Character Directory Structure

~/clawd/characters/
  max/
    config.json
    portrait-2026-03-03.png
    face-ref-2026-03-03.png
  dr-erica/
    config.json
    portrait-2026-03-03.png
    face-ref-2026-03-03.png

When to Create a New Character

  • New account on a new platform with a different niche or tone
  • Series concept that needs a visually distinct persona
  • A/B testing two character styles on the same niche

Don't create a new character just because you're starting a new series. If the niche and platform match, reuse the existing character — that's the whole point.


Downstream Usage

Once a character is created:

  • Scripts → content-strategy skill (Video Series section) writes the episode scripts in the character's voice
  • Audio → ElevenLabs, using elevenlabs_voice_id from config
  • Video → InfiniteTalk, using face_ref image + ElevenLabs audio
  • Scheduling → upload the output MP4 to your platform of choice

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能