一行题材 → 大纲 → 剧本 → 分镜 → 整页出图 → 一键导出 PDF。 不会画画也能做漫画。一台电脑、几个 API key、一晚上。
这两张图,是 comic-studio 用同一套流程产出的两个不同项目。题材完全不一样、画风完全不一样、角色长相完全不一样,但都是输入一句话题材后跑出来的整本漫画里的一页。
你输入:「一个现代少女穿越到古代日本,与冷漠武士在战国乱世中求生」
↓
comic-studio
↓
你得到:一整本 4-20 页的漫画 PDF,分镜、对话、人物造型全部统一
— 含中文对话气泡、SFX 拟声词、角色跨页一致性
不需要会画画、不需要会写剧本、不需要懂 stable diffusion。 唯一你要做的事是:起一个题材、点几下、等出图、看着满意就导出 PDF。
examples/ 目录里放了两份完整的 PDF,是用本仓库代码原原本本跑出来的:
| 成品 | 题材 | 文件 |
|---|---|---|
| 🏯 古风穿越 | 现代少女穿越到古代日本 | examples/穿越古代从平民开始生活.pdf |
| ⚡ 同人二创 | 转生为贝吉塔的故事 | examples/转生为贝吉塔我将让龙珠没有遗憾.pdf |
每页里同一个角色的脸 / 发色 / 服装跨页都对得上,靠的是「人设图 + 多图编辑接口 + 一致性策略路由」:
git clone git@github.com:zhangys5726/comic-studio.git
cd comic-studio
# 填密钥(至少要一个 DeepSeek + 一个出图 API)
cp backend/.env.example backend/.env
# 编辑 backend/.env:
# DEEPSEEK_API_KEY=sk-xxx (文本:拆大纲/剧本/分镜)
# SILICONFLOW_API_KEY=sk-xxx (出图:Qwen-Image 系列)
# 或 JUXIN_API_KEY=sk-xxx (出图:gpt-image-2 等)
docker compose up -d --build打开 http://localhost:5174,首次进去会要求创建管理员账号,照做即可。
一个容器跑后端,一个容器跑前端 + nginx 反代,数据持久化在
./data/。
# 后端
cd backend
python -m venv venv
./venv/Scripts/pip install -r requirements.txt
./venv/Scripts/python -m uvicorn api:app --port 8000
# 前端(另一个终端)
cd frontend
npm install && npm run dev # http://localhost:5173① 注册 admin 账号
↓
② 「+ 新建项目」填题材 + 选形态(日漫翻页 / 条漫 / 欧美写实 / Q版绘本)
↓
③ 「剧本 & 分页」→ 一键生成大纲 → 剧本 → 拆分镜(自动按页分组)
↓ ↑
↓ └─ 任何一步觉得不满意,都能改:标题/章节/场景/对话/出场角色/动作
↓
④ 「资产库」给主要角色「生成人设图」 — 这一步是角色一致性的基础
↓
⑤ 「整页出图」→ 选模型 → 一键出图 → 候选 1-4 张 → 选一张当主图
↓
⑥ 「📥 导出 PDF」 → 把整本漫画下载下来 ✅
中间每一步生成的东西都能编辑:大纲改 logline、剧本改场景、分镜改对话气泡和角色姿态、出图不满意切布局 / 换模型 / 改 prompt。
| 选用模型 | 策略 | 怎么用参考图 | 强度 |
|---|---|---|---|
gpt-image-2 / flux.1-kontext-pro |
multi_ref | 多张人设图同时上传(最多 16 张) | ⭐⭐⭐ |
qwen-image-edit-2509 |
single_ref | 首角色人设图作编辑 base | ⭐⭐⭐ |
doubao-seedream-5 / flux-2-pro / qwen-image-max |
txt_chain | 第一页 txt2img;后续页用上一页主图串图 | ⭐⭐ |
| SiliconFlow 任意 t2i 模型 | single_ref | Provider 自动切到 Qwen-Image-Edit-2509 | ⭐⭐⭐ |
在「设置」里选模型,策略自动路由 — 你不需要懂底层。
支持的图像 Provider:
- SiliconFlow — Qwen-Image 系列(中文场景渲染强、画风稳定)
- 聚鑫 Juxin(OpenAI 兼容聚合)— gpt-image-2 / gpt-image-1.5 / doubao-seedream-5 / flux-2-pro / qwen-image-max 等 11 个模型
切 Provider 不用重启,运行时可改。
- 首次启动 bootstrap 第一个 admin 账号
- admin 进「👥 用户管理」可以创建普通用户
- 普通用户只看得到自己创建的项目;admin 看全部
- 所有资源接口都带权限校验,安全隔离
适合作为团队工具 / 给朋友家人开账号 / 教学场景。
浏览器 → http://localhost:5174
↓
┌──────────────────────┐
│ frontend (nginx) │
│ ├ SPA 静态文件 │
│ └ API 反代 → backend │
└──────────────────────┘
↓
┌──────────────────────┐
│ backend (FastAPI) │
│ ├ auth / sessions │ ← pbkdf2 + persistent token
│ ├ ScriptWriter │ ← DeepSeek 拆大纲/剧本/分镜
│ ├ ConsistencyEngine │ ← 拼整页 prompt + 路由策略
│ ├ SiliconFlowProvider│ ← Qwen-Image 系列
│ └ JuxinProvider │ ← OpenAI 兼容聚合
└──────────────────────┘
↓
SiliconFlow / Juxin
↓
SQLite (项目/用户/角色/页/分镜)
_out/*.png (所有生成图片)
更细节看 docs/ 目录。
comic-studio/
├── backend/ # FastAPI 后端
│ ├── api.py # 所有 HTTP 端点
│ ├── comic_studio/
│ │ ├── auth.py # pbkdf2 + session token
│ │ ├── consistency.py # 整页 prompt 拼装 + 策略路由
│ │ ├── config.py # 形态 → 模型映射 / .env
│ │ ├── db.py # SQLite CRUD
│ │ ├── llm/ # DeepSeek 编剧 + SD tag 转换
│ │ └── providers/ # SiliconFlow / Juxin / ComfyUI(后续)
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/ # Vite + React + TS
│ ├── src/{App.tsx, api.ts, styles.css}
│ ├── Dockerfile # 多阶段构建 → nginx 反代
│ └── nginx.conf
├── examples/ # 成品 PDF + 预览截图
├── docs/ # 设计 / 功能 / 流程文档
├── docker-compose.yml # 一键部署
└── start.ps1 # Windows 本地一键启动
已完成 ✅
- 整页一次性出图(一致性 + 中文对话气泡 + SFX)
- 多 Provider 切换(SF / 聚鑫)+ 11 个图像模型
- 一致性策略自动路由(multi_ref / single_ref / txt_chain)
- 所有实体 CRUD(项目 / 大纲 / 剧本 / 分镜 / 角色 / 页 / 候选)
- 一键导出 PDF
- 多租户认证 / 管理员后台
- Docker Compose 部署
想做但还没做 🚧
- ComfyUI 工作流对接(IP-Adapter 终极一致性)
- 漫画封面自动生成
- 多本漫画 → EPUB
- 角色 LoRA 训练入口(让脸 100% 复刻)
- 在线协作(多人共编一本漫画)
- 漫画分镜 → 短视频(接 SVD 或 Sora 类)
欢迎提 issue / PR。
如果你曾经有这种瞬间:
- 脑子里有一个故事,但不会画
- 想给孩子做绘本,但找插画师太贵
- 想拍短片但请不起团队
- 想做同人但担心更不动
- 想做 IP 但卡在素材生产
那这个工具是为你写的。
它的目标不是「再发明一个 AI 出图」,而是把**"想法 → 成品"中间的所有手工活全部自动化** —— 大纲、剧本、分镜、对话、出图、排版、导出,每一步你都可以介入,但不介入也能跑通。
第一本漫画从你的下一句话开始。
启动它,打开浏览器,告诉它你想讲什么故事。
- 提 issue:https://github.com/zhangys5726/comic-studio/issues
- 提 PR:欢迎,特别是 ComfyUI 工作流对接、LoRA 入口、新 Provider
- License:MIT(即将加上)
"做一本属于自己的漫画,不该是一件那么遥远的事。"




