Skip to content

About

AI 驱动的儿童绘本创作平台 | AI-powered children's picture book creator (DeepSeek + DashScope + Volcengine TTS)

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

StoryBloom

AI 驱动的儿童绘本创作平台 -- 从一个想法到一本完整绘本,只需 3 分钟

License: MIT Next.js TypeScript

English | 中文


StoryBloom 三步创作流程

这是什么

StoryBloom 是一个使用中国本土 AI 服务栈打通完整绘本创作链路的开源项目。输入一个故事主题,AI 自动完成故事创作、插画生成、语音合成,最终生成一本图文并茂、可朗读的儿童绘本。

这不是一个框架或库 -- 这是一个完整可运行的参考实现,展示了如何用 DeepSeek + 通义万相 + 火山引擎 TTS 构建端到端的 AI 内容生产流水线。

核心特性

  • AI 故事生成 -- DeepSeek 大模型自动创作结构化故事内容,支持词汇难度分级
  • AI 插画生成 -- 阿里云通义万相为每一页生成配套插画,支持卡通/写实风格
  • AI 语音合成 -- 火山引擎 TTS 生成专业朗读音频,适合儿童收听
  • 完整数据持久化 -- PostgreSQL 存储绘本数据,阿里云 OSS 存储图片和音频
  • 绘本阅读体验 -- 翻页式阅读界面,支持图文 + 音频同步播放
  • 批量流式处理 -- 插画和语音均支持批量并发 + 流式进度回传

技术栈

层级 技术
前端框架 Next.js 16 + React 19 + TypeScript
UI 组件 shadcn/ui + Tailwind CSS
故事生成 DeepSeek API
插画生成 阿里云 DashScope(通义万相)
语音合成 火山引擎 TTS
数据库 PostgreSQL
文件存储 阿里云 OSS
用户认证 Logto(可选)
部署 Docker Compose

架构概览

graph TB
    User[用户] --> NextApp[Next.js App]

    subgraph "AI 服务"
        DeepSeek[DeepSeek<br/>故事生成]
        DashScope[通义万相<br/>插画生成]
        Volcengine[火山引擎<br/>语音合成]
    end

    subgraph "数据存储"
        PG[(PostgreSQL<br/>绘本数据)]
        OSS[阿里云 OSS<br/>图片/音频]
    end

    NextApp -->|生成故事| DeepSeek
    NextApp -->|生成插画| DashScope
    NextApp -->|生成语音| Volcengine
    NextApp -->|存取数据| PG
    NextApp -->|存取媒体| OSS

    subgraph "可选"
        Logto[Logto<br/>用户认证]
    end

    NextApp -.->|认证| Logto
Loading

快速开始

前置条件

  • Node.js 18+
  • Docker(用于启动 PostgreSQL)
  • 以下 API Key(参见下方获取方式):
    • DeepSeek API Key
    • 阿里云 DashScope API Key
    • 火山引擎 TTS 凭证
    • 阿里云 OSS 凭证

最小化启动(跳过登录认证)

# 1. 克隆仓库
git clone https://github.com/September999999999/storybloom.git
cd storybloom

# 2. 启动 PostgreSQL
docker compose up -d

# 3. 配置环境变量
cp .env.example .env.local
# 编辑 .env.local,填入你的 API Key
# 设置 ALLOW_ANONYMOUS_API_IN_DEV="true" 可跳过 Logto 认证

# 4. 安装依赖
npm install

# 5. 启动应用
npm run dev

访问 http://localhost:3000 开始创作你的第一本绘本。

完整启动(含 Logto 认证)

除了上述步骤外,还需要:

  1. 部署或注册 Logto 服务
  2. 在 .env.local 中填写 LOGTO_* 相关配置
  3. 将 ALLOW_ANONYMOUS_API_IN_DEV 设为 "false" 或删除该行

环境变量说明

必填 -- AI 服务

变量 说明 获取方式
DEEPSEEK_API_KEY DeepSeek 故事生成 platform.deepseek.com
DASHSCOPE_API_KEY 通义万相插画生成 dashscope.console.aliyun.com
VOLCENGINE_APP_ID 火山引擎 TTS 应用 ID console.volcengine.com/speech
VOLCENGINE_ACCESS_TOKEN 火山引擎 TTS 访问令牌 同上,在应用管理中获取

必填 -- 数据存储

