好きでつながるバーチャルワールド - Yay!(イェイ)で複数のBOTアカウントを一括で制御できるモデレーション支援ツールです。フロントエンド(EJS + Webpack)とバックエンド(Express + MongoDB)で構成されています。
- カンファレンス管理: Agora RTM/RTC を用いた通話制御、参加者の状態監視、BOTの自動参加・離脱。
- BOTオーケストレーション: MongoDB に保存した BOT 情報を基にトークン更新やログインを自動化。
- 音声アセット配信:
source/views/assets/audio以下の豊富な効果音を Web UI から即時再生。 - API ファースト:
/yay-api,/api/bot-api,/api/agora-apiなど、外部システムからも利用できる REST API を提供。
- ランタイム: Node.js 18+
- サーバ: Express 4, EJS, cors, cookie-parser
- データ: MongoDB (mongoose 8)
- RTC: Agora RTM/RTC SDK
- ビルド: TypeScript 5, Webpack 5, ts-loader
- Node.js 18 以上(16 でも動作しますが LTS 利用を推奨)
- Yarn 1.22 以上
- MongoDB クラスター(Atlas など)
- Agora App ID・Yay API キーなどの外部認証情報
git clone https://github.com/rinapen/UnLockPen-Yay.git
cd UnLockPen-Yay
yarn installプロジェクトルートに .env を作成し、以下を設定してください。
| 変数名 | 説明 |
|---|---|
PORT |
HTTP サーバーポート (例: 3000) |
MONGODB_URI |
MongoDB 接続文字列(例: mongodb+srv:// 形式) |
DB_USER |
MongoDB の DB 接頭辞(コレクション名に使用) |
YAY_HOST |
Yay API のベース URL(例: https://api.yay.space) |
HOST |
自ホストのフル URL。未設定なら http://localhost:${PORT} |
USER_AGENT |
Yay API に送信する UA 文字列 |
API_KEY |
Yay ログイン API 用キー |
AGORA_APP_ID |
Agora RTM/RTC の App ID |
PORT=3000
MONGODB_URI=mongodb+srv://<user>:<pass>@cluster.example.mongodb.net/app
DB_USER=rinapen
YAY_HOST=https://api.yay.space
HOST=http://localhost:3000
USER_AGENT={device_type} {os_version} ({screen_density}x {screen_size} {model})
API_KEY=xxxxxxxxxxxxxxxx
AGORA_APP_ID=yyyyyyyyyyyyyyyy| コマンド | 説明 |
|---|---|
yarn build |
TypeScript を dist にビルドし、フロント資産を Webpack で束ねる |
yarn start |
dist/server.js を実行(API + Web UI を提供) |
開発中にサーバーのみ再起動したい場合は、ts-node や nodemon を任意で導入してください(標準スクリプトには同梱されていません)。
source/
server.ts # Express エントリーポイント
routes/ # Web/API ルーター
models/ # Mongoose モデル(Bot, AgoraCache)
utils/ # Agora/Yay 連携やトークン管理ロジック
views/ # EJS テンプレートと静的アセット
dist/ # ビルド成果物(自動生成)
GET /home: BOT 検索画面(/へアクセスすると/homeにリダイレクト)GET /yay-api/v2/calls/conferences/:id: Yay API へのプロキシGET /api/bot-api/random_bot_id: MongoDB から BOT ID を抽選
詳細は source/routes 以下を参照してください。
yarn buildで TypeScript とアセットをコンパイル。yarn startでサーバーを起動し、http://localhost:PORTをブラウザで開く。- UI や音声アセットを編集した場合は再度
yarn build。
- Issue を立てて背景・再現手順・期待結果を共有してください。
- Fork → feature ブランチを作成 → 変更内容をテスト → Pull Request。
- コードスタイルは TypeScript/ESLint 標準に準じます。可能であればユニットテストやスクリーンショットを添付してください。
- Yay/Agora API の利用規約にしたがい、個人情報やアクセスキーは公開しないでください。
source/views/assets/audio以下の音源は著作権にご注意ください。再配布には各素材のライセンスに従ってください。- 実運用では HTTPS での公開と、
.envを安全に管理することを推奨します。
このプロジェクトは自作ライセンスの下で公開されています。詳細は LICENSE ファイルを参照してください。