Back to Projects

Lingoym Mascot Studio

AI-driven animation pipeline producing branded social content for the Lingoym mascot: character reposing with Qwen-Image-Edit, image-to-video with Kling and MiniMax on Comfy Cloud, and automated 9:16 reel assembly with ffmpeg.

Python
ComfyUI
Comfy Cloud API
Qwen-Image-Edit
Kling
Wan 2.2
MiniMax
BiRefNet
ffmpeg
Pillow
Live Demo

Overview

Lingoym Mascot Studio is the content pipeline behind the social media presence of Lingoym — an AI-powered name generator whose brand mascot is a two-tailed chibi kitsune with a glowing star on its forehead. The studio turns a single character reference into an endless stream of branded animated reels: idle loops, walks, dances, story cards, all assembled automatically with music, captions, and brand overlays.

Lingoym mascot reference - two-tailed chibi kitsune
The canonical character reference everything starts from

The Challenge

Producing consistent character content with generative AI is hard for one specific reason: identity drift. Every generation wants to reinvent the character — different proportions, different colors, a missing second tail. The pipeline had to keep the mascot pixel-recognizable across hundreds of generations while staying cheap and fast enough for a daily posting schedule.

The Pipeline

Content is produced in composable stages, each powered by a different model on Comfy Cloud (ComfyUI's hosted API) and driven by Python scripts that submit workflow graphs, poll job status, and download results.

Stages

  • 1. Repose - Qwen-Image-Edit changes the pose or framing while preserving the exact character design
  • 2. Animate - Kling, Wan 2.2, or MiniMax turn the reposed still into 1080p motion; MiniMax ref2va adds synced audio for choreographed multi-beat clips
  • 3. Matte - BiRefNet (stills) or temporally consistent video matting removes backgrounds for compositing
  • 4. Assemble - a single ffmpeg pass composites the mascot onto scenes and builds branded 9:16 reels with music, captions, and logo overlays
Reposed side-profile quadruped version of the mascot
Stage 1 output: the same character, reposed to a side-profile quadruped for walk cycles
Mascot composited into a night forest scene
A generated scene start-frame for a story sequence

Reel Assembly

A CLI tool (build-reel.py) assembles final vertical reels in one ffmpeg pass: green-screen or alpha compositing, background plates, Ken Burns zooms for still cards, music loops with fades, and branded caption frames rendered with Pillow.

python3 build-reel.py \
  --mascot assets/actions/green/dance-green.mp4 --key green \
  --bg assets/references/brand/background.jpg \
  --name "Soo-jin" --meaning "Excellent and gentle" \
  --music assets/music/loop1.mp3 --text ogcard --out reel.mp4
Frame from a finished 9:16 reel
A frame from a finished 1080x1920 reel ready for publishing

Hard-Won Gotchas

Things the documentation does not tell you

  • BiRefNet flickers on side-profile clips (per-frame alpha jitter around the eyes) - use camera-facing framing or temporally consistent video matting instead
  • Partner-model outputs land under unexpected response keys (animated/images, not videos) - always scan all output buckets
  • MiniMax frame counts snap to a fixed grid - request lengths must be computed, not guessed
  • One big pose-plus-position change in a single first-last-frame clip morphs badly - split into single-action clips and assemble
  • Rendered in-video text comes out garbled - overlay clean typography with ffmpeg instead

Lessons Learned

  1. Pin the character with a reference, not a prompt — image-conditioned editing (Qwen-Image-Edit) preserves identity far better than any text description ever could.
  2. Compose small clips instead of generating long ones — short single-action generations assembled with ffmpeg beat long generations on both quality and cost.
  3. Keep humans in the loop at the storyboard level — the pipeline automates execution, but choosing beats, scenes, and timing is still a creative decision.