プラットフォームプラグイン
各プラットフォームは独立したパッケージとして提供されます。必要なプラットフォームだけをインストールできます。
プラットフォーム一覧
Section titled “プラットフォーム一覧”| プラットフォーム | ステータス | 認証 | レート制限 | アーカイブ解決 |
|---|---|---|---|---|
| YouTube | ✅ 安定 | API キー(クエリパラメータ) | クォータバジェット (10k/日) | ✅ 対応 |
| Twitch | ✅ 安定 | OAuth2 Client Credentials | トークンバケット (800/分) | ✅ 対応 |
| TwitCasting | ✅ 安定 | Basic Auth (base64) | トークンバケット (60/分) | ✅ 対応 |
YouTube
Section titled “YouTube”公式ドキュメント: YouTube Data API v3
YouTubeのクォータシステムはエンドポイント毎に異なるコスト(1〜101ユニット)を日次10,000ユニットのプールから消費します。SDKはローカルで消費を追跡し、サイレントな403エラーを防いで代わりに
QuotaExhaustedErrorをスローします。
pnpm add @unified-live/core @unified-live/youtubeimport { createYouTubePlugin } from "@unified-live/youtube";
const youtube = createYouTubePlugin({ apiKey: process.env.YOUTUBE_API_KEY!, quota: { dailyLimit: 10_000, // 任意、デフォルト: 10,000 ユニット },});YouTube API キーの取得
Section titled “YouTube API キーの取得”- Google Cloud Console にアクセス
- プロジェクトを作成(または既存のものを選択)
- YouTube Data API v3 を有効化
- 認証情報 から API キーを作成
YouTube はコストベースの日次クォータを使用します(デフォルト: 10,000 ユニット)。操作ごとにコストが異なります:
| 操作 | コスト |
|---|---|
getContent(videos.list) | 1 ユニット |
getChannel(channels.list) | 1 ユニット |
listArchives(channels.list + playlistItems.list + videos.list) | 3 ユニット |
listBroadcasts(search.list + videos.list) | 101 ユニット |
SDK はクォータ消費をローカルで追跡し、上限に達すると QuotaExhaustedError をスローします。
Twitch
Section titled “Twitch”公式ドキュメント: Twitch Helix API
TwitchはOAuth2 Client Credentialsとトークンリフレッシュが必要です。SDKはトークンのライフサイクル全体 — 初回取得、90%期限でのリフレッシュ、401時の自動リトライ — を処理します。
pnpm add @unified-live/core @unified-live/twitchimport { createTwitchPlugin } from "@unified-live/twitch";
const twitch = createTwitchPlugin({ clientId: process.env.TWITCH_CLIENT_ID!, clientSecret: process.env.TWITCH_CLIENT_SECRET!,});Twitch 認証情報の取得
Section titled “Twitch 認証情報の取得”- Twitch Developer Console にアクセス
- 新しいアプリケーションを登録
- Client ID をコピーし、Client Secret を生成
Twitch はトークンバケットアルゴリズムを使用し、レート制限は Ratelimit-Limit/Ratelimit-Remaining/Ratelimit-Reset レスポンスヘッダーで通知されます。SDK はデフォルトのバケットサイズで初期化し、実際の API レスポンスに基づいて動的に調整します。
SDK が OAuth2 Client Credentials Grant を自動処理します。トークンは期限切れ前に自動更新されます。
TwitCasting
Section titled “TwitCasting”公式ドキュメント: TwitCasting API v2
TwitCastingは1分間に60リクエストという厳しいレート制限があります。SDKはトークンバケットと透過的なリトライでこれを強制し、予期しない429エラーを防ぎます。
pnpm add @unified-live/core @unified-live/twitcastingimport { createTwitCastingPlugin } from "@unified-live/twitcasting";
const twitcasting = createTwitCastingPlugin({ clientId: process.env.TWITCASTING_CLIENT_ID!, clientSecret: process.env.TWITCASTING_CLIENT_SECRET!,});TwitCasting 認証情報の取得
Section titled “TwitCasting 認証情報の取得”- TwitCasting Developer にアクセス
- 新しいアプリケーションを登録
- Client ID と Client Secret をコピー
TwitCasting のほとんどのエンドポイントは 60 秒あたり 60 リクエストを許可します。一部のエンドポイント(サポーター/サポート中リスト)は 60 秒あたり 30 リクエストのより厳しい制限があります。SDK が自動管理します。
SDK がアプリケーションレベルのアクセスとして Basic 認証(base64(clientId:clientSecret))を内部で処理します。TwitCasting はユーザーレベル操作用の Bearer Token もサポートしていますが、現在は実装されていません。
プラグインの登録
Section titled “プラグインの登録”方法 A — 作成時に渡す(推奨):
import { UnifiedClient } from "@unified-live/core";
const client = UnifiedClient.create({ plugins: [youtube, twitch, twitcasting],});方法 B — 作成後に登録:
import { UnifiedClient } from "@unified-live/core";
const client = UnifiedClient.create();client.register(youtube);client.register(twitch);client.register(twitcasting);