# ๐ŸŽฌ LocalMiniDrama **A locally-running AI short drama & comic generator โ€” download and run, no cloud required, fully open source** [![version](https://img.shields.io/badge/version-1.2.7-blue?style=flat-square)](../../releases) [![license](https://img.shields.io/badge/license-MIT-green?style=flat-square)](../LICENSE) [![platform](https://img.shields.io/badge/platform-Windows-lightgrey?style=flat-square)](#) [![stack](https://img.shields.io/badge/Vue3%20%2B%20Node.js%20%2B%20Electron-informational?style=flat-square)](#) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](../../pulls) **[ไธญๆ–‡](../README.md) | English | [Author's Story](story.md)**
--- There are plenty of AI short-drama tools out there, but almost none that truly run **offline locally, work out of the box, and keep your assets private**. This project is built entirely in JavaScript from scratch. Connect your own AI API and start generating your own AI short drama immediately. > โœ… No subscription ยท โœ… Data stays local ยท โœ… Multiple AI providers ยท โœ… Fully open source --- ## ๐Ÿ“ธ Screenshots
Project list
Project list ยท Export/Import projects
Storyboard editor
Storyboard editor ยท One-click image + video generation
--- ## โœจ Features ### ๐Ÿ”„ Full Creation Workflow | Step | Feature | Description | |:----:|---------|-------------| | 1 | **Story Generation** | Enter a synopsis + style; AI generates a full multi-episode script | | 2 | **Script Editing** | Manage episodes and freely edit script text | | 3 | **Character Generation** | AI extracts characters; generate a portrait image for each | | 4 | **Scene Generation** | Auto-extract scenes from script; generate scene background images | | 5 | **Prop Generation** | Extract / manually add props; generate prop images | | 6 | **Storyboard Generation** | Auto-generate storyboard per episode (shot type, camera, dialogueโ€ฆ) | | 7 | **Image / Video Generation** | Generate still image and video clip for each shot | | 8 | **Video Synthesis** | Automatically merge all shot videos into a complete episode | ### โšก One-Click Pipeline - **Generate All**: Characters โ†’ Scenes โ†’ Storyboard โ†’ Images โ†’ Videos โ†’ Synthesis โ€” fully automated - **Fill & Generate**: Intelligently skips already-generated content; only fills what's missing - **Auto Retry**: Up to 3 retries per step (handles 429 rate limits etc.); errors are logged and the pipeline continues - **Live Progress**: Shows the current step and full error log in real time ### ๐Ÿ—‚ Project & Asset Management - **Project Export / Import**: Pack the full project as a ZIP (images, videos, text, configs); share or migrate with one file - **Material Library**: Global character / scene / prop library reusable across projects; per-project and global libraries are strictly isolated - **Aspect Ratio**: Set the ratio (16:9 / 9:16 / 1:1 โ€ฆ) when creating a project; all generated images and videos adapt automatically - **Episode Management**: Add / delete episodes; script preview ### โœ๏ธ Storyboard Fine Editing - **Classic vs Universal mode**: Toggle per storyboard. **Classic** shows the main reference image in the center (video is blocked with a prompt if no reference image); **Universal mode** uses a **segment prompt** field (`universal_segment_text`) for omni video APIs โ€” pair with **`volcengine_omni`** (Volcengine Ark Seedance 2.0 multi-image) or **`kling_omni`** (Kling Omni), with a pre-submit config check. Classic fields remain; switch back anytime - **`@Image1` โ€ฆ slot references**: In the segment prompt, use **`@ๅ›พ็‰‡1` / `@ๅ›พ็‰‡2` โ€ฆ** to align with the reference order (scene โ†’ characters โ†’ props; excludes the classic center panel image); โ€œGenerate from storyboardโ€ can fill camera/movement hints. If the segment prompt is non-empty, **only that text** is sent for video (structured video fields are not concatenated) - **Tail-frame link** (v1.2.7): Extract the last frame from the current shotโ€™s completed video and set it as the next shotโ€™s first frame - **Export storyboard sheet** (v1.2.7): Export the current episode to an HTML table for review and collaboration - **Image Prompt**: View and edit the image-generation prompt for each shot; regenerate after changes - **Video Prompt**: Edit the full prompt text, or expand the composition panel to edit individual fields (scene / duration / action / mood / camera / shot type) โ€” auto-reassembled on save - **Image Management**: AI generation, manual upload, drag-and-drop; replace at any time ### ๐Ÿค– AI Configuration - Three independent model slots: **image generation**, **video generation**, **text generation** - Compatible with **Alibaba DashScope**, **Volcengine (Doubao)**, **locally-deployed models** and any OpenAI-compatible API - Visual config panel; changes take effect immediately; **connection test** supported - Built-in quick-setup wizards for DashScope and Volcengine, with step-by-step API key instructions ### ๐ŸŒ“ UI / Theme - **Dark mode** (default) and **Light mode** toggle, preference persisted - Theme toggle available on every page --- ## ๐Ÿš€ Quick Start ### Option A โ€” Download exe (recommended) Go to **[Releases](../../releases)** and download the latest: - `LocalMiniDrama Setup x.x.x.exe` โ€” NSIS installer - `LocalMiniDrama x.x.x.exe` โ€” portable, no install needed Double-click โ†’ open **AI Config** โ†’ enter your API key โ†’ start creating. > On first launch a config file is created at: > `%APPDATA%\LocalMiniDrama\backend\configs\config.yaml` ### Option B โ€” Development Mode > Requires Node.js >= 18 ```bash # 1. Clone git clone https://github.com/your-username/LocalMiniDrama.git cd LocalMiniDrama # 2. Backend (port 5679) cd backend-node npm install cp configs/config.example.yaml configs/config.yaml # Edit config.yaml โ€” set your AI API endpoint and key npm run migrate # first run: initialise DB npm start # 3. Frontend (new terminal, port 3013) cd frontweb npm install npm run dev ``` Open `http://localhost:3013` in your browser. You can also double-click `run_dev.bat` at the project root to **start both servers at once**. ๐Ÿ“– Full developer guide, packaging, and FAQ โ†’ **[Quickstart Guide](quickstart.md)** --- ## ๐Ÿค– AI Provider Support | Provider | Text | Image | Video | |----------|:----:|:-----:|:-----:| | Alibaba DashScope (Qwen) | โœ… | โœ… | โœ… | | Volcengine / Doubao | โœ… | โœ… | โœ… | | Local (Ollama, OpenAI-compat.) | โœ… | โ€” | โ€” | | Other OpenAI-compatible APIs | โœ… | โœ… | โ€” | ๐Ÿ“– API key registration and configuration โ†’ **[Configuration Guide](configuration.md)** --- ## ๐Ÿ— Architecture ``` LocalMiniDrama/ โ”œโ”€โ”€ backend-node/ # Node.js backend (Express + SQLite) โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ config/ # YAML config loader โ”‚ โ”‚ โ”œโ”€โ”€ db/ # SQLite connection & migrations โ”‚ โ”‚ โ”œโ”€โ”€ services/ # Business logic (generation, export/importโ€ฆ) โ”‚ โ”‚ โ””โ”€โ”€ routes/ # REST API routes โ”‚ โ””โ”€โ”€ configs/ # config.yaml lives here โ”œโ”€โ”€ frontweb/ # Vue 3 frontend (Vite + Element Plus) โ”‚ โ””โ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ views/ โ”‚ โ”‚ โ”œโ”€โ”€ FilmList.vue # Home: project list & material library โ”‚ โ”‚ โ”œโ”€โ”€ DramaDetail.vue # Drama: info / episodes / resource library โ”‚ โ”‚ โ””โ”€โ”€ FilmCreate.vue # Studio: script / characters / storyboard โ”‚ โ”œโ”€โ”€ api/ # Backend API wrappers โ”‚ โ”œโ”€โ”€ stores/ # Pinia state management โ”‚ โ””โ”€โ”€ styles/ # Global styles & theme variables โ”œโ”€โ”€ desktop/ # Electron shell (builds the exe) โ”œโ”€โ”€ docs/ # Documentation โ””โ”€โ”€ README.md ``` **Tech Stack:** | Layer | Technology | |-------|-----------| | Frontend | Vue 3 + Vite + Element Plus + Pinia + Axios | | Backend | Node.js + Express + SQLite (better-sqlite3) | | Desktop | Electron 28 + electron-builder | | Language | Plain JavaScript (no TypeScript) | --- ## ๐Ÿ“‹ Changelog Full version history โ†’ **[CHANGELOG](changelog.md)** **Latest v1.2.7 highlights:** - ๐Ÿ†• **Tail-frame link** โ€” one-click extract the last frame of the current shotโ€™s video (server-side ffmpeg) and set it as the **next shotโ€™s first frame** - ๐Ÿ†• **Export storyboard sheet** โ€” export the current episodeโ€™s shots to an **HTML table** (dialogue, narration, universal segment, prompts, etc.) - ๐Ÿ†• **Unified generation task progress** โ€” shared Pinia store for character/scene/prop/storyboard image & video async jobs, with recovery after page refresh - ๐Ÿ”ง **Video mode guards** โ€” Universal mode checks **`kling_omni`** or **`volcengine_omni` + Seedance 2.x** before Omni multi-ref submit; Classic mode blocks video when no storyboard reference image - ๐Ÿ”ง **Separate first/last frame binding** โ€” last frame no longer overwrites the main panel; Seedance 2.0 certified assets marked stale when the character main image changes **v1.2.6 / v1.2.5 highlights:** - ๐Ÿ†• **Seedance 2.0 + Universal storyboard mode** โ€” `volcengine_omni` / `kling_omni`, multi-ref **`@ๅ›พ็‰‡N`**, `universal_segment_text` (see [CHANGELOG](../CHANGELOG.md)) **v1.2.3 highlights:** - ๐Ÿ†• **Storyboard narrator (narration)** โ€” optional per-shot voice-over text separate from character `dialogue`, for TTS and editing - ๐Ÿ†• **Export narration SRT** โ€” build subtitle cues from shot order and durations - ๐Ÿ”ง **First-shot empty narration fix** โ€” incrementally saved rows are merged from the final parsed JSON so stream-early inserts are not stuck without `narration` - ๐Ÿ”ง **Stricter narration prompts** โ€” system/user instructions require opening VO and non-empty lines when the mode is enabled - ๐ŸŽจ **Narration UI** โ€” textarea/button contrast in light & dark themes; high-contrast โ€œExport SRTโ€ button **Earlier releases:** see **[CHANGELOG.md](../CHANGELOG.md)** for v1.2.2 (coherent frames, novel import, ffmpeg) and full history. --- ## ๐ŸŽฏ Who Is This For | User | Scenario | |------|----------| | ๐Ÿ“น Content creators | Batch-produce AI short dramas / comics | | ๐Ÿ”’ Privacy-conscious users | Keep all assets local, no cloud uploads | | ๐Ÿ›  Developers | Extend AI providers or customise the pipeline | | ๐ŸŒฑ Beginners | Explore the AI video space at zero cost | --- ## ๐Ÿ”— Similar Tools | Tool | Notes | |------|-------| | **Kino ่ง†็•Œ** | Active Chinese AI short-drama platform; cloud-based, closed source | | **Filmaction AI** | AI-driven plot / storyboard / voice; SaaS / web, partly paid | | **oiioii** | Open source, lightweight AI visual creation, flexible deployment | | **ChatFire** | AI dialogue-based short drama; inspired this project's backend design | This project focuses on **local offline use, a friendly UI, and easy customisation**. Feel free to open an [Issue](../../issues) to recommend other tools. --- ## ๐Ÿค Contributing All contributions are welcome! - ๐Ÿ› **Report a bug** โ†’ [New Issue](../../issues/new) - ๐Ÿ’ก **Suggest a feature** โ†’ [New Issue](../../issues/new) - ๐Ÿ”ง **Submit code** โ†’ Fork โ†’ Edit โ†’ Pull Request - โญ **Star the project** โ†’ Help others discover it --- ## โ˜• Buy the Author a Coffee LocalMiniDrama is **free, open source, and runs locally** โ€” maintained in spare time. If it saved you hours or helped ship a short drama, optional tips are warmly appreciated (any amount; totally voluntary). > Tips do **not** affect features, issues, or PRs. A โญ Star or sharing the repo helps just as much.
WeChat Pay tip QR
WeChat Pay
Alipay tip QR
Alipay
--- ## ๐Ÿ’ฌ About the Author Just an ordinary game developer who got excited about the AI short-drama trend and built this open-source tool in JavaScript. Ship first, figure out the rest later. Full story, inspirations, and acknowledgements โ†’ [Author's Story](story.md) --- ## ๐Ÿ“„ License [MIT](../LICENSE) ---
**If this project helps you, a โญ Star is the best encouragement for the author!**