# ScriptForge **Repository Path**: delusion-2022/script-forge ## Basic Information - **Project Name**: ScriptForge - **Description**: 剧变(ScriptForge) — AI 剧本创作工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 剧变(ScriptForge) — AI 剧本创作工具 **在线体验**:http://1.14.204.171/novel2script/welcome (无需本地启动,直接使用,已经部署在我的服务器上了) **GitHub**:https://github.com/wxsh-hub/ScriptForge **克隆仓库**:`git clone https://github.com/wxsh-hub/ScriptForge.git` **项目介绍视频**:https://www.bilibili.com/video/BV1KHEt6qEwF/?share_source=copy_web&vd_source=5e69ddc3667fe7c8408cb6f7e0c4e680 ## 小组分工 | 成员 | 职责 | |------|------| | 黄炜 | 需求分析、前后端代码编写、技术选型、接口测试 | | 刘瀚洋 | 页面设计、需求分析、集成测试 | --- ## 本地启动教程 ### 第一步:安装环境 启动项目前,你需要安装以下三个软件: | 软件 | 版本要求 | 下载地址 | 说明 | |------|---------|---------|------| | **JDK** | 17 或更高 | https://adoptium.net/ | Java 运行环境,选 LTS 版本下载 | | **Node.js** | 18 或更高 | https://nodejs.org/ | 前端运行环境,选 LTS 版本下载 | | **MySQL** | 8.0 或更高 | https://dev.mysql.com/downloads/installer/ | 数据库,安装时会要求设置 root 密码,**请记住这个密码** | 安装完成后,打开终端(Windows 用户打开 PowerShell 或 CMD),分别输入以下命令验证是否安装成功: ```bash java -version # 应该显示 17.x.x node -v # 应该显示 v18.x.x 或更高 mysql --version # 应该显示 8.0.x ``` 三个命令都有版本号输出,说明环境安装成功。 --- ### 第二步:创建数据库 打开终端,执行以下命令创建空数据库: ```bash mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scriptforge DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" ``` 执行时会提示输入密码,输入你安装 MySQL 时设置的 root 密码。 **只需创建空数据库即可**——表结构和初始数据会在第四步启动后端时由 Flyway 自动创建和插入。 > 如果提示 `mysql 命令找不到`,说明 MySQL 没有加入系统环境变量。Windows 用户可以在 MySQL 安装目录的 `bin` 文件夹下执行,或者将该目录加入 PATH。 --- ### 第三步:配置数据库连接 用任意文本编辑器(记事本、VS Code 等)打开以下文件: ``` src/main/resources/application.yml ``` 找到这段配置(大约在第 9-13 行): ```yaml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/scriptforge?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 1234 ``` **你需要修改两个地方:** 1. **`username`** — 改成你的 MySQL 用户名(默认是 `root`) 2. **`password`** — 改成你的 MySQL 密码(就是第二步输入的那个密码) **其他字段一般不需要改:** - `url` 中的 `127.0.0.1` 表示本机数据库,`3306` 是 MySQL 默认端口,`scriptforge` 是数据库名——这些都是自动创建好的,保持原样即可 - 如果你的 MySQL 端口不是 3306(比如改成了 3307),把 url 中的 `3306` 改成你的端口号 改完后保存文件。 --- ### 第四步:启动后端 在项目根目录执行: ```bash # Windows(PowerShell / CMD) mvnw.cmd package -DskipTests java -jar target\novel2script-1.0-SNAPSHOT.jar # Mac / Linux ./mvnw package -DskipTests java -jar target/novel2script-1.0-SNAPSHOT.jar ``` > - 首次运行会自动下载项目依赖(需要几分钟,之后会快很多) > - `package` 命令会编译并打包项目,`-DskipTests` 跳过测试加快速度 > - 项目自带了 Maven Wrapper(`mvnw`),无需单独安装 Maven > - 如果 `mvnw` 不可用,也可以用 `mvn package -DskipTests`(需要自行安装 Maven) 等待控制台输出类似以下内容,表示启动成功: ``` Started Novel2ScriptApplication in 3.xx seconds ``` 启动成功后,后端运行在 `http://localhost:9090`。 **不要关闭这个终端窗口**,保持后端运行。 --- ### 第五步:启动前端 **新开一个终端窗口**(后端那个不要关),执行: ```bash cd frontend npm install npm run dev ``` 等待控制台输出类似以下内容: ``` VITE v8.x.x ready in xxx ms ➜ Local: http://localhost:5174/ ``` 在浏览器打开 `http://localhost:5174`,点击注册账号,即可开始使用。 --- ## 修改端口 如果 9090 或 5174 端口被其他程序占用,可以修改: **后端端口**(默认 9090):编辑 `src/main/resources/application.yml`,修改第一行: ```yaml server: port: 9091 # 改成你想用的端口号 ``` **前端端口**(默认 5174):编辑 `frontend/vite.config.ts`,修改 `server.port`: ```typescript server: { port: 5175, // 改成你想用的端口号 ``` 前端改了端口后,还需要修改 `vite.config.ts` 中的 proxy target 为新的后端端口。 --- ## 常见问题 **数据库表结构报错**:如果之前安装过旧版本,表结构可能不一致,删库重建即可(启动后端时 Flyway 会自动重建): ```bash mysql -u root -p -e "DROP DATABASE IF EXISTS scriptforge" mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scriptforge DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" ``` **npm install 很慢**:可以换淘宝源: ```bash npm config set registry https://registry.npmmirror.com npm install ``` **后端启动报数据库连接失败**:检查第三步的用户名和密码是否正确,以及 MySQL 服务是否已启动。 --- ## 项目介绍 剧变(ScriptForge) 是一个 AI 辅助剧本创作工具,核心功能是将小说文本自动转换为结构化 YAML 剧本,降低影视改编的技术门槛。 ### 核心功能 - **小说上传与解析** — 支持 .txt / .md 格式,自动识别章节,支持大文件拆分 - **AI 剧本转换** — 调用大语言模型将小说章节并行转换为 YAML 剧本,含场景、角色、对白、节拍等结构化数据 - **AI 分析与改进** — 对剧本进行多维度质量评分(对白、节奏、角色、场景等),并生成改进方案 - **AI 小说生成** — 根据爆款参考或用户描述,AI 生成完整小说,支持流式输出 - **剧本管理** — 在线编辑 YAML、版本管理、回滚、导出(YAML / Markdown) - **剧本市场** — 发布剧本到市场供其他用户浏览、导入 ### 技术架构 ``` ┌─────────────────────────────────────────────────────┐ │ 前端 (React 18) │ │ Vite 5 + Ant Design 5 + Zustand │ │ Monaco Editor (YAML 编辑) │ └──────────────────────┬──────────────────────────────┘ │ REST API + SSE ┌──────────────────────┴──────────────────────────────┐ │ 后端 (Spring Boot 3.3) │ │ Sa-Token 认证 │ MyBatis-Plus │ Spring @Async │ ├─────────────────────────────────────────────────────┤ │ 数据层 │ │ MySQL 8.0 + 本地文件存储 │ ├─────────────────────────────────────────────────────┤ │ AI 层 │ │ LLM API (OpenAI 兼容格式) + Prompt 模板 │ │ 支持多模型切换(按日期自动切换供应商) │ └─────────────────────────────────────────────────────┘ ``` ### 技术栈 | 层级 | 技术 | |------|------| | 后端框架 | Spring Boot 3.3 + MyBatis-Plus 3.5 | | 认证 | Sa-Token(内存模式) | | 数据库 | MySQL 8.0 + Flyway 自动迁移 | | 前端框架 | React 18 + TypeScript + Vite 5 | | UI 组件库 | Ant Design 5 | | 状态管理 | Zustand | | YAML 编辑 | Monaco Editor | | AI 调用 | OpenAI 兼容 API(SSE 流式 + 同步) | | 异步任务 | Spring @Async + CompletableFuture | | 进度推送 | SSE (Server-Sent Events) | ### 关键设计 - **并行转换** — 多章节同时提交线程池并行调用 LLM,通过 CompletableFuture 编排,SSE 实时推送进度 - **模型自动切换** — LlmClient 内置日期判断,切换日期前用 MiMo,之后自动切到百炼,无需改配置 - **YAML 自修复** — 转换后校验关键字段,不通过则自动发起修复调用 - **数据隔离** — 所有查询带 `WHERE user_id = ?`,手动实现租户隔离 - **逻辑删除** — 全表使用 `deleted` 字段软删除,MyBatis-Plus `@TableLogic` 自动过滤 ### 项目结构 ``` ScriptForge/ ├── src/ # 后端代码 │ └── main/java/com/novel2script/ │ ├── auth/ # 认证模块 │ ├── novel/ # 作品管理 │ ├── novel/generate/ # 小说生成 │ ├── convert/ # AI 转换 │ ├── ai/ # AI 分析与改进 │ ├── script/ # 剧本管理 │ ├── export/ # 导出 │ ├── marketplace/ # 剧本市场 │ └── insight/ # 数据洞察 ├── frontend/ # 前端代码 │ └── src/ │ ├── api/ # API 调用层 │ ├── stores/ # Zustand 状态管理 │ ├── pages/ # 页面组件 │ └── components/ # 通用组件 ├── docs/ # 设计文档 └── scripts/ # 辅助脚本 ```