Vibecoding 案例分享:零代码打造 AI 绘本生成器 面向人群:无编程基础的纯小白 项目周期:约 2 周(边学边做) 最终成果:一个能把任意文档自动转换成儿童绘本的 AI 应用 ️ 效果展示 AI绘本效果图 上图展示了一本由 AI 自动生成的儿童绘本《狐狸大冒险》,包含封面、内容页、互动页、角色参考图等完整内容。 学习路线图 阶段 | 目标 | 时间 | 难度 Demo 阶段 | 5 分钟跑通第一个 AI 应用 | 5 分钟 | ⭐ 上手阶段 | 完成完整的绘本生成器 | 1-2 天 | ⭐⭐ ⚡ 优化阶段 | 解决实际问题,提升质量 | 持续 | ⭐⭐⭐ 深水区 | 理解原理,举一反三 | 进阶 | ⭐⭐⭐⭐ 第一阶段:Demo(5 分钟看到效果) 核心理念:别看理论,先动手!
面向人群:无编程基础的纯小白
项目周期:约 2 周(边学边做)
最终成果:一个能把任意文档自动转换成儿童绘本的 AI 应用

上图展示了一本由 AI 自动生成的儿童绘本《狐狸大冒险》,包含封面、内容页、互动页、角色参考图等完整内容。
| 阶段 | 目标 | 时间 | 难度 |
|---|---|---|---|
| ** Demo 阶段** | 5 分钟跑通第一个 AI 应用 | 5 分钟 | ⭐ |
| ** 上手阶段** | 完成完整的绘本生成器 | 1-2 天 | ⭐⭐ |
| ⚡ 优化阶段 | 解决实际问题,提升质量 | 持续 | ⭐⭐⭐ |
| ** 深水区** | 理解原理,举一反三 | 进阶 | ⭐⭐⭐⭐ |
核心理念:别看理论,先动手!5 分钟内让你看到效果。
在电脑上随便找个地方,新建一个文件夹:我的AI绘本
打开 Windsurf/Cursor,按 Cmd+L(Mac)或 Ctrl+L(Windows)打开 AI 对话框。
复制粘贴这段话:
我想做一个 AI 绘本生成器。 请帮我创建一个最简单的版本: 1. 用 Python + Gradio 做界面 2. 用户输入一段文字描述 3. 调用 AI 生成一张绘本风格的图片 4. 显示出来 先帮我创建项目结构和必要的文件。
AI 会告诉你:
你只需要:点击 AI 给的"Apply"按钮,它会自动帮你创建文件。
Nano Banana Pro 是一个强大的 AI 图片生成服务,用于生成绘本插图。


在项目根目录创建 .env 文件(如果没有的话),添加以下配置:
# Nano Banana Pro API(用于 AI 图片生成) NANO_BANANA_API_KEY=sk-7832cba5ad4e4119bbd1bf756ea721ab(这里提供一个可直接用来做测试的 api_key, 有额度限制, 建议实践的同学后续换成自己的 api_key,注意不要泄露,避免被他人使用) NANO_BANANA_API_BASE=https://grsai.com NANO_BANANA_MODEL=nano-banana-pro
| 配置项 | 说明 | 默认值 |
|---|---|---|
NANO_BANANA_API_KEY |
你的 API 密钥 | 必填 |
NANO_BANANA_API_BASE |
API 服务地址 | https://grsai.com |
NANO_BANANA_MODEL |
使用的模型 | nano-banana-pro |
可选模型:
nano-banana-fast - 快速生成,质量一般nano-banana-pro - 专业版(推荐)把下面这段话复制给 AI:
请帮我接入 Nano Banana Pro 图片生成 API。 API 信息: - 基础 URL: https://grsai.com - 绘画接口: POST /v1/draw/nano-banana - 结果查询: POST /v1/draw/result - 认证方式: Bearer Token (放在 Authorization header) 请求参数: - model: 模型名称,如 "nano-banana-pro" - prompt: 图片描述 - aspectRatio: 图片比例,如 "16:9" - imageSize: 图片大小,如 "2k" 返回结果是异步的,需要轮询 /v1/draw/result 接口获取生成结果。 请帮我: 1. 创建一个 image_service.py 服务类 2. 从 .env 读取 API Key 3. 实现生成图片和等待结果的逻辑
AI 会帮你生成完整的接入代码!
如果AI生成的代码有错误, 可以打开接入文档:https://grsai.com/dashboard/documents/nano-banana, 然后把所有的 api 调用信息copy 过来, 让AI帮你实现具体的接入逻辑, 而你只需要配置下 Token 就可以了。
AI 会告诉你运行命令,通常是:
pip install gradio openai python app.py
然后打开浏览器,访问 http://localhost:7860,你就能看到一个简单的界面了!
** 恭喜!你已经做出了第一个 AI 应用!**
| 你学到了什么 | 说明 |
|---|---|
| AI 编辑器 | Cursor/Windsurf 是你的"程序员朋友" |
| 对话式开发 | 用自然语言描述需求,AI 帮你写代码 |
| 快速验证 | 先做最小版本,看到效果再继续 |
上面的 Demo 只是开胃菜,下面是完整的项目开发过程。
Vibecoding = 用自然语言告诉 AI 你想要什么,让 AI 帮你写代码。
你不需要懂编程语法,只需要:
就像和一个程序员朋友聊天,告诉他你想做什么,他帮你实现。
上传一个文档 → AI 自动生成一本完整的绘本
包含:故事大纲、角色设计、每页插图、最终 PPT/PDF
我对 AI 说:
"我想做一个 AI 绘本生成器。用户上传一个 PDF 文档,系统自动把它变成一本儿童绘本。需要有:文档解析、大纲生成、图片生成、导出 PDF 这几个功能。用 Python Flask 做后端。"
AI 帮我生成了:
我对 AI 说:
"文档解析这块,我想支持 PDF、Word、TXT 格式。PDF 可能有图片,需要用 OCR 识别。帮我接入mineru 这个 OCR 服务。"
AI 帮我实现了:
全能的文档解析神器全能的文档解析神器
精准解析 高效提取 全面助力AI Ready数据自由
打开网址, 注册账号, 进入首页.
点击 'API',先进行 API 申请, "MinerU API 申请问卷", 提交后很快就会收到通过的申请.

