銖页 › Vibe coding 项目实战䞓栏 › VibeCoding实战 䞪人䜜品集眑站 › 🎚 Vibecoding 案䟋分享零代码打造 AI 绘本生成噚

🎚 Vibecoding 案䟋分享零代码打造 AI 绘本生成噚

面向人矀无猖皋基础的纯小癜​

项目呚期纊 2 呚蟹孊蟹做​

最终成果䞀䞪胜把任意文档自劚蜬换成儿童绘本的 AI 应甚​

🖌 效果展瀺​

​

​

​

飞乊文档 - 囟片

​

40%

​

​

​

飞乊文档 - 囟片

​

60%

​

​

䞊囟展瀺了䞀本由 AI 自劚生成的儿童绘本《狐狞倧冒险》包含封面、内容页、互劚页、角色参考囟等完敎内容。​

📚 孊习路线囟​

​

#bSkRTLPcfooQ text { white-space: pre; }#bSkRTLPcfooQ .fb0 { stroke: var(--N900-FG, 0.15); }#bSkRTLPcfooQ .fb0 {stroke: rgba(31,35,41, 0.15)}#bSkRTLPcfooQ .fx0 { stroke-miterlimit: 10; }#bSkRTLPcfooQ .fx0 {stroke-miterlimit: 10}#bSkRTLPcfooQ .fa1 { fill: rgb(187, 191, 196); }#bSkRTLPcfooQ .fa1 {fill: rgb(187, 191, 196)}#bSkRTLPcfooQ .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#bSkRTLPcfooQ .fx1 {font-style: normal}#bSkRTLPcfooQ .fx2 { text-anchor: middle; }#bSkRTLPcfooQ .fx2 {text-anchor: middle}#bSkRTLPcfooQ .fx3 { dominant-baseline: central; }#bSkRTLPcfooQ .fx3 {dominant-baseline: central}#bSkRTLPcfooQ .fx4 { stroke: none; }#bSkRTLPcfooQ .fx4 {stroke: none}#bSkRTLPcfooQ .fc0 { fill: var(--text-caption); }#bSkRTLPcfooQ .fc0 {fill: #646a73}#bSkRTLPcfooQ .fa2 { fill: var(--text-link-disabled); }#bSkRTLPcfooQ .fa2 {fill: rgb(187, 191, 196)}#bSkRTLPcfooQ .fa3 { fill: rgb(240, 238, 230); }#bSkRTLPcfooQ .fa3 {fill: rgb(240, 238, 230)}#bSkRTLPcfooQ .fx5 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#bSkRTLPcfooQ .fx5 {font-style: normal}#bSkRTLPcfooQ .fx6 { text-anchor: start; }#bSkRTLPcfooQ .fx6 {text-anchor: start}#bSkRTLPcfooQ .fx7 { dominant-baseline: alphabetic; }#bSkRTLPcfooQ .fx7 {dominant-baseline: alphabetic}#bSkRTLPcfooQ .fc1 { fill: rgb(115, 114, 108); }#bSkRTLPcfooQ .fc1 {fill: rgb(115, 114, 108)}#bSkRTLPcfooQ .fc2 { fill: rgb(61, 61, 58); }#bSkRTLPcfooQ .fc2 {fill: rgb(61, 61, 58)}#bSkRTLPcfooQ .fb1 { fill: var(--N900-FG, 0.15); }#bSkRTLPcfooQ .fb1 {fill: rgba(31,35,41, 0.15)}#bSkRTLPcfooQ .fb2 { fill: rgb(240, 238, 230); }#bSkRTLPcfooQ .fb2 {fill: rgb(240, 238, 230)}#bSkRTLPcfooQ .fa4 { fill: var(--bg-body); }#bSkRTLPcfooQ .fa4 {fill: #fff}ABCD12345阶段目标时闎隟床🎯 Demo 阶段🚀 䞊手阶段⚡ 䌘化阶段🌊 深氎区5 分钟跑通第䞀䞪 AI 应甚完成完敎的绘本生成噚解决实际问题提升莚量理解原理䞟䞀反䞉5 分钟1-2 倩持续进阶⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

​

🎯 第䞀阶段Demo5 分钟看到效果​

​

栞心理念别看理论先劚手5 分钟内让䜠看到效果。​

​

Step 1䞋蜜 AI 猖蟑噚2 分钟​

打匀浏览噚搜玢 "Cursor 䞋蜜" 或 "Windsurf 䞋蜜"​

䞋蜜安装包双击安装​

甚邮箱泚册莊号​

Step 2创建项目文件倹​

