完成剧本批量上传

This commit is contained in:
ACT丶流星雨 2026-04-13 03:46:13 +08:00
parent 5923b7ea52
commit 654d4728b6
14 changed files with 158 additions and 121 deletions

View File

@ -114,10 +114,10 @@ Toonflow 是面向短剧生产的 AI 工作台,围绕“策划 → 编剧 →
## 📺 视频教程
https://www.bilibili.com/video/BV1na6wB6Ea2
[![Toonflow 8 分钟快速上手 AI 视频](./docs/videoCover.png)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
https://www.bilibili.com/video/BV1oXD7BqEqJ
[![Toonflow 12 分钟快速上手 AI 视频](./docs/videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow 8 分钟快速上手 AI 视频**
**Toonflow 12 分钟快速上手 AI 视频**
👉 [点击观看](https://www.bilibili.com/video/BV1oXD7BqEqJ)
📱 手机微信扫码观看

View File

@ -1 +1 @@
1.1.4
1.1.5

View File

@ -107,11 +107,11 @@ With Toonflow, you can complete the entire workflow from text to final video wit
## 📺 Video Tutorial
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![Toonflow 8-Minute AI Video Quick Start](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![Toonflow 12-Minute AI Video Quick Start](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow: 8-Minute AI Video Quick Start**
👉 [Click to Watch](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
👉 [Click to Watch](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 Scan the QR code to watch on mobile

View File

@ -101,11 +101,11 @@ Toonflow は、AI技術を活用して小説を自動的に脚本へ変換し、
## 📺 動画チュートリアル
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![Toonflow 8分でわかるAI動画作成](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![Toonflow 12分でわかるAI動画作成](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow 8分でわかるクイックスタート AI動画作成**
👉 [クリックして視聴](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
**Toonflow 12分でわかるクイックスタート AI動画作成**
👉 [クリックして視聴](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 QRコードをスキャンして視聴

View File

@ -105,11 +105,11 @@ Toonflow — это мощный ИИ-инструмент для создани
## 📺 Видеоуроки
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![Toonflow: Быстрый старт за 8 минут](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![Toonflow: Быстрый старт за 12 минут](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow: Быстрый старт в AI-видео за 8 минут**
👉 [Нажмите для просмотра](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
**Toonflow: Быстрый старт в AI-видео за 12 минут**
👉 [Нажмите для просмотра](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 Отсканируйте QR-код для просмотра видео на телефоне

View File

@ -102,11 +102,11 @@ Toonflow เป็นเครื่องมือ AI สำหรับสร
## 📺 วิดีโอสอนการใช้งาน
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 8 นาที](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 12 นาที](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 8 นาที**
👉 [คลิกเพื่อรับชม](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
**เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 12 นาที**
👉 [คลิกเพื่อรับชม](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 **สแกน QR Code เพื่อรับชมวิดีโอบนมือถือ**

View File

@ -97,11 +97,11 @@ Toonflow là công cụ AI chuyên tạo phim ngắn và truyện tranh, có kh
## 📺 Hướng dẫn bằng Video
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![Toonflow - 8 phút làm quen với Video AI](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![Toonflow - 12 phút làm quen với Video AI](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow - 8 phút làm quen nhanh với Video AI**
👉 [Nhấn để xem](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
**Toonflow - 12 phút làm quen nhanh với Video AI**
👉 [Nhấn để xem](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 **Quét mã QR để xem video trên điện thoại**
<img src="./videoQR.png" alt="Quét mã QR để xem video" width="150"/>

View File

@ -104,11 +104,11 @@ Toonflow 是一款 AI 短劇與漫畫創作工具,能夠利用 AI 技術將小
## 📺 影片教學
[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2)
[![Toonflow 8 分鐘快速上手 AI 影片](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2)
[https://www.bilibili.com/video/BV1oXD7BqEqJ](https://www.bilibili.com/video/BV1oXD7BqEqJ)
[![Toonflow 12 分鐘快速上手 AI 影片](./videoCover.jpg)](https://www.bilibili.com/video/BV1oXD7BqEqJ)
**Toonflow 8 分鐘快速上手 AI 影片**
👉 [點擊觀看](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
**Toonflow 12 分鐘快速上手 AI 影片**
👉 [點擊觀看](https://www.bilibili.com/video/BV1oXD7BqEqJ/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e)
📱 使用手機掃描 QR Code 觀看

BIN
docs/videoCover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

View File

@ -1,6 +1,6 @@
{
"name": "toonflow",
"version": "1.1.4",
"version": "1.1.5",
"description": "Toonflow 是一款 AI 短剧漫剧工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片和视频,实现高效的短剧创作。",
"author": "HBAI-Ltd <ltlctools@outlook.com>",
"license": "Apache-2.0",

View File

@ -1,4 +1,4 @@
// @routes-hash 03f1781a722f0e9e08213aec7ac1c10c
// @routes-hash 9d985ef3adbb99ec14da4f4f03dc24db
import { Express } from "express";
import route1 from "./routes/agents/clearMemory";
@ -102,50 +102,51 @@ import route98 from "./routes/script/batchAddScript";
import route99 from "./routes/script/delScript";
import route100 from "./routes/script/exportScript";
import route101 from "./routes/script/extractAssets";
import route102 from "./routes/script/getScrptApi";
import route103 from "./routes/script/pollScriptAssets";
import route104 from "./routes/script/updateScript";
import route105 from "./routes/scriptAgent/getPlanData";
import route106 from "./routes/scriptAgent/setPlanData";
import route107 from "./routes/scriptAgent/updateData";
import route108 from "./routes/setting/about/checkUpdate";
import route109 from "./routes/setting/about/downloadApp";
import route110 from "./routes/setting/agentDeploy/agentSetKey";
import route111 from "./routes/setting/agentDeploy/deployAgentModel";
import route112 from "./routes/setting/agentDeploy/getAgentDeploy";
import route113 from "./routes/setting/dbConfig/clearData";
import route114 from "./routes/setting/dev/getSwitchAiDevTool";
import route115 from "./routes/setting/dev/updateSwitchAiDevTool";
import route116 from "./routes/setting/fileManagement/openFolder";
import route117 from "./routes/setting/getTextModel";
import route118 from "./routes/setting/loginConfig/getUser";
import route119 from "./routes/setting/loginConfig/updateUserPwd";
import route120 from "./routes/setting/memoryConfig/delAllMemory";
import route121 from "./routes/setting/memoryConfig/getMemory";
import route122 from "./routes/setting/memoryConfig/sureMemory";
import route123 from "./routes/setting/modelMap/bindingPrompt";
import route124 from "./routes/setting/modelMap/getImageAndVideoModel";
import route125 from "./routes/setting/promptManage/getPrompt";
import route126 from "./routes/setting/promptManage/updatePrompt";
import route127 from "./routes/setting/skillManagement/getSkillContent";
import route128 from "./routes/setting/skillManagement/getSkillList";
import route129 from "./routes/setting/skillManagement/saveSkillContent";
import route130 from "./routes/setting/vendorConfig/addVendor";
import route131 from "./routes/setting/vendorConfig/addVendorModel";
import route132 from "./routes/setting/vendorConfig/deleteVendor";
import route133 from "./routes/setting/vendorConfig/delVendorModel";
import route134 from "./routes/setting/vendorConfig/enableVendor";
import route135 from "./routes/setting/vendorConfig/getCodeByLink";
import route136 from "./routes/setting/vendorConfig/getVendorList";
import route137 from "./routes/setting/vendorConfig/modelTest";
import route138 from "./routes/setting/vendorConfig/updateCode";
import route139 from "./routes/setting/vendorConfig/updateVendorInputs";
import route140 from "./routes/setting/vendorConfig/upVendorModel";
import route141 from "./routes/task/getProject";
import route142 from "./routes/task/getTaskApi";
import route143 from "./routes/task/getTaskCategories";
import route144 from "./routes/task/taskDetails";
import route145 from "./routes/test/test";
import route102 from "./routes/script/getAiRegex";
import route103 from "./routes/script/getScrptApi";
import route104 from "./routes/script/pollScriptAssets";
import route105 from "./routes/script/updateScript";
import route106 from "./routes/scriptAgent/getPlanData";
import route107 from "./routes/scriptAgent/setPlanData";
import route108 from "./routes/scriptAgent/updateData";
import route109 from "./routes/setting/about/checkUpdate";
import route110 from "./routes/setting/about/downloadApp";
import route111 from "./routes/setting/agentDeploy/agentSetKey";
import route112 from "./routes/setting/agentDeploy/deployAgentModel";
import route113 from "./routes/setting/agentDeploy/getAgentDeploy";
import route114 from "./routes/setting/dbConfig/clearData";
import route115 from "./routes/setting/dev/getSwitchAiDevTool";
import route116 from "./routes/setting/dev/updateSwitchAiDevTool";
import route117 from "./routes/setting/fileManagement/openFolder";
import route118 from "./routes/setting/getTextModel";
import route119 from "./routes/setting/loginConfig/getUser";
import route120 from "./routes/setting/loginConfig/updateUserPwd";
import route121 from "./routes/setting/memoryConfig/delAllMemory";
import route122 from "./routes/setting/memoryConfig/getMemory";
import route123 from "./routes/setting/memoryConfig/sureMemory";
import route124 from "./routes/setting/modelMap/bindingPrompt";
import route125 from "./routes/setting/modelMap/getImageAndVideoModel";
import route126 from "./routes/setting/promptManage/getPrompt";
import route127 from "./routes/setting/promptManage/updatePrompt";
import route128 from "./routes/setting/skillManagement/getSkillContent";
import route129 from "./routes/setting/skillManagement/getSkillList";
import route130 from "./routes/setting/skillManagement/saveSkillContent";
import route131 from "./routes/setting/vendorConfig/addVendor";
import route132 from "./routes/setting/vendorConfig/addVendorModel";
import route133 from "./routes/setting/vendorConfig/deleteVendor";
import route134 from "./routes/setting/vendorConfig/delVendorModel";
import route135 from "./routes/setting/vendorConfig/enableVendor";
import route136 from "./routes/setting/vendorConfig/getCodeByLink";
import route137 from "./routes/setting/vendorConfig/getVendorList";
import route138 from "./routes/setting/vendorConfig/modelTest";
import route139 from "./routes/setting/vendorConfig/updateCode";
import route140 from "./routes/setting/vendorConfig/updateVendorInputs";
import route141 from "./routes/setting/vendorConfig/upVendorModel";
import route142 from "./routes/task/getProject";
import route143 from "./routes/task/getTaskApi";
import route144 from "./routes/task/getTaskCategories";
import route145 from "./routes/task/taskDetails";
import route146 from "./routes/test/test";
export default async (app: Express) => {
app.use("/api/agents/clearMemory", route1);
@ -249,48 +250,49 @@ export default async (app: Express) => {
app.use("/api/script/delScript", route99);
app.use("/api/script/exportScript", route100);
app.use("/api/script/extractAssets", route101);
app.use("/api/script/getScrptApi", route102);
app.use("/api/script/pollScriptAssets", route103);
app.use("/api/script/updateScript", route104);
app.use("/api/scriptAgent/getPlanData", route105);
app.use("/api/scriptAgent/setPlanData", route106);
app.use("/api/scriptAgent/updateData", route107);
app.use("/api/setting/about/checkUpdate", route108);
app.use("/api/setting/about/downloadApp", route109);
app.use("/api/setting/agentDeploy/agentSetKey", route110);
app.use("/api/setting/agentDeploy/deployAgentModel", route111);
app.use("/api/setting/agentDeploy/getAgentDeploy", route112);
app.use("/api/setting/dbConfig/clearData", route113);
app.use("/api/setting/dev/getSwitchAiDevTool", route114);
app.use("/api/setting/dev/updateSwitchAiDevTool", route115);
app.use("/api/setting/fileManagement/openFolder", route116);
app.use("/api/setting/getTextModel", route117);
app.use("/api/setting/loginConfig/getUser", route118);
app.use("/api/setting/loginConfig/updateUserPwd", route119);
app.use("/api/setting/memoryConfig/delAllMemory", route120);
app.use("/api/setting/memoryConfig/getMemory", route121);
app.use("/api/setting/memoryConfig/sureMemory", route122);
app.use("/api/setting/modelMap/bindingPrompt", route123);
app.use("/api/setting/modelMap/getImageAndVideoModel", route124);
app.use("/api/setting/promptManage/getPrompt", route125);
app.use("/api/setting/promptManage/updatePrompt", route126);
app.use("/api/setting/skillManagement/getSkillContent", route127);
app.use("/api/setting/skillManagement/getSkillList", route128);
app.use("/api/setting/skillManagement/saveSkillContent", route129);
app.use("/api/setting/vendorConfig/addVendor", route130);
app.use("/api/setting/vendorConfig/addVendorModel", route131);
app.use("/api/setting/vendorConfig/deleteVendor", route132);
app.use("/api/setting/vendorConfig/delVendorModel", route133);
app.use("/api/setting/vendorConfig/enableVendor", route134);
app.use("/api/setting/vendorConfig/getCodeByLink", route135);
app.use("/api/setting/vendorConfig/getVendorList", route136);
app.use("/api/setting/vendorConfig/modelTest", route137);
app.use("/api/setting/vendorConfig/updateCode", route138);
app.use("/api/setting/vendorConfig/updateVendorInputs", route139);
app.use("/api/setting/vendorConfig/upVendorModel", route140);
app.use("/api/task/getProject", route141);
app.use("/api/task/getTaskApi", route142);
app.use("/api/task/getTaskCategories", route143);
app.use("/api/task/taskDetails", route144);
app.use("/api/test/test", route145);
app.use("/api/script/getAiRegex", route102);
app.use("/api/script/getScrptApi", route103);
app.use("/api/script/pollScriptAssets", route104);
app.use("/api/script/updateScript", route105);
app.use("/api/scriptAgent/getPlanData", route106);
app.use("/api/scriptAgent/setPlanData", route107);
app.use("/api/scriptAgent/updateData", route108);
app.use("/api/setting/about/checkUpdate", route109);
app.use("/api/setting/about/downloadApp", route110);
app.use("/api/setting/agentDeploy/agentSetKey", route111);
app.use("/api/setting/agentDeploy/deployAgentModel", route112);
app.use("/api/setting/agentDeploy/getAgentDeploy", route113);
app.use("/api/setting/dbConfig/clearData", route114);
app.use("/api/setting/dev/getSwitchAiDevTool", route115);
app.use("/api/setting/dev/updateSwitchAiDevTool", route116);
app.use("/api/setting/fileManagement/openFolder", route117);
app.use("/api/setting/getTextModel", route118);
app.use("/api/setting/loginConfig/getUser", route119);
app.use("/api/setting/loginConfig/updateUserPwd", route120);
app.use("/api/setting/memoryConfig/delAllMemory", route121);
app.use("/api/setting/memoryConfig/getMemory", route122);
app.use("/api/setting/memoryConfig/sureMemory", route123);
app.use("/api/setting/modelMap/bindingPrompt", route124);
app.use("/api/setting/modelMap/getImageAndVideoModel", route125);
app.use("/api/setting/promptManage/getPrompt", route126);
app.use("/api/setting/promptManage/updatePrompt", route127);
app.use("/api/setting/skillManagement/getSkillContent", route128);
app.use("/api/setting/skillManagement/getSkillList", route129);
app.use("/api/setting/skillManagement/saveSkillContent", route130);
app.use("/api/setting/vendorConfig/addVendor", route131);
app.use("/api/setting/vendorConfig/addVendorModel", route132);
app.use("/api/setting/vendorConfig/deleteVendor", route133);
app.use("/api/setting/vendorConfig/delVendorModel", route134);
app.use("/api/setting/vendorConfig/enableVendor", route135);
app.use("/api/setting/vendorConfig/getCodeByLink", route136);
app.use("/api/setting/vendorConfig/getVendorList", route137);
app.use("/api/setting/vendorConfig/modelTest", route138);
app.use("/api/setting/vendorConfig/updateCode", route139);
app.use("/api/setting/vendorConfig/updateVendorInputs", route140);
app.use("/api/setting/vendorConfig/upVendorModel", route141);
app.use("/api/task/getProject", route142);
app.use("/api/task/getTaskApi", route143);
app.use("/api/task/getTaskCategories", route144);
app.use("/api/task/taskDetails", route145);
app.use("/api/test/test", route146);
}

View File

@ -0,0 +1,35 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
content: z.string(),
}),
async (req, res) => {
const { content } = req.body;
const systemPrompt = `你是一个正则表达式专家。用户会提供一段剧本文本,你需要分析其中的集/章节分隔模式返回一个JavaScript正则表达式字符串。
1. //scriptName
2. //g/\s*([0-9]+)\s*\s*([^\n\r]*)/g
3. markdown格式
4. `;
const resText = await u.Ai.Text("universalAi").invoke({
system: systemPrompt,
messages: [
{
role: "user",
content: content.slice(0, 2000),
},
],
});
const result = (resText.text || "").trim();
res.status(200).send(success(result));
},
);

View File

@ -105,7 +105,8 @@ class AiText {
...(input.tools && { stopWhen: stepCountIs(Object.keys(input.tools).length * 50) }),
...input,
model: await this.resolveModel(),
temperature: 2,
temperature: 1,
maxOutputTokens: 8129,
} as Parameters<typeof generateText>[0]);
}
async stream(input: Omit<Parameters<typeof streamText>[0], "model">) {
@ -113,9 +114,8 @@ class AiText {
...(input.tools && { stopWhen: stepCountIs(Object.keys(input.tools).length * 50) }),
...input,
model: await this.resolveModel(extractReasoningMiddleware({ tagName: "reasoning_content", separator: "\n" })),
topP: 1,
temperature: 2,
maxOutputTokens: 9999999999,
temperature: 1,
maxOutputTokens: 8129,
} as Parameters<typeof streamText>[0]);
}
}