申请通过后,就可以创建 API Token 了(注意, 该 Token 要保存好,后面要用到, 且不要轻易泄漏)。
mineru当前每天支持 10000 次的免费调用,基本可以满足我们的测试需求!
在接入阶段, 将API文档页中关于如何接入 API 的全部内容 copy 过来, 让AI帮我实现具体的接入逻辑, 而你只需要配置下 Token 就可以了。
我对 AI 说:
"大纲生成的 Prompt 不太好,生成的内容太像 AI 写的,没有童趣。我想要:
- 让 AI 扮演'世界级儿童绘本设计师'
- 每页要有叙事目标、关键内容、视觉画面、布局结构
- 避免 AI 废话,比如'不仅仅是 X,而是 Y'这种
- 封面要有冲击力,封底要有仪式感"
AI 帮我优化了 Prompt:
你是一位世界级的儿童绘本设计师和故事讲述者。 你制作的绘本能根据源素材和目标受众进行调整。 凡事皆有故事,而你要找到最佳的讲述方式。 每一页必须包含以下 4 个部分: // NARRATIVE GOAL (叙事目标) // KEY CONTENT (关键内容) // VISUAL (视觉画面) // LAYOUT (布局结构) **至关重要 (CRITICAL):** - 避免"标题:副标题"格式,这很 AI 感 - 禁止"不仅仅是 [X],而是 [Y]"这种废话 - 封底不要用"谢谢观看",要有设计感的结束语
我发现的问题:
"生成的绘本里,同一个小狐狸在不同页面长得不一样!第一页是橙色的,第三页变成红色了。"
我对 AI 说:
"怎么让角色在每一页都保持一致?"
AI 给出的方案:

