基于 Next.js 和 Sanity CMS 的小说阅读网站。
npm install在项目根目录创建 .env.local 文件:
SANITY_API_TOKEN=your_sanity_api_token_here获取 Token 步骤:
- 访问 https://www.sanity.io/manage/project/lke4t7vu/api
- 点击 "Add API token"
- 选择 "Editor" 权限
- 复制生成的 token 到
.env.local
npm run dev- 网站首页: http://localhost:3000
- 小说列表: http://localhost:3000/novels
- Sanity Studio 后台: http://localhost:3000/studio
- 启动开发服务器:
npm run dev - 打开浏览器访问:http://localhost:3000/studio
- 使用你的 Sanity 账户登录(创建项目时使用的账户)
- 小说管理 - 添加、编辑、删除小说
- 章节管理 - 在对应小说下管理章节
- 封面图片 - 上传、修改、删除封面图片
📚 小说管理
└── [小说名称]
├── 📖 小说信息 ← 编辑基本信息
├── 📝 章节列表 ← 查看/编辑章节
└── ➕ 添加新章节 ← 快速添加章节
# 发布当前目录所有 .txt 文件
npm run publish
# 发布指定小说
npm run publish novel.txt
# 指定封面图片
npm run publish novel.txt cover.png
# 指定封面和分类
npm run publish novel.txt cover.png ROMANCEBL(默认)ROMANCEOTHER
- ✅ 自动检测文件编码(UTF-8, GBK 等)
- ✅ 自动提取标题和简介
- ✅ 自动查找同名封面图片(.png, .jpg, .jpeg, .webp)
- ✅ 智能章节解析(支持多种格式)
# 开发模式
npm run dev
# 构建生产版本
npm run build
# 启动生产服务器
npm run start
# 代码检查
npm run lint
# 部署 Sanity Studio(独立部署)
npm run sanity:deploynovel_blog/
├── app/ # Next.js 页面
│ ├── page.tsx # 首页
│ ├── novels/ # 小说页面
│ └── studio/ # Sanity Studio
├── lib/
│ └── novels.ts # 数据获取函数(从 Sanity)
├── src/sanity/
│ ├── client.ts # Sanity 客户端
│ ├── schemas/ # 数据模型
│ └── structure.ts # Studio 结构配置
├── scripts/
│ └── publish-novel.mjs # 一键发布脚本
└── sanity.config.ts # Sanity 配置
- Next.js 16 - React 框架
- Sanity CMS - 内容管理系统
- TypeScript - 类型安全
- Tailwind CSS - 样式(如需要)
- 环境变量: 确保
.env.local文件存在且包含SANITY_API_TOKEN - 端口冲突: 如果 3000 端口被占用,Next.js 会自动使用 3001
- 数据存储: 所有小说数据存储在 Sanity 云端,本地不需要 JSON 文件
- 源文件:
.txt和封面图片文件不会被提交到 Git(已在.gitignore中)
- 将代码推送到 GitHub
- 在 Vercel 中导入项目
- 添加环境变量
SANITY_API_TOKEN - 部署完成
在 Vercel 项目设置中添加:
SANITY_API_TOKEN: 你的 Sanity API Token
如有问题,请查看: