headshots-starter
headshots-starter 是由 Astria 推出的开源项目,旨在帮助开发者快速构建能够生成专业 AI 职业照的 Web 应用。只需几分钟,用户即可上传照片并获得高质量的头像作品,有效解决了传统摄影成本高、耗时久以及普通开发者难以从零搭建复杂 AI 应用的痛点。
该项目主要面向希望进军 AI 领域的开发者和技术创作者。它不仅仅是一个成品应用,更是一个功能完备的“启动模板”。开发者可以直接复用其代码架构,轻松定制并部署属于自己的 AI SaaS 产品。在技术实现上,headshots-starter 集成了多项现代开发栈:利用 Astria 进行高效的模型训练与推理,支持最新的 Flux 模型微调及灵活的提示词包(Packs)管理;前端基于 Next.js 和 Tailwind CSS 构建,界面美观且响应迅速;后端则依托 Supabase 处理数据库与用户认证,并可选配 Resend 实现邮件通知功能。此外,项目设计注重平台无关性,不仅限于 Vercel 部署,方便在各种托管环境中运行。对于想要验证创意或学习全栈 AI 应用开发的团队而言,这是一个极佳的起点。
使用场景
一家初创公司急需为官网团队页面制作统一风格的高清职业照,但团队成员分散各地且预算有限,无法组织线下集体拍摄。
没有 headshots-starter 时
- 成本高昂且协调困难:聘请专业摄影师费用昂贵,且难以协调所有成员在同一时间前往影棚,导致项目无限期推迟。
- 开发门槛极高:若想自建 AI 生成服务,需从零搭建复杂的模型训练管道、数据库及支付系统,耗时数周甚至数月。
- 风格难以统一:成员各自用手机自拍或找不同机构修图,导致最终照片的光影、背景和着装风格杂乱无章,损害品牌形象。
- 缺乏自动化流程:从收集照片到通知用户取图全靠人工邮件沟通,效率低下且容易出错。
使用 headshots-starter 后
- 极速部署与低成本:基于 Next.js 和 Vercel 的一键部署模板,开发者可在几分钟内上线专属应用,仅需支付极低的 API 调用成本。
- 全流程自动化:集成 Supabase 认证与 Resend 邮件通知,用户上传自拍后,系统自动训练模型并在生成完毕后发送邮件提醒,无需人工干预。
- 风格高度可控:利用 Astria 的 Packs API,可预设多种专业提示词包(如“商务蓝底”、“创意光影”),确保全员输出风格一致的高质量头像。
- 商业闭环就绪:内置 Stripe 支付接口和现代化的 Shadcn UI 组件,让团队能直接将其转化为付费 SaaS 产品或内部高效工具。
headshots-starter 将原本需要数周开发的复杂 AI 应用缩短为小时级的配置任务,让团队以最低成本快速获得专业级的品牌视觉资产。
运行环境要求
- 未说明 (基于 Next.js,通常支持 Linux
- macOS
- Windows)
不需要本地 GPU (AI 模型训练和推理通过 Astria API 在云端完成)
未说明 (标准 Node.js/Next.js 开发环境需求即可)

