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?

  1. 开发工具
    Claude Code(CLI Agent)对 Flutter 代码生成准确率最高,作者亲测 5 分钟可出 100 行无报错界面。

  2. 前端框架
    Flutter:单代码基输出安卓 APK,UI 默认美观,Hot Reload 适合 8 天冲刺。

  3. 大模型大脑
    GLM-4.7:

    • 中文剧本生成 SOTA 级,JSON 格式化稳定。
    • 官方活动送 1 亿 token,成本可压到 20 元内。
  4. 多模态接口

    • 图像:Gemini 绘图 API(已备接口文档)
    • 视频:Veo 2.0 接口(已备文档)
  5. 架构模式
    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% 以内?

  1. 固定种子

    • 三视图、分镜图、视频首帧全部复用同一 seed。
    • 负面提示词全局统一,减少随机抖动。
  2. 轻量 LoRA

    • 用三视图训练 20 步 rank=16 的 character LoRA,文件仅 3.7 MB。
    • 分镜图生成时 --lora_weight 0.8,既保留风格又不至于过拟合。
  3. 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

快速启动:

  1. 克隆 https://github.com/yourname/man-dao
  2. 填 key:

    const String glmKey = 'YOUR_GLM_KEY';
    const String geminiKey = 'YOUR_GEMINI_KEY';
    
  3. 运行:

    flutter pub get
    flutter run --release
    

作者提示:

首次编译 5 分钟,后续 Hot Reload 30 秒,建议用真机调试,模拟器会缺摄像头权限。


10. 学到的 3 条教训与下一步计划

本段欲回答的核心问题:
如果重来一次,哪些坑可以避开?未来怎样持续演进?

教训

  1. 文档像素级:宽高写反、seed 字段大小写都能卡半天。
  2. 免费额度≠稳定:Veo 公测突然限 10 次/天,差点误了 deadline,应提前做 fallback 方案。
  3. 提示词版本管理:GLM 输出格式迭代 5 版,没上 git diff,回滚靠手动复制。

下一步

  • 支持中文语音:接入 CosyVoice 克隆,嘴型同步。
  • 云端分享:一键生成小程序码,好友扫码即看。
  • 社区模板:让用户上传自己的 character LoRA,形成市场。

实用摘要 / 操作清单

  1. 装环境:Flutter 3.16 + Android Studio Hedgehog + Claude Code CLI
  2. 拉代码:git clone → 填 key → flutter run
  3. 写提示:ReAct 模板 200 行,直接投喂 Claude,10 分钟出壳
  4. 锁种子:角色三视图 seed 记死,后续全部复用
  5. 控预算:GLM 活动期 20 元买 1 亿 token,足够 100 条短片
  6. 合成视频: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

  1. Q:不会 Flutter,能改 React Native 吗?
    A:仓库里留了 RN 分支雏形,因 AI 生成稳定性差未继续,欢迎 PR。

  2. Q:GLM-4.7 免费额度用完了怎么办?
    A:官方日常价 0.06 元/1k token,一条 32 秒漫剧约 0.8 元,仍可接受。

  3. Q:视频接口 Veo 限流如何 fallback?
    A:代码已预留 Runway、Pika 备用通道,改一行 base_url 即可切换。

  4. Q:能否支持横版 16:9?
    A:把 aspect_ratio 参数从 9:1616:9,同步调整 FFmpeg concat 列表,UI 自适应已完成。

  5. Q:商用会侵权吗?
    A:生成内容版权归用户,注意训练 LoRA 时不要使用非授权真人脸。

  6. Q:iOS 能上 App Store 吗?
    A:Flutter 代码完全跨平台,需自备 99 美元开发者账号,另加视频审核说明。

  7. Q:为什么声音是英文?
    A:MVP 未做语言约束,下个版本接入中文 TTS 即可。

  8. Q:8 天冲刺健康吗?
    A:平均每天 5 小时,作息未通宵;若时间翻倍可更优雅,请按自身节奏调整。