[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2226":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},2226,"LingtiStudio","ruilisi\u002FLingtiStudio","ruilisi","From a single topic to a multi-minutes video,  LingtiStudio can take you through:  script -> review -> keyframes -> voiceover -> clips -> assembly -> final video","",null,"Python",172,11,117,0,6,18,55,3.24,false,"main",true,[24,25],"video","video-generation","2026-06-12 02:00:38","# LingtiStudio\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fscreenshots\u002Fdoggie.gif\" alt=\"LingtiStudio doggie\" width=\"180\" \u002F>\n\u003C\u002Fp>\n\nLingti means **greyhound** in Chinese, the fastest dog.  \n**LingtiStudio** helps you turn an idea into a complete AI video workflow, fast.\n\nFrom a single topic, LingtiStudio can take you through:\n\n**script -> review -> keyframes -> voiceover -> clips -> assembly -> final video**\n\nIt is built for creators who want to go from short videos to longer, multi-scene productions without manually stitching together five different tools.\n\n[中文说明 \u002F Chinese Guide](.\u002FREADME-CN.md)\n\n---\n\n## Chinese Demo Video\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"320\">\n      \u003Ca href=\"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1NjDrBnECg\u002F\">\n        \u003Cimg src=\".\u002Fscreenshots\u002Fcn-video-header.png\" alt=\"LingtiStudio Chinese demo video cover\" width=\"320\" \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd>\n      \u003Cstrong>Chinese demo video: LingtiStudio open-source walkthrough and output showcase\u003C\u002Fstrong>\n      \u003Cbr \u002F>\n      \u003Cbr \u002F>\n      If you want to see the product flow, interface, and generation results before trying it yourself, this Bilibili video is the best starting point.\n      \u003Cbr \u002F>\n      \u003Cbr \u002F>\n      \u003Ca href=\"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1NjDrBnECg\u002F\">Watch on Bilibili\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## Screenshots\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33.33%\">\n      \u003Cimg src=\".\u002Fscreenshots\u002Findex_page.png\" alt=\"LingtiStudio home page\" \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33.33%\">\n      \u003Cimg src=\".\u002Fscreenshots\u002Fvideo_gen_page.png\" alt=\"LingtiStudio video generation page\" \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33.33%\">\n      \u003Cimg src=\".\u002Fscreenshots\u002Fvideo_done_page.png\" alt=\"LingtiStudio final output page\" \u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cstrong>Home\u003C\u002Fstrong>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cstrong>Video Generation Workspace\u003C\u002Fstrong>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cstrong>Final Output Page\u003C\u002Fstrong>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## What It Is\n\nLingtiStudio is an open-source AI video production system for local-first creation.\n\nIt is designed to make the full generation chain feel like **one product**, not a pile of disconnected scripts and providers.\n\nWith LingtiStudio, you can go from a rough idea to a polished deliverable with:\n- script generation\n- human review before expensive generation starts\n- character \u002F scene \u002F prop asset generation and confirmation\n- keyframe image generation\n- TTS voiceover\n- image-to-video generation\n- FFmpeg assembly\n- subtitle export\n- JianYing \u002F CapCut draft generation\n\nThat means you can build:\n- short promotional videos\n- narrated explainers\n- multi-scene story videos\n- polished ad-style videos\n- longer AI-assisted productions with reviewable scenes and recoverable outputs\n\nInstead of a one-shot black box, LingtiStudio gives you a workflow you can pause, inspect, edit, resume, and deliver.\n\n---\n\n## Why It Feels Different\n\nMost AI video tools are great at giving you a result.  \nLingtiStudio is built to give you a **production pipeline**.\n\nIt focuses on:\n- **reviewability**: inspect and edit scenes before expensive generation begins\n- **asset confirmation**: approve reusable characters, scene looks, and props before full generation\n- **recoverability**: resume from script, video, or assembly instead of starting over\n- **consistency**: keep prompts, voice, aspect ratio, and style aligned across scenes\n- **long-form readiness**: handle multi-scene projects more like a structured workflow than a toy prompt box\n- **local control**: keep your config, outputs, drafts, and assembly on your own machine\n\n---\n\n## Workflow\n\nLingtiStudio turns end-to-end AI video generation into a one-click, full-stack workflow:\n\n1. Generate a script from a topic or imported reference analysis\n2. Review and edit scenes before continuing\n3. Generate a reusable asset pack for characters, scene looks, and props\n4. Review and approve those assets before full generation\n5. Generate keyframes for every scene using approved assets as consistency references\n6. Generate voiceover for every scene\n7. Turn keyframes into video clips with MiniMax Video, Kling, or Seedance\n8. Assemble the final video with audio, transitions, subtitles, and export artifacts\n9. Export the final MP4, subtitle file, and JianYing \u002F CapCut draft\n\nThis is especially useful when you want the speed of AI generation but still need the control of a real production flow.\n\n---\n\n## Current Stack\n\n- Backend: FastAPI\n- Frontend: Next.js + Ant Design\n- LLM: DeepSeek \u002F MiniMax \u002F Gemini \u002F OpenAI \u002F Kimi \u002F Zhipu \u002F Ollama\n- Image: MiniMax Image \u002F Gemini image generation\n- Video: MiniMax Video \u002F Kling \u002F Seedance\n- TTS: MiniMax\n- Assembly: FFmpeg\n\n---\n\n## Supported Models\n\nThe table below reflects the built-in provider and model options currently exposed by the web setup flow and runtime config.\n\n| Stage | Provider | Built-in models |\n| --- | --- | --- |\n| Script \u002F planning | MiniMax | `MiniMax-M2.5`, `MiniMax-M2.7` |\n| Script \u002F planning | DeepSeek | `deepseek-chat`, `deepseek-reasoner` |\n| Script \u002F planning | Moonshot Kimi | `moonshot-v1-8k`, `moonshot-v1-32k` |\n| Script \u002F planning | Zhipu | `glm-4`, `glm-4-air` |\n| Script \u002F planning | Gemini | `gemini-2.5-flash`, `gemini-1.5-pro` |\n| Script \u002F planning | OpenAI | `gpt-4o`, `gpt-4.1-mini` |\n| Script \u002F planning | Ollama | `qwen2.5:latest`, `llama3.1:8b` |\n| Keyframe image generation | MiniMax Image | `image-01` |\n| Keyframe image generation | Nano Banana \u002F Gemini Image | `gemini-2.0-flash-preview-image-generation`, `gemini-3-pro-image-preview` |\n| Voiceover \u002F TTS | MiniMax TTS | `speech-2.8-hd`, `speech-02-hd` |\n| Video clip generation | MiniMax Video | `MiniMax-Hailuo-2.3-Fast`, `MiniMax-Hailuo-2.3`, `T2V-01-Director` |\n| Video clip generation | Kling | `kling-v3` |\n| Video clip generation | Seedance | `doubao-seedance-1-5-pro-250528`, `Doubao-Seedance-1.0-pro` |\n| Assembly \u002F subtitles \u002F export | Local FFmpeg | local environment dependent |\n\nNotes:\n- The web UI shows these as the default built-in options; advanced users can still edit `configs\u002Fconfig.yaml` manually.\n- MiniMax currently provides the built-in voice catalog and voice preview flow in the UI.\n- Final assembly is done locally with FFmpeg, so subtitle burn-in and some transition behaviors depend on your FFmpeg build.\n\n---\n\n## First-Run Experience\n\nWhen the web UI detects missing required configuration, it automatically opens a setup dialog.\n\nYou can configure:\n- default LLM provider and model\n- image provider and model\n- video provider and model\n- TTS model\n- API keys for the selected services\n\nSettings are written to:\n\n```bash\nconfigs\u002Fconfig.yaml\n```\n\nIf you prefer manual setup, copy the example file first:\n\n```bash\ncp configs\u002Fconfig.example.yaml configs\u002Fconfig.yaml\n```\n\n---\n\n## Quick Start\n\n### 1. Requirements\n\n- Python 3.10+\n- Node.js 18+\n- FFmpeg in PATH\n\nCheck FFmpeg:\n\n```bash\nffmpeg -version\n```\n\n### 2. Install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fruilisi\u002FLingtiStudio.git\ncd LingtiStudio\n\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install -r requirements.txt\n\ncd frontend\nyarn install\ncd ..\n```\n\n### 3. Start backend\n\n```bash\n.venv\u002Fbin\u002Fpython -m uvicorn api.server:app --host 0.0.0.0 --port 8000\n```\n\n### 4. Start frontend\n\n```bash\ncd frontend\nyarn dev --port 3001\n```\n\nOpen:\n\n```text\nhttp:\u002F\u002F127.0.0.1:3001\n```\n\nIf the config is incomplete, the setup dialog will appear automatically.\n\n---\n\n## Docker\n\nLingtiStudio also ships with a release-oriented Docker setup so users can start the product first and configure tokens in the browser later.\n\nThe release image is intentionally trimmed for the browser-first workflow:\n- it is optimized for script -> review -> keyframes -> TTS -> clips -> assembly\n- it avoids shipping heavy optional dependencies such as local Whisper \u002F Torch by default\n- optional integrations such as pyJianYingDraft still fall back gracefully when unavailable\n\n### Prebuilt release image\n\nTagged releases can publish a prebuilt container image to GHCR through GitHub Actions:\n\n```bash\ndocker run --rm \\\n  -p 3000:3000 \\\n  -p 8000:8000 \\\n  -v \"$(pwd)\u002Fconfigs:\u002Fapp\u002Fconfigs\" \\\n  -v \"$(pwd)\u002Fdata:\u002Fapp\u002Fdata\" \\\n  --name lingtistudio \\\n  ghcr.io\u002Fruilisi\u002Flingtistudio:v1.1.0\n```\n\nThis is a convenient path for end users who want to skip local image builds.\n\n### Option 1: Docker Compose\n\n```bash\ndocker compose up -d --build\n```\n\nThen open:\n\n```text\nhttp:\u002F\u002Flocalhost:3000\n```\n\nOn first run:\n- LingtiStudio opens the browser setup dialog automatically\n- users can choose providers and models in the UI\n- API tokens are written to `.\u002Fconfigs\u002Fconfig.yaml`\n- outputs, uploads, and local runtime data are stored in `.\u002Fdata`\n\nDefault ports:\n- Web UI: `3000`\n- API: `8000`\n\n### Option 2: Single Docker image\n\nBuild:\n\n```bash\ndocker build -t lingtistudio:latest .\n```\n\nRun:\n\n```bash\ndocker run --rm \\\n  -p 3000:3000 \\\n  -p 8000:8000 \\\n  -v \"$(pwd)\u002Fconfigs:\u002Fapp\u002Fconfigs\" \\\n  -v \"$(pwd)\u002Fdata:\u002Fapp\u002Fdata\" \\\n  --name lingtistudio \\\n  lingtistudio:latest\n```\n\nThen open:\n\n```text\nhttp:\u002F\u002Flocalhost:3000\n```\n\nThis path is intended for open-source releases where users want:\n- one container image\n- browser-first onboarding\n- persistent config and output directories on the host\n\nNotes:\n- the release image is a lighter runtime image, not a full development image\n- if you want local ASR \u002F Whisper tooling inside Docker, treat that as an advanced custom build layer\n- for most users, the browser UI + external API providers are enough to start generating immediately after setup\n\n---\n\n## CLI\n\nRun a generation task directly:\n\n```bash\n.venv\u002Fbin\u002Fpython cli\u002Fmain.py run --topic \"A modern retirement hotel near Shanghai, 40 seconds\"\n```\n\nTest connectors:\n\n```bash\n.venv\u002Fbin\u002Fpython cli\u002Fmain.py test --module llm\n.venv\u002Fbin\u002Fpython cli\u002Fmain.py test --module image\n.venv\u002Fbin\u002Fpython cli\u002Fmain.py test --module tts\n.venv\u002Fbin\u002Fpython cli\u002Fmain.py test --module video\n```\n\n---\n\n## Web UI\n\nMain routes:\n\n- `\u002F` Home\n- `\u002Fcreate` Quick generation\n- `\u002Fstudio` Pro workspace\n- `\u002Fanalyze` Reference video analysis\n- `\u002Fsettings` Setup and connectors\n\nHighlights:\n\n- first-run setup modal\n- provider\u002Fmodel friendly config editing\n- script review before generation\n- resumable projects\n- live console logs\n- downloadable final video, subtitles, and JianYing draft\n\n---\n\n## TTS Behavior\n\nThe built-in voice catalog and voice preview are currently available only for **MiniMax TTS**.\n\nIf the active TTS provider does not support the MiniMax voice catalog, the UI switches from:\n\n- voice picker\n\nto:\n\n- manual `voice_id` input\n\nThis keeps the interface usable for custom or externally managed voice setups.\n\n---\n\n## Project Structure\n\n```text\napi\u002F                FastAPI backend\ncli\u002F                CLI entrypoints\ncore\u002F               Config loader and shared settings\nmodules\u002F            LLM \u002F image \u002F TTS \u002F video \u002F assembly modules\nfrontend\u002F           Next.js frontend\nconfigs\u002F            Example and local config files\ndata\u002F               Outputs, uploads, cache, local runtime data\n```\n\n---\n\n## Notes\n\n- This project is optimized for local workflows, not multi-tenant SaaS deployment.\n- Some providers are configurable at the UI layer before every backend path is fully generalized.\n- FFmpeg features depend on your local build. If subtitle burn-in is unavailable, LingtiStudio can still output MP4 + SRT.\n\n---\n\n## License\n\nMIT\n","LingtiStudio 是一个用于将单一主题转化为多分钟视频的AI视频制作系统。它通过脚本生成、审阅、关键帧制作、语音合成、片段生成、视频组装等一系列步骤，帮助用户快速完成从创意到成品的全过程。项目采用Python开发，强调生产流程中的可审查性和可编辑性，使得用户可以在任何阶段暂停、检查和修改内容。适合需要创建短片宣传视频、讲解视频、多场景故事视频以及更长篇幅AI辅助作品的内容创作者使用。",2,"2026-06-11 02:48:58","CREATED_QUERY"]