From aradotso-trending-skills-37
Automates ChatGPT Team account rotation: monitors Codex quotas, auto-registers/switches accounts on low quota, syncs auth files to CLIProxyAPI. Includes CLI, web dashboard, Docker deployment.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-1 --plugin aradotso-trending-skills-37This skill uses the workspace's default tool permissions.
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Skill by ara.so — Daily 2026 Skills collection.
AutoTeam 是一个自动化工具,用于管理 ChatGPT Team 账号的轮转:自动注册账号、获取 Codex OAuth 认证、监控额度余量、在额度低时智能切换账号,并将认证文件同步到 CLIProxyAPI。
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)# 临时邮箱服务(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 并验证连通性
# 启动 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
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 结构services:
autoteam:
build: .
ports:
- "8787:8787"
volumes:
- ./data:/app/data # 持久化配置、数据库、认证文件
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
# 查看实时日志
docker compose logs -f autoteam
# 重启服务
docker compose restart autoteam
# 进入容器执行 CLI
docker compose exec autoteam uv run autoteam status
# 停止服务
docker compose down
所有 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}
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']}")
访问 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()
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
# 重新安装 Chromium
uv run playwright install chromium
# Docker 中确认浏览器依赖
docker compose exec autoteam uv run playwright install-deps chromium
# 验证 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"
# 症状:注册成功率低,频繁出现 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