--- title: JiMeng Intl API emoji: 🎨 colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 pinned: false license: mit --- # JiMeng Intl API on Hugging Face 这个目录用于把 `jimeng-free-api-intl` 以**源码构建**方式部署到 Hugging Face Docker Spaces。 当前国际版已经包含大量 Dreamina 专属改动,因此**不再适合继续拉取官方现成镜像**,而是应该由 HF 直接基于你的国际版源码构建镜像。 ## 方案说明 - 构建方式:HF 基于当前目录源码构建镜像 - HF Spaces 对外端口:`7860` - 项目实际读取端口环境变量:`SERVER_PORT` - 兼容方式:通过 `CMD` 把 HF 注入的 `PORT` 转成项目使用的 `SERVER_PORT` - 国际版上游:`dreamina.capcut.com` / `mweb-api-sg.capcut.com` / `commerce-api-sg.capcut.com` - 调用方式:OpenAI 兼容,调用端只需要 `BASE_URL + API_KEY` HF Space 实际会收到项目根目录源码,然后再用当前目录提供的 `Dockerfile`、`.dockerignore` 和 `README.md` 覆盖 Space 根目录对应文件,最后在 Space 中执行源码构建。 ## 为什么这样能跑 项目默认配置端口是 `8000`,但代码里也支持通过环境变量覆盖: - `src/lib/environment.ts`:读取 `SERVER_PORT` - `configs/dev/service.yml`:默认端口是 `8000` - `huggingface-HF-JiMeng/Dockerfile`:会在 HF 上直接构建国际版源码并安装 Playwright Chromium 所以 HF Spaces 只需要: 1. 使用 Docker SDK 2. 构建本目录中的源码镜像 3. 在启动时把 `PORT` 映射为 `SERVER_PORT` ## 部署步骤 ### 方案一:GitHub 自动推送到 HF Space 适合你当前的目标:代码先推到 GitHub,再由 GitHub Actions 同步项目根目录源码到 Hugging Face Space,并用本目录中的 Space 专用文件覆盖根目录文件,最后由 HF 基于这些文件构建。 1. 在 Hugging Face 新建一个 `Docker` 类型的 Space。 2. 在 GitHub 仓库中添加以下 Secrets: - `HF_TOKEN`:你的 Hugging Face Access Token,至少需要对目标 Space 有写权限 - `HF_SPACE_REPO`:你的 Space 仓库名,格式为 `username/space_name` 3. 将本仓库推送到你的 GitHub 仓库:`https://github.com/Viciy2023/JiMengIntl.git` 4. 推送 `main` 分支后,GitHub Actions 会自动把项目源码同步到 HF Space,并用 `huggingface-HF-JiMeng` 目录中的 Space 专用文件覆盖根目录对应文件。 5. HF Space 收到更新后会自动开始构建。 6. 构建完成后访问:`https://<你的-space>.hf.space/ping` 对应工作流文件: ```text .github/workflows/deploy-hf-space.yml ``` ### 方案二:手动上传到 HF Space 1. 在 Hugging Face 新建一个 `Docker` 类型的 Space。 2. 把本目录中的文件上传到 Space 根目录。 3. 等待构建完成。 4. 构建完成后访问:`https://<你的-space>.hf.space/ping` ## 建议的 Space Secrets / Variables 国际版建议通过完整 Cookie Header 注入账号,并使用固定 API Key 对外提供服务。 ### HF Secrets(敏感信息) - `DREAMINA_API_KEY` 中文注释:对外提供给调用方的统一 API Key,例如 `sk-51205420185fadfaf` - `DREAMINA_COOKIE_HEADER` 中文注释:单账号完整国际版 Cookie Header - `DREAMINA_COOKIE_HEADERS` 中文注释:多账号完整国际版 Cookie Header 数组,推荐使用这个字段做随机轮询 ### HF Variables(普通运行配置) - `UPSTREAM_PROVIDER=dreamina-intl` 中文注释:强制使用国际版 Dreamina 上游 - `SERVER_HOST=0.0.0.0` 中文注释:让容器监听外部地址 - `TZ=Asia/Shanghai` 中文注释:服务日志时区 - `DREAMINA_PAGE_BASE_URL=https://dreamina.capcut.com` 中文注释:Dreamina 页面域名 - `DREAMINA_MWEB_API_BASE_URL=https://mweb-api-sg.capcut.com` 中文注释:Dreamina 图片/视频生成与历史查询域名 - `DREAMINA_COMMERCE_API_BASE_URL=https://commerce-api-sg.capcut.com` 中文注释:Dreamina 积分/权益域名 - `DREAMINA_REGION=HK` 中文注释:当前抓包验证可用的区域代码 - `DREAMINA_LAN=en` 中文注释:接口头中的语言标识 - `DREAMINA_LOC=HK` 中文注释:接口头中的位置标识 - `DREAMINA_ACCEPT_LANGUAGE=en-US` 中文注释:接口头中的 Accept-Language 注意:不要把真实 Cookie Header 或 sessionid 直接写进公开仓库文件。 ## GitHub Secrets 说明 GitHub Actions 自动部署需要这两个 Secrets: - `HF_TOKEN` - `HF_SPACE_REPO` 示例: ```text HF_SPACE_REPO=DanielleNguyen/JiMengIntl ``` `HF_TOKEN` 建议在 Hugging Face 的 Settings -> Access Tokens 中创建,并授予可写 Space 的权限。 ## 调用方式 部署成功后,调用方只需要: ```text BASE_URL=https://.hf.space/v1 API_KEY=sk-51205420185fadfaf ``` 服务端会在每次请求时随机选择一条完整国际版 Cookie Header 使用。 ## 验证接口 健康检查: ```bash curl https://<你的-space>.hf.space/ping ``` 国际版文生图示例: ```bash curl -X POST "https://<你的-space>.hf.space/v1/images/generations" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-51205420185fadfaf" \ -d '{ "model": "jimeng-4.6", "prompt": "a beautiful sunset by a lake house", "ratio": "16:9", "resolution": "2k" }' ``` 国际版文生视频示例: ```bash curl -X POST "https://.hf.space/v1/videos/generations" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-51205420185fadfaf" \ -d '{ "model": "dreamina_ic_generate_video_model_vgfm_3.0_fast", "prompt": "a cat dancing", "ratio": "16:9", "resolution": "720p", "duration": 5 }' ``` ## 已知风险 - 上游镜像标签使用 `latest`,后续上游更新可能改变行为。 - 项目包含 Playwright/Chromium,HF Space 构建时间会比纯 Node 服务更长。 - 国际版视频/Seedance 仍依赖浏览器代理和前端签名链,HF 环境稳定性取决于运行资源和上游反爬策略。 - 源码构建时间会比拉现成镜像更长,但这是国际版保持最新逻辑的必要代价。 ## 回滚方式 如果国际版新改动有问题,最稳妥的回滚方式是: 1. 回滚 GitHub 仓库 `JiMengIntl` 中的源码提交 2. 重新 push 到 `main` 3. GitHub Actions 会再次同步到 HF Space 并触发重建