
托管式 AI 视频/图像生成工作台 · 自定义模型 · 多模式 · PWA · 实时任务 支持代理模式、UI 设计模式、工作台模式、无限画布、反向提示词、提示词广场、GIF 生成。前后端任务机制轻量级。
托管式 AI 视频/图像生成工作台 · 自定义模型 · 多模式 · PWA · 实时任务 支持代理模式、UI 设计模式、工作台模式、无限画布、反向提示词、提示词广场、GIF 生成。前后端任务机制轻量级。
Nova Studio is an AI video/image generation workbench for individuals and small teams. The frontend is a Next.js 16 + React 19 static export (PWA); the backend is a small Node.js service (server.js + SQLite + WebSocket) that schedules tasks and proxies generation APIs.
What the open-source edition gives you:
generateContent) and OpenAI (Responses protocol)Current version: v3.3.0
Everything lives under docs/. The plugin protocol docs are written in Chinese.
| I want to… | Go here |
|---|---|
| Write a video plugin | docs/plugins/ ← start here |
| Install a ready-made plugin | nova-studio-plugins (official collection + template) |
| Get a working plugin in 10 minutes | docs/plugins/quickstart.md |
| Have an AI write the plugin for me | docs/plugins/LLM.md (paste the whole file into your AI) |
| Look up a protocol field | manifest · ui.schema · provider |
| Debug a plugin that won't load / a failing task | docs/plugins/errors.md |
| Copy a known-good pattern | docs/plugins/cookbook.md |
| Understand the task lifecycle | docs/plugins/lifecycle.md |
Your sponsorship is welcome.
| Wide | Narrow | Mobile |
|---|---|---|
The whole left-hand form is rendered from the plugin's ui.schema.json — tiers, resolutions, durations and media slots are all declared by the plugin; the host knows nothing about any specific upstream. Credentials are filled in per plugin under Settings → Plugins.
| Workbench | Settings → Plugins |
|---|---|
Starting from one UI mockup: AI auto-slices it → you adjust in the slice editor → a multi-turn agent reproduces the page → export the full design package.
| ① Source mockup | ② Import and slice | ③ Auto-slice + manual fixes | ④ Start web reproduction |
|---|---|---|---|
| ⑤ Agent edits the copy | ⑥ Multi-turn refinement | ⑦ Export as ZIP | ⑧ Final result |
|---|---|---|---|
| Ask | Generate |
|---|---|
| Generate | Fine-tune |
|---|---|
| Preview | Edit |
|---|---|
| Reverse prompt | Prompt gallery | My assets | Settings |
|---|---|---|---|
| Mode | Entry point | Summary |
|---|---|---|
| Text to image | TextToImageForm |
Generate from a text prompt, multiple images in parallel |
| ️ Image to image | ImageToImageForm |
Upload references to edit / convert / restyle |
| Agent | AgentChatWorkspace |
Conversational generation: chat → plan → images, with vision descriptions, web search and reasoning |
| ✂️ UI design mode | SliceWorkspace |
UI mockup → slice assets → web reproduction (wide screens only, see below) |
| Reverse prompt | ReversePromptForm |
Upload an image and stream back a prompt (any configured text model) |
| GIF generation | GifGenerationWorkspace |
Multi-frame generation + grid assembly, GIF encoded in-browser (gifenc) |
| Video workbench | PluginWorkbench |
Powered by video plugins; the host ships no upstream protocol (see below) |
Video generation contains no upstream-specific protocol. The host provides the tab, task queue, history, media upload and form rendering; "who to call, what to send, how to poll, where the result is, what the form looks like" all live in the plugin pack.
backend/plugins/, then restarts the backend (or clicks "Reload" in Settings)manifest.json / ui.schema.json / provider.json), no executable codepermissions.hosts, plus every private/loopback address, is refusedbackend/plugins/ccode-h3/ (MiniMax H3 — 8 models, first/last frame, reference image/video/audio, upscaled tiers) Official plugin collection: nova-studio-plugins
— includes a minimal plugin template and can be cloned straight into backend/plugins/:
cd backend/plugins && git clone https://github.com/tianjiangqiji/nova-studio-plugins.git .Writing your own plugin (or having an AI write it): docs/plugins/ (paste docs/plugins/LLM.md into your AI verbatim)
Break a flat UI mockup into reusable slice assets, then reproduce it as a previewable web page. Wide-screen only — narrow screens show a hint to switch.
imagetracerjs), AI SVG redraw. All four are independently revertible and never overwrite each other; algorithmic ones support batches, AI ones fire one at a time (so a single click can't rack up charges)index.html / styles.css / script.js) plus a read-only assets/. The agent edits by line via read_file / edit_file, previews live in an iframe, and context usage is taken from the API's reported input_tokens (warn at 140K, refuse at 175K)web/ files), and workspaces can be restored from an exportnova-slice-db) and are covered by one-click backup/restore⚠️ "AI fill" (brush-mask inpainting) is not in this release. Its request pipeline is shared with background fill and works, but a render-ordering defect in the editor component needs fixing first.
Image-editing features (AI transparency, background fill) need an OpenAI-protocol image model: they rely on
/v1/images/editswith amask, which the Gemini and Grok protocols have no equivalent for, so those models don't appear in the slice page's model picker.
PROMPT_GALLERY_MODE has three settings:
1 always on: the tab is always visible2 private: password required (from the backend env var PROMPT_GALLERY_PASSWORD)3 off: hidden entirelyContent is maintained in backend/prompts.json, with profanity filtering via backend/blacklist.json.
Nova Studio is built around user-defined models:
/api/nova/proxy/textNOVA_TASK_CONCURRENCY)backend/data/nova-images/, configurable via NOVA_IMAGE_DIR) and served directly at /api/nova/images/:taskId/:indexNOVA_TASK_TTL_HOURS), cleaned up automatically every 5 minutesnext-pwa), installable to the desktopJSZip over localStorage + IndexedDB; incompatible legacy config is skipped and the rest still restores)@tanstack/react-virtual)…Production builds land in
frontend/out/and are served statically byserver.js.
Docker Compose
…Open .
Injected by mounting the root .env at /app/.env (the code reads process.cwd()/.env), so the image never needs rebuilding.
After editing:
PORT / HOSTNAME / NODE_ENV / data paths require a restartdocker compose restartdocker compose down
docker compose pull
docker compose up -d --force-recreatedocker-compose.yml mounts:
| Host | Container | Purpose |
|---|---|---|
./data |
/app/backend/data |
database + images (including WAL/SHM) |
./.env |
/app/.env |
environment variables |
./blacklist.json |
/app/backend/blacklist.json |
blocked words |
./prompts.json |
/app/backend/prompts.json |
prompt gallery |
./plugins |
/app/backend/plugins |
video plugins (shadows the in-image dir; edit plugins without rebuilding the image) |
Plugins are loaded once at process startup; after adding/removing/editing plugin
暂无开放 Issues,或尚未同步最近议题。