Files
digital-me-history/digital-me-backend/README.md
T
admin 0593ff7e62
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
数字我 Digital Me:全量入库(大文件走 Git LFS)
2026-10-10 16:24:43 +08:00

41 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数字我 / Digital Me — Backend
「有脸、有声音、有知识库的另一个你」的 API。个人 AI 数字分身平台后端。
## Quick start
```bash
cp .env.example .env # 填入 DASHSCOPE_API_KEY;本地 MongoDB 即可
npm install
npm run dev # → http://localhost:3701 (GET /health)
```
需要本机或远程 MongoDB(默认 `mongodb://localhost:27017`,DB `digital_me`)。
## MVP scope(第一阶段:个人 IP 分身)
复刻「你自己」→ 一键生成「你」讲某主题的口播视频 + 可嵌入的「和我分身聊天」。
| 能力 | 接口 |
|---|---|
| 注册 / 登录 | `POST /api/auth/register` · `POST /api/auth/login` · `GET /api/auth/me` |
| 创建你的分身 | `POST /api/twins` `{ displayName, persona?, characterPrompt?, lang? }` |
| 上传照片建形象 | `POST /api/twins/:id/avatar` (multipart `photo`) |
| 录音克隆声音 | `POST /api/twins/:id/voice` (multipart `sample`) |
| 喂知识(转 RAG) | `POST /api/twins/:id/knowledge` (`file` 或 `{ text, title }`) |
| 文字/语音对话 | `POST /api/twins/:id/ask` `{ question, speak?, lang? }` |
| 单独朗读 | `POST /api/twins/:id/speak` `{ text }` |
| **一键口播视频** | `POST /api/twins/:id/talk-video` → `{ jobId }`,轮询 `GET …/talk-video/:jobId` |
| 发布为可分享分身 | `PUT /api/twins/:id/publish` `{ isPublic, slug?, tagline? }` |
| **公开嵌入对话** | `GET /api/embed/:slug` · `POST /api/embed/:slug/ask`(无需登录,不入历史) |
所有 `/api/twins/*` 需 `Authorization: Bearer <token>`,并按 `ownerId` 隔离。
## 两个运行约束
1. AI 功能需 `DASHSCOPE_API_KEY`。
2. **捏脸 / 口播视频需 `PUBLIC_URL` 公网可达**——DashScope 按 URL 回拉素材,
`localhost` 会失败(对话/声音仍可用)。本地开发用内网穿透(如 cloudflared)。
详见 [../PLAN.md](../PLAN.md)(定位、差异化、路线图)与 [CLAUDE.md](./CLAUDE.md)。