变量 说明 获取方式
DATABASE_URL PostgreSQL 连接串 本地用 docker compose up -d 即可
ALIYUN_OSS_REGION OSS 区域 oss.console.aliyun.com
ALIYUN_OSS_BUCKET OSS Bucket 名称 同上
ALIYUN_OSS_ACCESS_KEY_ID OSS AccessKey ID ram.console.aliyun.com
ALIYUN_OSS_ACCESS_KEY_SECRET OSS AccessKey Secret 同上
ALIYUN_OSS_ENDPOINT OSS Endpoint 同上

可选

变量 说明 默认值
LOGTO_* Logto 认证配置(6 个变量) 见 .env.example
ALLOW_ANONYMOUS_API_IN_DEV 开发环境跳过认证 false
VOLCENGINE_TTS_CLUSTER TTS 集群 volcano_tts
VOLCENGINE_VOICE_TYPE TTS 音色 BV007_streaming
ALIYUN_OSS_PRIVATE OSS 私有访问(签名 URL) true
ALIYUN_OSS_PUBLIC_DOMAIN OSS 自定义域名 自动拼接
NEXT_PUBLIC_BASE_URL 应用基础 URL http://localhost:3000
HEALTHCHECK_TOKEN 健康检查令牌 无

完整配置参考:.env.example

API 接口

接口 说明
POST /api/generate-story 生成故事内容
POST /api/generate-image 生成单张插画
POST /api/generate-images-batch 批量生成插画(流式)
POST /api/generate-tts 生成单段语音
POST /api/generate-tts-batch 批量生成语音(流式)
POST /api/books 保存绘本
GET /api/books 获取绘本列表
GET /api/books/:id 获取绘本详情
GET /api/db/health 数据库健康检查

项目结构

src/
├── app/                    # Next.js App Router 页面和 API Routes
│   ├── api/               # 后端 API 接口
│   │   ├── generate-story/    # 故事生成
│   │   ├── generate-image/    # 插画生成
│   │   ├── generate-tts/      # 语音合成
│   │   └── books/             # 绘本 CRUD
│   ├── create/            # 创作页面
│   ├── my-books/          # 我的绘本
│   └── book/[id]/         # 绘本阅读页
├── components/            # React 组件
│   ├── ui/               # shadcn/ui 基础组件
│   ├── create/           # 创作流程组件
│   └── pages/            # 页面级组件
└── lib/                   # 工具库
    ├── deepseek.ts       # DeepSeek API 封装
    ├── wanxiang.ts       # 通义万相 API 封装
    ├── volcengine-tts.ts # 火山引擎 TTS 封装
    ├── oss.ts            # 阿里云 OSS 封装
    ├── books-db.ts       # 绘本数据库操作
    ├── prompts.ts        # AI Prompt 资产
    └── types.ts          # 类型定义

文档

文档 说明
架构概览 系统结构、模块边界和依赖关系
PoC 范围与目标 验证目标、范围和非目标
已验证能力清单 已验证能力、接口入口和验证方式
边界与下一步 当前边界和后续工程化方向
AI 链路技术说明 AI 链路、Prompt 资产和服务依赖
核心 Prompt 清单 核心 Prompt 原文归档

部署

Docker Compose(推荐用于演示/验证)

cp .env.production.example .env
# 编辑 .env,填入生产环境配置
docker compose -f docker-compose.prod.yml up -d

详见 docker-compose.prod.yml 和 deploy/ 目录。

当前版本说明

这是一个 PoC(可行性验证) 版本,已打通核心业务闭环。当前版本不覆盖:

  • 多租户与后台管理
  • 集中监控、告警与日志平台
  • 分布式限流与异步任务队列
  • 长期运维与 SLA 服务

如果你对这些方向感兴趣,欢迎提 Issue 讨论。

License

MIT


English

StoryBloom is an open-source AI-powered children's picture book creation platform. It uses a full Chinese AI service stack (DeepSeek for story generation, Alibaba Cloud DashScope/Wanxiang for illustration, ByteDance Volcengine for TTS) to generate complete picture books with text, illustrations, and narration audio in ~3 minutes.

This is a complete, runnable reference implementation showing how to build an end-to-end AI content production pipeline. See the Chinese documentation above for setup instructions.

About

AI 驱动的儿童绘本创作平台 | AI-powered children's picture book creator (DeepSeek + DashScope + Volcengine TTS)

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages