ChrisAdamsdevelopment/SpectraCleanseAI
GitHub: ChrisAdamsdevelopment/SpectraCleanseAI
这是一款帮助 AI 内容创作者从音视频文件中移除 AI 来源标记并注入 SEO 优化元数据、以规避平台算法限流的内容创作工具。
Stars: 0 | Forks: 0
# SpectraCleanse AI



**SpectraCleanse AI 可剥离 AI 来源标记并注入 SEO 元数据,以克服算法压制。**
上传您的音频或视频文件,选择一个平台预设,SpectraCleanse AI 将彻底清除每一个表明 AI 生成来源的嵌入标签,然后注入由 Gemini 驱动的、干净且针对平台优化的元数据,以最大化您在 YouTube、Spotify、Apple Music、TikTok 等平台上的传播范围。
## 免费试用
→ **[spectracleanse.com](https://spectracleanse.com)**
## 工作原理
1. **上传** — Quick Cleanse 支持 MP3(在浏览器端处理)。Full Server Cleanse 支持 MP4 和 M4A(在服务器端处理)。WAV 和 FLAC 已在计划中,但目前暂不支持。
2. **分析** — 取证引擎会读取所有嵌入的标签,并识别来源标记。
3. **清除** — 进行一次彻底擦除,移除所有可能触发算法检测的 XMP、IPTC 和 ID3 字段。
4. **注入** — Gemini 会根据您选择的平台,生成经过 SEO 优化的标题、描述和标签集。
5. **下载** — 接收干净的文件,并附带完整的取证报告,准确显示被移除了哪些内容。
## 开源
源代码可在 [github.com/ChrisAdamsdevelopment/SpectraCleanseAI](https://github.com/ChrisAdamsdevelopment/SpectraCleanseAI) 获取,并在 [MIT License](LICENSE) 下发布。您可以自由地进行自托管、派生或贡献。
## 本地开发说明
- 当 `NODE_ENV` 不为 `production` 时,后端默认为开发者友好模式。
- 如果本地缺少 Stripe 环境变量,`/api/create-checkout-session` 可以返回一个模拟的 checkout 重定向(设置 `ENABLE_MOCK_CHECKOUT=true`)。
- 在生产环境中,Stripe 变量仍然是必需的,如果缺少它们,服务器将快速失败。
## 产品方向文档
- [产品定义:以歌曲为中心的艺术家内容工作室](docs/PRODUCT_DEFINITION_SONG_CONTENT_STUDIO.md)
- [架构试探:以歌曲为中心的艺术家内容工作室](docs/ARCHITECTURE_SPIKE_SONG_CONTENT_STUDIO.md)
## QA / 部署测试
有关逐步的手动验证流程(本地、API 冒烟测试、认证、计费、上传、清除、Docker 和生产就绪情况),请参阅 [`docs/manual-qa-checklist.md`](docs/manual-qa-checklist.md)。
- 浏览器元数据分析使用维护的 `music-metadata`,并在解析失败、超时或针对超大文件跳过时提供优雅降级(`parseError`)。
- Quick Cleanse 元数据写入仍保持在本地/浏览器端进行(通过 `browser-id3-writer` 写入 MP3)。
- Full Server Cleanse 通过 `/api/process` 运行;MP3 请求将被拒绝并返回 HTTP `422`。Full Server Cleanse 目前仅支持 MP4/M4A;WAV/FLAC 已在计划中,但目前暂不支持。
## 联系方式
如有问题、合作意向或企业咨询,请联系:[hello@spectracleanse.com](mailto:hello@spectracleanse.com)
## 原生 Node 部署运行时
- 原生 Render/Node 部署应使用 **Node 20.20.2**(推荐)或其他的 **Node 20.x** 版本。
- 如果 Render 默认将您的服务设置为更新的 Node 版本,请在服务环境变量中设置 `NODE_VERSION=20.20.2`。
- 在验证阶段目前不支持原生安装 Node 24,因为 `better-sqlite3` 在 Node 24 下原生编译失败。
- Docker 部署已通过仓库的 Dockerfile 固定了 Node 20 版本。
## Docker 生产环境部署
本仓库包含一个多阶段 `Dockerfile`,它会构建前端并将 `dist/` 打包到最终的运行时镜像中,以便 `server.js` 能够在生产环境中提供 SPA 服务。
### 构建镜像
```
docker build -t spectracleanseai:latest .
```
### 运行容器
```
docker run --rm -p 3001:3001 \
-e NODE_ENV=production \
-e JWT_SECRET=your_jwt_secret \
-e STRIPE_SECRET_KEY=sk_live_xxx \
-e STRIPE_WEBHOOK_SECRET=whsec_xxx \
-e STRIPE_CREATOR_PRICE_ID=price_xxx \
-e STRIPE_STUDIO_PRICE_ID=price_xxx \
-e GEMINI_API_KEY=your_gemini_api_key \
-e FRONTEND_URL=https://your-frontend-domain.example \
-e DB_PATH=/data/spectra.db \
-v spectracleanse_data:/data \
spectracleanseai:latest
```
### 必需的生产环境变量
- `NODE_ENV=production`
- `JWT_SECRET`
- `STRIPE_SECRET_KEY`
- `STRIPE_WEBHOOK_SECRET`
- `STRIPE_CREATOR_PRICE_ID`
- `STRIPE_STUDIO_PRICE_ID`
- `GEMINI_API_KEY`
- `FRONTEND_URL`
- `DB_PATH`
- `REDIS_URL`(仅当您的部署仍在外部使用 Redis 时)
### Stripe 与本地模拟 checkout
- 在未设置 Stripe 变量时,本地开发可以使用 `ENABLE_MOCK_CHECKOUT=true`。
- 生产环境必须使用真实的 Stripe 配置;请勿在生产环境中依赖模拟 checkout。
切勿将真实的密钥提交到源代码版本控制中。
## 健康与可观测性
- `GET /api/health`(公开,无需认证)返回 `{ status, uptime, version, time }`。适用于正常运行时间监视器和 Render 健康检查。
- `GET /sitemap.xml` 和 `GET /robots.txt` 直接由后端提供服务,因此它们在没有 SPA 静态构建的情况下(例如在开发期间)也能工作,并与规范域名 `https://spectracleanse.com` 保持同步。
## 速率限制
- 所有 `/api/*` 路由(`/api/health` 和 Stripe webhook 除外)均受限于每个 IP 每分钟 60 次请求的限制器。
- `/api/login`、`/api/register` 和 `/api/auth/*` 路由在此之上还受到更严格的 10 次/分钟限制,以增加暴力破解的难度。
- 被限流的请求将返回 `429` 及 `{ "error": "Too many requests" }`。
## 批处理 API
- `POST /api/process-batch`(需认证):为付费计划(Creator/Studio)按顺序处理最多 20 个上传的文件。免费计划返回 `403`。
- `GET /api/download/:token`(需认证):用于批处理输出的一次性安全下载。
- 服务器端 MP3 清除仍然不受支持(单次处理返回 `422`,批处理中出现单文件错误);对于 MP3,请使用 Quick Cleanse 浏览器端处理。Full Server Cleanse 目前仅支持 MP4/M4A;WAV/FLAC 已在计划中,但目前暂不支持。
- 批处理请求强制执行 2GB 的上传后软性限制;生产环境部署仍应自行强制执行代理/正文大小/磁盘限制。
标签:AI内容创作, GNU通用公共许可证, MITM代理, Node.js, SEO优化, 元数据修改, 自动化攻击, 请求拦截, 音视频处理