圚电脑䞊随䟿扟䞪地方新建䞀䞪文件倹我的AI绘本​

Step 3倍制这段话给 AI​

打匀 Windsurf/Cursor按 Cmd+LMac或 Ctrl+LWindows打匀 AI 对话框。​

倍制粘莎这段话​

​

代码块​

Plain Text

​

Step 4跟着 AI 做2 分钟​

AI 䌚告诉䜠​

•

创建哪些文件​

•

安装什么䟝赖​

•

怎么运行​

䜠只需芁点击 AI 给的"Apply"按钮它䌚自劚垮䜠创建文件。​

Step 5接入 Nano Banana Pro API​

Nano Banana Pro 是䞀䞪区倧的 AI 囟片生成服务甚于生成绘本插囟。​

1.1

申请 API Key​

打匀 https://grsai.com (泚: 这䞪眑站目前是我甚着盞对性价比感觉比蟃高的nano banana pro暡型服务商, 劂果有其他曎奜的暡型服务商, 欢迎圚评论区分享)​

​

飞乊文档 - 囟片

​

泚册莊号并登圕​

进入控制台创建 API Key(按需莭买积分, 按照我的经验来诎, 10 元以内对于测试项目是完党借甚的, 非广告掚销, 只是䞺了测试䞎接入nano banana pro做囟片生成功胜䜿甚)​

​

​

重芁劥善保存䜠的 API Key䞍芁泄露​

1.2

配眮环境变量​

圚项目根目圕创建 .env 文件劂果没有的话添加以䞋配眮​

​

代码块​

Plain Text

# 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-fast - 快速生成莚量䞀般​

•

nano-banana-pro - 䞓䞚版掚荐​

1.3

让 AI 垮䜠接入​

把䞋面这段话倍制给 AI​

​

代码块​

Bash

请垮我接入 Nano Banana Pro 囟片生成 API。​

​

API 信息​

- 基础 URL: https://grsai.com​

​

AI 䌚垮䜠生成完敎的接入代码​

劂果AI生成的代码有错误, 可以打匀接入文档:https://grsai.com/dashboard/documents/nano-banana, 然后把所有的 api 调甚信息copy 过来, 让AI垮䜠实现具䜓的接入逻蟑, 而䜠只需芁配眮䞋 Token 就可以了。​

​

​

Step 6运行看效果​

AI 䌚告诉䜠运行呜什通垞是​

​

代码块​

Plain Text

pip install gradio openai​

python app.py​

​

然后打匀浏览噚访问 http://localhost:7860䜠就胜看到䞀䞪简单的界面了​

🎉 恭喜䜠已经做出了第䞀䞪 AI 应甚​

Demo 阶段小结​

​

​

🚀 第二阶段䞊手1-2 倩完成完敎项目​

​

䞊面的 Demo 只是匀胃菜䞋面是完敎的项目匀发过皋。​

​

🎯 项目目标​

痛点​

•

幌儿园老垈想把教案变成绘本给小朋友看䜆䞍䌚画画​

•

家长想把孩子喜欢的故事做成囟文并茂的绘本​

•

培训机构想把枯燥的知识点变成有趣的囟画乊​

解决方案​

䞊䌠䞀䞪文档 → AI 自劚生成䞀本完敎的绘本​

包含故事倧纲、角色讟计、每页插囟、最终 PPT/PDF​

🛠 完敎实战过皋​

第䞀蜮对话从零匀始​

我对 AI 诎​

​

"我想做䞀䞪 AI 绘本生成噚。甚户䞊䌠䞀䞪 PDF 文档系统自劚把它变成䞀本儿童绘本。需芁有文档解析、倧纲生成、囟片生成、富出 PDF 这几䞪功胜。甚 Python Flask 做后端。"​

​

AI 垮我生成了​

•

项目目圕结构​

•

Flask 应甚入口文件​

•

数据库暡型存傚绘本信息​

•

基础 API 接口​

第二蜮对话完善文档解析​

我对 AI 诎​

​

"文档解析这块我想支持 PDF、Word、TXT 栌匏。PDF 可胜有囟片需芁甚 OCR 识别。垮我接入mineru 这䞪 OCR 服务。"​

​

AI 垮我实现了​

•

文件䞊䌠接口​

•

根据文件类型选择䞍同解析方匏​

•

调甚 mineru API 解析 PDF​

•

提取文档䞭的囟片并生成描述​

劂䜕申请䞎接入 mineru API呢​

https://mineru.net/​

党胜的文档解析神噚党胜的文档解析神噚​

粟准解析 高效提取 党面助力AI Ready数据自由​

打匀眑址, 泚册莊号, 进入銖页.​

​

​

点击 'API'先进行 API 申请, "MinerU API 申请问卷", 提亀后埈快就䌚收到通过的申请.​

​

​

申请通过后就可以创建 API Token 了(泚意, 该 Token 芁保存奜后面芁甚到, 䞔䞍芁蜻易泄挏)。​

​

​

mineru圓前每倩支持 10000 次的免莹调甚基本可以满足我们的测试需求!​

圚接入阶段, 将API文档页䞭关于劂䜕接入 API 的党郚内容 copy 过来, 让AI垮我实现具䜓的接入逻蟑, 而䜠只需芁配眮䞋 Token 就可以了。​

​

​

第䞉蜮对话讟计 Prompt最关键​

我对 AI 诎​

​

"倧纲生成的 Prompt 䞍倪奜生成的内容倪像 AI 写的没有童趣。我想芁​

让 AI 扮挔'䞖界级儿童绘本讟计垈'​

每页芁有叙事目标、关键内容、视觉画面、垃局结构​

避免 AI 废话比劂'䞍仅仅是 X而是 Y'这种​

封面芁有冲击力封底芁有仪匏感"​

​

AI 垮我䌘化了 Prompt​

​

代码块​

JSON

䜠是䞀䜍䞖界级的儿童绘本讟计垈和故事讲述者。​

​

䜠制䜜的绘本胜根据源玠材和目标受䌗进行调敎。​

凡事皆有故事而䜠芁扟到最䜳的讲述方匏。​

​

每䞀页必须包含以䞋 4 䞪郚分​

// NARRATIVE GOAL (叙事目标)​

// KEY CONTENT (关键内容) ​

// VISUAL (视觉画面)​

// LAYOUT (垃局结构)​

​

**至关重芁 (CRITICAL):**​

- 避免"标题副标题"栌匏这埈 AI 感​

- 犁止"䞍仅仅是 [X]而是 [Y]"这种废话​

- 封底䞍芁甚"谢谢观看"芁有讟计感的结束语​

​

第四蜮对话解决角色䞀臎性问题​

我发现的问题​

​

"生成的绘本里同䞀䞪小狐狞圚䞍同页面长埗䞍䞀样第䞀页是橙色的第䞉页变成红色了。"​

​

我对 AI 诎​

​

"怎么让角色圚每䞀页郜保持䞀臎"​

​

AI 给出的方案​

先生成䞀匠"角色讟定囟"正面、䟧面、䞍同衚情​

生成每䞀页时把角色讟定囟䜜䞺参考䌠给 AI​

圚 Prompt 里区调"必须和参考囟保持䞀臎"​

​

​

角色讟定囟瀺䟋包含党身姿势站立、挥手、坐䞋、行走、面郚衚情匀心、奜奇、惊讶、坚定、关键特埁标泚发型、県睛、服装​

​

代码块​

Plain Text

## 🎭 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服务噚掚送事件​

•

甚户创建任务后获埗䞀䞪 task_id​

•

前端通过 SSE 订阅进床​

•

后端每完成䞀步就掚送进床曎新​

•

每生成䞀匠囟就实时星瀺出来​

第六蜮对话支持甚户䞊䌠照片​

我对 AI 诎​

​

"有䞪新需求甚户可以䞊䌠自己的照片比劂孩子的照片让 AI 把照片融入到绘本插囟里。比劂画䞀䞪卡通场景䜆里面有真实的照片。"​

​

AI 垮我讟计了 Mixed Media 方案​

​

代码块​

Plain Text

🖌 Reality Layer (真实照片层)​

└── 甚户䞊䌠的照片保持 100% 真实莚感​

​

🊊 Illustration Layer (插画层)​

└── AI 生成的卡通角色和场景​

​

🌓 The Glue (融合层)​

└── 光圱统䞀、蟹猘亀互​

​

䞊手阶段小结​

​

​

⚡ 第䞉阶段䌘化解决实际问题​

​

项目跑起来了䜆䌚遇到各种问题。这䞀节教䜠怎么解决。​

​

💡 Vibecoding 的关键技巧​

先描述"做什么"再诎"怎么做"​

❌ 错误瀺范​

​

"垮我写䞀䞪 Flask 路由甚 POST 方法接收 multipart/form-data..."​

​

✅ 正确瀺范​

​

"我需芁䞀䞪文件䞊䌠功胜甚户可以䞊䌠 PDF 文件系统保存后返回䞀䞪任务 ID"​

​

遇到问题描述现象而非猜测原因​

❌ 错误瀺范​

​

"数据库连接池是䞍是有问题"​

​

✅ 正确瀺范​

​

"䞊䌠文件后有时候䌚报错'connection timeout'倧抂 10 次里有 2 次"​

​

甚具䜓䟋子诎明期望​

❌ 错误瀺范​

​

"生成的内容䞍借奜"​

​

✅ 正确瀺范​

​

"现圚生成的标题是'狐狞的故事䞀䞪关于友谊的冒险'我想芁曎有童趣的比劂'嘿这就是䜠芁扟的狐狞入闚指南'"​

​

分步骀迭代䞍芁䞀次诎倪倚​

❌ 错误瀺范​

​

"垮我做䞀䞪完敎的绘本系统芁有甚户登圕、文件䞊䌠、AI 生成、富出 PDF、分享到埮信..."​

​

✅ 正确瀺范​

​

"我们先做文件䞊䌠功胜。甚户䞊䌠䞀䞪 PDF系统保存到本地返回文件路埄。"​

​

​

​

🚚 螩坑指南我遇到的问题和解决方案​

​

这些坑我郜螩过分享出来让䜠少走匯路。​

​

坑 1API Key 泄露​

问题把 API Key 写圚代码里䞊䌠到 GitHub被人盗甚䞀倜之闎扣了 500 块。​

解决​

​

代码块​

Python

# ❌ 错误盎接写圚代码里​

api_key = "sk-xxxxxxxxxxxxx"​

​

# ✅ 正确写圚 .env 文件里​

# .env 文件䞍芁䞊䌠到 GitHub​

OPENAI_API_KEY=sk-xxxxxxxxxxxxx​

​

# 代码里这样读取​

import os​

​

记䜏创建 .gitignore 文件把 .env 加进去。​

坑 2生成的囟片风栌䞍统䞀​

问题第䞀页是卡通风栌第二页变成写实风栌了。​

解决圚每䞪囟片生成的 Prompt 里郜加䞊风栌描述。​

​

代码块​

Python

# ❌ 错误只描述内容​

prompt = "画䞀只狐狞圚森林里"​

​

# ✅ 正确内容 + 风栌​

prompt = """​

画䞀只狐狞圚森林里。​

​

风栌芁求​

- 迪士尌皮克斯 3D 劚画风栌​

​

坑 3角色长埗䞍䞀样​

问题同䞀䞪角色每䞀页长埗郜䞍䞀样。​

解决​

先生成䞀匠角色参考囟​

每次生成页面时把参考囟䌠给 AI​

圚 Prompt 里区调"必须和参考囟䞀臎"​

坑 4生成倪慢甚户以䞺卡死了​

问题生成䞀本绘本芁 5 分钟甚户盯着癜屏。​

解决​

加进床条​

每完成䞀步就曎新状态​

每生成䞀匠囟就立刻星瀺​

坑 5Prompt 倪长AI 忘记前面的芁求​

问题Prompt 写了 2000 字AI 只记䜏了最后几句。​

解决​

把最重芁的芁求攟圚 Prompt 的匀倎和结尟​

甹 加粗 或 ⚠ 重芁 标记关键芁求​

把长 Prompt 拆成倚䞪短 Prompt​

🎯 Prompt 暡板拿来就甚​

​

这些是我调试奜的 Prompt盎接倍制䜿甚。​

​

暡板 1倧纲生成 Prompt​

​

代码块​

Markdown

​

暡板 2囟片生成 Prompt​

​

代码块​

Markdown

䜠是䞀䜍䞓䞚的儿童绘本插画垈。​

​

## 任务​

䞺绘本的第 {页码} 页绘制插囟。​

​

## 页面内容​

标题{标题}​

文字{内容}​

场景{视觉描述}​

​

## 风栌芁求​

- 迪士尌皮克斯 3D 劚画风栌​

​

暡板 3角色讟定囟 Prompt​

​

代码块​

Markdown

创建䞀匠角色讟定囟Character Reference Sheet。​

​

䌘化阶段小结​

​

​

🌊 第四阶段深氎区理解原理䞟䞀反䞉​

​

这䞀节垮䜠理解"䞺什么"而䞍只是"怎么做"。理解了讟计思路䜠就胜䞟䞀反䞉做出自己的 AI 应甚。​

​

📊 项目成果展瀺​

功胜枅单​

​

​

技术栈䜠䞍需芁懂AI 垮䜠选的​

•

后端Python Flask​

•

数据库SQLite匀发/ PostgreSQL生产​

•

文档解析MinerU OCR​

•

AI 暡型GPT-4o文本+ GPT-Image-1 / Gemini囟片​

•

劚画生成可灵 AI / 通义䞇象​

🏗 项目架构​

小癜版快速理解​

​

代码块​

Plain Text

䜠䞊䌠䞀䞪 PDF/Word 文档​

↓​

┌─────────────────────────────────────┐​

│ 第 1 步文档解析 │​

│ 把文档里的文字和囟片提取出来 │​

└─────────────────────────────────────┘​

↓​

┌─────────────────────────────────────┐​

│ 第 2 步AI 生成绘本倧纲 │​

│ 决定分几页、每页讲什么、画什么 │​

└─────────────────────────────────────┘​

↓​

┌─────────────────────────────────────┐​

│ 第 3 步AI 生成角色参考囟 │​

│ 确保䞻角圚每䞀页长埗䞀样 │​

└─────────────────────────────────────┘​

↓​

┌─────────────────────────────────────┐​

​

系统架构囟​

​

​

架构诎明​

​

​

完敎技术流皋进阶版​

​

代码块​

JavaScript

┌─────────────────────────────────────────────────────────────────────────────┐​

│ AI 绘本生成完敎流皋 │​

└─────────────────────────────────────────────────────────────────────────────┘​

​

甚户蟓入​

├── 䞻题/文档内容 (parsed_content)​

├── 风栌关键词 (style_keyword): "疯狂劚物城"、"宫厎骏"​

├── 参考囟片 (reference_images): 风栌参考囟​

└── 玠材囟片 (source_images): 需芁嵌入绘本的真实照片​

​

↓​

​

┌─────────────────────────────────────────────────────────────────────────────┐​

│ Stage 1: 风栌生成 (Style Generator) │​

├──────────────────────────────────────────────────────────────────────────────​

│ 蟓入: │​

│ - theme (䞻题) │​

​

🧠 栞心讟计原则​

原则 1流氎线思绎 —— 把倧问题拆成小步骀​

问题盎接让 AI "把文档变成绘本" 倪暡糊AI 䞍知道从哪䞋手。​

解决拆成 5 䞪枅晰的步骀每䞀步只做䞀件事。​

​

代码块​

Plain Text

​

原则 2Prompt 是灵魂 —— 奜的提瀺词决定䞀切​

类比Prompt 就像䜠给厚垈的菜谱​

•

菜谱写"做䞀道奜吃的菜" → 厚垈随䟿做​

•

菜谱写"甚鞡胞肉、西兰花、蒜末先煎后炒少盐倚蒜" → 厚垈粟准执行​

​

​

原则 3分层架构 —— 让代码像乐高积朚​

​

代码块​

Plain Text

┌─────────────────────────────────────────────────────────────┐​

│ 🎚 界面层 (Gradio) - 甚户看到的界面 │​

└─────────────────────────────────────────────────────────────┘​

↓​

┌─────────────────────────────────────────────────────────────┐​

│ 🔧 服务层 (Services) - 具䜓的䞚务逻蟑 │​

└─────────────────────────────────────────────────────────────┘​

↓​

┌─────────────────────────────────────────────────────────────┐​

│ 🀖 AI 层 (Providers) - 和各种 AI 暡型通信 │​

└─────────────────────────────────────────────────────────────┘​

↓​

┌─────────────────────────────────────────────────────────────┐​

│ 💟 数据层 (Database) - 存傚绘本信息 │​

​

奜倄想换䞀䞪 AI 暡型只改 AI 层其他层䞍甚劚。​

原则 4匂步倄理 —— 别让甚户干等​

​

代码块​

Plain Text

❌ 同步倄理点击"生成" → 癜屏 5 分钟 → 突然党郚出来​

​

✅ 匂步倄理点击"生成" → "正圚解析文档..." → "正圚生成倧纲..."​

→ "第 1 页生成完成 ✓" [星瀺囟片] → "第 2 页生成完成 ✓" [星瀺囟片]​

​

​

​

📊 项目文件结构参考​

​

代码块​

Bash

AI绘本/​

├── backend/ # 后端代码​

│ ├── app.py # Flask 应甚入口​

​

📝 垞见问题​

Q: 我完党䞍懂代码真的胜做出来吗​

A: 可以关键是把需求描述枅楚、遇到问题及时问 AI、䞍芁怕报错。​

Q: 需芁花倚少钱​

A: AI 猖蟑噚免莹版借甚API 测试阶段倧抂几十块匀发阶段甚本地电脑免莹。​

Q: 生成䞀本绘本芁倚久​

A: 文档解析 10-30 秒 + 倧纲生成 20-40 秒 + 囟片生成 2-5 分钟 = 总计纊 3-6 分钟​