NovelAI Prompt Manager 是一个专为 NovelAI 用户打造的现代化提示词管理平台。
v0.4.x 重大更新:项目已从纯前端应用升级为基于 Cloudflare Workers 的全栈应用。引入了 D1 数据库和 R2 对象存储,实现了多用户管理、云端数据同步、图片持久化存储等功能,同时保留了本地生成历史的隐私性。
- ⛓️ Prompt Chain - 像管理代码一样管理提示词,支持基础层、模块层、变量层的解耦与组合。
- ☁️ 云端同步 - 所有画师串、灵感图、配置信息通过 Cloudflare D1 存储,多端实时同步。
- 🖼️ R2 图床 - 集成 Cloudflare R2 对象存储,上传封面和灵感图不再占用本地空间,支持流式上传。
- 👥 多用户系统 - 内置完善的 Auth 系统,支持管理员(Admin)和普通用户,适合小团队或个人多设备使用。
- 🧩 模块化设计 - 将光影、构图、人物特征拆分为独立模块,灵活开关测试。
- 🎨 画师军火库 - 内置权重计算、Gacha 随机抽取、批量导入功能。
- 🔒 隐私安全 - 绘图 API Key 仅存储在本地,生成历史(History)默认存储在浏览器 IndexedDB,保护隐私。
| 功能 | 说明 |
|---|---|
| 📝 Prompt Chain | 核心数据结构,包含 Base Prompt、Modules(风格模块)、Params(参数)。支持版本迭代。 |
| 🔢 变量系统 | 支持 {subject} 等动态变量输入,一套风格模板可快速复用于不同角色。 |
| 🧪 实时预览 | 集成 NAI API (V4.5),后端代理转发请求,解决跨域问题。 |
| 📦 封面管理 | 生成满意的图片后,可一键上传至 R2 并设为该 Chain 的封面。 |
- 画师军火库:
- 支持
artist:前缀开关,支持{}[]权重语法。 - Gacha 功能:随机抽取画师组合,寻找意外的化学反应。
- 批量导入:支持从文本批量导入画师列表。
- 支持
- 灵感图库 (Inspirations):
- 云端存储高质量生成的图片。
- 自动解析:上传 PNG 图片自动读取 NAI 元数据(Prompt/Seed/Steps)。
- 支持批量管理与删除。
- 本地历史 (GenHistory):
- 生成的图片自动保存在浏览器 IndexedDB。
- 支持一键“发布”到云端灵感图库。
本项目依赖 Cloudflare 生态(Pages + Workers + D1 + R2)。
- Node.js 18+
- Cloudflare 账号
- Wrangler CLI (可选,用于本地开发)
如果你想在本地运行和测试项目,无需 Cloudflare 账号即可体验完整功能。
# 安装依赖
npm install
# 启动本地服务 (端口 3000)
npm run dev:local首次运行会自动构建前端并启动本地模拟服务器。
- 访问地址: http://localhost:3000
- 数据存储:
./local-data/目录(模拟 D1 和 R2) - 默认管理员:
admin/admin_996
如果你需要实时预览代码改动:
# 同时监听前端和 Worker 变化
npm run dev:local:watch此命令会在后台运行 Vite 构建监听、esbuild Worker 打包监听和本地服务器。
# Windows
npm run dev:local:win
# Linux / macOS
npm run dev:local:linux本地模式使用 Wrangler 的 --persist-to 功能,数据存储在 ./local-data/ 目录:
- D1 数据库数据存储为 SQLite 文件
- R2 存储桶数据存储为本地文件
- 数据在重启后保留,适合长期本地测试
注意: 本地数据与云端部署的数据完全隔离,不会同步。
你可以通过 Wrangler CLI 命令行创建,也可以直接在 Cloudflare 网页控制台(Dashboard)创建。
# 1. 创建 D1 数据库
wrangler d1 create nai-db
# 2. 创建 R2 存储桶
wrangler r2 bucket create nai-assets- D1 数据库:进入
Workers & Pages->D1 SQL Database,点击创建,命名为nai-db。 - R2 存储桶:进入
R2,点击创建存储桶,命名为nai-assets。 - 创建完成后,记下它们的 ID 和名称。
修改项目根目录下的 wrangler.toml 文件,填入上一步生成的 ID:
[[d1_databases]]
binding = "DB"
database_name = "nai-db"
database_id = "替换为你刚刚创建的数据库ID"
[[r2_buckets]]
binding = "BUCKET"
bucket_name = "nai-assets"在 Cloudflare Pages 项目创建后,进入 Settings -> Build & deployments -> Build configurations。
将 Build command 修改为:
npx wrangler pages project create nai-prompt-manager --production-branch main || true && npx wrangler pages deploy dist --branch main注意:此命令用于在构建时自动绑定资源并部署。如果使用 Git 集成部署,通常只需
npm run build,并在控制台手动绑定 D1 (变量名DB) 和 R2 (变量名BUCKET)。上述命令适用于某些特定的 CI/CD 流程或确保资源绑定的场景。
- 推送代码到 Git 仓库,触发 Cloudflare Pages 构建。
- 部署完成后,访问你的 Pages 域名。
- 系统会自动初始化数据库结构。
- 默认管理员账号:
admin,密码:admin_996。 - 强烈建议:首次登录后,进入“设置 -> 偏好设置”修改密码。
首次生成图片时,在编辑器右上角输入你的 NovelAI API Key。
🔑 Key 存储在浏览器 LocalStorage 中,并通过 HTTPS Header 发送给 Worker 代理,Worker 不会保存你的 Key。
- Admin (管理员):
- 管理所有用户、画师数据。
- 可以查看和删除所有人的公开数据。
- 创建新用户。
- User (普通用户):
- 创建、编辑、删除自己的 Prompt Chain。
- 只能管理自己的灵感图。
- 有存储空间配额限制(默认 300MB)。
- Frontend: React 19, TypeScript, Tailwind CSS, Vite
- Backend (Serverless): Cloudflare Workers (Functions)
- Database: Cloudflare D1 (SQLite)
- Storage: Cloudflare R2 (Object Storage)
- Local Storage: IndexedDB (Dexie-like raw implementation)
- Security: BCrypt password hashing, HttpOnly Session Cookies
本项目采用 MIT License 开源协议。
如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!