ElevenLabs 公式 OSS UI コンポーネントの導入
DESIGN.mdによるデザイン移植が仕様の層をカバーするのに対し、ElevenLabs(イレブンラボズ)は実装そのものもMITライセンスで公開している。@elevenlabs/agents-cliを使えば、本家サイトと同じUIプリミティブ(=再利用可能な最小単位のUI部品。Orb・波形表示・メッセージ表示など)を1行でプロジェクトに導入できる。仕様と実装の両方を組み合わせることで、再現度がもう一段上がる。
あわせて参照:DESIGN.mdによるデザイン移植の手引き(仕様層の全体像)。
リポジトリ
- 公開先:
github.com/elevenlabs/ui(MITライセンス、shadcn/uiの上に構築されている) - CLI(=コマンドラインツール):
@elevenlabs/agents-cli - 公式ドキュメント:
ui.elevenlabs.io/docs/components
注意点として、eleven-labs/design-system(パリの別会社)は別組織である。混同しないこと。
1行でのインストール
pnpm dlx @elevenlabs/agents-cli@latest components add orb
これによりcomponents/ui/orb.tsxなどが生成される。shadcn addと同じコピー方式であり、依存関係がパッケージの中に閉じ込められるのではなく、自分のプロジェクトのコードとして手元に来る。以後は自由に編集できる。
手に入るもの
- Orb —— 音声エージェントの状態(待機/思考/発話)に応じて形を変える球体。Three.js(スリー・ジェイエス)+React Three Fiber+WebGLシェーダー(=GPU上で動く描画プログラム)で作られている。
agentState、getInputVolume、colorsをpropsとして受け取る。 - Waveform —— 音声の入出力を可視化する波形表示。
- Messages —— 会話ログ表示用のUIプリミティブ。
- Transcript —— リアルタイム文字起こしをストリーミング表示する部品。
これらはElevenLabs本番サイトと同一のソースであるため、コピーした瞬間からトーンが一致する。手作業で再現する手間は不要である。
DESIGN.md併用時の役割分担
| 層 | 担当 |
|---|---|
| 色・書体・影・余白のトークン | DESIGN-elevenlabs-io.md(DesignMDで抽出) |
| Button/Card/Inputなどの汎用プリミティブ | shadcn/ui + Tailwind |
| Orb/波形/メッセージなどElevenLabs固有の部品 | @elevenlabs/agents-cli |
| ブランド固有のレイアウトと文言 | プロダクト側で自前対応 |
DESIGN.mdだけではOrbを再現できない。テキストの仕様書ではシェーダーを表現できないからである。逆にagents-cliだけでは、色やradius(角丸の半径)がElevenLabsの仕様からずれていく。両方を併用する前提で設計する。
よくある失敗パターン
- 「elevenlabs.ioを見て真似て」とAIに丸投げする —— 構造化されていない曖昧な指示であり、参照の質に左右される運任せになる。DESIGN.md+agents-cliの組み合わせで構造化すること。
- Orbを自力で再現しようとする —— シェーダーのノイズ周波数・フレネル反射(=見る角度によって反射の強さが変わる光学効果)のブレンド・音声反応のカーブを合わせ込むのは数日がかりの作業になる。公式実装をフォーク(=複製して自分の管理下に置くこと)する方が速い。
- shadcnの既定値をそのまま使う ——
globals.cssでDESIGN.mdのトークンを上書きしない限り、agents-cliを導入しても色だけは標準のshadcnに戻ってしまう。 prefers-reduced-motion(=動きを減らす設定を尊重するCSS機能)を無視する —— Orbは魅力的だが、a11y(アクセシビリティ=様々な利用者が支障なく使えること)の観点で静止版の用意が必須である。agents-cli提供版がこれに対応するpropsを持つかはドキュメントで確認する。
プロダクトとコーポレートサイトでの使い分け
- プロダクト(例:SCASの対話UI) —— agents-cliを導入する価値が最も高い場面である。Orb・波形・トランスクリプトは音声/エージェント型プロダクトの差別化要素になる。
- コーポレートサイト/ランディングページ —— ここでOrbはやり過ぎである。DESIGN.mdのトークンとshadcn/uiだけでElevenLabsらしさは十分再現できる。マーケティングページに重いWebGLを載せるとLCP(Largest Contentful Paint=ページ表示速度を測る指標の1つ)を悪化させる。
判断軸は、そのUIが利用者に音声やエージェントとの会話を見せるものかどうかである。そうでなければDESIGN.mdだけで十分である。
検証ループ
pnpm dlx @elevenlabs/agents-cli@latest components add <name>でインストールする。- ローカルで起動し、Playwright MCPでスクリーンショットを撮る。
- 本家の
ui.elevenlabs.io/docs/components/<name>のスクリーンショットと並べて比較する。 - DESIGN.mdのDo/Don'tとも突き合わせて差分を確認する。
- 必要に応じてトークンを上書きし、シェーダーの定数を調整する。
出典・参考
- elevenlabs/ui —— OSSリポジトリ、ElevenLabs
- @elevenlabs/agents-cli —— npmパッケージ、ElevenLabs
- ElevenLabs UI components docs —— 公式ドキュメント、ElevenLabs
- shadcn/ui —— OSS、shadcn
- React Three Fiber —— 公式ドキュメント、Poimandres
- prefers-reduced-motion (MDN) —— 公式ドキュメント、MDN
- WCAG 2.1 — Animation from Interactions —— 仕様、W3C