返回目录
开源项目AI 图像生成类新手

Photoshot:开源 AI 头像生成 Web 应用

Photoshot 是一个开源的 AI 头像/形象生成 Web 应用,基于 Next.js、Chakra UI、Prisma 构建,通过 Replicate 云端运行机器学习模型(含开源的 Flux 文生图模型与 Dreambooth 训练流程),并使用 Stripe 处理支付、AWS S3 存储图片、OpenAI API 提供提示词向导。项目提供完整的本地开发流程,包括 Docker 本地 PostgreSQL 与邮件服务、Prisma 数据库迁移与环境变量配置。

0 次阅读2026/09/15 发布
Photoshot:开源 AI 头像生成 Web 应用 来源图片

社区作者 · zZz

它解决什么问题

Photoshot 是一个开源的 AI 头像生成 Web 应用,官方演示站点为 photoshot.app。项目定位是让用户上传素材并生成个人 AI 头像/形象,属于完整的可商用 Web 应用雏形,而非单纯的模型仓库。

技术栈(来源明确列出):

  • ▲ Next.js:Web 应用框架
  • 🖼 Chakra UI:UI 组件库
  • 📦 Prisma:数据库 ORM
  • 🧠 Replicate:在云端运行机器学习模型的平台
  • 💰 Stripe:支付
  • 👩‍🎨 Flux:一个开源的文本到图像生成模型

从环境变量可以看出项目的关键能力链路:使用 Replicate 进行模型训练与推理(Dreambooth 训练,REPLICATE_MAX_TRAIN_STEPS 默认 3000;REPLICATE_NEGATIVE_PROMPT 默认 cropped face, cover face, cover visage, mutated hands),使用 REPLICATE_HD_VERSION_MODEL_ID 指定的模型版本对生成图像进行放大,使用 AWS S3 存储图片,使用 Stripe 完成 studio 定价与付费(NEXT_PUBLIC_STRIPE_STUDIO_PRICE 以美分计价,NEXT_PUBLIC_STUDIO_SHOT_AMOUNT 限制每个 studio 的最大拍摄数),使用 OpenAI API 提供提示词向导(prompt wizard)能力。

适用对象:希望自建 AI 头像/写真生成服务的开发者与产品团队;需要参考 Next.js + Prisma + Replicate + Stripe 全链路集成的全栈工程师;希望在本地复现 AI 图像生成 SaaS 流程的技术人员。

许可证信息在提供的来源正文中未出现,需到仓库页面核验后再用于分发或商用。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

准备环境:需要 Node.js 与包管理器(项目命令以 yarn/npm 给出)、Docker 与 docker-compose(用于本地 PostgreSQL 与 maildev 邮件服务);同时需自备 AWS S3 存储桶、Replicate 账号与 API Token、Stripe 账号、OpenAI API Key。

1)安装依赖:

命令
yarn install

2)使用 Docker 运行本地 postgres 数据库和 maildev 服务器(maildev 可通过 http://localhost:1080 访问): docker-compose up -d

3)创建本地环境变量文件:

命令
cp .env.example .env.local

4)更新 .env.local 中的环境变量值:

  • DATABASE_URL:PostgreSQL 连接字符串。若使用仓库提供的 docker 配置,应为 postgresql://photoshot:photoshot@localhost:5432/photoshot
  • NEXTAUTH_URL:Next.js 应用的 URL,用于 NextAuth.js 鉴权
  • S3_UPLOAD_KEY:用于存放图片的 AWS S3 桶访问密钥
  • S3_UPLOAD_SECRET:用于存放图片的 AWS S3 桶密钥
  • S3_UPLOAD_BUCKET:用于存放图片的 AWS S3 桶名称
  • S3_UPLOAD_REGION:AWS S3 桶所在区域
  • REPLICATE_API_TOKEN:Replicate 的 API Token
  • REPLICATE_USERNAME:Replicate 账号关联的用户名
  • REPLICATE_MAX_TRAIN_STEPS:Dreambooth AI 模型的最大训练步数,默认 3000
  • REPLICATE_NEGATIVE_PROMPT:Replicate AI 模型中用于负面训练示例的提示词,默认 cropped face, cover face, cover visage, mutated hands
  • REPLICATE_HD_VERSION_MODEL_ID:用于放大生成图像的模型版本,这类模型可在 Replicate 上浏览
  • NEXT_PUBLIC_REPLICATE_INSTANCE_TOKEN:训练数据的唯一标识,可为任意字符串;为获得最佳效果,建议使用包含三个 Unicode 字符、不含空格的标识符,例如 cjw
  • SECRET:用于 NextAuth.js 鉴权的随机字符串
  • EMAIL_FROM:发送邮件使用的发件地址
  • EMAIL_SERVER:用于发送邮件的 SMTP 服务器 URL。若使用仓库提供的 docker 配置,应为 http://localhost:25
  • STRIPE_SECRET_KEY:Stripe 账号的 API Key
  • NEXT_PUBLIC_STRIPE_STUDIO_PRICE:studio 的价格,以美分为单位(例如 1000 = $10)
  • NEXT_PUBLIC_STUDIO_SHOT_AMOUNT:每个 studio 允许的最大拍摄数量
  • OPENAI_API_KEY:OpenAI API 的 API Key,用于提示词向导(prompt wizard)功能
  • OPENAI_API_SEED_PROMPT:通过 OpenAI API 生成风格提示词时使用的种子提示词

5)如果使用仓库提供的 docker-compose 配置,需要在 .env.local 中禁用 TLS,添加: NODE_TLS_REJECT_UNAUTHORIZED = "0"

6)运行数据库迁移:

命令
yarn prisma:migrate:dev

7)启动开发服务器:

命令
npm run dev

命令
yarn dev

8)在浏览器打开 http://localhost:3000 查看结果。

常见问题与注意事项:不使用 Docker 时需自行准备 PostgreSQL 与 SMTP 邮件服务,并按上面说明填写对应连接串;训练步数、负面提示词的默认值分别为 3000 与 cropped face, cover face, cover visage, mutated hands;NEXT_PUBLIC_REPLICATE_INSTANCE_TOKEN 建议使用三个 Unicode 字符且不含空格;图片存储、支付、模型推理分别依赖 S3、Stripe、Replicate 的账号与密钥,缺一不可。

来源教程配图

photobooth-ai.app
配图 1 · photobooth-ai.app查看原图

适用场景

搭建自托管的 AI 头像/形象生成 Web 服务
作为 Next.js + Prisma + Replicate + Stripe 全链路集成参考实现
通过 Replicate 进行 Dreambooth 个性化模型训练与推理
结合 OpenAI 提示词向导生成风格提示词并生成图片
使用 Stripe 实现按 studio 计价的付费图像生成产品
使用 AWS S3 管理用户上传与生成图片的存储