ciphers
Classic video generation is one-shot—you prompt, wait, and if the clip is slightly wrong you start over.
Core trick
Re-renders each natural-language edit from a locked seed image and motion plan, so refinements do not restart the whole clip.
Tags
Description
Classic video generation is one-shot—you prompt, wait, and if the clip is slightly wrong you start over. MotionDesk turns that into an iterative loop: seed a still (NB2 Lite), have Gemini 3 Flash draft the motion plan and edit chips, animate it (Omni Flash), then keep refining with natural language (and optional style/element reference images) without regenerating from scratch.
It mainly helps people who need short, directed motion clips and hate one-shot regen loops:
Product / brand marketers — animate stills, swap materials or backgrounds, keep lighting consistent for ads and social
Creators & short-form editors — iterate camera, mood, and props conversationally for Reels/Shorts (especially 9:16)
Designers & art directors — explore style transfers and look variants from a locked seed without restarting the shot
Indie filmmakers / storyboarders — build multi-shot narrative beats from planned takes, then refine each clip with chat
Demo builders / hackathon teams — show a full NB2 → plan (Gemini 3 Flash) → Omni generate/edit pipeline end to end
README excerpt
# SignDesk — Conversational Video & Motion Generic tutor workspace for the **Gemini Omni Flash** challenge. **Pipeline:** NB2 Lite seed stills → Gemini 3 Flash motion prompt → Omni Flash video → Omni Flash multi-turn edits. Theme is intentionally generic (`src/lib/theme.ts`). Swap branding later for **AI Kitchen** without rewriting orchestration. ## Models | Role | Model ID | Job | | --- | --- | --- | | Seed / keyframe | `gemini-3.1-flash-lite-image` | Fast stills | | Motion prompt | `gemini-3.5-flash` | Draft Omni animation prompt from the seed brief | | Generate + edit video | `gemini-omni-flash-preview` | Animate + conversational edits via Interactions API | **Edit channel:** text instructions (and optional reference images for swaps). **Audio input is not supported** on the Omni Flash Gemini API yet — do not build voice-edit as a required path. ## Stack - Next.js 15 (App Router) + TypeScript + Tailwind - `@google/genai` (Interactions API for Omni; `generateContent` for NB2 Lite) - In-memory sessions (demo) — replace later for production ## Quick start ```bash cp .env.local.example .env.local # set GEMINI_API_KEY=... npm install npm run dev ``` Open [http://localhost:3000](http://localhost:3000). ## Architecture ```text src/ ├── app/ │ ├── page.tsx # Tutor UI │ └── api/ │ ├── session/route.ts # Create session │ ├── seed/route.ts # NB2 Lite still │ ├── video/route.ts # Omni generate (turn 1) │ └── ed