One Claude Code slash command. Forty-second AI soap opera. Same characters, every episode.
▶ Watch the 40-second demo — episode 1 of ball-romance: basketball and soccer ball get married, have a tennis-ball baby, soccer ball cheats with a bowling ball, basketball picks up the hoop.
40 seconds. 9:16 vertical. 720p. Captions perfectly synced. Generated end-to-end by one /drama invocation, ~15 minutes, ~$4.
git clone https://github.com/KeWang0622/drama-cc.git
cd drama-cc
bash scripts/dev.sh installThis copies skills/drama/SKILL.md into ~/.claude/skills/drama/. Claude Code picks it up on next launch.
Then make sure Pika MCP is connected (/mcp in Claude Code → authenticate Pika).
# In Claude Code:
/drama a coffee mug and a tea kettle fall in love, betray, divorce
# Or continue an existing series with the same characters:
/drama ball-romance next
# Or list your series:
/drama listA 40-second captioned vertical video shows up at ~/drama-series/<slug>/episode-NN/FINAL.md. See examples/ball-romance/ in this repo for what a finished series looks like — including the series.json that locks the characters across episodes.
Every other AI short-drama tool — Jellyfish, Huobao, story-flicks — manages character consistency within one drama. None of them persist your characters across runs. Episode 2 reinvents the wheel and your basketball gets a different bow.
drama-cc writes characters to disk as a series. The same orange basketball with the same pink bow shows up in episode 1, episode 2, episode 7. Pika MCP's reference-image and identity primitives make this work from a single Markdown skill file — no web app, no Electron workspace, no database.
It also handles the unsexy parts: Whisper can't distinguish 他/她 in spoken Chinese (homophones), so auto-captions get pronouns wrong half the time and ruin the punchline. The skill always transcribes-then-corrects-then-manual-captions. You don't have to know this.
premise ┌────── narration MP3 ────┐
│ │ │
▼ ▼ ▼
┌────────┐ ┌───────────────┐ ┌──────────────────┐
│ Plan │───▶│ Phase 2: char │───▶│ Phase 3: audio │
│ beats │ │ ref images │ │ (narration +BGM) │
└────────┘ │ (or reuse) │ └──────────────────┘
└───────────────┘ │
│ │
▼ │
┌───────────────┐ │
│ Phase 4: 7 │ │
│ scene images │ │
│ (parallel) │ │
└───────────────┘ │
│ │
▼ │
┌───────────────┐ │
│ Phase 5: 7 │ │
│ seedance i2v │ │
│ (parallel) │ │
└───────────────┘ │
│ │
▼ ▼
┌────────────────────────────────┐
│ concat → mix narration → mix │
│ BGM → transcribe → manual caps │
└────────────────────────────────┘
│
▼
40-second MP4
Stage details, anti-patterns, voice/caption cheat sheet, and the full prompt patterns we tested live in skills/drama/SKILL.md. The skill includes everything Claude Code needs to run the pipeline.
Pika is the video runtime. Without it, the skill can't generate. Connect at https://www.pika.me/mcp — typical cost per episode is ~$3-5 (mostly the seedance video calls).
The skill uses these Pika primitives: generate_image (characters + scene composites), generate_video with seedance provider (image-to-video animation), generate_speech, generate_music, transcribe_audio, edit_concat, edit_audio_mix, add_captions.
Chinese (default — captions use Noto CJK, voice defaults to Calm_Woman) and English (Inter font, default minimax-tts voice). The skill auto-detects from the premise — any CJK character triggers Chinese mode.
-
/drama list --jsonfor scripting - Multi-character series (4+ characters with
create_kling_elementslots) - Optional Sora / Veo3 backends behind the same
/dramainterface
MIT — see LICENSE.
The ball-romance example was the first thing built with this skill; the cliffhanger from episode 1 (basketball mid-swing with the backboard) is intentionally unresolved. /drama ball-romance next is the natural next test.
