{"repo": "chrischen667788/wind-comic", "files": {"README.md": {"b669de64f871f5a96f50d4c7afca341662e13683": {"t": 1785747256.2746956, "n": 46139, "h": "48b1de7d4d4bd493", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.264

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3507\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3507 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3507/3507 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "ef473fcd7e2cb4b51438005d4d1361e904a7cd69": {"t": 1785771873.6010187, "n": 46139, "h": "7fa3d2858fe5c95d", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.263

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3507\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3507 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3507/3507 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "8ea8365e83fcf0501cf2878711e04505a4c25a46": {"t": 1785771875.2242277, "n": 46139, "h": "4402de6cdf6b0d79", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.262

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3506\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3506 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3506/3506 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "426e1cd1bbbbc7f4e58a8eb0ce1d9bccf337fa93": {"t": 1785771876.6435256, "n": 46139, "h": "9b897966f3c913a7", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.261

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3502\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3502 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3502/3502 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "89de19445ab984c0f8df44d4dc266bda187bfd14": {"t": 1785771879.235628, "n": 46139, "h": "e4f2b8a671f38e1f", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.260

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3499\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3499 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3499/3499 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "b9805bcee59bf7fc72bc952fa1e762923d32ea76": {"t": 1785771881.8412292, "n": 46139, "h": "7eb4ac64c01172d2", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.259

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3493\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3493 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3493/3493 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "65118f5b1bb4d55474462a88fcd6f22620db9c14": {"t": 1785771883.3461301, "n": 46139, "h": "095181c301146f31", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.258

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3482\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3482 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3482/3482 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "4b993880f91fc2d4af0efc79c5b6576678e466d0": {"t": 1785771885.2378693, "n": 46139, "h": "b353e4ecba40f68e", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.257

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3474\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3474 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3474/3474 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "0f427f9159b169221b018dba18514dba7a09ef90": {"t": 1785771887.8409915, "n": 46139, "h": "4176d9a28af9235c", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.256

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3472\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3472 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3472/3472 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "6ec6058c9bb2238a9b4186cd5d98f66cf7e71a4d": {"t": 1785771890.470626, "n": 46139, "h": "2d5307a07eef1af9", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.255

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3469\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3469 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3469/3469 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "4174828664d4a75340c5de11c24ead1f5ef4858e": {"t": 1785771892.0715783, "n": 46139, "h": "2e1ae3f6ee42bd72", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.254

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3467\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3467 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3467/3467 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "c05c4bae204585005328fe735b7cece1e694b570": {"t": 1785771894.3988605, "n": 46139, "h": "b3c4da289a033ab4", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.253

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3459\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3459 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3459/3459 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "292c9712c8e3400561ab2d6e2c7f2226a8714236": {"t": 1785771896.0566533, "n": 46139, "h": "96684be24d444797", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.252

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3451\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3451 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3451/3451 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "f42042be1bcaacba816d135f0dfe3df40fa5370d": {"t": 1785771897.4423456, "n": 46139, "h": "3ad10709f2882fd6", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.251

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3443\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3443 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3443/3443 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "0a33b35ca605c33aad647da2a5b1b99c0de386d5": {"t": 1785771899.0485122, "n": 46139, "h": "6b343f7e4dea2602", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.250

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3432\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3432 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3432/3432 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "83c3282001a6a61b9ef1dc301fdc42ebee7bd01f": {"t": 1785771902.599187, "n": 46139, "h": "a5a10a2669a6ef1a", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.249

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3425\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3425 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3425/3425 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "eb99c04f1081fda96b64329d25471da33ee08118": {"t": 1785771904.8131428, "n": 46139, "h": "d0f788f5a184c9c6", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.248

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3419\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3419 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3419/3419 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "8cdc92057eedbd9ee28234056bc124993685a5aa": {"t": 1785771906.2534037, "n": 46139, "h": "bcb21a484382d096", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.247

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3419\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3419 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3419/3419 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "c6fc9896e9fa2a89c71400bba9d1e795bad1968b": {"t": 1785771909.0044436, "n": 46139, "h": "f26d11c0513ab873", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.247

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3403\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3403 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3403/3403 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.247–v12.247 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "1d9ee352a6dee505a7cb73b7767c8b6c75beffa8": {"t": 1785771914.6304026, "n": 46139, "h": "41cb62b715040455", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.246

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3387\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3387 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3387/3387 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.246–v12.246 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "eb9a68bb9914362f0077446494c5e824f5cb2a7a": {"t": 1785771920.293174, "n": 46139, "h": "7fd1c21fe0bc7bb2", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.245

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3369\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3369 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-24(Artificial Analysis 盲投竞技场):**格局易主 —— 谷歌 Gemini Omni Flash 登顶双榜**。它把 text/image/audio/video 统一进一个多模态架构(此前 Gemini 各模态分开再交给专用模型),并支持**对话式视频编辑**(自然语言迭代改片、保留不动的部分)。**带音频文生视频榜:Gemini Omni Flash 榜首(Elo 1245)** → Dreamina Seedance 2.0 720p(1227)→ Wan2.7-260612(1164)→ HappyHorse-1.1(1152)→ HappyHorse-1.0(1131);**图生视频带音频:Gemini Omni Flash(1200)** → Seedance 2.0 720p(1198)→ Grok Imagine 1.5(1118)→ HappyHorse-1.1(1110)→ Wan2.7(1099)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨的企业安全牌(4K);**Kling 3.0** 性价比冠军(~$0.50/clip,短剧首选,多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。**⭐ 我方 BYO 架构已可直接接住这波**:v12.238 起 `GEMINI_API_KEY` 一填即启用 Gemini 图像(Nano Banana)provider —— 竞品登顶反而成了本管线可调度的引擎,「引擎越强我们越强」。\n> **v12.214→244 双线推进**。**产品层**:GPT Image / Nano Banana(Gemini)接入插件式图像 provider 链(issue #11,社区 @flobo3 提议,`OPENAI_IMAGE_ENABLED` / `GEMINI_API_KEY` 门控、原生 i2i 接角色一致性契约);**多集连续生成补上「剧情记忆」**(第 N 集 Writer 注入前几集前情提要 + 承接纪律,对标红果/阅文的 60~100 集连续,此前各集独立成篇)。**平台/工程层**:六轮独立对抗复检把安全洞从 CRITICAL 到 LOW 全清(SSRF 逐跳重验重定向 + IPv6 全隧道变体 / serve-file 签名能力 URL / WebSocket 鉴权 / 预算护栏),并把反复踩的「改了守卫却没跟到消费方」这个病**固化成 CI 入库门禁**(`npm run gate:consumer`,零容忍,上线即抓到 2 个人肉复检漏掉的真 SSRF)。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Gemini Omni Flash | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️(单段生成,多镜叙事非强项) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ 多模态统一 | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ 4 模态原生一体 | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌(它自己就是模型) | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ✅ 对话式迭代编辑(招牌能力) | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ⚠️(对话式改片,非结构化卡点/情绪剪辑) | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ⚠️ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ⚠️ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ✅ 原生 | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌(是模型不是 app) | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3369/3369 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.245–v12.245 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "435ecf30d0f4f2c65e07803fe49dcd414e7688ba": {"t": 1785771924.2347586, "n": 45735, "h": "9918e50a75bcd4c8", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.244

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3369\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3369 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3369/3369 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.244–v12.244 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "6d190c530d4c2a80788e70edbec1f9121e07268e": {"t": 1785771928.1720068, "n": 45735, "h": "50ce2ff97670c98a", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.243

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3359\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3359 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3359/3359 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.243–v12.243 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "ec741c83fd1d6bdd6f6f763c2b46c2cc1e480e2a": {"t": 1785771930.4698727, "n": 45735, "h": "f2e100d28bdf5870", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.242

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3354\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3354 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3354/3354 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.242–v12.242 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "e027b2279bbc2ac8c102f444121cf43dd8494821": {"t": 1785771932.0399399, "n": 45735, "h": "42e08e08e3eb6e18", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.241

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3336\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3336 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3336/3336 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.241–v12.241 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "ebf45d2d454ea342fecb025c1929617eb0f08c04": {"t": 1785771934.4141524, "n": 45735, "h": "28ba2a161a482479", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.240

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3332\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3332 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3332/3332 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.240–v12.240 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "a2b4ff7cc5af9a05df488a8478a095a2d1fe43d5": {"t": 1785771937.1061738, "n": 45735, "h": "c21b7bdaa51ed2f8", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.239

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3313\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3313 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3313/3313 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n### Community contributors\n\nFeatures that exist because someone outside the team took the time to file a good report:\n\n- **[@flobo3](https://github.com/flobo3)** — [#11](https://github.com/ChrisChen667788/wind-comic/issues/11): proposed **GPT Image** (`gpt-image-1`) and **Nano Banana** (Gemini Image) as first-class image providers, including the endpoints, the env-var naming, the \"reuse the already-configured `OPENAI_API_KEY` to lower the barrier\" idea, and the observation that Nano Banana's native i2i fits the existing character-consistency contract. Shipped in v12.239–v12.239 essentially as designed.\n- **[@MikhailNikolaev44](https://github.com/MikhailNikolaev44)** — [#2](https://github.com/ChrisChen667788/wind-comic/issues/2): reported that selected characters were being ignored on shot regeneration, which uncovered **three** separate bugs in the reference-image path (v12.132–v12.134), plus the script-language selector request.\n- **[@JSap0914](https://github.com/JSap0914)** — [#1](https://github.com/ChrisChen667788/wind-comic/pull/1): fixed broken README links.\n\nFound something? Issues and PRs are genuinely read — several of the pipeline's sharpest fixes started as an outside bug report.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "790314caa0c09ccf942b778cfa0f8ac596debbe5": {"t": 1785771938.51496, "n": 44525, "h": "862c5cc22eba80ab", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.238

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3289\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3289 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3289/3289 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "839c6018448c2abcdbe3610ca2f6032ced7d6ee8": {"t": 1785771940.4248984, "n": 44525, "h": "fae29d1607f78a5f", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.237

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3276\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3276 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3276/3276 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}, "25ed349b821023046f1a8788aa558ba5c83373e7": {"t": 1785771944.2128203, "n": 44525, "h": "6abe2799bafdbd23", "c": "

\n \"Wind\n

\n\n

🌬️ Wind Comic v12.236

\n\n

\n One sentence in. A finished short-form drama out — script, cast, storyboards, voiceover, timeline, mp4.
\n Multi-agent AI studio · reusable characters · novel→season splitting · director's control room · real-time collab · bring-your-own LLM.\n

\n

\n 一句话进,整片短剧出 —— 剧本 · 角色 · 分镜 · 配音 · 时间线 · mp4 一条龙。
\n 多 Agent AI 创作工作室 · 可复用角色 · 长篇小说→自动分集 · 导演级控片台 · 实时协作 · 自带 LLM。\n

\n\n

\n \"MIT\n \"CI\"\n \"GitHub\n \"3262\n \"Node\n \"Next.js\n

\n\n

\n English · 简体中文 · 🔥 Pitch · 🔌 BYO LLM\n

\n\n

\n \n \"Wind\n \n

\n

\n ▶ Watch the full 39-second promo — with voiceover & sound
\n Real cinematic footage woven with motion-graphics · 8 distinct art styles · English narration · scored by the platform's own MiniMax music engine.\n

\n\n---\n\n## ✨ Why Wind Comic?\n\nMost \"AI video\" tools give you a 5-second clip from a one-line prompt. **Wind Comic gives you a finished short-form drama** — script, character bible, multi-shot storyboards, voice-acted lines, BGM, mouth-synced characters (indicative 2D lip bar out of the box; photorealistic face-level lip-sync via BYO wav2lip/SadTalker/MuseTalk or Kling), and a final mp4 — from the same single line.\n\nIt works because it doesn't try to be one giant model. It's an **honest multi-agent pipeline** where each role (Writer, Director, Producer, Character Designer, Storyboard Artist, Cameo Locker, Lipsync, Editor) is a specialist that hands off with strict consistency contracts. Plus a **real-time multiplayer timeline** to edit with your team like Figma for film.\n\n```\n \"A reborn CEO confronts his cheating ex-fiancée at her wedding.\"\n │\n ▼\n Writer ▶ Director ▶ Style Bible ▶ Char Designer ▶ Scene Designer ▶\n ▶ Storyboard (vision-audited) ▶ Video (multi-engine race) ▶\n ▶ TTS (per-character voice) ▶ Lipsync (Kling/Sync.so/Hailuo) ▶\n ▶ Editor (j-cut/l-cut + BGM per act + CJK subtitles) ▶ final.mp4\n\n + Real-time collab timeline (Yjs CRDT)\n + Bring-your-own LLM (3 env vars, 0 code change)\n + Plug-in image/video providers (12+ supported)\n + Lip-sync pipeline: viseme track → align score → drift auto-correct → engine render → back into timeline (v10)\n + Template market: save a hit project → rate / favorite / one-click remix (with its voices) (v10)\n + Per-project cost attribution + budget guard, four-dimension publish gate (v10)\n```\n\n---\n\n## 🏗 Architecture\n\nThree views of the same engine. **Open on GitHub to watch them animate** — flowing dashes trace live data & control paths, traveling dots are data packets moving through the pipeline.\n\n

\"Wind

\n\n**System architecture** — five layers, top to bottom. The **Director** threads control across all eight agents; the **LLM gateway** falls back DeepSeek → MiniMax with zero code change; **12+ media engines** plug in behind one router; everything lands on a **dual-driver** (SQLite ⇄ PostgreSQL) platform.\n\n

\"Sequence

\n\n**Sequence** — the lifecycle of one *idea → film* request, time flowing down. Two signature beats: the **Vision-Audit retry loop** (auto-regenerate any shot scoring < 70) and the **multi-engine race** (Seedance / Kling / Veo / Vidu — first good clip wins).\n\n

\"Data-flow

\n\n**Data flow** — the artifact refinery. One line of text is refined stage-by-stage (`TEXT → JSON → PNG → IMG → MP4`); every artifact is persisted to the dual-driver DB + asset store and is independently reusable, so any stage can be re-run in isolation.\n\n> 🎞️ Diagrams are **animated SVG, authored as code** in [`assets/diagrams/`](assets/diagrams/) — crisp at any zoom, versioned with the source. *(Animation renders on GitHub; the ModelScope mirror shows static PNG.)*\n\n---\n\n## 🆕 New in v12 — the quality loop era\n\n**Sketch-Lock storyboarding** — every shot first renders a B/W composition sketch, then the final frame is generated *locked to that composition* (toggle at creation time, or per-shot in the Shot Workshop). Camera language finally survives the diffusion lottery.\n\n**Emotion-driven camera** — shots missing camera movement get one derived from story beats (hook→push-in, chase→handheld, reveal→zoom-in, farewell→pull-out, emotion temperature → push/orbit/crane). Even the Ken Burns degradation follows the intended move.\n\n**Engine matrix, honestly** — Veo · MiniMax (Hailuo) · Kling (official Beijing API) with a one-line env priority (`VIDEO_ENGINE_ORDER=kling,minimax,veo`), base64 first-frame channel for local assets, and an *honest* fallback chain: a failed shot becomes a labeled animatic, never a still image masquerading as video.\n\n**The quality loop** — ffprobe-powered film health report (aspect/duration/fps/bitrate/audio/degraded shots) per project *and* per series; batch re-render of degraded shots (2-way concurrent); a season-export health gate so no broken episode sneaks into the compilation; an engine weather bar so you know *before* you hit generate.\n\n**Round-trip storyboards** — export the pull sheet as CSV / Markdown / print-ready PDF (with character sheet + health appendix), edit in Excel, import it back — changed visual fields offer one-click re-render of exactly the affected shots.\n\n**Writer resilience** — truncated or quote-mangled LLM scripts are salvaged (bracket-stack completion + content-quote escaping) instead of being silently replaced by a template. The real 23KB incident dump lives in the test fixtures.\n\n## 🆕 Earlier: v6 → v10 — from *demo* to *production platform*\n\n> v3 shipped the pipeline. **v6 turned it into a production studio; v7–v9 hardened it into a platform; v10 closed the lip-sync, template-market, and cost loops.** Reusable characters, a prompt IDE, novel→season auto-splitting with real voiceover, a 60-style gallery, a director's control room, team credit budgets, an industry-grade script audit (**Polish Pro**, v7.1), a **premium design pass** (v8.3), a **fully-migrated Postgres backend** (v9), a **lip-sync delivery pipeline + template market + cost observability** (v10), and a live API health board — every screen below is a **real capture of the running app**.\n\n

\n \"Wind\n
v10 landing — looping cinematic hero, 8 collaborating agents · 7 media engines · 3 consistency guards.\n

\n\n### 🎙️ v10 — Lip-sync delivery · Template market · Cost guard *(Stage 16)*\n\n- **🎙️ Voice & lip-sync, end-to-end** — per-character voice routing (auto by name + manual pick/audition) → TTS → **viseme keyframe track** → measured **mouth-vs-audio alignment score** (Web-Audio) → **drift auto-correct** → pluggable engine render (wav2lip / SadTalker / MuseTalk, BYO `LIPSYNC_API_URL`) → written back into the timeline. One-click **whole-film lip-sync** with a Vision **QC self-heal loop** (weak shots auto re-render).\n- **🧩 Template market** — turn a hit project into a reusable template (style + multi-ref elements + pacing + **voices**), with a **preview clip**, **★ ratings & ♥ favorites**, quality score, and **one-click remix** that prefills a new project.\n- **💴 Cost observability + budget guard** — per-project cost attribution by stage (LLM / image / video / TTS / lip-sync), saving hints, and an **ok/warn/over budget guard**. The **publish-readiness gate** is now four-dimensional: picture-vs-script · consistency · lip-sync alignability · **measured mouth-vs-audio**.\n\n\n\n\n\n\n\n\n\n\n

创作工坊 — one line → film: style presets · multi-ref element shelf · character lock · live preview · gold-neon genre gallery

模板市场 — preview clips · ★ ratings / ♥ favorites · quality score · one-click remix (carries voices)

成片质检 + 配音口型 — four-dimension publish gate · consistency trend · viseme track (animated mouth + measured alignment) · per-shot Vision scores

技术监看 · 成本归因 — per-stage cost share (video / image / LLM / TTS / lip-sync) + saving hints
\n\n> Every screen above is a **real capture of the running v10 app**. Design language (v8.3 *Taste* pass — Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, AI gold-neon genre emblems) carries across all of them.\n\n> Notes are consolidated **per major version** — the full minor-by-minor changelog lives in [`VERSIONS.md`](VERSIONS.md) / [`ROADMAP.md`](ROADMAP.md).\n\n| Major version | What landed |\n|---|---|\n| **v6 · Production studio** | **Character Studio** (reusable cast, multi-view turnaround + 8-field **DNA identity lock**, cross-project **Cameo IP**) · **Prompt Workbench** (`@`-mention assets + compile-preview + readiness score) · **Long-form Intake** (novel → chapter-aware episodes, **real TTS narration** + burned SRT, N-episode parallel) · 60-look **Style Gallery** · **Director Console** (4-stage pipeline, stale-detection, single-stage rerun) · **Team Workspace** (credit pool + RBAC + real invite links) · **API Health Board** (live gateway status + balance) · top-tier model repointing (`veo3.1-pro`) + supplement gateway backfilling TTS / Midjourney / Kling. |\n| **v7 · Platform hardening** | Writer/Director on DeepSeek **`deepseek-v4-pro`** with a **universal MiniMax fallback** on any error / out-of-credits / timeout (3-tier LLM health board) · tiered models (**`deepseek-v4-flash`** for speed) that cured the reasoning-token instability · **Polish Studio Pro** — industry script audit: AIGC-readiness score, Save-the-Cat 3-act beat-gap detection, on-the-nose dialogue flags, per-character identity anchors. |\n| **v8 · AI director station + premium design** | Per-shot **cinematography console** (景别/机位/镜头/运镜/焦点) + **continuity & seed lock** + emotion/rhythm curves + JSON↔visual **parameter linkage**, all converging into an **11-tab director station** · **Taste design pass**: Plus Jakarta Sans + Phosphor icons, gold machined-bezel cards, spring motion, an asymmetric **bento dashboard**, 60 AI-rendered **style thumbnails**, and AI **gold-neon genre icons** (18 templates + 5 modes + 8 looks). |\n| **v9 · Postgres platform + monetization** | Full SQLite↔Postgres **dual-driver** cutover — **17 core tables/clusters** migrated to async repos, verified end-to-end on Postgres with **transaction commit + rollback** atomicity (default stays SQLite, same file, **zero split-brain**; `DB_DRIVER=pg` is opt-in) · multi-platform **distribution-pack** generator (抖音 / 快手 / 视频号 / 小红书 / YouTube Shorts / B站) · **real binary AAF export** (MS-CFB container, for Avid) alongside EDL / FCPXML · plus **quality & consistency depth** (publish-readiness gate, rebirth loop, consistency report) and the **Kling-style multi-reference + one-click film** fusion. |\n| **v10 · Lip-sync delivery · template market · cost** *(Stage 16)* | **Voice & lip-sync end-to-end** — per-character voice routing (auto + manual audition), viseme keyframe track, measured **mouth-vs-audio alignment** + **drift auto-correct**, pluggable engine render (wav2lip/SadTalker/MuseTalk) **plus a zero-config built-in 2D engine that works out of the box (no BYO key)**, written **back into the timeline**, one-click whole-film with a Vision **QC self-heal** loop · **Template market** — save→rate/favorite→one-click remix (carries voices), preview clips, quality score · **Cost observability** — per-project stage attribution + **budget guard**, and a **four-dimension publish gate** (picture · consistency · lip-sync · measured alignment). **2135 tests** green on both drivers. |\n\n| **v12.49–v12.80 · Commercial Ad Factory** *(Stage 22)* | **电商/品牌广告工厂全链** — 一句 brief(或**贴商品 URL 自动出 brief**)→ 竖屏成片:现代写实+photoreal **双硬锚**(Director 跑偏古装/3D 的实测病根双修 + plan 确定性净化保险)· **结构化 Hook/CTA 文字卡**(ffmpeg drawtext 零乱码,Hook 公式化选句:问句>感叹,**批量 Hook 变体 A/B**,品牌色可配)· **karaoke 词级扫光字幕**(对齐 TTS 真实时长,抖音/小红书**安全区避让**)· **BGM sidechain 自动闪避** · **《广告法》合规净化**(绝对化用语/医疗红线,全入口覆盖)· **质量三防线+账本**(逐镜 VLM 门禁 photoreal/烤字/畸变→定向重生 · 视频瞬时错误同引擎重试 · 坏 mp4 完整性拦截 · **失败镜 Ken Burns 兜底保时长** · quality_report 健康分)· **发布预检**(三平台硬指标)· rembg 商用安全抠图(产品跨镜一致)+ Kling Elements 打通 · LLM 网关 429/503 **健康感知自动降级**。**2712 tests** green。 |\n| **v12.82–v12.120 · Ad Factory 深化 + 供给链扩容** | **视频通道扩容**(qyt-vidu(Vidu Q3 via 网关 `/ent/v2`)入链 pri=75 · minimax 轮询超时可调 · Seedream 4.5 图像尾梯队(720x1280 原生竖屏,实测 14s/张))· **素材质量闭环**(Pexels B-roll 双层兜底 + 人设感知检索 + 烤字/字幕 VLM 抽查(B-roll 与 AI 镜双向)+ 结果缓存 LRU)· **响度归一 -14 LUFS**(实测 -13.62/-1.42 dBTP 命中平台标准)· **成片抽帧封面精选**(VLM 打分,零 T2I 额度)+ 发布包封面链(chosen>AnyText>候选)· **karaoke 长台词折行+行内缩字**(libass 实渲验证)· **英文广告链**(语言感知 CTA + 6 条英文合规红线)· 合规词表可扩展(env+JSON)· 导演/编剧自检修正轮入账 + 导演台 HEALTH KPI + 包装车间结构化结果面板 · LLM 健康缓存全端点对齐(拥堵实测:fable-5 断粮 403 → opus→sonnet→OpenRouter→MiniMax 五级无感降级)。**2780 tests** green。 |\n\n### 📂 More modules — earlier (v6–v8) captures\n\n> Features that still ship. **Director console · novel→season · finished-film station · team workspace · Cinema timeline are refreshed to v10** (live demo data). The **style gallery, API health board, Polish Pro audit, and character turnaround** are kept as earlier (v6–v8) captures because they show fuller sample output (the full style grid / live balances / a complete Pro audit / a 3-view turnaround sheet).\n\n### 🎬 Director Console — the whole film as one control room *(v6.4)*\nEvery stage at a glance — what's ready, what's gone stale because you changed something upstream, and a one-click rerun that knows exactly which downstream stages it invalidates.\n

\n\n### 📖 Novel → season, with real voiceover *(v6.2)*\nPaste a full novel; Wind Comic splits it into episodes by chapter markers (or by target length), picks a narration mode, and can render a real narration track + burnable subtitles for the whole season in parallel.\n

\n\n### 🎨 Style Gallery — 60 cinematic looks, one click *(v6.3)*\nLock a consistent visual identity before you generate. Search, filter by category, and apply any preset straight into the creation workshop.\n

\n\n### 🩺 API Health Board — never get surprised by a dead key *(v6.7)*\nLive status for every model and gateway: 正常 / 额度用尽 / 配置缺失 / 不可达, with real balance read-out and a \"去充值 / 补配置\" hint. Keys are never stored or returned.\n

\n\n### 🩺 Polish Studio — Pro industry audit *(v7.1)*\nPaste a draft, hit **Pro**: deepseek-v4-pro returns a polished script **plus a full industry diagnostic** — AIGC-pipeline readiness score (e.g. 85/100), style profile, first-3-second hook strength, Save-the-Cat 3-act breakdown with missing beats called out, on-the-nose dialogue lines flagged, and per-character Cameo/Seedance identity anchors so every shot stays on-model.\n

\n\n### 👤 Character Studio + Cameo IP turnaround *(v6.0 / v7.x)*\nEvery character gets a real 3-view turnaround sheet (front / three-quarter / back) with a locked structured \"DNA prompt\" — face geometry, skin tone, signature props, color palette, silhouette identity, full body pose — so the same actor reads identically across all 6 shots. The Cameo IP economy lets the same character travel between projects.\n

\n\n### 🎬 Finished film + 11-tab director station *(v8.0)*\nOne project, eleven tabs of cockpit-grade control: 导演台 · 剧本 · 角色 · 场景 · 分镜 · 连贯性 · 视频 · 镜头工坊 · Cinema 时间线 · 节奏分析 · 成片质检 · 技术监看 · 参数联动 · 评论协作 · 完整播放. The finished film plays right in the workspace with a 90/100 audit badge and one-click `mp4` / platform export.\n

\n\n### 👥 Team Workspace *(v6.5)* · 🎞️ Cinema Timeline + narration track *(v6.2.4)*\n\n\n\n\n\n

Credit pool + per-member allocations, RBAC, real invite links.

Multi-track timeline; narration audio + subtitles burned in.
\n\n---\n\n## 🎯 Who is this for?\n\n| You are... | What Wind Comic gives you |\n|---|---|\n| **Vertical short-drama creator** (霸总 / 重生 / 战神 / 古装) | Trope-aware Writer, hook-first shot 1, reversal density audit, cliffhanger detection, 9:16 default |\n| **Content marketing team** | 1 idea → 30-second polished ad with consistent characters across cuts, real Chinese subtitles burnt in, brand-safe negative prompts |\n| **Indie filmmaker / video artist** | Style Bible locks the visual identity across all shots, McKee-structured story beats, Logic-Pro-style multi-track timeline, real BGM waveform editor |\n| **Comic / manhua adaptation studio** | Script → storyboards in your chosen art style, character consistency via cref+sref+DNA, drag-rearrange shots, regenerate single shots |\n| **Educator / explainer** | Pacing audit warns when content is too flat, conflict-score per shot, suggestions for hooks |\n| **Open-source builder** | Swap any LLM with 3 env vars (OpenAI / Anthropic / DeepSeek / Qwen / Kimi / OpenRouter / Ollama local — all work) |\n\n---\n\n## 🚀 Highlights · The features competitors don't have\n\n### 1. **Multi-agent pipeline, not one black-box model**\nDirector plans the story → Writer drafts dialogue under McKee structure → Style Bible Frame locks the look → Character Designer extracts an 8-dimension **DNA signature** of each character → Storyboard renders with Vision Audit (auto-regen on <70 score) → Video producer races multiple engines (Minimax / Veo / Kling) → Editor cuts j/l-cut on emotional beats and burns CJK subtitles.\n\n### 2. **The visual coherence trick — Style Bible Frame** (v2.20)\nWe render **one canonical \"key art\" frame from the Director's plan**, then pass it as the first `--sref` of every subsequent storyboard render. Net effect: all 6 shots feel like they came from the same show, not 6 random Midjourney runs. (Most competitors only carry a 2-frame rolling chain — shot 6 doesn't know what shot 1 looked like.)\n\n### 3. **9:16 by default + 12 short-drama trope templates** (v2.20 P0.2)\nWriter prompt detects 短剧/漫剧 genres and switches to vertical canvas + injects proven hook patterns (重生回到 N 年前 · 当街掌掴 + 秘密身份 · 系统提示音突响 · etc). McKee 3-act still backs it; tropes are the surface.\n\n### 4. **Real CJK subtitle burning** (v2.22)\nThe garbled-Chinese-text-in-AI-video problem solved properly: we **strip dialogue text** from the video prompt (so the model doesn't try to draw garbled glyphs) + add aggressive negatives (`--no text --no chinese --no captions`) + post-bake real subtitles with ffmpeg `subtitles` filter using a system CJK font (PingFang / Noto Sans CJK).\n\n### 5. **Character consistency = cref + sref + 8-dim DNA + Cameo Vision Retry** (v2.21 P1.2)\nBeyond reference image hacks, we run each character's turnaround sheet through Vision LLM to extract structured features (eye shape / jaw angle / hair style / signature outfit etc.), then inject as natural-language anchor into every shot prompt. Combined with cameo-vision-retry: if a shot's character match scores <75, we auto-regen with boosted cw.\n\n### 6. **Logic-Pro-style multi-track timeline with real-time collab** (v3.1.1–v3.1.3)\n- 3 tracks: shots / BGM / subtitle\n- **Real BGM waveform** decoded via Web Audio API (not procedural)\n- **Drag-to-retime + edge handles** to resize duration\n- **Auto-snap to neighbors** within 0.4s threshold + hard-clamp on overlap\n- **Real-time multiplayer**: Yjs awareness paints other users' cursors live, presence avatars show which tab each collaborator is in, Y.Map locks prevent two people editing the same segment\n- **Project invites** with viewer/commenter/editor role gating\n\n### 7. **Lipsync that actually works** (zh / en; needs a public video URL + audio ≥ 2s)\nKling lip-sync API for talking heads, with Sync.so and Hailuo as auto-fallback. The pipeline strips dialogue from the prompt so the model only generates lip *motion*; we then sync the lips to the TTS audio in post. **Real-machine limits:** dialogue audio must be ≥ 2 seconds and the source video must be reachable at a public URL; ja/ko/ru currently degrade to no lip-sync (honest skip, surfaced in the engine-weather panel).\n\n### 8. **Conflict / reversal / cliffhanger pacing audit** (v2.21 P1.1)\nAfter Writer finishes, we score each shot 0-10 on a Chinese-conflict-word dictionary + detect emotional polarity reversals + cliffhanger keywords. If a vertical drama has <2 reversals or shot-1 conflict <5, you see a warning in the dedicated Pacing tab with actionable suggestions.\n\n### 9. **Bring Your Own LLM** (v3.1.3)\nEvery text-LLM call (Director / Writer / Vision / Audit) goes through one OpenAI-compatible `chat/completions` endpoint. Want to swap to DeepSeek-r1 / GPT-4o / Claude (via OpenRouter) / Qwen-Max / local Ollama? **Edit 3 lines in `.env`. Zero code change.** See [`docs/llm-providers.md`](docs/llm-providers.md) for the full matrix.\n\n### 10. **3262 tests, TypeScript strict, no fake \"coming soon\"s**\nEvery feature listed above is in `main`, type-checked, unit-tested, and visible at `/projects/[id]` if you `npm install && npm run dev` right now.\n\n---\n\n## 🥊 vs. competitors\n\n> 阵容核验 2026-07-13(Artificial Analysis 盲投竞技场):格局较 07-12 稳定(1 日无实质变动) —— **带音频文生视频榜:Dreamina Seedance 2.0 720p 仍榜首(Elo 1226)**、Wan2.7-260612 次席(1160)、HappyHorse-1.1 第三(1152)、Kling 3.0 1080p Pro(1112);**无音频榜 HappyHorse-1.0 登顶(1287)**、HappyHorse-1.1(1277)、Seedance 2.0(1272)、Kling 3.0 Pro(1245);**图生视频 Seedance 2.0 榜首(Elo 1345)**。**Seedance 2.5** 已进入主流对比梯队(我方 v12.177 预备态待网关额度激活)。**Veo 3.1** 仍是画质/物理/原生 48kHz 音轨王者(4K,企业首选);**Kling 3.0** 性价比冠军(多语对白+lip sync);**Sora 2** 关停时间线不变(App 已下线、API 2026-09-24 关停,勿依赖)。\n> **本轮 v12.195–213 全部落在护城河「制作/平台层」**(生成层红海不硬拼):可灵首尾帧锁定+口型同步修复(image_tail/lip-sync,均为探测修正的 live-caught bug)、**情感 TTS 真接通**(中文情绪→MiniMax 枚举,speech-2.8-hd)、角色档案多主体人脸库(对标即梦)、出海多语版一键译制 + **5 语全量 UI(zh/en/ja/ko/ru)**(对标阅文 ToonScroll)、AI 作曲免版权 BGM、多引擎色调统一+晕影+锐化、EBU R128 双遍响度、Kling 4K/enable_audio 门控、决策日志/成本下钻/一键自愈/URL→创意 等断层入口补齐。\n> 结论不变:**生成层已是红海(竞品在出片/多镜/音频都第一梯队),Wind Comic 护城河收窄到「制作/平台层」**——节奏审计、智能剪辑、字幕烧入、协作、自托管、开源、BYO。\n\n| Capability | Veo 3.1 | Kling 3.0 | Seedance 2.0 | Runway Gen-4.5 | Grok Imagine 1.5 | HappyHorse-1.1 | **Wind Comic** |\n|---|---|---|---|---|---|---|---|\n| Multi-shot story from one prompt | ⚠️ | ✅ storyboard mode | ✅ multi-shot native | ⚠️ | ⚠️ (one clip) | ⚠️ (one clip) | **✅ 8-agent script→edit pipeline** |\n| Character consistency across shots | ✅ | ✅ | ✅ | ✅ reference | ✅ | ✅ reference-to-video | **✅ cref + sref + 8-dim DNA + vision retry** |\n| Style coherence locked | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | **✅ Style Bible Frame** |\n| Native dialogue + SFX audio | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ 单次生成即带音频 | **✅ per-character TTS + lip-sync** |\n| Real CJK subtitles (burned-in) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ libass + PingFang burn** |\n| Vertical drama tropes | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12 templates + 9:16 default** |\n| Real-time multiplayer timeline | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Yjs CRDT + Y.Map locks + cursors** |\n| Self-hostable | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ Next.js + SQLite + Web Audio** |\n| BYO LLM (OpenAI / Claude / DeepSeek / local) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ 12+ providers via .env** |\n| Open source | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ 权重部分开放 | **✅ MIT** |\n| Per-shot regenerate with custom prompt | ⚠️ | ✅ | ⚠️ | ✅ motion brush | ⚠️ | ✅ video-edit 端点 | **✅ + reference image upload** |\n| Pacing / conflict audit | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ shot-level score + reversal detection** |\n| Smart editing (beat-snap + emotion pacing + one-instruction style) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ beat-snap · emotion pacing · emphasis · transition aesthetics · \"fast & hype/slow & lyrical\" in one line (BYO LLM)** |\n| First+last frame lock (image_tail cut-to-cut coherence) | ❌ | ✅ (v1.5 only) | ⚠️ | ❌ | ❌ | ❌ | **✅ Kling FLF wired into main pipeline, per-shot tail-frame picker** |\n| Multi-character face cast library (post-build editable) | ❌ | ✅ 主体库 | ✅ 角色管理 | ⚠️ | ❌ | ❌ | **✅ 3-slot cast + cross-shot subject_reference injection** |\n| One-click localization (script + re-voice) | ❌ | ⚠️ dub only | ❌ | ❌ | ❌ | ❌ | **✅ 8-lang translate → apply → re-TTS, honest degradation** |\n| Royalty-free AI BGM per story | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ MiniMax music-2.6, style-prompt → project BGM** |\n| Per-shot auditable decision log (engine/cost/consistency) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **✅ decision log + cost drill-down + quality score** |\n| Emotion-aware TTS (mapped to native enum) | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | **✅ CN emotion → MiniMax speech-2.8-hd enum, live A/B verified** |\n| Lip-sync wired into pipeline (auto per dialogue shot) | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | **⚠️ Kling lip-sync — zh/en only (needs public video URL + audio ≥2s); ja/ko/ru degrade to none; honest skip on non-face** |\n| Full-app i18n (zh/en/ja/ko/ru, all UI) | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ | **✅ 5-language core UI, ~400 keys (component-level string cleanup ongoing)** |\n\n> Cells marked ⚠️ = the feature exists but in a limited / locked-down form (e.g. \"you can only do this on a paid Pro tier through a UI panel\").\n\n---\n\n## 🆕 New in v11 → v12 — pull-replicate, smart editing & management\n\nReal puppeteer captures of the running app (`node scripts/capture-v12.mjs`). 核心迭代:\n\n- **阶段十九 AI 拉片复刻(v11.1.x)**:拉片五栏真值表(出厂参数,非 AI 看图猜)· 外部视频 ffmpeg 拆条 + BYO Vision 打标 · 替换工作台(「全员换猫」级全局替换)+ 复刻起片(保原片镜头结构/时长)· 复刻保真度对照 · 存为私有模板。\n- **项目/资产管理(v11.2.0)**:我的项目 / 我的资产 删除 + 下架(级联清理 + 属主守卫)。\n- **模型雷达(v10.6.3)**:一键扫描各 API 最新模型 + 同家族自动升级(四护栏 + 回滚)。\n- **钩子审计三指标(v10.6.2)**:开场 3 秒钩子 / 集尾悬念 / BGM 卡点对齐率。\n- **阶段二十 A 智能剪辑(v12.0.x,五刀全交付)**:卡点剪辑(切点吸附音乐拍点)· 情绪节奏曲线(峰值镜 breathe / 动作镜快切)· 侧重强调(关键镜不压 + 沉稳转场)· 转场审美(按镜头关系选转场)· **一句指令调风格(v12.0.4,BYO)**——「快节奏燃向」/「慢叙抒情」一句话调 pacing 力度 + 转场软硬,无 key 走规则、配 key LLM 解析自由文本。\n- **阶段二十 B 预览音频(v12.1.x)**:片段预览叠播配音(静音裸片 + 同步配音轨)+ 成片音频体检自愈(ffprobe 缺流补轨)。\n- **阶段二十一 角色/资产一致性升级 · 全局资产记忆库 v2(v12.2.x,五刀全交付)**:对标同构竞品 OiiOii「角色高维特征向量 + 跨场景一致性」——名称归一修 DNA 漏注入 · DNA/场景锚落库(rerun/重启复用、早镜不漏) · **给 `global_assets.embedding` 死列通电**(BYO 文本嵌入 + 内存余弦检索) · 建角色入口「相似角色」推荐一键复用(防重复建/跨集漂移) · **身份漂移检测**(逐镜视觉 embedding 余弦距离标 outlier 漂移镜)。全程**无 key 走确定性地板(精确名+文本匹配),有 key 向量增强**,诚实降级。\n- **安全加固(v11.1.4)**:JWT 公开兜底密钥根除(进程级随机密钥,旧泄露值作废)。\n\n| 我的项目 · 删除/下架管理 | 拉片表 + 复刻工作台 |\n|---|---|\n| ![我的项目](docs/screenshots/v12/01-my-projects-manage.png) | ![拉片](docs/screenshots/v12/04-pull-sheet-replicate.png) |\n\n| 素材库 · 资产管理 | API 健康 · 模型雷达 |\n|---|---|\n| ![素材库](docs/screenshots/v12/02-my-assets-manage.png) | ![模型雷达](docs/screenshots/v12/03-api-health-model-radar.png) |\n\n| 钩子审计三指标 | 一句指令调剪辑风格(v12.0.4) |\n|---|---|\n| ![钩子审计](docs/screenshots/v12/05-pacing-hook-audit.png) | ![剪辑风格](docs/screenshots/v12/06-edit-style-instruction.png) |\n\n| 片段预览音频:三态徽章 + 带声试听(v12.1.2) | |\n|---|---|\n| ![片段音频预览](docs/screenshots/v12/07-clip-audio-preview.png) | 左:带配音(TTS 叠层)+ 带声试听开关 · 右:片段无独立音轨(成片含配乐+配音) |\n\n完整逐版本核心迭代见 [`VERSIONS.md`](VERSIONS.md);阶段计划见 `docs/stage18`–`docs/stage20`。\n\n---\n\n## 🎬 Screenshots\n\nBelow is the **foundational v3 pipeline** (the v6 studio screens are in the [New in v6](#-new-in-v6--from-demo-to-studio) section above). Every panel is **a real puppeteer capture of the running app** (run `node scripts/capture-screenshots.mjs` / `node scripts/capture-v6.mjs` to refresh).\n\n### Workspace overview\nThe 创作总览 dashboard: 99 projects + 4 case studies + recent activity feed + system status (engines in use, model versions).\n

\n\n### Asset library\nCross-project reusable: 角色 / 场景 / 视频 / 音乐 / 字幕 / 模板 — 1467 assets in this demo project.\n

\n\n### Project library\nEvery short film with auto-generated cinematic covers + status badges + quality donut.\n

\n\n### Creation workspace — live multi-agent canvas\nThe whole pipeline as a live agent flow: Writer / Character Designer / Scene Designer / Storyboard Artist / Video Producer / Editor nodes wired together with progress streaming per node, plus a chat side-rail showing every agent message in real time.\n

\n\n### Per-project script + shot list with beats\nThe 剧本 tab: every shot with duration, emotion tag (警觉 / 凝重 / 惊恐 / 暴风的沉着 / 镇定的专注…) and a one-line **beat note** (从表面到深层警觉 / 从无知到悉知威胁 / 从警戒到遭受袭击 …) so the rhythm of the cut is legible at a glance.\n

\n\n### 🆕 Cinema Timeline (v3.1.1–v3.1.3 — multi-track + collab)\n3-track layout (SHOTS / BGM / SUBTITLE), drag-to-retime, double-click subtitles to rewrite, drag edges to resize, **real BGM waveform** (Web Audio decode), live other-user cursors with name labels, segment lock indicators.\n

\n\n### 🆕 Pacing Analysis (v2.21 P1.4)\nKPI: 平均冲突分 / 反转数 / 通过状态. Per-shot conflict-score bar chart with reversal arrows + emotional polarity icons. Color-coded green (≥7) / amber (4-6) / red (<4). Below: actionable warnings + suggestions.\n

\n\n### 🆕 Comments + @mentions (v3.0 P0.1)\nProject-level + per-shot threaded comments with @-autocomplete and notification bell. Each shot collapses for context.\n

\n\n### 🆕 Shot Workshop (v2.16 P1.4 + v2.23 P0.2)\nPer-shot \"改 prompt 重生\" (regenerate image with custom prompt + reference image upload) and \"4K 重渲\" (Kling Master 4K re-render, plan-gated).\n

\n\n---\n\n## 🛠️ What's in the box\n\n| | What it does | Where it lives |\n|---|---|---|\n| **Multi-agent pipeline** | Director / Writer / Char Designer / Storyboard / Editor — 8 agents | `services/hybrid-orchestrator.ts` |\n| **Style Bible Frame** | One canonical key-art frame locks visual identity across all shots | `lib/style-bible.ts` |\n| **Character DNA** | 8-dim vision-extracted character signature + per-shot prompt injection | `lib/character-dna.ts` |\n| **Style Vision Audit** | Auto-regen any shot scoring <70 on palette/lighting/colorTemp/texture | `lib/style-audit.ts` |\n| **Cameo Vision Retry** | Auto-regen any shot scoring <75 on character resemblance | `services/cameo-retry.ts` |\n| **Pacing Audit** | Conflict-score / reversal-detect / cliffhanger per Chinese drama tropes | `lib/pacing-audit.ts` |\n| **Drama Tropes** | 12 vertical-drama hook templates + 9:16 default + reversal density rules | `lib/drama-tropes.ts` |\n| **CJK Subtitle Burner** | ffmpeg libass with system CJK font discovery | `lib/text-control.ts` + `services/video-composer.ts` |\n| **Multi-track Timeline** | 3 tracks, drag/resize/snap/auto-collide, BGM waveform | `components/project/cinema-timeline.tsx` + `lib/timeline-tracks.ts` |\n| **Real-time collab** | Yjs CRDT + WS server + presence + cursors + segment locks | `scripts/ws-server.mjs` + `hooks/use-yjs.ts` + `hooks/use-segment-locks.ts` |\n| **Project invites** | viewer/commenter/editor role + token expiry + revoke | `lib/project-share.ts` |\n| **Comments + @mentions** | Threaded comments, @-autocomplete, mention notifications | `lib/comments.ts` + `lib/notifications.ts` |\n| **Lipsync** | Kling / Sync.so / Hailuo auto-select, fail-safe fallback | `services/lipsync.service.ts` |\n| **Plan-gate billing** | Per-engine plan checks (Vidu Q3 = enterprise, etc.) | `lib/plan-gate.ts` |\n| **API quota tracker** | Per-provider failure tracking + dashboard banner | `lib/api-usage-tracker.ts` |\n| **18 project templates** | 霸总/重生/穿越/古装/科幻/儿童/纪实/恐怖/喜剧 etc. | `lib/story-templates.ts` |\n| **BYO LLM docs** | 12-provider config matrix, 0-code swap | `docs/llm-providers.md` |\n| 🆕 **Character Studio** | Multi-view turnaround + DNA lock + auto-bound voice + bio | `lib/character-studio.ts` |\n| 🆕 **Prompt Workbench** | `@`-mention assets, autocomplete, compile-preview, readiness score | `lib/prompt-ide.ts` + `components/prompt-editor.tsx` |\n| 🆕 **Long-form Intake** | Novel→episodes + narration modes + real TTS + season parallel | `lib/story-intake.ts` + `lib/narration-synth.ts` + `lib/season-orchestrator.ts` |\n| 🆕 **Style Gallery** | 60 presets, 5 categories, one-click apply | `lib/style-presets.ts` + `app/dashboard/styles` |\n| 🆕 **Director Console** | 4-stage pipeline model + stale detection + single-stage rerun | `lib/pipeline-stages.ts` + `components/director-console.tsx` |\n| 🆕 **Team Workspace** | Credit pool + per-member allocations + RBAC + real invites | `lib/team-credits.ts` + `lib/team-invite.ts` |\n| 🆕 **Postgres cutover (v9)** | SQLite↔PG dual-driver; **all write paths on async repos** (project_assets/projects/users/notifications/comments cleared), tx commit+rollback verified, `DB_DRIVER=pg` opt-in | `lib/db-driver.ts` + `lib/repos/*` + `scripts/pg-migrate.ts` |\n| 🆕 **API Health Board** | Live model/gateway status + balance + out-of-credits detection | `lib/provider-health.ts` + `app/dashboard/health` |\n\n---\n\n## 🔀 Gateway routing — default model map *(matches current `lib/config.ts`)*\n\nEvery model call is provider-pluggable (priority chain + automatic fallback). Creative and high-frequency LLM traffic are split across two model tiers, and **MiniMax is always the last-resort fallback** on any error / out-of-credits / timeout:\n\n| Capability | Default model (env override) | Supplement / fallback |\n|---|---|---|\n| **Creative LLM** (writer / director) | `deepseek-v4-pro` (`OPENAI_CREATIVE_MODEL`) + `deepseek-v4-flash` fast tier for drafts/polish | `MiniMax-M2.7` (`LLM_FALLBACK_MODEL`) · optional self-hosted **XVERSE-Ent** (A5.7B / A4.2B) |\n| **General LLM** (planning / validation / Vision-Audit) | `claude-sonnet-4-6` (`OPENAI_MODEL`) | `MiniMax-M2.7` |\n| **Video** | `veo3.1-pro` (`VEO_MODEL`) | `veo3.1` · Kling → **MiniMax Hailuo** (Sora-2 retired — API EOL 2026-09-24) |\n| **Image** | `flux.1-kontext-pro` (`IMAGE_MODEL`) | Midjourney (`mj_imagine`) · fal FLUX Kontext · local ComfyUI → **MiniMax image** |\n| **TTS / voiceover** | `gpt-4o-mini-tts` (`VE_TTS_MODEL`) | MiniMax T2A (`speech-02-hd`) |\n| **Music / BGM** | MiniMax music | (Suno when gateway channel available) |\n\n- **Why two LLM tiers**: the creative tier (DeepSeek `-pro`, a reasoning model) carries writer/director quality work; the general tier (Claude `sonnet-4-6`) handles high-frequency planning / validation / Vision-Audit; the `-flash` tier keeps draft-compare & basic polish at sub-second latency.\n- **MiniMax safety net**: any primary LLM / video / image failure auto-routes to MiniMax (OpenAI-compatible) — surfaced live on the **API Health Board** (正常 / 额度用尽 / 配置缺失 / 不可达).\n- **XVERSE-Ent** is an **open-source MoE screenwriting model** you can self-host (vLLM / SGLang / ModelScope) and slot in as the writer/director LLM — set `XVERSE_ENABLED=true`.\n- **Swap anything** in `.env.local` (`OPENAI_*` / `OPENAI_CREATIVE_*` / `VEO_*` / `IMAGE_MODEL` / `VE_TTS_MODEL` / `MINIMAX_*`) — zero code change. See [`docs/llm-providers.md`](docs/llm-providers.md).\n\n---\n\n## 🏁 Quick start\n\n```bash\n# 1. clone + install\ngit clone https://github.com/ChrisChen667788/wind-comic.git\ncd wind-comic\nnpm install\n\n# 2. configure (3 mandatory lines, see docs/llm-providers.md for swaps)\ncp .env.example .env.local\n# Edit .env.local:\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.openai.com/v1 # or any compat provider\n# OPENAI_MODEL=gpt-4o # or claude-opus-4 via OpenRouter, etc.\n\n# 3. run\nnpm run dev # Next.js on :3000\n# Optional second terminal for real-time collab:\nnpm run dev:ws # Yjs WebSocket server on :1234\n\n# 4. open http://localhost:3000 and create your first short film\n```\n\n**Minimum LLM**: any model ≥24B parameters that responds in JSON. We've tested gpt-4o, Claude Opus 4, DeepSeek-r1, Qwen-Max, MiniMax-M2, GLM-4.5, Kimi-K2.\n\n**Optional engines** (graceful fallback when missing):\n- `MINIMAX_API_KEY` — image-01 / Hailuo-2.3 video / speech-2.8-hd TTS / music-2.6 BGM\n- `KELING_API_KEY` — Kling Master 4K + first-last-frame fusion + lip-sync\n- `VIDU_API_KEY` — Vidu Q3 (long-form 16s clips)\n- `VEO_API_KEY` — Veo 3.1-fast video fallback\n- `GROK_API_KEY` — xAI Grok Imagine 1.5 (T2V/I2V, native audio; BYO — 2026-06 image-to-video #1; auto-preferred when set)\n- `JIMENG_AK` / `JIMENG_SK` — ByteDance Seedance 2.0 (火山引擎 CV; multi-ref + native A/V; 2026-06 text-to-video #3; BYO)\n- `LTX_API_KEY` (or `FAL_KEY`) — LTX-2.3 (Lightricks open-weight #2 text-to-video; **self-hostable** via `LTX_BASE_URL`; BYO)\n- `GEN_CONCURRENCY` / `GEN_CONCURRENCY_VIDEO` · `_STORYBOARD` · `_SCENE` — per-stage generation concurrency (default 2, max 8). ⚠️ Higher *video* concurrency is faster but weakens keyframe-chain continuity (shot N pulls shot N-1's last frame) — keep low (1–2) when cross-shot 衔接 matters.\n- `SYNCSO_API_KEY` / `HAILUO_API_KEY` — alternative lip-sync providers\n\n---\n\n## 🤝 Contributing\n\nWe're open to PRs. Two things matter most:\n1. **Don't break the multi-agent contracts.** Each agent has explicit input/output shapes — see `types/agents.ts`.\n2. **Tests gate everything.** Vitest 3262/3262 must stay green. Add tests for new lib/service files.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the repo's contribution guide.\n\n---\n\n## 📚 Docs\n\n- [`docs/llm-providers.md`](docs/llm-providers.md) — Swap LLM provider in 3 env vars\n- [`docs/SCREENSHOTS.md`](docs/SCREENSHOTS.md) — Module-by-module screenshot manifest\n- [`docs/MARKETING-en.md`](docs/MARKETING-en.md) · [`docs/MARKETING-zh.md`](docs/MARKETING-zh.md) — Pitch deck copy\n- [`ROADMAP.md`](ROADMAP.md) — Full sprint-by-sprint changelog (v2.10 → v9.2.0) · [`VERSIONS.md`](VERSIONS.md) — version history table\n- [`docs/COMPETITIVE-GAP-2026-05.md`](docs/COMPETITIVE-GAP-2026-05.md) — Honest analysis vs Sora/Kling/Vidu/Higgsfield\n\n---\n\n## 📄 License\n\nMIT. Use it, fork it, build a startup on it. We just ask: if you ship a feature on top, send a PR back.\n\n### ⚠️ Redistribution notice — bundled binaries are not all MIT\n\n**Wind Comic's own source is MIT.** But three npm dependencies ship pre-built binaries under copyleft licenses. This does **not** affect the MIT status of this repository, and it does not affect you if you simply run or fork the source. It **does** matter the moment you redistribute a bundle that embeds those binaries (a Docker image, a desktop build, a hosted appliance you hand to a customer):\n\n| Dependency | License | What you must do when redistributing a bundle |\n|---|---|---|\n| `ffmpeg-static` | **GPL-3.0-or-later** | **Strongest constraint.** Ship the GPL-3 text and a written offer for the corresponding FFmpeg source — or drop the dependency and point `FFMPEG_PATH` at a system ffmpeg you obtained separately. |\n| `lightningcss` (+ platform binaries) | MPL-2.0 | File-level weak copyleft. Unmodified use/redistribution carries no extra duty; only if you modify its MPL-licensed files must you publish those files. |\n| `@img/sharp-libvips-*` | LGPL-3.0-or-later | Dynamic linking does not infect your code. On redistribution you must let end users replace/relink the library and point them to its source. |\n\nCI enforces this: [`scripts/license-check.mjs`](scripts/license-check.mjs) scans the **production** dependency tree every run and **fails the build** if a copyleft dependency appears that is not registered in the table above — so a new GPL dependency can never slip in unnoticed.\n\n---\n\n## 🙏 Acknowledgements\n\nWind Comic stands on a lot of excellent open-source work:\n\n- **App & UI** — [Next.js](https://nextjs.org) (App Router + Turbopack) · [React 19](https://react.dev) · [Tailwind CSS v4](https://tailwindcss.com) · [Radix UI](https://www.radix-ui.com) · [Phosphor Icons](https://phosphoricons.com) + [Lucide](https://lucide.dev) · [Framer Motion](https://www.framer.com/motion/) · [React Flow](https://reactflow.dev) for the agent-workflow DAG\n- **Realtime & data** — [Yjs](https://github.com/yjs/yjs) + [y-websocket](https://github.com/yjs/y-websocket) for **CRDT** real-time collaboration · [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) + [node-postgres](https://node-postgres.com) for the dual-driver persistence layer\n- **Media & export** — [FFmpeg](https://ffmpeg.org) via [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg) (CJK subtitle burn / audio mux) · pro NLE interchange through CMX3600 **EDL** · FCP7 **XML** · **AAF** (a from-scratch MS-CFB Compound File Binary writer, no third-party lib)\n- **Open models & engines** — [XVERSE-Ent](https://github.com/xverse-ai/XVERSE-Ent), an open-source **MoE screenwriting model** (self-hostable via vLLM / SGLang / ModelScope) · [FLUX.1 Kontext](https://blackforestlabs.ai) for image consistency · a provider-pluggable LLM/video chain (DeepSeek · Claude · MiniMax · Veo · Kling · Midjourney) over OpenAI-compatible endpoints\n- **Methods & algorithms** — Robert McKee story structure + Save-the-Cat 3-act beat analysis · **CRDT** (conflict-free replicated data types) for collaborative editing · `cref` / `sref` + 8-dimension character **DNA** for cross-shot identity consistency\n- **Tooling** — [TypeScript](https://www.typescriptlang.org) (strict) · [Vitest](https://vitest.dev) · [Stripe](https://stripe.com) — and every creator whose real-world feedback shaped the pipeline.\n\n---\n\n## ⭐ Star History\n\nIf Wind Comic saved you time, a star helps other creators find it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ChrisChen667788/wind-comic&type=Date)](https://star-history.com/#ChrisChen667788/wind-comic&Date)\n\n---\n\n

\n Built with ❤️ by people who believe AI-generated drama should feel like a show, not a tech demo.
\n ⭐ Star us if Wind Comic saved you a week.\n

\n"}}}}