# 小说转剧本服务 **Repository Path**: elfbobo_admin_admin/novel-to-script-service ## Basic Information - **Project Name**: 小说转剧本服务 - **Description**: 小说转剧本借鉴别的项目搭建 一个基于 AI 的小说自动转短剧剧本系统,通过"章节拆分 → 并发事件提取 → 故事骨架 → 改编策略 → 剧本生成"的完整流水线,将小说 TXT 一键转化为短剧剧本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-10 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Novel2Script V4 - AI 小说转短剧剧本工具 将中文小说 TXT 文件自动转化为高质量短剧剧本的 AI 工具。 ## 流程 ``` 上传TXT → 拆章节 → 预处理原文 → 大纲 → 评分 → 分块 → 评分 → 写剧本 → 评分 → 润色 → 评分 (0次AI) (0次AI) (1次AI) (1次AI) (1次AI) (1次AI) (N次AI) (N次AI) (N次AI) (N次AI) ``` 每个阶段生成后自动评分,低于 80 分或未通过则带反馈重试,最多 3 次。 | 步骤 | 说明 | AI调用 | |------|------|--------| | 拆章节 | 正则识别章节标题 | 0次 | | 预处理原文 | 自适应压缩(全文/截取头尾/块摘要) | 0次 | | 大纲 | 模式判定 + 剧本设定 + 人物 + 三幕结构 | 1次生成 + 1次评分 | | 分块 | 分块表 + 逐集章纲 | 1次生成 + 1次评分 | | 写剧本 | 每集完整剧本,5集一批并发 | N次生成 + N次评分 | | 润色 | 格式统一 + 删冗余 + 抽象→视听化 | N次生成 + N次评分 | ## 快速开始 ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 配置 AI 接口(编辑 config.py,或设置环境变量) # Linux/macOS: export AI_BASE_URL="https://your-llm-api-endpoint/v1" export AI_API_KEY="your-api-key" export AI_MODEL="your-model-name" # Windows PowerShell: # $env:AI_BASE_URL="https://your-llm-api-endpoint/v1" # $env:AI_API_KEY="your-api-key" # $env:AI_MODEL="your-model-name" # 3. 启动服务 python main.py # 服务运行在 http://localhost:6008 ``` ## API 接口 ### 一键全流程 | 方法 | 路径 | 说明 | |------|------|------| | `POST` | `/api/v4/auto` | 上传TXT,自动完成全部流程 | ### 分步接口 | 方法 | 路径 | 说明 | |------|------|------| | `POST` | `/api/v4/outline/{project_id}` | 生成大纲 | | `POST` | `/api/v4/chunking/{project_id}` | 生成分块+章纲 | | `POST` | `/api/v4/scripts/{project_id}` | 批量生成剧本 | | `POST` | `/api/v4/polish/{project_id}` | 批量润色剧本 | ### 项目管理 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/projects` | 项目列表 | | `GET` | `/api/project/{project_id}` | 项目详情 | | `GET` | `/api/script/{script_id}` | 单集剧本 | | `GET` | `/api/prompts-list` | 提示词列表 | | `GET/PUT` | `/api/prompts/{key}` | 读取/更新提示词 | ## 技术栈 | 技术 | 用途 | |------|------| | FastAPI | Web 框架 | | SQLAlchemy + SQLite | 数据持久化 | | OpenAI SDK | LLM 调用(兼容 OpenAI / DeepSeek / 通义千问 / Ollama) | | ThreadPoolExecutor | 剧本生成并发(5线程) | ## 调试日志 所有 LLM 调用的完整响应会自动记录到 `logs/llm.jsonl`,每行一条 JSON: ```json {"time":"2026-07-10 14:30:22","stage":"outline","model":"qwen3-14b","system_prompt_len":500,"user_message_len":5200,"response_len":8300,"response":"...完整内容..."} ``` | stage 值 | 含义 | | -------- | ---- | | `outline` | 大纲生成 | | `outline_score` | 大纲评分 | | `chunking` | 分块生成 | | `chunking_score` | 分块评分 | | `script` | 剧本生成 | | `script_score` | 剧本评分 | | `polish` | 润色 | | `polish_score` | 润色评分 | ## 项目结构 ``` novel2script/ ├── main.py # FastAPI 入口 + V4 接口 ├── config.py # AI 配置 + 并发数 ├── models.py # ORM 模型(Project/Novel/Script/AgentWorkData) ├── database.py # SQLite 初始化 ├── chapter_splitter.py # 章节解析器 ├── script_agent.py # V4 核心逻辑(大纲/分块/写剧本/润色 + 评分重试) ├── ai_client.py # LLM 调用封装 + JSONL 日志 ├── prompts.py # V4 prompt 加载器 ├── prompts_v4/ # V4 提示词模板 │ ├── outline.txt # 大纲生成 │ ├── outline_score.txt # 大纲评分 │ ├── chunking.txt # 分块生成 │ ├── chunking_score.txt # 分块评分 │ ├── script_writing.txt # 写剧本 │ ├── script_score.txt # 剧本评分 │ ├── polish.txt # 润色 │ └── polish_score.txt # 润色评分 ├── logs/ # LLM 响应日志(自动生成,已 gitignore) │ └── llm.jsonl # 每次 LLM 调用的完整记录 ├── frontend/ # Vue 前端 └── FLOW.md # 流程文档 ```