快速开始
👨💼 Headshot AI - 使用 AI 生成专业头像(由 Astria.ai 提供支持)
隆重推出 Headshot AI,这是一项来自 Astria 的开源项目,可在几分钟内生成专业的 AI 头像。
该项目旨在为开发者和创作者提供一个构建 AI 应用程序的良好起点。这是你的发射平台——克隆代码、修改它,并根据自己的需求进行定制,从而打造一款热门的 AI SaaS 应用。
即将到来的变更
即将合并的 PR 允许使用 Astria 的 packs API,这有助于避免在代码中硬编码提示词,并提供不同的提示词包,同时可以轻松切换到新的 Flux 模型微调。更多关于使用 packs 的优势,请参阅 Astria 的文档。
迁移到新的 packs API 时,请在 Vercel 环境中添加:
NEXT_PUBLIC_TUNE_TYPE=packs
PACK_QUERY_TYPE=both
这就是它的样子。
重要环境变量变更
注意: 为了保持代码库的一致性,环境变量 VERCEL_URL 已更名为 DEPLOYMENT_URL。如果您是从旧版本更新而来,请相应地更新您的环境变量。这一更改使应用程序更具平台无关性,并且在任何托管提供商上部署时都更加清晰,而不仅仅是 Vercel。
工作原理
实时演示 在这里。
该应用由以下技术驱动:
- 🚀 Astria 用于 AI 模型的训练与推理
- ▲ Next.js 用于应用和着陆页
- 🔋 Supabase 用于数据库与身份验证
- 📩 Resend(可选)用于在头像准备好时向用户发送电子邮件
- ⭐️ Shadcn 结合 Tailwind CSS 实现样式
- ▲ Vercel 用于部署
- 💳 Stripe 用于计费
本地运行
要创建您自己的 Headshot AI 应用程序,请按照以下步骤操作:
注意 模型训练仅适用于付费计划。您需要有效的 Astria API 密钥 才能训练模型。
1. Vercel 模板
要设置 Supabase/Vercel 和您的 GitHub 仓库,请点击 Vercel 部署按钮并按照步骤操作。
重要提示:在 Supabase 集成步骤中,请确保勾选“创建示例表”选项。此过程可能需要几分钟时间。
Vercel 部署将在您的 GitHub 账户上创建一个包含此模板的新仓库,并引导您完成新的 Supabase 项目创建。Supabase Vercel 部署集成会设置必要的 Supabase 环境变量,并运行 SQL 迁移以在您的账户上设置数据库模式。您可以在项目的表编辑器中查看已创建的表。
这将创建具有各自列和 RLS 策略的以下表:
- credits
- images
- models
- samples
2. 克隆您新创建的仓库:
git clone {{your-repo-name}}
3. 进入您新创建的仓库目录:
cd {{your-repo-name}}
4. 安装依赖:
对于 npm:
npm install
对于 yarn:
yarn
5. 魔术链接认证(Supabase)
在你的 Supabase 控制台中,选择新创建的项目,进入“认证” -> “电子邮件模板” -> “魔术链接”,并将以下模板粘贴进去:
<h2>魔术链接</h2>
<p>请点击此链接登录:</p>
<p><a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=email">登录</a></p>
然后,请确保在 Supabase 控制台的“认证” -> “URL 配置”中设置好你的站点 URL 和重定向 URL。
例如:
站点 URL:https://headshots-starter.vercel.app
重定向 URL:https://headshots-starter.vercel.app/**
6. 创建一个 Astria 账户
在你的 .env.local 文件中:
- 将
your_api_key填写为你的 Astria API 密钥。 - 将
your-webhook-secret填写为任意符合 URL 规则的字符串,例如shadf892yr398hq23h。 - 将
your-deployment-url填写为用于接收来自 Astria 的 Webhook 的 URL。这可以是你的 Vercel 部署 URL,或者本地的 Ngrok 隧道地址(例如 https://{your-hosted-url}/astria/train-webhook)。 - 将
your-blob-read-write-token填写为你的 Vercel Blob 令牌(步骤见下文)。
如果生产环境中的 Webhook 回调似乎没有生效,请确认回调 URL 不是需要身份验证的 Vercel 特定分支部署,因为在这种情况下,你将无法在日志中看到回调信息。
7. 配置公告栏(可选)
要启用并自定义网站顶部的公告栏,请在你的 .env.local 中配置以下环境变量:
# 公告栏配置
NEXT_PUBLIC_ANNOUNCEMENT_ENABLED=true # 设置为 false 可禁用公告栏
NEXT_PUBLIC_ANNOUNCEMENT_MESSAGE="此处填写你的公告消息" # 要显示的消息
8. 配置 Vercel Blob 以支持图片上传
在你的 Vercel 项目中,创建一个 Blob 存储:
- 在 Vercel 控制台中,选择“存储”选项卡,然后点击“连接数据库”按钮。
- 在“新建”选项卡中,选择“Blob”,然后点击“继续”按钮。
接着,在 .env 文件中进行配置:
- 在 Vercel 控制台中,选择“设置”选项卡,然后选择“环境变量”选项卡。
- 将你的
BLOB_READ_WRITE_TOKEN复制到.env文件中。
9. 创建一个 Resend 账户(可选)
- 如果你希望使用 Resend 向用户发送邮件通知其模型训练完成,请将
your-resend-api-key填写为你的 Resend API 密钥。
10. 配置 Stripe 以按积分计费(可选)
当前的设置是基于积分的计费系统。1 积分 = 1 次模型训练。
要启用 Stripe 计费,你需要在 .env.local 文件中填写以下字段:
- STRIPE_SECRET_KEY=你的 Stripe 秘密密钥
- STRIPE_WEBHOOK_SECRET=你的 Stripe Webhook 密钥
- STRIPE_PRICE_ID_ONE_CREDIT=你的 Stripe 单次积分价格 ID
- STRIPE_PRICE_ID_THREE_CREDITS=你的 Stripe 三次积分价格 ID
- STRIPE_PRICE_ID_FIVE_CREDITS=你的 Stripe 五次积分价格 ID
- NEXT_PUBLIC_STRIPE_IS_ENABLED=false # 设置为 true 以启用 Stripe 支付
要使 Stripe 正常工作,你需要完成以下步骤:
- 从 Stripe 控制台获取你的 Stripe API 秘密密钥。
- 创建一个 Stripe Webhook,使其指向你的托管 URL。Webhook 应监听
checkout.session.completed事件,并指向your-hosted-url/stripe/subscription-webhook。 - 为每个你想要提供的积分套餐创建一个 Stripe 价格。
- 创建一个 Stripe 定价表,并将脚本 @/components/stripe/StripeTable.tsx 替换为你自己的值。代码应如下所示:
<stripe-pricing-table
pricing-table-id="你的 Stripe 定价表 ID"
publishable-key="你的 Stripe 公开密钥"
client-reference-id={user.id}
customer-email={user.email}
></stripe-pricing-table>
以下是使 Stripe 与我们的示例正常工作的所需产品,请查看 这里 的图片说明。
要创建这些产品,请登录 Stripe 控制台,搜索“产品目录”,然后点击屏幕右上角的“添加产品”按钮。你需要创建 3 个产品,分别对应每种积分套餐,如之前图片所示。我们将其设置为一次性支付,但你可以根据需要更改设置并调整价格。创建完产品后,务必更新 .env.local 文件中的变量 [your-stripe-price-id-one-credit、your-stripe-price-id-three-credit、your-stripe-price-id-five-credit] 为各自产品的价格 ID,每个价格 ID 都可以在产品页面底部找到。
11. 启动开发服务器:
对于 npm:
npm run dev
对于 yarn:
yarn dev
12. 在浏览器中访问 http://localhost:3000 查看运行中的应用。
一键部署
使用 Vercel 的默认部署:
如何获得优质结果
用于教会模型你面部外观的图像样本至关重要。输入垃圾,输出也是垃圾。
- 强制使用人脸特写,并考虑裁剪以使脸部居中。
- 确保每张图片中只包含一个人。
- 避免在样本中出现太阳镜、帽子等配饰。
- 确保面部清晰可见。(对于人脸检测,可以考虑使用诸如 Cloudinary API 之类的工具)。
如果你的结果出现多个人脸、重复主体、多余肢体等扭曲情况,请务必遵循以下步骤,以尽量减少此类问题的发生:
- 确保上传的所有样本都具有相同的 1:1 宽高比,例如 512x512、1024x1024 等。
- 避免在上传的样本中包含多人。
- 在生成时将“double torso, totem pole”添加到负面提示中。
- 确保生成时的尺寸也保持 1:1 的宽高比,与样本一致。
如需了解更多提升质量的方法,请阅读这篇博客文章:点击此处。
感谢所有贡献者:
其他应用场景
AI 头像可以轻松适配支持 Astria 的许多其他用例,包括:
- 宠物肖像
- 产品拍摄
- 食品摄影
- 图标
- 风格一致的素材
以及更多!
贡献方式
我们欢迎合作,并感谢您对 AI 头像项目的贡献。如果您有任何改进建议或重大变更想法,欢迎随时提交问题!
若想参与代码库的贡献,请务必创建新分支,并向 dev 分支发起拉取请求。
资源与支持
- 帮助邮箱:support@astria.ai
许可证
AI 头像项目采用 MIT 许可证 开源发布。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。








