8 天落地、20 元跑通:我用 Claude Code + GLM-4.7 做出开源 AI 漫剧 App「漫导」
核心问题:一位零移动端经验的后端工程师,怎样在 8 天(含元旦 3 天假)里把「一句话生成剧本→角色三视图→分镜图片→分镜视频→合成漫剧」全流程装进一部安卓手机,并只花 20 元 token 成本就上线可玩?
1. 背景:为什么非得自己造一个「手机端漫剧工厂」?
本段欲回答的核心问题:
市面上已有不少 AI 漫剧方案,为何作者仍要重写一个移动端 App?
-
作者去年连发两篇 AI 漫剧技术文章,收到大量读者私信:能不能在手机上随时创作? -
现有平台几乎全为 Web 端,需要电脑、翻墙、配环境,门槛高。 -
武汉本地 AI 圈线下沙龙,30 多位创作者现场吐槽:手机端空白,「谁做出来谁就是第一」。 -
作者本人「不留遗憾」信条发作,和老婆立 8 天军令状:若做不出来就当自己疯了。
**一句话总结:**需求真实、竞品空缺、假期空档,三力合一,开干。
2. 目标与约束:8 天 MVP 必须长成什么样?
本段欲回答的核心问题:
在时间、金钱、技术三重硬封顶下,MVP 的验收标准是什么?
| 维度 | 硬约束 | 柔性目标 |
|---|---|---|
| 时间 | 8 日历天(含元旦 3 天假) | 第 5 天出可跑通 demo |
| 费用 | ≤ 100 元 | 最终账单 20 元 |
| 技术 | 作者不会安卓原生 | 用 Claude Code 生成 Flutter 代码 |
| 功能 | 必须端到端跑通 | 人物一致性 > 80% 可接受 |
| 开源 | 上线即开源 | GitHub 可得 star |
验收清单(checklist 形式):
-
[x] 一句话输入自动生成 8 格剧本 -
[x] 角色三视图固定主角脸 -
[x] 7 个场景、2 个主角可配置 -
[x] 每场景输出 1 张分镜图 + 1 条 4 秒视频 -
[x] 最终合成 1 条 32 秒竖版漫剧 -
[x] 安卓端离线可安装包 < 60 MB
3. 技术选型:为什么最终锁死「Flutter + GLM-4.7 + ReAct」?
本段欲回答的核心问题:
在满屏技术栈里,如何 10 分钟敲定组合并敢押注 All in?
-
开发工具
Claude Code(CLI Agent)对 Flutter 代码生成准确率最高,作者亲测 5 分钟可出 100 行无报错界面。 -
前端框架
Flutter:单代码基输出安卓 APK,UI 默认美观,Hot Reload 适合 8 天冲刺。 -
大模型大脑
GLM-4.7:-
中文剧本生成 SOTA 级,JSON 格式化稳定。 -
官方活动送 1 亿 token,成本可压到 20 元内。
-
-
多模态接口
-
图像:Gemini 绘图 API(已备接口文档) -
视频:Veo 2.0 接口(已备文档)
-
-
架构模式
ReAct(Reason+Act)循环:
用户输入 → GLM 规划 → App 执行工具 → 结果回灌 → GLM 再规划 → … → 输出成片
作者反思:
当时也想过 React Native,但 Claude 对 RN 生成代码常带第三方库冲突,排错耗不起;Flutter 的 widget 树结构更像「写提示词」,AI 出错率最低,于是 10 分钟拍板,后面没再犹豫。
4. 系统架构:一张图看清「漫导」数据流
本段欲回答的核心问题:
一句话生成视频的魔幻背后,数据到底怎样流动?
graph TD
A[用户输入] -->|文本| B[GLM-4.7 规划层]
B -->|JSON 指令| C[App 执行层]
C --> D{工具路由}
D -->|1. 剧本| E[本地缓存]
D -->|2. 角色图| F[调用 Gemini 绘图]
D -->|3. 分镜图| G[调用 Gemini 绘图]
D -->|4. 分镜视频| H[调用 Veo 视频]
F & G & H -->|URL 结果| I[回灌 GLM]
I --> B
B -->|全部完成| J[FFmpeg 合成]
J --> K[32s 漫剧 MP4]
角色一致性实现秘诀:
-
三视图固定 1 组 seed + 通用负面提示词 -
后续所有分镜图强制引用该 seed & 角色 LoRA 权重 0.8 -
视频生成时首帧贴角色三视图作为 Reference Frame
5. 8 天冲刺日记:从 0 行代码到 APK 上架
本段欲回答的核心问题:
时间线怎样排布,才能确保第 8 天一定交卷?
| 天 | 目标 | 关键事件 | 耗时 | 备注 |
|---|---|---|---|---|
| D1 上午 | 环境搭建 | Flutter+Android Studio+Claude Code 一条龙 | 2 h | 全 CLI 搞定 |
| D1 下午 | 提示词工程 | 把「ReAct 模板+接口文档」写成 200 行提示 | 3 h | 一次性投喂 Claude |
| D2 | 出壳 | 跑通「输入→剧本」JSON | 4 h | token 消耗 20 万 |
| D3 | 角色三视图 | 固定 seed 测一致性 | 6 h | 调 8 次 prompt |
| D4 | 分镜→图片 | 7 场景并行调用 | 5 h | 并发 3 线程 |
| D5 | 分镜→视频 | 4 秒短视频稳定出 | 7 h | 失败 12 次后成功 |
| D6 | 合成 & UI | FFmpeg 脚本+播放页 | 4 h | 包体积 58 MB |
| D7 | 测试 | 找 3 位朋友众测 | 3 h | 收集 17 条反馈 |
| D8 上午 | 开源 | 写 README+录 2 min 演示 | 2 h | GitHub 发布 |
| D8 下午 | 发文 | 记录心得 & 账单 | 2 h | 推文 1.2w 阅读 |
作者反思:
最崩溃的是 D5 凌晨 2 点,Veo 返回「Invalid Aspect Ratio」连错 7 次,最后发现官方文档把竖版 9:16 写成 16:9,一字之差。那瞬间深刻体会「读文档要读到像素级」。
6. 实战演示:32 秒「草莓蛋糕」漫剧是怎样诞生的?
本段欲回答的核心问题:
读者能否复刻一条成片?每一步的输入、输出、耗时、踩坑点全公开。
Step 0 触发
用户输入:
「生成一个小姐姐做草莓蛋糕的视频,要可爱的风格」
Step 1 剧本(GLM-4.7 生成)
{
"title": "草莓甜心",
"scenes": 8,
"hook": "当她把第一颗草莓放上蛋糕,心跳声比烤箱计时器还响",
"characters": [
{ "name": "小莓", "age": 22, "features": "粉色短发、围裙上有一颗草莓徽章" }
]
}
耗时:3.2 s | token:1.1 k
Step 2 角色三视图
提示词(节选):
「pink hair short bob, strawberry badge on apron, three-view sheet, seed=128475, negative: blurry, extra limb」
输出:1024×1024 png,一致性评分 0.87(内部脚本计算)
图片来源:作者生成
Step 3 分镜图×7
示例第 3 镜:
「特写,小莓把草莓轻放奶油山,阳光透窗打侧脸,seed=128475」
出图 6 s,尺寸 1024×1792,竖版直接可用。
Step 4 分镜视频×7
调用 Veo:
{ "image_url": "<step3 图片>", "duration": 4, "motion": "subtle head tilt and cream swirl" }
平均等待 28 s,返回 MP4 4s@30fps。
Step 5 合成
FFmpeg 命令(无重编码,秒级):
ffmpeg -f concat -i list.txt -c copy final.mp4
最终成片:32.4 MB,720×1280,30 fps,总时长 32 秒。
播放效果:
图片来源:作者生成
7. 人物一致性方案详解:seed、LoRA、Reference Frame 三板斧
本段欲回答的核心问题:
开源社区最常问的「角色脸崩」到底如何压到 10% 以内?
-
固定种子
-
三视图、分镜图、视频首帧全部复用同一 seed。 -
负面提示词全局统一,减少随机抖动。
-
-
轻量 LoRA
-
用三视图训练 20 步 rank=16 的 character LoRA,文件仅 3.7 MB。 -
分镜图生成时 --lora_weight 0.8,既保留风格又不至于过拟合。
-
-
Reference Frame
-
视频接口支持首帧垫图,把三视图 resize 到 512×512 作为参考。 -
运动幅度限制 subtle|slow,减少面部形变。
-
实测:
-
同一角色 20 次随机出图,面部 IoU ≥ 0.85 占比 18/20。 -
视频侧 10 条抽样,人工打分 ≥ 4/5 占比 9/10。
8. 成本拆解:20 元人民币究竟花在哪?
本段欲回答的核心问题:
「低成本」是噱头还是真实可复现?
| 项目 | 单价 | 数量 | 小计 |
|---|---|---|---|
| GLM-4.7 128k 上下文 | 0.015 元/1k token | 1 300 000 | 19.5 元 |
| Gemini 绘图 | 免费 tier | 60 张 | 0 元 |
| Veo 视频 | 公测免费 | 60 个 | 0 元 |
| 合计 | 19.5 元 ≈ 20 元 |
备注:
-
活动期 GLM 充值 20 元送 1 亿 token,实际未超量。 -
若按原价 0.06 元/1k token,总成本约 78 元,仍在百元内。
9. 开源地址与目录结构:5 分钟搞定本地运行
本段欲回答的核心问题:
读者如何把项目跑起来?需要改几行代码?
仓库树(核心部分):
man-dao/
├─ android/ # Flutter 安卓壳
├─ director_ai/
│ ├─ docs/
│ │ ├─ 图像生成API接口文档.md
│ │ └─ 视频处理全集.md
│ ├─ lib/
│ │ ├─ main.dart
│ │ ├─ react_loop.dart # ReAct 核心循环
│ │ └─ lora_manager.dart
│ └─ scripts/
│ ├─ seed_lock.py
│ └─ merge_video.sh
├─ pubspec.yaml
└─ README.md
快速启动:
-
克隆 https://github.com/yourname/man-dao -
填 key: const String glmKey = 'YOUR_GLM_KEY'; const String geminiKey = 'YOUR_GEMINI_KEY'; -
运行: flutter pub get flutter run --release
作者提示:
首次编译 5 分钟,后续 Hot Reload 30 秒,建议用真机调试,模拟器会缺摄像头权限。
10. 学到的 3 条教训与下一步计划
本段欲回答的核心问题:
如果重来一次,哪些坑可以避开?未来怎样持续演进?
教训
-
文档像素级:宽高写反、seed 字段大小写都能卡半天。 -
免费额度≠稳定:Veo 公测突然限 10 次/天,差点误了 deadline,应提前做 fallback 方案。 -
提示词版本管理:GLM 输出格式迭代 5 版,没上 git diff,回滚靠手动复制。
下一步
-
支持中文语音:接入 CosyVoice 克隆,嘴型同步。 -
云端分享:一键生成小程序码,好友扫码即看。 -
社区模板:让用户上传自己的 character LoRA,形成市场。
实用摘要 / 操作清单
-
装环境:Flutter 3.16 + Android Studio Hedgehog + Claude Code CLI -
拉代码: git clone→ 填 key →flutter run -
写提示:ReAct 模板 200 行,直接投喂 Claude,10 分钟出壳 -
锁种子:角色三视图 seed 记死,后续全部复用 -
控预算:GLM 活动期 20 元买 1 亿 token,足够 100 条短片 -
合成视频:FFmpeg concat 无重编码,秒级输出
One-page Summary
-
8 天 MVP,Flutter+GLM-4.7+ReAct,全部开源。 -
端到端:一句话 → 剧本 → 角色 → 分镜图 → 分镜视频 → 32 s 漫剧。 -
人物一致性:固定 seed + LoRA 0.8 + Reference Frame。 -
成本:20 元 token,图像视频接口白嫖。 -
已上线,GitHub 搜「man-dao」即可体验。
FAQ
-
Q:不会 Flutter,能改 React Native 吗?
A:仓库里留了 RN 分支雏形,因 AI 生成稳定性差未继续,欢迎 PR。 -
Q:GLM-4.7 免费额度用完了怎么办?
A:官方日常价 0.06 元/1k token,一条 32 秒漫剧约 0.8 元,仍可接受。 -
Q:视频接口 Veo 限流如何 fallback?
A:代码已预留 Runway、Pika 备用通道,改一行 base_url 即可切换。 -
Q:能否支持横版 16:9?
A:把aspect_ratio参数从9:16改16:9,同步调整 FFmpeg concat 列表,UI 自适应已完成。 -
Q:商用会侵权吗?
A:生成内容版权归用户,注意训练 LoRA 时不要使用非授权真人脸。 -
Q:iOS 能上 App Store 吗?
A:Flutter 代码完全跨平台,需自备 99 美元开发者账号,另加视频审核说明。 -
Q:为什么声音是英文?
A:MVP 未做语言约束,下个版本接入中文 TTS 即可。 -
Q:8 天冲刺健康吗?
A:平均每天 5 小时,作息未通宵;若时间翻倍可更优雅,请按自身节奏调整。

