개인 구독 ≠ 개발자 API
| 서비스 | API key 직접 사용 | 구독 경로 | 권장도 |
|---|---|---|---|
| Claude Pro/Max | 불가 — API 별도 결제[6] | Claude Code OAuth → 전용 bridge | 조건부 |
| Google/Gemini plan | AI Studio/API 별도 quota | Gemini CLI OAuth → 수정한 bridge | 조건부 |
| ChatGPT Plus/Pro | 불가 — Platform 별도 결제[28] | Codex OAuth → 범용 proxy → GameMaster | 실험적 |
| SuperGrok/X plan | xAI API 별도 결제 | Grok Build OAuth → 범용 proxy → GameMaster | 실험적 |
구독 session token은 API key가 아닙니다. 브라우저 cookie·token을 추출하거나 bridge 설정에 직접 붙여 넣는 방식은 다루지 않습니다. 공식 로그인 화면에서 OAuth를 끝내고 자격 증명 저장은 공식 CLI 또는 검토한 공개소스 proxy에 맡깁니다.
개인 구독의 이미지·TTS는 별도 판정
| 경로 | 이미지 | TTS | AI Influence 직접 호환 |
|---|---|---|---|
| Claude Pro/Max + Claude Code bridge | Claude는 사진·삽화 생성 미지원 | Voice app만; bridge audio 없음 | 없음 |
| ChatGPT Plus/Pro + Codex | $imagegen은 공식 구독 기능 | Voice app만; Codex TTS endpoint 없음 | 수동 image만 공식 |
| Gemini 개인 plan + CLI bridge | 앱은 가능, CLI bridge는 text | Live는 앱 기능, bridge audio 없음 | 없음 |
| SuperGrok + CLIProxyAPI | 제3자 proxy에 image route 구현 | Player2 TTS route 없음 | protocol 불일치 |
최신 CLIProxyAPI에는 Codex·xAI image model을 위한 /v1/images/generations route가 있지만, AI Influence가 요구하는 Player2 /v1/image/generate 요청·응답과 다릅니다. GameMaster도 현재 image/TTS 변환 route가 없습니다. 기술적으로 adapter를 새로 만들 수 있어도 OAuth token replay와 제3자 backend 사용은 공식 media API 통합이 아니므로 권장하지 않습니다.[13]
내장 기능은 Player2를 사용하세요. 다른 provider가 필요하면 ChatGPT/Grok/Gemini 소비자 구독이 아니라 각 회사의 공식 Images/TTS 개발자 API와 별도 과금·예산 제한을 사용해야 합니다. endpoint 차이는 이미지·음성 페이지에 정리했습니다.
모든 경로의 공통 안전 절차
- 별도 폴더와 가능하면 별도 표준 Windows 사용자에서 실행합니다. 개인 문서·SSH key·개발용 MCP가 없는 환경이 좋습니다.
- Node.js·Go·Python·CLI는 공식 사이트에서 설치합니다. 카페 첨부 EXE와 Drive binary를 사용하지 않습니다.
- bridge는 GitHub source를
git clone하여 실행합니다. Release EXE도 이 가이드에서는 제외합니다. - server bind를
127.0.0.1로 제한합니다.0.0.0.0, router port forwarding, Cloudflare Tunnel, Tailscale 공유를 사용하지 않습니다. - Windows Defender Firewall의 외부 inbound 허용 팝업에서 Public/Private network 허용을 체크하지 않습니다.
- 공식 브라우저 domain에서만 로그인합니다. 비밀번호·2FA code를 bridge console에 입력하지 않습니다.
- AI Influence connection test → NPC 한 명 대화 → log 확인 순으로 검증합니다.
- rate limit·경고가 나오면 중단합니다. 다중 계정 회전·제한 우회는 하지 않습니다.
npm ci는 저장소의 lockfile에 고정된 dependency를 설치합니다. 실행 전 package.json과 lockfile이 있는지 확인하고, 설치 후 npm audit --omit=dev 결과를 읽으세요. audit 0이 안전 보증은 아닙니다.
Claude Pro/Max
Anthropic은 Claude Code를 Pro/Max 계정으로 쓰는 것을 공식 지원하지만, Pro/Max에 일반 API가 포함되는 것은 아닙니다.[7][6] 커뮤니티의 MIT 공개소스 bridge는 AI Influence의 Ollama 요청을 claude -p로 변환하며 tools·MCP·session persistence를 끕니다.[5]
Ollama :11434
127.0.0.1
OAuth
A. 공식 CLI 로그인
npm install -g @anthropic-ai/claude-code
claude열린 브라우저의 Anthropic 공식 로그인 화면에서 Pro/Max 계정으로 인증합니다. CLI 안에서 짧은 질문을 보내 정상 응답을 먼저 확인합니다.
B. bridge를 source로 설치
git clone https://github.com/kubilaiswf/claude-bannerlord-proxy.git
cd claude-bannerlord-proxy
git log -1 --oneline
npm ci
npm audit --omit=dev
npm startconsole에 Listening on http://127.0.0.1:11434가 표시되어야 합니다. 다른 주소라면 중단하고 HOST=127.0.0.1로 고칩니다.
C. server만 단독 확인
Invoke-RestMethod http://127.0.0.1:11434/api/tagsPowerShell에 JSON이 돌아오면 AI Influence에서 다음을 설정합니다.
AI Provider: Ollama
Ollama API URL: http://127.0.0.1:11434
Ollama Model: claude-haiku:latest # 속도 우선
# 또는 claude-sonnet:latest # 품질 우선
Gemini 개인 계정·plan
Google의 공식 Gemini CLI는 브라우저 OAuth를 지원합니다.[27] 커뮤니티 bridge도 존재하지만, 현재 source는 Gemini CLI를 --yolo로 실행해 모든 tool 호출을 자동 승인합니다.[15] 그 상태로는 사용하지 않습니다.
A. CLI 설치와 인증
npm install -g @google/gemini-cli
geminiGoogle 공식 화면에서 로그인하고 CLI 단독 응답을 확인합니다. 개인 Gemini plan과 개발자 API billing은 동일한 상품으로 가정하지 않습니다.
B. source 설치
git clone https://github.com/kubilaiswf/gemini-bannerlord-proxy.git
cd gemini-bannerlord-proxy
git log -1 --oneline
npm ci
npm audit --omit=dev
C. 반드시 --yolo 제거
server.js의 cliArgs 배열에서 다음 한 줄을 삭제합니다.
- "--yolo",
D. 모든 Gemini tool을 deny
%USERPROFILE%\.gemini\policies\bannerlord-deny-tools.toml을 만들고 다음을 저장합니다. Gemini CLI 공식 policy engine의 * wildcard는 모든 built-in·MCP tool을 가리킵니다.
[[rule]]
toolName = "*"
decision = "deny"
priority = 1000
denyMessage = "AI Influence dialogue mode: tools are disabled."개인용 %USERPROFILE%\.gemini\GEMINI.md와 MCP 설정이 NPC prompt에 섞일 수 있으므로, 전용 Windows 사용자에서 비워 둡니다. 그 다음 npm start를 실행합니다.
E. AI Influence 설정
AI Provider: Ollama
Ollama API URL: http://127.0.0.1:11434
Ollama Model: gemini-flash:latest--yolo는 Gemini가 shell·file tool을 제안하면 자동 승인하는 mode입니다. 게임 대화에는 tool이 필요하지 않습니다. source를 수정하기 싫다면 이 bridge 대신 공식 Gemini API key 또는 Player2를 선택하세요.
ChatGPT Plus/Pro → Codex
OpenAI는 Codex에서 “Sign in with ChatGPT”와 API key 인증을 공식 지원하며, ChatGPT plan에 Codex 사용량이 포함될 수 있습니다.[29][9] Codex의 $imagegen도 공식 구독 기능이지만, AI Influence 전용 media bridge는 아닙니다.[52]
Player2 :5100
prompt filtering
OpenAI-compatible :8317
ChatGPT plan
CLIProxyAPI가 공식 Codex CLI를 단순 호출하는 대신 OAuth session을 저장하고 OpenAI-compatible API로 재노출합니다. 현재 source에는 GPT image route도 있지만 내부 backend token replay이며 Player2 media protocol과 호환되지 않습니다. 인증정보를 다루는 제3자 계층이 하나 더 늘고, 이 조합의 AI Influence end-to-end 동작도 여기서 실게임 검증하지 못했습니다.
A. source로 CLIProxyAPI build
공식 Go toolchain과 Git을 설치한 뒤 별도 폴더에서 실행합니다. 현재 source의 go.mod 요구 버전은 Go 1.26.0입니다.
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
git log -1 --oneline
copy config.example.yaml config.yaml
go build -o cli-proxy-api.exe ./cmd/server
B. localhost 전용 config
config.yaml의 최소 보안 항목을 다음처럼 바꿉니다. LOCAL_RANDOM_KEY는 provider token이 아니라 GameMaster가 local proxy에 인증할 임의의 긴 값입니다.
host: "127.0.0.1"
port: 8317
auth-dir: "./auths"
api-keys:
- "LOCAL_RANDOM_KEY"
debug: false
remote-management:
allow-remote: false
secret-key: ""
disable-control-panel: true
C. Codex OAuth
.\cli-proxy-api.exe -config config.yaml -codex-loginOpenAI 공식 domain의 브라우저 화면에서 로그인합니다. 완료 후 일반 server mode로 실행합니다.
.\cli-proxy-api.exe -config config.yaml
D. GameMaster를 EXE 없이 source로 실행
git clone https://github.com/segarega/GameMaster.git
cd GameMaster
start.batstart.bat는 Python virtual environment와 dependency를 source에서 설치합니다.[14] General의 main provider를 다음처럼 설정하고 Fetch Models로 실제 노출 model을 확인합니다.
API URL: http://127.0.0.1:8317/v1
API Key: LOCAL_RANDOM_KEY
Model: Fetch Models 결과에서 Codex model 선택Selector 기능은 처음에는 끄거나 같은 local endpoint의 작은 model을 선택합니다. GameMaster server를 127.0.0.1:5100에서 시작한 뒤 AI Influence를 다음처럼 설정합니다.
AI Backend: Player2
URL: http://127.0.0.1:5100
API Key: 비워 둠/v1/models 실패, OAuth 반복, 401/429, model alias 불일치, GameMaster가 외부 interface에 bind되는 경우 중단하세요. “작동할 때까지” session file을 복사하거나 cookie를 추출하지 않습니다.
SuperGrok/X plan → Grok Build
xAI의 Grok Build는 공식적으로 interactive TUI와 headless script·bot·ACP 사용을 지원합니다.[11][12] Grok plan의 image/video 기능과 xAI Developer API billing은 별도입니다.[64][68] 최신 CLIProxyAPI source가 Grok image route를 구현하지만 공식 Player2 adapter는 아니며 실제 개인 plan entitlement는 계정별 확인이 필요합니다.
구성은 위 Codex 절차와 같고 OAuth flag만 바뀝니다.
.\cli-proxy-api.exe -config config.yaml -xai-login
.\cli-proxy-api.exe -config config.yamlGameMaster의 API URL은 동일한 http://127.0.0.1:8317/v1이고, Fetch Models에서 실제 Grok model이 반환될 때만 선택합니다. CLIProxyAPI source가 제공하는 현재 flag 이름은 -xai-login입니다.[13]
SuperGrok 또는 X Premium+를 보유했다는 사실만으로 xAI 개발자 API 무료 사용을 의미하지 않습니다. Grok Build 공식 로그인에서 해당 계정에 접근 권한과 남은 한도가 표시될 때만 진행합니다. 제한 회피용 다중 계정은 사용하지 않습니다.[25]
카페의 Python bridge: Vertex AI 경로
카페 게시물 298399에 공유된 bridge.py는 AI Influence의 Ollama 형식을 Google Vertex AI generateContent 요청으로 변환합니다.[30] 인증은 google.auth.default()로 Application Default Credentials를 얻고, aiplatform.googleapis.com을 호출합니다. 따라서 Gemini 앱 개인 구독이 아니라 Google Cloud project의 Vertex AI quota·billing을 사용합니다.[31][32]
| 검토 항목 | 판정 |
|---|---|
| localhost 제한 | 127.0.0.1:11434 — 양호 |
| credential 전달 | AI Influence에 token을 넣지 않고 ADC가 refresh — 양호 |
| 개인 구독 사용 | 아님. Vertex AI 종량제/할당량 경로 |
| project fallback | 작성자 project ID가 hard-code됨 — 반드시 제거 |
| credential 방식 | JSON service-account key보다 local ADC login 우선 |
| model | preview model hard-code — 지원 여부·가격을 매번 확인 |
| logging | 응답 앞 30자를 console에 기록 — privacy가 필요하면 제거 |
더 안전하게 참고하는 원칙
- 원본의 작성자 project ID fallback을 삭제하고, 인증 실패 시 server를 즉시 종료합니다.
- local 개발에서는 JSON key file을 내려받지 말고 Google Cloud CLI의 ADC login을 사용합니다.[33]
GOOGLE_CLOUD_PROJECT를 명시하고 billing budget·alert·quota를 먼저 설정합니다.- 허용 model을 고정 allowlist로 검증해 request가 임의 model endpoint를 호출하지 못하게 합니다.
- request body 크기와 동시 요청 수를 제한하고, prompt·응답·Authorization header를 log에 남기지 않습니다.
- FastAPI·uvicorn·httpx·google-auth dependency version을 고정한 virtual environment에서 실행합니다.
gcloud auth application-default login
gcloud config set project YOUR_PROJECT_ID
set GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID이 경로는 개인 Gemini plan의 월 구독료로 처리되지 않습니다. Preview model 이름, 지역, quota와 Vertex AI 가격을 확인하고 Cloud Billing budget을 설정한 뒤 사용하세요. 제공된 source는 구조 참고용이며, 이 가이드 환경에서는 실제 Google credential로 end-to-end 호출을 검증하지 않았습니다.
더 안전한 공식 API 대안
Gemini API/AI Studio
지역·model별 무료 quota가 있다면 개인 구독 bridge보다 단순합니다. key를 게임 설정 또는 local bridge에만 저장하고 Git에 올리지 않습니다.
Ollama/KoboldCpp
cloud 계정·약관 위험이 없지만 충분한 VRAM/RAM과 model 선택·한글 품질 검증이 필요합니다.
사용 중단·session 철회
- 게임과 bridge·GameMaster·CLIProxyAPI를 모두 종료합니다.
- Windows에서 11434·5100·8317 port listener가 사라졌는지 확인합니다.
- 서비스 계정의 공식 Connected Apps/Sessions 화면에서 해당 CLI session을 철회합니다.
- Claude
~/.claude, Gemini~/.gemini, CLIProxyAPIauth-dir는 token 저장 위치입니다. backup·Git·Cloud sync 대상에서 제외합니다. - 의심스러운 로그인·rate-limit 경고가 있었다면 비밀번호 변경, 다른 session 로그아웃, 2FA 확인을 수행합니다.
Get-NetTCPConnection -State Listen |
Where-Object LocalPort -in 11434,5100,8317출력이 비어 있어야 bridge가 종료된 것입니다.