Important
本项目基于 Untitled-Story/MySekaiStoryteller 二次开发, 如需桌面编辑器,请访问原项目。 感谢原作者 GuangChen2333 与 Untitled-Story 组织。
接收 *.sekai-story.json 剧本,通过 HTTP API 渲染并导出 Project SEKAI 风格的 Live2D MP4 视频。
不依赖 Electron 或桌面环境,支持 Windows / Linux / macOS;配合官方 AstrBot 插件,可自动生成剧本并向 QQ / Telegram 发送视频。
- 无头渲染:PixiJS + Live2D,运行于 Playwright 管理的 Chrome / Edge 渲染池,
render.workers控制并发导出数。 - 两种导出模式:默认
record实时录制,也支持fast虚拟时钟逐帧渲染;硬件编码失败自动回退 CPU。 - 可选音频:GPT-SoVITS / IrodoriTTS 配音与 BGM 混音;Irodori 支持 LoRA、参考音频、caption 与情绪标签,支持模拟说话口型;没有 TTS 也可导出。
- 任务管理:排队、并发导出、取消、IP 限流和过期文件清理。
- 云端资源:从 Moesekai(pjsk.moe)拉取 Live2D 模型与动作、剧情背景和 BGM;
sse-motion无损转motion3,自动登记models.yaml/images.yaml/bgm.yaml,BGM 用官方曲名索引补全,AI 可按曲名和分类选曲。 - 宿主内置 AI:配置任意 OpenAI 兼容 LLM,一句场景描述完成四段式生成——选角 → 台词 → 情绪/表演/日文
ttsText翻译(三段并行)→ 合成与舞台校验,再交给同一条导出队列。
由于无法做到开箱即用,且文档内容较多,部署及配置较为麻烦,本项目推荐使用 Agent 进行部署及资源配置。
需要 Node.js ≥ 20 和 Chrome / Edge / Chromium。ffmpeg 由 ffmpeg-static 随依赖安装。
以下命令在仓库根目录执行(Windows 可使用 Git Bash):
git clone https://github.com/yonglanws/MySekaiStoryteller-API.git
cd MySekaiStoryteller-API
npm ci
# 仅在没有系统 Chrome / Edge 时执行
npx playwright install chromium
cp config.example.yaml config.yaml编辑 config.yaml,并按 资源与音频配置 放置模型、背景等资源及清单。
仓库不附带渲染资源或示例剧本;资源根默认为 resources/,可通过 paths.resources 或 MSS_RESOURCE_DIR 修改。
没有现成模型、背景或 BGM 时,可以直接从 Moesekai 拉取(详见 云端资源获取):
npm run fetch:models -- --characters mizuki,ena
# 背景 / BGM 可选,按需拉取
npm run fetch:media -- --kind backgrounds --limit 20
npm run fetch:media -- --kind bgm --names bgm00003,bgm00006要在宿主里用 AI 写剧本,设置 LLM 密钥并启用 llm(详见 宿主内置 AI 剧本生成):
export MSS_LLM_API_KEY=sk-...
# config.yaml: llm.enabled=true, llm.baseUrl/model 按服务填写npm run build
npm start另开终端检查服务:
curl http://127.0.0.1:9881/api/v1/healthrenderPool.webglRenderers 应显示真实 GPU 名称;若出现 SwiftShader / llvmpipe,见 故障排除。
常驻运行、平台差异与环境变量见 部署指南。
默认地址为 http://127.0.0.1:9881。准备好符合 故事文件格式 的剧本后提交导出;
下面的文件名仅为示例,请替换为自己的剧本路径:
node -e 'const fs = require("node:fs"); process.stdout.write(JSON.stringify({story: JSON.parse(fs.readFileSync(process.argv[1], "utf8")), timeout: 600000}))' \
./resources/stories/demo.sekai-story.json |
curl -X POST http://127.0.0.1:9881/api/v1/export \
-H "Content-Type: application/json" --data-binary @-请求会等待导出结果,成功后返回 downloadUrl。timeout 包含排队时间,客户端断连或超时会取消任务。
启用 llm 后还可以一句话生成剧本或完整视频:
# 只生成剧本
curl -sS -X POST http://127.0.0.1:9881/api/v1/script/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "放学后的教室里,瑞希和绘名聊起下次 Live"}'
# 生成并直接导出视频
curl -sS -X POST http://127.0.0.1:9881/api/v1/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "深夜的无人 SEKAI,奏和真冬聊起写不出来的歌"}'完整端点、参数与任务行为见 API 参考。
Warning
API 默认监听 0.0.0.0 且无鉴权。不要直接暴露到公网;安全部署要求见 部署指南。
| 文档 | 内容 |
|---|---|
| API 参考 | 导出、生成、资源拉取、状态查询、取消、下载与清理接口 |
| 故事文件格式 | 完整 JSON 示例、登场退场、台词动作与时长规则 |
| 资源与音频配置 | 资源目录、模型与背景清单、TTS、BGM |
| 云端资源获取 | Moesekai 模型/动作/背景/BGM 下载、sse-motion 转 motion3、缓存续传 |
| 宿主内置 AI 剧本生成 | LLM 配置、staged/single 流水线、剧本/视频端点、校验修复、人格与人设 |
| 导出模式 | record / fast、画质与体积、旧配置迁移 |
| 部署指南 | 平台依赖、配置与环境变量、常驻运行、GPU 与安全 |
| 故障排除 | 浏览器启动、软件渲染、导出失败与性能问题 |
| 开发与验证 | 项目结构、构建、回归测试与端到端验证 |
- astrbot_plugin_msst —— 官方 AstrBot 插件:对接宿主 AI 剧本生成与视频导出,负责指令、进度与机器人视频回传。
本项目基于 Untitled-Story/MySekaiStoryteller 二次开发,沿用 GNU GPL v3 许可证开源;导出视频的使用另受原项目中的 VIDEO-LICENSE-CN.md 约束。
Untitled-Story/MySekaiStoryteller · Sekai-World/sekai-viewer · lezzthanthree/SEKAI-Stories