Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SAKANAAI

Sakana AI(chat.sakana.ai)向けのアカウント自動登録ツールと、OpenAI 互換ローカルプロキシをまとめたプロジェクトです。

主な対象モデル: sakana/namazu-v6.3(Namazu)


構成

SAKANAAI/
├── sakana/          # アカウント自動登録(Python)
└── sakanaproxy/     # OpenAI 互換プロキシ(TypeScript / Node.js)
ディレクトリ 役割
sakana/ ブラウザ自動化で Sakana アカウントを登録し、sakana-chat Cookie を取得
sakanaproxy/ 取得した Cookie を使い、Sakana Chat を OpenAI API 互換で公開

連携の流れ

sakana(自動登録)
    ↓ sakana-chat Cookie を生成
sakanaproxy(プロキシ)
    ↓ OpenAI 互換 API を提供
アプリ / SDK / 各種クライアント

1. sakana — 自動登録

Python 製の CLI です。一時メール API とブラウザ自動化を使い、Sakana AI アカウントを登録してセッション Cookie を保存します。

主なファイル

ファイル 説明
main.py CLI エントリポイント
register.py 登録フロー
browser.py ブラウザ自動化
mail.py メール(認証コード)取得
config.json 設定
cookies.txt 取得した Cookie の保存先

必要条件

  • Python 3.x
  • 依存関係は pyproject.toml を参照

セットアップ

cd sakana
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e .
cp .env.example .env
# .env に秘密情報を記入

設定

秘密情報は .env に置く.env.example を参照)。
非秘密の運用設定は config.json に置く。

優先順位: 環境変数 > .env > config.json

.env(秘密)

