コンテンツにスキップ

プラットフォームプラグイン

各プラットフォームは独立したパッケージとして提供されます。必要なプラットフォームだけをインストールできます。

プラットフォームステータス認証レート制限アーカイブ解決
YouTube✅ 安定API キー(クエリパラメータ)クォータバジェット (10k/日)✅ 対応
Twitch✅ 安定OAuth2 Client Credentialsトークンバケット (800/分)✅ 対応
TwitCasting✅ 安定Basic Auth (base64)トークンバケット (60/分)✅ 対応

公式ドキュメント: YouTube Data API v3

YouTubeのクォータシステムはエンドポイント毎に異なるコスト(1〜101ユニット)を日次10,000ユニットのプールから消費します。SDKはローカルで消費を追跡し、サイレントな403エラーを防いで代わりに QuotaExhaustedError をスローします。

Terminal window
pnpm add @unified-live/core @unified-live/youtube
import { createYouTubePlugin } from "@unified-live/youtube";
const youtube = createYouTubePlugin({
apiKey: process.env.YOUTUBE_API_KEY!,
quota: {
dailyLimit: 10_000, // 任意、デフォルト: 10,000 ユニット
},
});
  1. Google Cloud Console にアクセス
  2. プロジェクトを作成(または既存のものを選択)
  3. YouTube Data API v3 を有効化
  4. 認証情報 から 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 Helix API

TwitchはOAuth2 Client Credentialsとトークンリフレッシュが必要です。SDKはトークンのライフサイクル全体 — 初回取得、90%期限でのリフレッシュ、401時の自動リトライ — を処理します。

Terminal window
pnpm add @unified-live/core @unified-live/twitch
import { createTwitchPlugin } from "@unified-live/twitch";
const twitch = createTwitchPlugin({
clientId: process.env.TWITCH_CLIENT_ID!,
clientSecret: process.env.TWITCH_CLIENT_SECRET!,
});
  1. Twitch Developer Console にアクセス
  2. 新しいアプリケーションを登録
  3. Client ID をコピーし、Client Secret を生成

Twitch はトークンバケットアルゴリズムを使用し、レート制限は Ratelimit-Limit/Ratelimit-Remaining/Ratelimit-Reset レスポンスヘッダーで通知されます。SDK はデフォルトのバケットサイズで初期化し、実際の API レスポンスに基づいて動的に調整します。

SDK が OAuth2 Client Credentials Grant を自動処理します。トークンは期限切れ前に自動更新されます。


公式ドキュメント: TwitCasting API v2

TwitCastingは1分間に60リクエストという厳しいレート制限があります。SDKはトークンバケットと透過的なリトライでこれを強制し、予期しない429エラーを防ぎます。

Terminal window
pnpm add @unified-live/core @unified-live/twitcasting
import { createTwitCastingPlugin } from "@unified-live/twitcasting";
const twitcasting = createTwitCastingPlugin({
clientId: process.env.TWITCASTING_CLIENT_ID!,
clientSecret: process.env.TWITCASTING_CLIENT_SECRET!,
});
  1. TwitCasting Developer にアクセス
  2. 新しいアプリケーションを登録
  3. Client IDClient Secret をコピー

TwitCasting のほとんどのエンドポイントは 60 秒あたり 60 リクエストを許可します。一部のエンドポイント(サポーター/サポート中リスト)は 60 秒あたり 30 リクエストのより厳しい制限があります。SDK が自動管理します。

SDK がアプリケーションレベルのアクセスとして Basic 認証(base64(clientId:clientSecret))を内部で処理します。TwitCasting はユーザーレベル操作用の Bearer Token もサポートしていますが、現在は実装されていません。


方法 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);