角色设定图示例:包含全身姿势(站立、挥手、坐下、行走)、面部表情(开心、好奇、惊讶、坚定)、关键特征标注(发型、眼睛、服装)
## Character Consistency (CRITICAL) You MUST maintain character consistency with the reference image. - Keep the same: face shape, eye color, hair style, clothing - Only change: pose, expression, and interaction with the scene
我对 AI 说:
"生成一本绘本要好几分钟,用户干等着体验很差。能不能实时显示进度?比如'正在解析文档...'、'正在生成第 3 页...'这样。"
AI 帮我实现了 SSE(服务器推送事件):
我对 AI 说:
"有个新需求:用户可以上传自己的照片(比如孩子的照片),让 AI 把照片融入到绘本插图里。比如画一个卡通场景,但里面有真实的照片。"
AI 帮我设计了 Mixed Media 方案:
️ Reality Layer (真实照片层) └── 用户上传的照片,保持 100% 真实质感 Illustration Layer (插画层) └── AI 生成的卡通角色和场景 The Glue (融合层) └── 光影统一、边缘交互
| 你学到了什么 | 说明 |
|---|---|
| 迭代开发 | 一轮对话解决一个问题,逐步完善 |
| Prompt 设计 | 好的提示词决定 AI 输出质量 |
| 问题描述 | 遇到问题要描述现象,不要猜原因 |
项目跑起来了,但会遇到各种问题。这一节教你怎么解决。
❌ 错误示范:
"帮我写一个 Flask 路由,用 POST 方法,接收 multipart/form-data..."
✅ 正确示范:
"我需要一个文件上传功能,用户可以上传 PDF 文件,系统保存后返回一个任务 ID"
❌ 错误示范:
"数据库连接池是不是有问题?"
✅ 正确示范:
"上传文件后,有时候会报错'connection timeout',大概 10 次里有 2 次"
❌ 错误示范:
"生成的内容不够好"
✅ 正确示范:
"现在生成的标题是'狐狸的故事:一个关于友谊的冒险',我想要更有童趣的,比如'嘿!这就是你要找的狐狸入门指南'"
❌ 错误示范:
"帮我做一个完整的绘本系统,要有用户登录、文件上传、AI 生成、导出 PDF、分享到微信..."
✅ 正确示范:
"我们先做文件上传功能。用户上传一个 PDF,系统保存到本地,返回文件路径。"
这些坑我都踩过,分享出来让你少走弯路。
问题:把 API Key 写在代码里,上传到 GitHub,被人盗用,一夜之间扣了 500 块。
解决:
# ❌ 错误:直接写在代码里 api_key = "sk-xxxxxxxxxxxxx" # ✅ 正确:写在 .env 文件里 # .env 文件(不要上传到 GitHub) OPENAI_API_KEY=sk-xxxxxxxxxxxxx # 代码里这样读取 import os api_key = os.getenv("OPENAI_API_KEY")
记住:创建 .gitignore 文件,把 .env 加进去。
问题:第一页是卡通风格,第二页变成写实风格了。
解决:在每个图片生成的 Prompt 里,都加上风格描述。
# ❌ 错误:只描述内容 prompt = "画一只狐狸在森林里" # ✅ 正确:内容 + 风格 prompt = """ 画一只狐狸在森林里。 风格要求: - 迪士尼皮克斯 3D 动画风格 - 明亮温暖的色调 - 角色有大眼睛、圆润的线条 - 背景简洁,有柔和的光线 """
问题:同一个角色,每一页长得都不一样。
解决:
问题:生成一本绘本要 5 分钟,用户盯着白屏。
解决:
问题:Prompt 写了 2000 字,AI 只记住了最后几句。
解决:
**加粗** 或 ⚠️ 重要 标记关键要求这些是我调试好的 Prompt,直接复制使用。
你是一位世界级的儿童绘本设计师和故事讲述者。 ## 任务 根据以下文档内容,设计一本 10-15 页的儿童绘本大纲。 ## 文档内容 {这里粘贴文档内容} ## 输出要求 为每一页提供: 1. **标题**:叙事性标题(不是"标题:副标题"格式) 2. **叙事目标**:这一页在故事中的作用 3. **关键内容**:要展示的文字 4. **视觉画面**:场景、角色动作、表情 5. **布局**:构图建议 ## 禁止事项 - 禁止使用"让我们一起..."、"小朋友们..."等说教语气 - 禁止"不仅仅是X,而是Y"等 AI 味道的句式 - 禁止以"谢谢观看"结尾 ## 输出格式 JSON 格式,便于程序解析
你是一位专业的儿童绘本插画师。 ## 任务 为绘本的第 {页码} 页绘制插图。 ## 页面内容 标题:{标题} 文字:{内容} 场景:{视觉描述} ## 风格要求 - 迪士尼皮克斯 3D 动画风格 - 明亮温暖的色调,主色调为橙色、绿色、蓝色 - 角色有大眼睛、圆润的线条 - 背景简洁,有柔和的光线 - 16:9 比例,4K 分辨率 ## 角色一致性(重要!) 主角必须和参考图保持一致: - 相同的:脸型、眼睛颜色、发型、服装 - 可以变化的:姿势、表情、与场景的互动 ## 禁止 - 禁止出现 Markdown 符号(# * 等) - 禁止文字模糊不清 - 禁止风格突变
创建一张角色设定图(Character Reference Sheet)。 ## 角色信息 名称:{角色名} 描述:{外观描述} ## 设定图要求 1. 展示角色的 3 个角度:正面、3/4 侧面、侧面 2. 展示 3-4 种表情:开心、好奇、惊讶、思考 3. 展示全身和面部特写 4. 使用干净的白色背景 5. 标注关键特征(发色、眼睛颜色、服装细节) ## 风格 {风格描述,如"迪士尼皮克斯 3D 动画风格"} ## 布局 横向 16:9,像专业的角色设计稿一样排列
| 你学到了什么 | 说明 |
|---|---|
| 沟通技巧 | 怎么和 AI 高效沟通 |
| 踩坑经验 | 常见问题的解决方案 |
| Prompt 模板 | 可复用的提示词模板 |
这一节帮你理解"为什么",而不只是"怎么做"。理解了设计思路,你就能举一反三,做出自己的 AI 应用。
| 功能 | 描述 | 状态 |
|---|---|---|
| 文档解析 | 支持 PDF/Word/TXT,自动提取文字和图片 | ✅ |
| 风格选择 | 疯狂动物城、吉卜力、皮克斯等多种风格 | ✅ |
| 大纲生成 | AI 自动规划绘本结构和每页内容 | ✅ |
| 角色一致性 | 生成角色参考图,确保全书角色统一 | ✅ |
| ️ 图片生成 | 并行生成所有页面插图 | ✅ |
| 照片融合 | 支持将真实照片融入插画场景 | ✅ |
| 导出 PPT | 一键导出可编辑的 PPTX 文件 | ✅ |
| 动画生成 | 可选生成绘本动画视频(带旁白) | ✅ |
你上传一个 PDF/Word 文档 ↓ ┌─────────────────────────────────────┐ │ 第 1 步:文档解析 │ │ 把文档里的文字和图片提取出来 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 2 步:AI 生成绘本大纲 │ │ 决定分几页、每页讲什么、画什么 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 3 步:AI 生成角色参考图 │ │ 确保主角在每一页长得一样 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 4 步:AI 批量生成每页插图 │ │ 根据大纲,一页一页画出来 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 5 步:导出成品 │ │ 打包成 PPT/PDF,还能生成动画视频! │ └─────────────────────────────────────┘ ↓ 一本完整的 AI 绘本诞生!

