Trending-skills autoteam-chatgpt-rotation
AutoTeam ChatGPT Team账号自动轮转管理工具,支持Codex额度监控、自动换号、CPA认证同步
install
source · Clone the upstream repo
git clone https://github.com/Aradotso/trending-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Aradotso/trending-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/autoteam-chatgpt-rotation" ~/.claude/skills/aradotso-trending-skills-autoteam-chatgpt-rotation && rm -rf "$T"
manifest:
skills/autoteam-chatgpt-rotation/SKILL.mdsource content
AutoTeam — ChatGPT Team账号自动轮转管理
Skill by ara.so — Daily 2026 Skills collection.
AutoTeam 是一个自动化工具,用于管理 ChatGPT Team 账号的轮转:自动注册账号、获取 Codex OAuth 认证、监控额度余量、在额度低时智能切换账号,并将认证文件同步到 CLIProxyAPI。
安装
前置条件
- Python 3.10+
- uv 包管理器
- Chromium(由 Playwright 管理)
一键安装
git clone https://github.com/cnitlrt/AutoTeam.git cd AutoTeam bash setup.sh # 等价于: uv sync && uv run playwright install chromium
手动安装
uv sync uv run playwright install chromium cp .env.example data/.env # 编辑 data/.env 填入必要配置
配置
环境变量(data/.env
)
data/.env# 临时邮箱服务(CloudMail) CLOUDMAIL_API_KEY=$CLOUDMAIL_API_KEY CLOUDMAIL_DOMAIN=example.com # CPA(CLIProxyAPI)连接 CPA_BASE_URL=http://your-cpa-host:port CPA_API_KEY=$CPA_API_KEY # AutoTeam API 鉴权 AUTOTEAM_API_KEY=$AUTOTEAM_API_KEY # ChatGPT Team 管理员账号 TEAM_ADMIN_EMAIL=admin@example.com TEAM_ADMIN_PASSWORD=$TEAM_ADMIN_PASSWORD # 额度阈值(低于此值触发轮转) QUOTA_THRESHOLD=100 # Team 目标成员数 TEAM_SIZE=5 # Web 面板端口 PORT=8787
首次启动配置向导
uv run autoteam api # 首次启动自动引导配置 CloudMail、CPA、API Key 并验证连通性
CLI 命令
# 启动 Web 面板 + HTTP API(推荐,默认端口 8787) uv run autoteam api # 智能轮转,补满到 N 个账号(默认 5) uv run autoteam rotate uv run autoteam rotate 8 # 查看所有账号状态和额度 uv run autoteam status # 检查所有账号额度 uv run autoteam check # 手动添加一个新账号 uv run autoteam add # 补满成员到目标数量 uv run autoteam fill uv run autoteam fill 10 # 清理多余成员 uv run autoteam cleanup uv run autoteam cleanup 5 # 同步认证文件到 CPA uv run autoteam sync # 管理员登录(刷新 admin session) uv run autoteam admin-login
Docker 部署
快速启动
git clone https://github.com/cnitlrt/AutoTeam.git && cd AutoTeam mkdir -p data && cp .env.example data/.env # 编辑 data/.env docker compose up -d
docker-compose.yml
结构
docker-compose.ymlservices: autoteam: build: . ports: - "8787:8787" volumes: - ./data:/app/data # 持久化配置、数据库、认证文件 environment: - TZ=Asia/Shanghai restart: unless-stopped
Docker 常用操作
# 查看实时日志 docker compose logs -f autoteam # 重启服务 docker compose restart autoteam # 进入容器执行 CLI docker compose exec autoteam uv run autoteam status # 停止服务 docker compose down
HTTP API
所有 API 请求需携带鉴权头:
Authorization: Bearer $AUTOTEAM_API_KEY
核心端点
# 获取账号状态列表 GET /api/accounts # 触发轮转任务 POST /api/rotate Content-Type: application/json {"target": 5} # 检查额度 POST /api/check # 补满成员 POST /api/fill {"target": 5} # 清理多余成员 POST /api/cleanup {"keep": 5} # 同步认证到 CPA POST /api/sync # 获取任务历史 GET /api/tasks # 获取实时日志 GET /api/logs # 获取/更新巡检配置 GET /api/patrol/config PUT /api/patrol/config Content-Type: application/json {"enabled": true, "interval_minutes": 30, "threshold": 100}
Python 调用示例
import httpx import os BASE_URL = "http://localhost:8787" HEADERS = {"Authorization": f"Bearer {os.environ['AUTOTEAM_API_KEY']}"} # 获取账号状态 with httpx.Client() as client: resp = client.get(f"{BASE_URL}/api/accounts", headers=HEADERS) accounts = resp.json() for acc in accounts: print(f"{acc['email']}: quota={acc['quota']}, status={acc['status']}") # 触发轮转 with httpx.Client(timeout=300) as client: resp = client.post( f"{BASE_URL}/api/rotate", headers=HEADERS, json={"target": 5} ) task = resp.json() print(f"Task ID: {task['task_id']}, Status: {task['status']}")
Web 管理面板
访问
http://localhost:8787 后查看以下页面:
| 页面 | 功能 |
|---|---|
| 📊 仪表盘 | 账号统计、状态表格、登录/移出/删除/同步操作 |
| 👥 Team 成员 | 全部 Team 成员(含外部成员)列表 |
| ⚡ 操作 & 任务 | 一键轮转/检查/补满/清理/同步 + 任务历史 |
| 📋 日志 | 实时日志查看器 |
| ⚙️ 设置 | 管理员登录 + 主号 Codex 同步 + 巡检配置 |
工作原理
轮转流程
检查额度 └─ 低于阈值? ├─ 否 → 退出 └─ 是 → 移出当前账号 └─ 有备用账号? ├─ 是 → 验证额度 → 加入 Team → 同步 CPA └─ 否 → 注册新账号 └─ 临时邮箱 → ChatGPT 注册 └─ 验证码 → Codex OAuth └─ 加入 Team → 同步 CPA
账号状态机
new → registering → registered → codex_auth → active → low_quota → removed ↓ ↑ failed (可复用)
常见模式
自动化巡检脚本
import httpx import os import time BASE_URL = os.environ.get("AUTOTEAM_BASE_URL", "http://localhost:8787") HEADERS = {"Authorization": f"Bearer {os.environ['AUTOTEAM_API_KEY']}"} def check_and_rotate(): """检查额度,必要时触发轮转""" with httpx.Client(timeout=60) as client: # 先检查额度 check_resp = client.post(f"{BASE_URL}/api/check", headers=HEADERS) check_resp.raise_for_status() # 获取账号状态 accounts_resp = client.get(f"{BASE_URL}/api/accounts", headers=HEADERS) accounts = accounts_resp.json() low_quota = [a for a in accounts if a.get("quota", 999) < 100 and a["status"] == "active"] if low_quota: print(f"检测到 {len(low_quota)} 个低额度账号,触发轮转...") rotate_resp = client.post( f"{BASE_URL}/api/rotate", headers=HEADERS, json={"target": 5}, timeout=300 ) print(f"轮转结果: {rotate_resp.json()}") else: print("所有账号额度正常") if __name__ == "__main__": check_and_rotate()
配置巡检(通过 API)
import httpx import os BASE_URL = "http://localhost:8787" HEADERS = {"Authorization": f"Bearer {os.environ['AUTOTEAM_API_KEY']}"} # 开启自动巡检,每 30 分钟检查一次,额度低于 100 触发轮转 with httpx.Client() as client: resp = client.put( f"{BASE_URL}/api/patrol/config", headers=HEADERS, json={ "enabled": True, "interval_minutes": 30, "threshold": 100, "target_size": 5 } ) print(resp.json())
批量同步认证文件
import httpx import os BASE_URL = "http://localhost:8787" HEADERS = {"Authorization": f"Bearer {os.environ['AUTOTEAM_API_KEY']}"} def sync_active_accounts(): """只同步 active 账号的认证文件到 CPA""" with httpx.Client(timeout=120) as client: resp = client.post(f"{BASE_URL}/api/sync", headers=HEADERS) result = resp.json() print(f"同步结果: 成功={result.get('synced', 0)}, 失败={result.get('failed', 0)}") return result sync_active_accounts()
故障排查
注册失败 / 验证码超时
# 问题:验证码有效期短,网络延迟导致失败 # 解决:使用延迟低的代理,或住宅代理 # 配置代理(在 .env 中) HTTP_PROXY=http://user:pass@proxy-host:port HTTPS_PROXY=http://user:pass@proxy-host:port
Playwright 浏览器问题
# 重新安装 Chromium uv run playwright install chromium # Docker 中确认浏览器依赖 docker compose exec autoteam uv run playwright install-deps chromium
CPA 同步失败
# 验证 CPA 连接 curl -H "Authorization: Bearer $CPA_API_KEY" $CPA_BASE_URL/health # 检查 AutoTeam 日志 uv run autoteam api # 查看 Web 面板日志页 # 或 docker compose logs -f autoteam | grep "sync"
账号被封 / IP 被标记
# 症状:注册成功率低,频繁出现 Cloudflare 挑战 # 解决方案: # 1. 使用住宅代理(非 VPS IP) # 2. 降低注册频率,在 .env 中增加延迟 REGISTER_DELAY_SECONDS=30 # 3. 减少并发(AutoTeam 同时只允许一个 Playwright 操作)
查看详细日志
# CLI 模式下增加详细输出 uv run autoteam rotate --verbose # Docker 中查看完整日志 docker compose logs --tail=200 autoteam # Web 面板实时日志 # 访问 http://localhost:8787 → 日志页面
数据库重置
# 清除本地数据(保留配置) rm data/autoteam.db # 重新启动后会自动初始化 uv run autoteam api
项目结构
AutoTeam/ ├── data/ # 持久化数据(.env、数据库、认证文件) │ ├── .env │ └── autoteam.db ├── docs/ # 详细文档 │ ├── getting-started.md │ ├── configuration.md │ ├── docker.md │ ├── api.md │ ├── architecture.md │ └── troubleshooting.md ├── src/autoteam/ # 源码 │ ├── cli.py # CLI 入口 │ ├── api.py # FastAPI 应用 │ ├── rotator.py # 轮转核心逻辑 │ ├── browser.py # Playwright 自动化 │ ├── quota.py # 额度检查 │ └── sync.py # CPA 同步 ├── frontend/ # Vue 3 Web 面板 ├── docker-compose.yml ├── setup.sh └── pyproject.toml
重要限制
- IP 风险:VPS IP 容易被 OpenAI/Cloudflare 标记,强烈建议使用住宅代理
- 并发限制:同一时间只允许一个 Playwright 操作,避免竞态
- 服务条款:使用本工具可能违反 OpenAI 服务条款,风险自担
- 验证码时效:OpenAI 验证码有效期极短,高延迟网络下成功率低