{"id":46055668,"url":"https://github.com/doudou-start/go-sora2api","last_synced_at":"2026-03-02T11:00:35.518Z","repository":{"id":340328212,"uuid":"1165515380","full_name":"DouDOU-start/go-sora2api","owner":"DouDOU-start","description":"Sora2api 的 Go 实现，内置 Web 管理后台与多功能 API 服务","archived":false,"fork":false,"pushed_at":"2026-03-01T08:58:47.000Z","size":317,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-01T11:04:49.879Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DouDOU-start.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-24T08:48:46.000Z","updated_at":"2026-03-01T08:58:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DouDOU-start/go-sora2api","commit_stats":null,"previous_names":["doudou-start/go-sora2api"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/DouDOU-start/go-sora2api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DouDOU-start%2Fgo-sora2api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DouDOU-start%2Fgo-sora2api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DouDOU-start%2Fgo-sora2api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DouDOU-start%2Fgo-sora2api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DouDOU-start","download_url":"https://codeload.github.com/DouDOU-start/go-sora2api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DouDOU-start%2Fgo-sora2api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29999216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T09:59:02.300Z","status":"ssl_error","status_checked_at":"2026-03-02T09:59:02.001Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-01T10:01:26.393Z","updated_at":"2026-03-02T11:00:35.491Z","avatar_url":"https://github.com/DouDOU-start.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sora2API\n\nOpenAI Sora 视频/图片生成 API 代理平台，提供 Go SDK、Web 管理后台和兼容 API 接口。\n\n## 功能概览\n\n**API 代理**\n- 视频生成（文生视频 / 图生视频 / Remix / 分镜视频）\n- 图片生成（文生图 / 图生图）\n- 角色一致性（创建 / 管理角色）\n- 提示词增强、视频发布、去水印下载\n- 10 种视频风格（anime、retro、comic 等）\n- API Key 鉴权，多账号分组轮询\n\n**Web 管理后台**\n- 仪表板（账号/任务/角色状态统计）\n- 账号管理（分组、Token 刷新、配额同步）\n- API Key 管理\n- 任务列表与详情查看\n- 角色管理\n- 系统设置（代理、同步间隔等）\n- 内置 API 文档页\n\n**Go SDK**\n- 完整的 Sora API 封装\n- TLS 指纹模拟绕过 Cloudflare\n- 代理支持、`context.Context` 超时控制、进度回调\n\n## 快速部署\n\n### 一键安装（推荐）\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/DouDOU-start/go-sora2api/master/deploy/install.sh | sudo bash\n```\n\n安装过程中会交互式配置：\n- 服务监听地址和端口（默认 `0.0.0.0:8686`）\n- PostgreSQL 数据库连接\n- 管理员账号密码\n\n安装完成后通过 `sora2api` 命令管理服务：\n\n```bash\nsora2api status          # 查看服务状态\nsora2api start           # 启动服务\nsora2api stop            # 停止服务\nsora2api restart         # 重启服务\nsora2api logs            # 查看最近日志\nsora2api logs -f         # 实时跟踪日志\nsora2api config          # 编辑配置文件\nsora2api version         # 查看当前版本\nsora2api upgrade         # 升级到最新版本\nsora2api upgrade -v 1.3  # 升级到指定版本\nsora2api list-versions   # 查看可用版本\nsora2api uninstall       # 卸载\n```\n\n### 手动编译\n\n```bash\n# 安装依赖\nmake install\n\n# 构建（含前端）\nmake build\n\n# 启动\n./bin/sora2api-server\n```\n\n### 开发模式\n\n```bash\nmake dev  # 同时启动后端 (8686) + 前端 (5173)\n```\n\n## 配置\n\n配置文件 `/etc/sora2api/config.yaml`（一键安装）或 `server/config.yaml`（手动编译）：\n\n```yaml\nserver:\n  host: \"0.0.0.0\"\n  port: 8686\n  admin_user: \"admin\"\n  admin_password: \"admin123\"\n  # jwt_secret: \"\"  # 留空则自动生成\n\ndatabase:\n  url: \"postgres://postgres:postgres@localhost:5432/sora2api?sslmode=disable\"\n  log_level: \"warn\"\n  auto_migrate: true\n```\n\n支持环境变量覆盖：\n- `CONFIG_PATH` — 配置文件路径\n- `DATABASE_URL` — 数据库连接串\n\n## Go SDK\n\n### 安装\n\n```bash\ngo get github.com/DouDOU-start/go-sora2api/sora\n```\n\n### 示例\n\n```go\nctx := context.Background()\nc, _ := sora.New(\"\") // 可选代理\n\n// 文生视频\ntoken, _ := c.GenerateSentinelToken(ctx, accessToken)\ntaskID, _ := c.CreateVideoTask(ctx, accessToken, token, \"a cat running\", \"landscape\", 300, \"sy_8\", \"small\")\n_ = c.PollVideoTask(ctx, accessToken, taskID, 3*time.Second, 600*time.Second, nil)\nurl, _ := c.GetDownloadURL(ctx, accessToken, taskID)\n\n// 文生图\ntaskID, _ = c.CreateImageTask(ctx, accessToken, token, \"a cute cat\", 360, 360)\nimageURL, _ := c.PollImageTask(ctx, accessToken, taskID, 3*time.Second, 600*time.Second, nil)\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e更多 SDK 用法\u003c/summary\u003e\n\n#### 图生视频\n\n```go\nmediaID, _ := c.UploadImage(ctx, accessToken, imageData, \"input.png\")\ntoken, _ := c.GenerateSentinelToken(ctx, accessToken)\ntaskID, _ := c.CreateVideoTaskWithImage(ctx, accessToken, token, \"animate this\", \"landscape\", 300, \"sy_8\", \"small\", mediaID)\n```\n\n#### 带风格的视频\n\n```go\ntaskID, _ := c.CreateVideoTaskWithOptions(ctx, accessToken, token, \"a cat\", \"landscape\", 300, \"sy_8\", \"small\", \"\", \"anime\")\n\n// 或从提示词中提取 {style}\nprompt, styleID := sora.ExtractStyle(\"a cat {anime}\")\n```\n\n可选风格：`festive`, `kakalaka`, `news`, `selfie`, `handheld`, `golden`, `anime`, `retro`, `nostalgic`, `comic`\n\n#### Remix 视频\n\n```go\nremixID := sora.ExtractRemixID(\"https://sora.chatgpt.com/p/s_xxx\")\ntaskID, _ := c.RemixVideo(ctx, accessToken, token, remixID, \"make it snowy\", \"landscape\", 300, \"\")\n```\n\n#### 分镜视频\n\n```go\nprompt := \"[5.0s]一只猫在草地上奔跑 [5.0s]猫跳上了树\"\ntaskID, _ := c.CreateStoryboardTask(ctx, accessToken, token, prompt, \"landscape\", 450, \"\", \"\")\n```\n\n#### 角色管理\n\n```go\ncameoID, _ := c.UploadCharacterVideo(ctx, accessToken, videoData)\nstatus, _ := c.PollCameoStatus(ctx, accessToken, cameoID, 3*time.Second, 300*time.Second, nil)\nimageData, _ := c.DownloadCharacterImage(ctx, status.ProfileAssetURL)\nassetPointer, _ := c.UploadCharacterImage(ctx, accessToken, imageData)\ncharacterID, _ := c.FinalizeCharacter(ctx, accessToken, cameoID, \"name\", \"显示名\", assetPointer)\n_ = c.SetCharacterPublic(ctx, accessToken, cameoID)\n```\n\n#### 去水印下载\n\n```go\nsoraToken, newRefreshToken, _ := c.RefreshAccessToken(ctx, refreshToken, \"\")\nurl, _ := c.GetWatermarkFreeURL(ctx, soraToken, \"https://sora.chatgpt.com/p/s_xxx\")\n```\n\n#### 提示词增强\n\n```go\nenhanced, _ := c.EnhancePrompt(ctx, accessToken, \"a cat\", \"medium\", 10)\n```\n\n#### 代理支持\n\n```go\nc, _ := sora.New(\"http://user:pass@ip:port\")\nc, _ := sora.New(\"socks5://user:pass@ip:port\")\nproxy := sora.ParseProxy(\"ip:port:user:pass\")\n```\n\n\u003c/details\u003e\n\n### SDK 方法速查\n\n| 方法 | 说明 |\n|------|------|\n| `New(proxyURL)` | 创建客户端 |\n| `GenerateSentinelToken` | 获取 sentinel token（含 PoW） |\n| `UploadImage` | 上传图片 |\n| `CreateImageTask` / `CreateImageTaskWithImage` | 文生图 / 图生图 |\n| `CreateVideoTask` / `CreateVideoTaskWithImage` | 文生视频 / 图生视频 |\n| `CreateVideoTaskWithOptions` | 完整视频创建（含风格） |\n| `RemixVideo` | Remix 视频 |\n| `CreateStoryboardTask` | 分镜视频 |\n| `EnhancePrompt` | 提示词增强 |\n| `PollImageTask` / `PollVideoTask` | 轮询任务 |\n| `GetDownloadURL` | 获取下载链接 |\n| `RefreshAccessToken` | 刷新 Token |\n| `GetWatermarkFreeURL` | 去水印链接 |\n| `GetCreditBalance` / `GetSubscriptionInfo` | 配额/订阅查询 |\n| `UploadCharacterVideo` / `FinalizeCharacter` | 角色创建 |\n| `PublishVideo` / `DeletePost` | 发布/删除帖子 |\n\n### 视频参数\n\n| 参数 | 可选值 |\n|------|--------|\n| orientation | `landscape` / `portrait` |\n| nFrames | `300`(10s) / `450`(15s) / `750`(25s) |\n| model | `sy_8`(标准) / `sy_ore`(Pro) |\n| size | `small`(标准) / `large`(高清, 仅Pro) |\n\n### 图片参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| width | 图片宽度（像素） | 1792 |\n| height | 图片高度（像素） | 1024 |\n| input_reference | 参考图片，URL 或 base64 data URI（图生图时传入） | — |\n\n## CLI 工具\n\n基于 [Bubble Tea](https://github.com/charmbracelet/bubbletea) 的交互式 TUI 工具：\n\n```bash\ngo install github.com/DouDOU-start/go-sora2api/cmd/sora2api@latest\nsora2api\n```\n\n## 项目结构\n\n```\ngo-sora2api/\n├── sora/                    # Go SDK\n├── server/                  # Web 后端（Gin）\n│   ├── handler/             #   API 路由处理\n│   ├── service/             #   业务逻辑（调度/账号管理/任务）\n│   ├── model/               #   数据模型\n│   ├── config/              #   配置加载\n│   └── dist/                #   前端打包产物（编译时嵌入）\n├── web/                     # React 前端\n│   └── src/\n│       ├── pages/           #   页面组件\n│       ├── api/             #   API 调用\n│       └── components/      #   通用组件\n├── cmd/sora2api/            # CLI 工具\n├── deploy/                  # 部署脚本\n│   ├── install.sh           #   一键安装/管理脚本\n│   ├── sora2api.service     #   Systemd 服务文件\n│   └── config.example.yaml  #   配置模板\n└── .github/workflows/       # CI/CD\n    └── release.yml          #   自动构建发布\n```\n\n## 免责声明\n\n本项目仅供学习和研究使用，不得用于任何商业或非法用途。使用者应自行承担使用本项目所产生的一切风险和责任，项目作者不对因使用本项目而导致的任何直接或间接损失承担责任。\n\n## 许可证\n\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoudou-start%2Fgo-sora2api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoudou-start%2Fgo-sora2api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoudou-start%2Fgo-sora2api/lists"}