架构说明:
| 层级 | 组件 | 说明 |
|---|---|---|
| 前端 | React + Vite + TypeScript | Upload PDF、OCR 预览、大纲编辑、绘本预览/导出 |
| 后端 Controllers | storybook / page / export / task | 4 个 Blueprint 路由模块 |
| Services 层 | FileParser / AIService / ExportSvc / FileService | 核心业务逻辑 + TaskManager 异步任务队列 |
| AI Providers | TextProvider / ImageProvider | 可插拔的 AI 模型适配层 |
| 数据库 | SQLAlchemy + SQLite | Storybook / StorybookPage / Task / CharacterReference |
| 外部服务 | MinerU / Qwen / Gemini / WebSearch / Nano Banana Pro | PDF 解析、内容分析、联网搜索、图像生成 |
┌─────────────────────────────────────────────────────────────────────────────┐ │ AI 绘本生成完整流程 │ └─────────────────────────────────────────────────────────────────────────────┘ 用户输入 ├── 主题/文档内容 (parsed_content) ├── 风格关键词 (style_keyword): "疯狂动物城"、"宫崎骏" ├── 参考图片 (reference_images): 风格参考图 └── 素材图片 (source_images): 需要嵌入绘本的真实照片 ↓ ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 1: 风格生成 (Style Generator) │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 输入: │ │ - theme (主题) │ │ - style_keyword (风格关键词) │ │ - reference_images (参考图片) ← 多模态 LLM 分析图片风格 │ │ - target_audience (目标受众) │ │ │ │ 输出: │ │ - style_config JSON (设计美学、配色、字体、视觉元素、角色风格) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ style_config ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 2: 大纲生成 (Outline Generator) │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 输入: │ │ - parsed_content (文档内容) │ │ - background_knowledge (联网搜索的背景知识) │ │ - style_config (来自 Stage 1) │ │ - source_images (素材图片列表) ← 告知 LLM 有多少张图片可用 │ │ - user_prompt, target_audience, subject, theme_character │ │ │ │ 输出: │ │ - 完整绘本大纲 JSON │ │ - title, style_config, sections │ │ - 每页 slide: title, narrative_goal, content, visual_description, │ │ layout, embedded_images (如 ["IMG_1", "IMG_2"]) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ 大纲 + embedded_images ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 3: 图片生成 (Image Generator) │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 对每个 slide 执行: │ │ │ │ 1. 检查 embedded_images 是否为空 │ │ ├── 有图片 → 使用 REALITY_PATCH_TEMPLATE │ │ └── 无图片 → 使用 STANDARD_TEMPLATE │ │ │ │ 2. 拼接视觉指令: │ │ - style_config.design_aesthetic │ │ - slide.visual_description │ │ - Reality Layer / Illustration Layer / The Glue (如有图片) │ │ │ │ 3. 调用多模态 API: │ │ - prompt: 拼接后的视觉指令 │ │ - images: source_images 中对应的真实图片 (IMG_1 → source_images[0]) │ │ │ │ 输出: │ │ - 每页的生成图片 (Mixed Media: 插画 + 真实照片融合) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ 最终绘本 (图片 + 文字)
问题:直接让 AI "把文档变成绘本" 太模糊,AI 不知道从哪下手。
解决:拆成 5 个清晰的步骤,每一步只做一件事。
❌ 错误思路:一步到位 "AI,把这个 PDF 变成绘本" → AI 懵了,不知道要做什么 ✅ 正确思路:流水线 步骤1:提取文字 → 步骤2:生成大纲 → 步骤3:画角色 → 步骤4:画每页 → 步骤5:打包 → 每一步都很清晰,AI 能精准执行
类比:Prompt 就像你给厨师的菜谱
| 技巧 | 说明 | 示例 |
|---|---|---|
| 角色扮演 | 让 AI 进入专业角色 | "你是世界级儿童绘本设计师" |
| 结构化输出 | 规定输出格式 | "每页必须包含:叙事目标、关键内容、视觉画面、布局" |
| 负面约束 | 告诉 AI 不要做什么 | "禁止使用'不仅仅是X,而是Y'这种句式" |
┌─────────────────────────────────────────────────────────────┐ │ 界面层 (Gradio) - 用户看到的界面 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 服务层 (Services) - 具体的业务逻辑 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ AI 层 (Providers) - 和各种 AI 模型通信 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 数据层 (Database) - 存储绘本信息 │ └─────────────────────────────────────────────────────────────┘
好处:想换一个 AI 模型?只改 AI 层,其他层不用动。
❌ 同步处理:点击"生成" → 白屏 5 分钟 → 突然全部出来 ✅ 异步处理:点击"生成" → "正在解析文档..." → "正在生成大纲..." → "第 1 页生成完成 ✓" [显示图片] → "第 2 页生成完成 ✓" [显示图片]
AI绘本/ ├── backend/ # 后端代码 │ ├── app.py # Flask 应用入口 │ ├── config.py # 配置文件 │ ├── requirements.txt # Python 依赖 │ ├── .env # 环境变量(API Key 放这里) │ │ │ ├── controllers/ # API 接口 │ ├── services/ # 业务逻辑 │ ├── models/ # 数据模型 │ ├── prompts/ # Prompt 模板 │ └── utils/ # 工具函数 │ ├── uploads/ # 上传的文件 ├── outputs/ # 生成的绘本 └── docs/ # 文档
| 文件/文件夹 | 作用 | 小白理解 |
|---|---|---|
app.py |
程序入口 | 双击运行的那个文件 |
.env |
密钥 | API Key 放这里,不要上传 |
services/ |
逻辑 | 真正干活的代码 |
prompts/ |
提示词 | 给 AI 的指令模板 |
A: 可以!关键是:把需求描述清楚、遇到问题及时问 AI、不要怕报错。
A: AI 编辑器免费版够用,API 测试阶段大概几十块,开发阶段用本地电脑免费。
A: 文档解析 10-30 秒 + 大纲生成 20-40 秒 + 图片生成 2-5 分钟 = 总计约 3-6 分钟
docs/API文档-文件上传与解析.mddocs/SSE-API文档.mddocs/AIPromot-AI 绘本生成完整流程.md| 方向 | 说明 | 难度 |
|---|---|---|
| 多轮对话 | 让用户和 AI 对话修改绘本 | ⭐⭐⭐ |
| 更多导出格式 | 视频(带旁白)、电子书(ePub) | ⭐⭐ |
| 模板市场 | 预设多种绘本模板 | ⭐⭐⭐ |
| 商业化 | 用户系统、付费功能 | ⭐⭐⭐⭐ |
| 你学到了什么 | 说明 |
|---|---|
| 架构思维 | 怎么设计一个可扩展的系统 |
| 设计原则 | 流水线、分层、异步处理 |
| 进阶方向 | 做完之后还能往哪走 |
Vibecoding 不是让你变成程序员,而是让你不需要成为程序员也能创造软件。
这个 AI 绘本项目,从想法到成品,全程都是和 AI 对话完成的。
你也可以。
*本文档由 Vibecoding 生成,用 AI 写关于 AI 的故事 *