はじめに
- Node.js 20.19.0 以上
- mixi2 Developer Platform で開発者登録が完了していること
- アプリケーションを作成し、認証情報(Client ID / Client Secret / Token URL 等)を取得済みであること
mixi2-js は以下のランタイム API に依存しているため、環境によって使える機能が異なります。
node:http2(@grpc/grpc-js経由): API クライアントと gRPC ストリーミングnode:httpとnode:crypto(Ed25519):WebhookServerのサーバーと署名検証- Fetch API (
Request/Response) とcrypto.subtle(Ed25519):createWebhookHandlerの受信と署名検証 fetchとbtoa: 認証とメディアアップロード
| 環境 | 認証 (OAuth2Authenticator) |
API クライアント (Client) |
Webhook (WebhookServer) |
Webhook (createWebhookHandler) |
gRPC ストリーミング (StreamWatcher) |
|---|---|---|---|---|---|
| Node.js | ✅ | ✅ | ✅ | ✅ | ✅ |
| Bun | ✅ | ✅ | ✅ | ✅ | ✅ |
| Deno | ✅ | ✅ | ✅ | ✅ | ✅ |
| Cloudflare Workers | ✅ | ❌ | ✅ | ✅ | ❌ |
✅ 動作確認済み、⚠️ 制限あり、❓ 未検証、❌ 非対応
CI でビルド済みのパッケージを各ランタイムで動かし、結果を毎回確認しています。Node.js / Bun / Deno では、ローカルの TLS gRPC サーバーに対する実際の通信 (API 呼び出しとストリームでのイベント受信)、Webhook の署名検証、認証を確認しています。Cloudflare Workers は Wrangler 経由で workerd 上で動かしています。
- Node.js: 20.19.0 以降。テストは 20.19.0 / 22 / 24 で実行しています
- Bun: 最新版で確認しています (1.4 系で確認済み)
- Deno: 2.x の最新版で確認しています (2.9 系で確認済み)。
npm:mixi2-jsまたは JSR 版を Node.js 互換レイヤーで動かします - Cloudflare Workers:
nodejs_compatを有効にすると、認証と Webhook が使えます。WebhookServerはcloudflare:nodeのhttpServerHandlerで Workers のfetchにつなぎます (使い方)。API クライアントと gRPC ストリーミングは使えません。mixi2 の API は HTTP/2 の gRPC だけを受け付けますが、Workers のfetchは外部へ HTTP/1.1 で接続し、node:http2にはクライアント機能がないためです
Node.js 20 では、createWebhookHandler が使う Web Crypto の Ed25519 が ExperimentalWarning を出します。Node.js では WebhookServer の利用をおすすめします。
インストール
Section titled “インストール”npm install mixi2-jsnpx jsr add @otoneko1102/mixi2-jsESM・CommonJS の両方に対応しています。TypeScript の型定義 (.d.ts) も同梱されています。
AI エージェント向けの Skill
Section titled “AI エージェント向けの Skill”AI エージェント (Claude Code、Codex など) が mixi2-js を使ったコードを書くための Skill を公開しています。SDK の使い方の要点、イベントの種類、ヘルパーの一覧、各ドキュメントへのリンクがまとまっています。
gh skill install otnc/mixi2-jsnpx skills add otnc/mixi2-jsSkill の本体は skills/mixi2-js/SKILL.md です。
モジュール一覧
Section titled “モジュール一覧”| モジュール | 説明 |
|---|---|
OAuth2Authenticator |
OAuth2 Client Credentials 認証(トークン自動キャッシュ・有効期限 1 分前に自動更新) |
Client |
gRPC API クライアント (公式 API の全 15 RPC に対応) |
WebhookServer |
HTTP Webhook サーバー(Ed25519 署名検証・Ping 自動応答) |
StreamWatcher |
gRPC ストリーミング(指数バックオフによる自動再接続) |
すべての API 操作に OAuth2 認証が必要です。
// ESMimport { OAuth2Authenticator } from 'mixi2-js';// CJSconst { OAuth2Authenticator } = require('mixi2-js');import { OAuth2Authenticator } from '@otoneko1102/mixi2-js';const authenticator = new OAuth2Authenticator({ clientId: process.env.CLIENT_ID!, clientSecret: process.env.CLIENT_SECRET!, tokenUrl: process.env.TOKEN_URL!,});
// アクセストークンを取得(キャッシュ済みの場合は即座に返却)const token = await authenticator.getAccessToken();OAuth2Authenticator
Section titled “OAuth2Authenticator”OAuth2 Client Credentials フローによる認証を管理します。
new OAuth2Authenticator(options: AuthenticatorOptions)| プロパティ | 型 | 説明 |
|---|---|---|
clientId |
string |
OAuth2 クライアント ID |
clientSecret |
string |
OAuth2 クライアントシークレット |
tokenUrl |
string |
トークンエンドポイント URL |
| メソッド | 戻り値 | 説明 |
|---|---|---|
getAccessToken() |
Promise<string> |
アクセストークンを取得。有効期限の 1 分前までキャッシュし、自動更新する |
Authenticator インターフェースを実装しているため、カスタム認証を独自に実装することも可能です。
詳細は 公式ドキュメント を参照してください。