# Cartoon Studio

> >

- **Type:** Skill
- **Install:** `agentstack add skill-domco685-ai-cartoon-studio-skill-skill`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [domco685](https://agentstack.voostack.com/s/domco685)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [domco685](https://github.com/domco685)
- **Source:** https://github.com/domco685/ai-cartoon-studio-skill/tree/main/skill

## Install

```sh
agentstack add skill-domco685-ai-cartoon-studio-skill-skill
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

#  Studio

Produce a complete  episode + social kit from one idea. Read the project
`CLAUDE.md` and `3d/style-bible-3d.md` first — they hold the brand facts, model IDs, voice id,
costs, and lip-sync tips this skill depends on. Use the **3D Pixar** track by default.

This is a multi-step production with **human approval gates**. Do NOT skip ahead to the
expensive animation step before stills are approved. Announce each step and show results.

## Inputs you need before starting
- The **video idea** (one line). If vague, ask 1–2 quick questions (which content pillar?
  any specific lesson/brand to feature?).
- Confirm **resolution** (default 720p to conserve credits) and **track** (default 3D).
- Keys present: `ELEVENLABS_API_KEY` and Higgsfield MCP connected. (`.env` gets reset by a
  linter — if a key is missing, re-add and `set -a; . ./.env; set +a`.)

## The 7 steps

### 1. Script  → `episodes/.../script.md`
Write a ~90s script in the  beat structure (see `references/script-framework.md`).
Open with "", land the lesson through story (never
preachy), include the breathless gag once, end with the CTA + wink + "businesses can give more
than they take. Hoo-hoo-hooray!". Split into 8–14 shots, each line ≤ ~13s of speech. Map which
shots become the 6 carousel beats. **Get the script approved.**

### 2. Voice  → `audio/shotNN.mp3`
Generate each shot's line with ElevenLabs (`references/voice.md` has the exact API call, voice
id ``, model `eleven_v3`, v3 delivery tags). Verify each is ≤15s
(`afinfo`). Re-split any line that runs long.

### 3. Keyframe stills (SAMPLES)  → `stills/shotNN.png`
For each shot, generate a 2k 9:16 still with Higgsfield `nano_banana_pro` (image-to-image from
the character refs in the style bible). Prefix every prompt with the 3D style block; for
dialogue shots use an **open-mouth talking** pose. New scenes/characters: keep refs consistent.
**Show all stills and get them approved** — this is the cheap iteration gate.

### 4. Animation  → `video-clips/shotNN.mp4`  (EXPENSIVE — only after stills approved)
Animate each still with Higgsfield `wan2_7` (start_image = the still, audio = that shot's mp3),
720p, duration = audio length (≤15). Use the pause rule + exaggerated-but-controlled mouth
prompt. For a guaranteed end pose (wink etc.) use start+end frames (max 2 medias → add voice in
assembly). Then QA every fresh clip for lip-sync (see **Lip-Sync QA** below) before assembling.

### 5. Assemble the movie  → `final/.mp4`
Using the bundled `scripts/` (adapt per-episode content) + ffmpeg/PIL:
- comic SFX pops via `make_sfx.py` overlaid on the right shots,
- captions (`make_captions.py`) on book/CTA shots (top), subtitles (`gen_subs.py` +
  `burn_subs.py`) along the bottom,
- normalize + concat (`build_3d.sh` pattern), then burn subs, then the **music dip** mix
  (generate a ~2min bed via Higgsfield `sonilo_music`; fade out on the key emotional-silence
  line, return after), then prepend the **~0.7s silent cover** (`make_intro.py` → first frame =
  thumbnail). See `references/assembly.md` for the exact ffmpeg recipe.

### 6. Slideshow + captions  → `slideshow/` (9:16) + `slideshow/instagram/` (4:5)
`python3 scripts/make_slides.py 1080 1920 slideshow` and `... 1080 1350 slideshow/instagram`.
Point its SLIDES at the 6 beat stills; captions go in open space, never over the face/character.
Then write **four** platform captions (run each through the `sound-human` skill) — one per
destination, each genuinely its own (slides/carousel = swipe voice; video/reel = watch voice):
`slideshow/caption-tiktok.txt` (TikTok slides), `slideshow/instagram/caption-instagram.txt`
(IG carousel), `final/caption-video.txt` (TikTok video / general), `final/caption-reel.txt`
(IG reel — not a clone of the TikTok video). YouTube's title/description are derived in step 7.
**Every TikTok caption (slides AND video) must end with the `` block** — see
`references/captions-and-distribution.md`.

### 7. Package per platform  → `deliverables/`
`/opt/homebrew/bin/python3 scripts/make_deliverables.py  --title ""`
(use a python with Pillow — it makes the 16:9 thumbnail + 4:5 cover). This assembles the
VA-ready, **self-contained per-platform** tree from the step 5–6 outputs:
- `deliverables/tiktok/{video,slides}` (9:16) · `instagram/{reel,carousel}` (4:5)
- `youtube/short` (video-only — no carousel; gets a 16:9 `thumbnail.jpg` + `title.txt` /
  `description.txt` + a 9:16 `cover-9x16.jpg`)
- `deliverables/README.txt` — a one-page "what to post where" for the VA.
The video master is COPIED into each platform folder; **every folder gets its own format-correct
`cover.jpg`** and its own caption. Fill the `` / `` placeholders in
`make_deliverables.py` first. Hand back the `deliverables/` path. Keep a LOCKED copy + git tag of
the approved master.

## Lip-Sync QA (run after step 4, before step 5)

AI video models drive the mouth from the audio but routinely keep it flapping through pauses —
the most common, most noticeable defect. `scripts/check_lipsync.py` automates the catch: it finds
where the voice is silent and pulls the exact frame the model drew there. During silence the
mouth must be **closed**; if it's open, that shot is broken and should be re-rendered. Always run
this on a batch of fresh clips rather than spotting problems by eye.

1. **Run the checker per clip.** Prefer the clean VO mp3 via `--audio` (pure speech → clean
   silence detection; aligned at t=0 with the clip):
   ```bash
   python3 scripts/check_lipsync.py \
     --video video-clips/shot08a.mp4 --audio audio/shot08a.mp3 \
     --outdir video-clips/qa/shot08a
   ```
   (Create the `qa/` dir first.) It prints a JSON manifest and writes `silence_s.png` (mouth
   should be CLOSED) + `speech_s.png` (control: mouth should be OPEN/moving).
2. **View frames + judge.** Read each `silence_*` frame: is the mouth closed? An open/mid-syllable
   mouth during silence = lip-sync error. `speech_*` frames are the sanity control.
3. **Verdict per shot:** PASS, or FLAG with timestamp(s) — e.g. "shot08a: FLAG — mouth open at
   11.4s during a 0.6s pause."
4. **Fix by re-rendering** (not frame edits): re-run Wan with the pause rule stated emphatically.
   If a shot fails twice, shorten/remove the long pause in the voice line, then re-render.

Tuning: `--noise` (default `-35dB`) is the silence threshold; `--min-silence` (default `0.35s`)
is the shortest gap to flag. For a whole episode, loop over every clip and give one consolidated
PASS/FLAG table.

## Guardrails
- **Likeness:** never depict a real living person's recognizable face on this monetized kids'
  content. Use "inspired-by" characters; name real people in voiceover only.
- **Cost:** stills are cheap, animation is not. Confirm before big animation batches; prefer
  720p. Avoid Seedance.
- **Tone:** wonder not shame; hope + action; simple but not dumb; parents enjoy it too.
- Commit after each step.

See `references/` for the script framework, voice API, assembly recipe, and model/style specs.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [domco685](https://github.com/domco685)
- **Source:** [domco685/ai-cartoon-studio-skill](https://github.com/domco685/ai-cartoon-studio-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-domco685-ai-cartoon-studio-skill-skill
- Seller: https://agentstack.voostack.com/s/domco685
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