変数 説明
CLOUDFLARE_API_BASE 一時メール API のベース URL
CLOUDFLARE_API_KEY 一時メール API キー
CLOUDFLARE_AUTH_MODE 認証方式(例: x-admin-auth
DEFAULT_DOMAINS メールドメイン
PROXY ブラウザプロキシ(任意)
SAKANAPROXY_URL Cookie 送信先プロキシ URL(任意)
SAKANAPROXY_TOKEN プロキシ管理トークン(任意)

config.json(非秘密)

キー 説明
register_count デフォルト登録数
concurrent_count 同時実行数
browser_restart_every ブラウザ再起動間隔
log_level ログレベル
cloudflare_path_* 一時メール API パス

使い方

# 設定どおりに 1 件(または register_count 件)登録
python main.py

# 5 件登録
python main.py --count 5

# 出力先を指定
python main.py --count 3 --output ./my-cookies.txt

成功した Cookie は cookies.txt(または指定ファイル)に追記されます。
.envSAKANAPROXY_URLSAKANAPROXY_TOKEN がある場合は、プロキシの管理 API へ自動追加します。


2. sakanaproxy — OpenAI 互換プロキシ

Hono + Node.js 製のローカル API です。Sakana Chat のセッション Cookie を使い、OpenAI 互換エンドポイントを提供します。

特徴

  • OpenAI API 互換/v1/chat/completions/v1/models など
  • マルチアカウント — Round-robin と自動クールダウン
  • ブラウザ不要 — 認証は sakana-chat=UUID Cookie のみ
  • SQLite 保存 — Cookie は AES-256-GCM で暗号化して保存
  • Reasoning 対応 — Namazu の思考モードをサポート
  • ストリーミング — Sakana の NDJSON を OpenAI SSE に変換
  • ツール実行 — ローカル tool 実行(<tool_call> 形式)
  • 監視 — Health check、Prometheus メトリクス、Watchdog
  • Docker 対応

必要条件

依存 最低バージョン
Node.js v20.x
npm v9.x
Docker(任意) v24.x

セットアップ

cd sakanaproxy
npm install
cp .env.example .env
# 必要に応じて .env を編集

環境変数(.env

変数 説明 デフォルト
PORT 待ち受けポート 3000
HOST 待ち受けホスト 0.0.0.0
API_KEY /v1/* 保護用 API キー(空なら認証なし) (空)
SAKANAPROXY_SECRET SQLite 内 Cookie 暗号化キー (要変更)
ADMIN_ENABLED 管理パネル有効化 false
ADMIN_TOKEN 管理トークン(16 文字以上推奨) (空)
SAKANA_DEFAULT_MODEL デフォルトモデル sakana/namazu-v6.3
METRICS_ENABLED Prometheus メトリクス true
LOG_LEVEL ログレベル info

Cookie の取得方法

  1. ブラウザで https://chat.sakana.ai/ にログイン
  2. DevTools(F12)→ ApplicationCookieshttps://chat.sakana.ai
  3. sakana-chat の値(UUID)をコピー

または sakana/ の自動登録で取得した Cookie を使います。

アカウント管理

npm run login

対話メニュー:

  • [A] アカウント追加(Cookie を貼り付け)
  • [L] 一覧
  • [R] 削除
  • [T] テスト(/api/user で検証)
  • [Q] 終了

受け付ける形式:

  • UUID のみ: f52850d0-515e-445c-8b83-c3b22c0e49c5
  • Cookie ヘッダ全体: sakana-chat=UUID; Path=/; ...
  • ブラウザ拡張の JSON エクスポート(name="sakana-chat" を含む配列)

起動

# ローカル
npm start

# Docker
docker compose up -d

デフォルト: http://localhost:3000

API エンドポイント

ルート メソッド 説明
/v1/chat/completions POST チャット補完(ストリーム / 非ストリーム)
/v1/chat/completions/stop POST 生成中断
/v1/models GET モデル一覧
/v1/models/:model GET モデル詳細
/v1/accounts GET アカウント一覧(Cookie はマスク)
/health GET ヘルスチェック
/metrics GET Prometheus メトリクス

利用例(OpenAI SDK)

import OpenAI from 'openai'

const openai = new OpenAI({
  baseURL: 'http://localhost:3000/v1',
  apiKey: process.env.API_KEY || 'sk-no-key-required',
})

const completion = await openai.chat.completions.create({
  model: 'sakana/namazu-v6.3',
  messages: [{ role: 'user', content: 'Sakana AI について説明して。' }],
})

console.log(completion.choices[0].message.content)

ストリーミング:

const stream = await openai.chat.completions.create({
  model: 'sakana/namazu-v6.3',
  messages: [{ role: 'user', content: 'こんにちは' }],
  stream: true,
})

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '')
}

推奨ワークフロー

  1. sakanaproxy を起動し、必要なら管理トークンを有効化
  2. sakana/.envSAKANAPROXY_URL / SAKANAPROXY_TOKEN を設定
  3. sakana でアカウントを自動登録(Cookie がプロキシへ投入される)
  4. クライアントから http://localhost:3000/v1 を OpenAI 互換エンドポイントとして利用

手動運用する場合:

  1. sakana で Cookie を cookies.txt に保存
  2. sakanaproxynpm run login して Cookie を登録
  3. npm start で API を公開

技術スタック

領域 技術
自動登録 Python、ブラウザ自動化、一時メール API
プロキシ TypeScript、Node.js 20+、Hono、better-sqlite3、Zod
永続化 SQLite(WAL)、AES-256-GCM
デプロイ Docker / docker-compose

注意事項

  • Sakana Chat の利用規約・利用条件を確認したうえで使用してください
  • 秘密情報(API キー、トークン、Cookie、サーバー IP など)は .env にのみ置き、リポジトリにコミットしないでください
  • sakana/.envsakanaproxy/.envsakanaproxy/deploy/.envcookies.txt、SQLite DB は .gitignore 済み
  • 本番では SAKANAPROXY_SECRETADMIN_TOKEN を必ず変更してください
  • 自動登録・大量アカウント運用は ban や制限のリスクがあります

ライセンス

sakanaproxy は ISC ライセンスです。詳細は sakanaproxy/LICENSE を参照してください。


友链

LINUX DO

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages