一个纯前端的塔罗牌占卜网站,用户可以输入问题,选择牌阵,进行虚拟抽牌,并通过 OpenAI 兼容 API 获得 AI 塔罗大师的解读分析。
- 🃏 完整塔罗牌库:包含 78 张标准塔罗牌(22 张大阿尔卡那 + 56 张小阿尔卡那)
- 🎨 精美牌面图片:高质量塔罗牌图片,支持正逆位显示
- 🎯 多种牌阵:支持单张牌、三张牌(时间流/身心灵)、凯尔特十字等经典牌阵
- 🎲 真实抽牌体验:Fisher-Yates 洗牌算法,50% 概率正逆位
- ✨ 翻牌动画:流畅的 3D 翻牌效果,增强沉浸感
- 🤖 AI 智能解读:集成 OpenAI 兼容 API,提供专业的塔罗牌分析
- 📝 Markdown 渲染:支持格式化的 AI 分析结果显示
- 🔒 隐私安全:用户自定义配置仅保存在本地浏览器,默认配置通过服务器代理保护密钥
- 📱 响应式设计:支持桌面端和移动端访问
- 🌊 流式显示:实时显示 AI 分析结果,固定容器防止页面晃动
npm installnpm run dev访问 http://localhost:3000 查看网站。
首次使用需要配置 OpenAI 兼容的 API:
- 点击页面上的"前往设置"或访问
/settings页面 - 填写以下信息:
- API Base URL: 如
https://api.openai.com/v1 - API Key: 您的 API 密钥
- 模型名称: 如
gpt-4o-mini
- API Base URL: 如
- 点击"测试连接"验证配置
- 点击"保存设置"
TarotWhisper 支持通过环境变量提供一个可选的默认 LLM 配置:
服务器端配置(安全):
DEFAULT_LLM_ENABLED:设置为true、1、yes或on时启用默认 LLM;设为其它值或缺省时默认禁用。DEFAULT_LLM_BASE_URL:默认 LLM 的基础请求地址。DEFAULT_LLM_API_KEY:默认 LLM 的 API 密钥(仅在服务器端使用,不会暴露到客户端)。DEFAULT_LLM_MODEL:默认使用的模型名称(可选,默认gpt-4o-mini)。
客户端配置(用于显示):
NEXT_PUBLIC_DEFAULT_LLM_AVAILABLE:设置为true告知客户端默认 LLM 可用(不包含敏感信息)。NEXT_PUBLIC_DEFAULT_LLM_MODEL:默认模型名称的客户端副本(可选)。
当默认 LLM 被启用且配置完整时,未填写自定义端点的用户将自动通过服务器代理使用该配置;当默认 LLM 被禁用或未配置完整时,首页会提示用户必须完成自己的端点设置。
安全机制:
- 使用默认配置时,所有 AI 请求通过服务器端 API 路由(
/api/chat)代理,保护服务器密钥不暴露到客户端 - 使用自定义配置时,请求直接从浏览器发送到用户指定的端点,保护用户隐私
- 在主页输入您的问题
- 选择合适的牌阵
- 点击"开始占卜"
- 按提示逐张抽牌
- 查看 AI 塔罗大师的解读分析
- 用途:快速指引、日常建议
- 牌数:1 张
- 用途:了解问题的发展脉络
- 牌数:3 张
- 位置:过去 - 现在 - 未来
- 用途:全面分析问题的不同层面
- 牌数:3 张
- 位置:身(物质)- 心(思想)- 灵(精神)
- 用途:深入全面的问题分析
- 牌数:10 张
- 位置:现状、挑战、基础、过去影响、可能未来、近期未来、态度、外部影响、希望恐惧、最终结果
- 框架:Next.js 16 (App Router)
- 语言:TypeScript
- 样式:Tailwind CSS
- 数据存储:localStorage (API 配置) + sessionStorage (会话数据)
- AI 集成:OpenAI 兼容 API (支持流式响应)
tarot-whisper/
├── app/ # Next.js App Router 页面
│ ├── page.tsx # 主页 - 问题输入和牌阵选择
│ ├── settings/ # 设置页面 - API 配置
│ ├── draw/ # 抽牌页面 - 虚拟抽牌
│ └── analysis/ # 分析页面 - 结果展示和 AI 解读
├── data/ # 数据文件
│ ├── tarot-cards.json # 78 张塔罗牌完整数据
│ └── spreads.json # 牌阵配置数据
└── public/ # 静态资源
用户自定义配置:
- ✅ API 密钥仅保存在浏览器本地存储中
- ✅ 请求直接从浏览器发送到您指定的端点
- ✅ 不会经过本站服务器,完全保护您的隐私
默认配置:
- ✅ 服务器 API 密钥不会暴露到客户端
- ✅ 请求通过服务器端 API 路由代理
- ✅ 占卜问题和结果不会被永久存储
注意事项:
⚠️ 请勿在公共电脑上使用⚠️ 建议定期更换 API 密钥
编辑 data/spreads.json 文件,按照现有格式添加新的牌阵配置。
编辑 data/tarot-cards.json 文件,可以修改牌名、关键词等信息。
在 app/analysis/page.tsx 中的 systemPrompt 变量可以调整 AI 的角色设定和分析风格。
MIT License
欢迎提交 Issue 和 Pull Request!
免责声明:本项目仅供娱乐和自我探索使用,不应作为重大决策的唯一依据。对于医疗、法律、金融等专业问题,请咨询相关专业人士。