All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m42s
对齐 AirShelf 的部署模型(master→prod / dev→dev),适配 Next.js 16 SSR 形态: - frontend/Dockerfile · multi-stage(deps→builder→runner),Next.js standalone + node:20-alpine,非 root 运行 - frontend/next.config.ts · 启用 output: "standalone"(打 Docker 镜像必需) - frontend/.dockerignore · 排除 .next/node_modules/env 等 - k8s/ · web-deployment(:3000) + ingress + cert-issuer + redirect middleware - .gitea/workflows/deploy.yaml · build/push 重试 3 次,deploy 重试 5 次,失败上报日志中心 project_id=airspark - prod 域名 airspark.airlabs.art / dev 域名 airspark.test.airlabs.art Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Air Spark
AI 驱动的动画自动化生产平台 · Air Spark 内部使用
导演通过对话生成剧本,系统自动串联图片生成 → 视频生成 → 拼接,输出完整成片。
核心理念
模型 + Skill = Agent
Skill 即系统提示词,定义 Agent 的行为规则和输出格式。新增内容类型 = 新增 Skill,不改代码。
七阶段流水线
Stage 1 剧本对话 screenplay-skill
Stage 2 资产 & 分镜规划 storyboard-skill
Stage 3 片段切分 segmentation-skill
Stage 4 参考图生成 Banana Pro (人设图 / 场景图)
Stage 5 Keyshot 宫格图 空间锚点参考
Stage 6 视频生成 Seedance (提示词 + 参考图)
Stage 7 拼接成片
两条并行线均以剧本为输入:
- 剧本 → storyboard-skill → Keyshot 宫格图(空间参考)
- 剧本 → segmentation-skill → 片段提示词 → Seedance
目录结构
.
├── frontend/ Next.js 16 (App Router) + React 19 + Tailwind v4
├── skills/ 项目 Skill 包(剧本、分镜、切分等)
├── skills-lock.json Skill 版本锁
├── PRD.md 产品需求文档
├── UI-Design-System.md 设计系统规范
├── DEV-LOG.md 开发日志
├── seedance视频生成文档.md Seedance API 集成参考
└── mook图/ Mock / 参考图
快速开始
cd frontend
npm install
npx next dev --webpack
⚠️ Next.js 16 的 Turbopack 在部分 Windows 环境会 panic(
failed to create whole tree),所以使用--webpack启动。
可用路由:
/— 首页/dashboard— 项目工作台/showcase— UI 展示
技术栈
- Frontend:Next.js 16.1.6 · React 19.2 · TypeScript 5 · Tailwind CSS v4
- 图标:lucide-react
- 视频生成:火山引擎 Seedance(参见
seedance视频生成文档.md) - 图像生成:Banana Pro
- 对话/规划:Claude(通过 Skill 体系驱动)
角色
| 角色 | 核心需求 |
|---|---|
| 导演 | 对话写剧本 → 一键触发流水线 → 审核成片 |
| 管理员 | 管理成员、API Key、Skill 配置 |
内容层级
Project(一部动画 IP)
├── Asset Library(角色/场景图,跨集复用)
└── Episode(EP01, EP02 ...)
├── script.md
├── 流水线状态
└── 各阶段输出文件
更多文档
- PRD.md — 完整产品需求
- UI-Design-System.md — 设计系统
- DEV-LOG.md — 开发日志
- seedance视频生成文档.md — Seedance API 接入
部署
CI/CD 走 Gitea Actions + 火山引擎 CR + K3s(traefik + cert-manager)。
| 分支 | 环境 | 域名 | Image tag |
|---|---|---|---|
master |
production | airspark.airlabs.art |
prod-YYYYMMDD-<sha7> |
dev |
development | airspark.test.airlabs.art |
dev-YYYYMMDD-<sha7> |
推到对应分支自动触发 .gitea/workflows/deploy.yaml:
checkout → docker build ./frontend (multi-stage: deps → builder → runner)→ push airspark-web → kubectl apply k8s/ → rollout restart。
Next.js standalone 模式: frontend/next.config.ts 中 output: "standalone",Docker runtime 仅拷贝 .next/standalone + .next/static + public,以非 root 用户运行 node server.js,监听 :3000。Service 80 → targetPort 3000。
Gitea 仓库需要配置的 Secrets:
- prod:
CR_PROD_PASSWORD·VOLCANO_PROD_KUBE_CONFIG - dev:
CR_SERVER·CR_USERNAME·CR_PASSWORD·VOLCANO_TEST_KUBE_CONFIG