AgentStack
SKILL verified MIT Self-run

Cartoon Studio

skill-domco685-ai-cartoon-studio-skill-skill · by domco685

>

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-domco685-ai-cartoon-studio-skill-skill

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Cartoon Studio? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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 silences.png (mouth should be CLOSED) + speechs.png` (control: mouth should be OPEN/moving).

  1. 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.

  1. Verdict per shot: PASS, or FLAG with timestamp(s) — e.g. "shot08a: FLAG — mouth open at

11.4s during a 0.6s pause."

  1. 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.

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

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.