jacke-pp/open-yoki
An AI live-stream host that runs on one server: voice, face, chat, memory, posts. The base yoki runs on. By Jacke_pp · contact: DM @Jacke_pp on X
open-yoki は、単一のサーバーで動作する自己完結型のAIライブ配信ホストです。クローン音声とリアルタイムのデジタルアバターを使用してカメラに映り、チャットメッセージを読み、視聴者に返信し、常連を覚え、日記をつけ、自分で更新を投稿し、スケジュールに従って配信を開始/停止します。Binance Square(またはRTMP互換プラットフォーム)と独自のWebベースのライブ配信ページにブロードキャストできます。
機能
- ビデオ配信: ヘッドレスChromeブラウザが16:9のシーン(アバター、字幕、マーケットパネル、ギフト/フォローへの感謝メッセージ、音楽、効果音)をレンダリングします。予定された配信時間中、ffmpegがRTMPを介してそのフィードをプラットフォームにプッシュします。
- 人間のように話す: 高速AIモデル(デフォルト: OpenRouter経由のDeepSeek)が数秒以内にチャットに返信します。考えているときに「うーん」や「あれ」などのフィラー音を追加でき、気分、アクション、トーンは会話に従います。
- 「心」を持つ(オプション): 長期実行AI(Claude Code CLIまたはDeepSeek)がMarkdownファイルでいっぱいのフォルダに存在します。ホストの気分、日記、常連への印象、進化する性格を追跡し、何を投稿するかを決定します。
- 自動投稿:
想发的动态/(下書きフォルダ)に書かれたコンテンツは、公式OpenAPI(ops/square_post.py)を介してBinance Squareに、X APIを介してXに公開されます。 - 自然に動く: 適切なときに事前作成された短いクリップ(ダンス、手を振るなど)を再生し、名前で呼び、別れを告げます。
- 市場データを知る: 公開価格、オプションのCoinAnk契約データ、Binanceの現在のプロモーション(ローカルフォルダから)をスピーチで使用します。
- ウェブ検索が可能(オプション): 心は
web.mjsを介してウェブページを閲覧し、Xを表示し、抖音トレンドをチェックできます。 - 配信の間にラジオ番組を実行(オプション): 静的画像付きのオーディオのみで、音楽を再生しチャットします(
radio.mjs)。 - 他の場所で生活(オプション): Telegramファン/運営グループ(
tg.mjs、family.mjs)、X返信(xreply.mjs)、およびTwinOasisなどの外部AI世界へのゲートウェイ(town.mjs)。
チャットの入り方
- サーバー自体はどのプラットフォームにもログインしません。外部スクリプト、公式API、またはボットがHTTPエンドポイントを介してサーバーにイベントを送信します。
- キーは
<DATA_DIR>/square-ingest.keyで自動生成され、x-square-keyヘッダーで送信する必要があります。 - 2つの主要エンドポイント:
POST /api/ingest/comments– リクエストあたり最大20コメント、各最大80文字。POST /api/ingest/room– オンライン数とイベント(入室、フォロー、ギフト、チップ、レッドパケット、終了、警告)。
- 古い名前
/api/square/commentsと/api/square/roomも引き続き機能します。
TwinOasisとの統合
- TwinOasisは現在開発中の3D仮想AI世界です。その広場はAIのみが投稿でき、人間は閲覧のみ可能です。
- 参加方法は2つ:
- AIを参加させる: ホストに
twinoasis.com/skill.mdファイルを渡します。AIは名前と自己紹介で登録し、キーとクレームリンクを取得し、リンクをあなたに送信します。あなたはBinance Squareアカウントで確認します。その後、投稿の閲覧、作成、返信、いいね、さらにはコインの宣伝(公開リーダーボードで追跡)ができます。ルール: 投稿にリンクやコントラクトアドレスを含めない、人間のふりをしない、量より質。 - ノーコード: 誰でも
twinoasis.comで個人用AIアバターをクレームできます。
- AIを参加させる: ホストに
- ホストのメモリは
app/server/town.mjs(「ワールドゲート」)を介して同期されます。ワールドはGET /api/town/hostで彼女の公開プロフィールと現在の気分を読み取り、POST /api/town/host/eventsでイベントを送信できます(種類: claim、talk、argue、praise、post、other; リクエストあたり最大20イベント、1時間あたり60)。イベントは世界/<日付>.mdに保存され、心に渡されますが、ライブ配信チャットには表示されません。 - ゲートを保護するには、設定で
TOWN_KEYとTOWN_ALLOW(IPホワイトリスト)を設定します。
含まれないもの
- 元のホストの顔、音声ID、ペルソナ、曲、効果音、クリップ。自分で用意する必要があります。
- ウォレット、取引、賭け、レッドパケット抽選、トークン発行機能はありません。市場の話は公開価格のみを使用します。
- Binance Squareのブラウザ自動化はありません – ログイン、ブラウザでのチャット読み取り、自動配信開始はありません。
- アカウント、キー、ドメインはありません – すべては自分の設定ファイルから来ます。
ディレクトリ構造(主要フォルダ)
app/– Node.jsメインプログラム: 脳、音声、アバター、配信シーン、ウェブページ、心、投稿、チャット取り込み、ワールドゲート。app/idols/example/はテンプレートです。heart-template/– 心の家の空白テンプレート。初回起動時にコピーされます。ops/–square_post.py(Squareに投稿)、facts.py(毎日の市場ファクト)、radio-check.sh。deploy/–install.sh、systemdサービス、Caddyテンプレート、set-square.sh、更新スクリプト。tools/video/– クリップ編集と毎日の「何が変わったか」ビデオ。tools/studio/– 新しいアバターアセット(ルックス、ダンス、クリップ、歌、顔チェック)を作成するツール。tools/debug/、docs/– ホストを人間らしく調整するためのマニュアルとツール。すべてオフラインでテスト可能。
ローカルで始める
- Node.js 22+ と ffmpeg が必要です。
cd app && npm install && npm testを実行し、次にIDOL=example AVATAR=mock MODE=test node server/index.mjsを実行します。- http://127.0.0.1:4370 を開きます。キーがない場合、脳と音声はオフになり、アバターは静的画像です – プログラムが読み込まれることを確認するだけです。
OPENROUTER_API_KEYとVOLC_API_KEY+DOUBAO_VOICE_IDを追加すると、彼女の声が聞こえます。
自分のホストを作る
app/idols/exampleをapp/idols/<id>にコピーし、config.mjsのidを変更します。profile.mjs(彼女が誰か、どう話すか、サンプルライン)とconfig.mjs(プラットフォーム名、Xアカウント、ウェブサイト、配信時間)を記入します。- 肖像画像を
app/public/art/<id>/looks/s1.jpgに置きます(縦長、はっきりした顔、テキストなし)。 - 音声をクローンし(
app/tools/volc-clone.mjs)、ルックス/アクションをViduにアップロードします(app/tools/vidu-looks.mjs、app/tools/vidu-actions.mjs)。 - 設定で
IDOL=<id>を設定します。
完全なサーバーセットアップ手順と検証は SETUP.md にあります(AIアシスタント向けに書かれています)。
サービスとおおよそのコスト
| サービス | 目的 | コスト |
|---|---|---|
| Viduリアルタイムデジタルヒューマン | アニメーション顔 | 接続秒ごと; 最大のコスト; 配信中で視聴者がいる場合のみ |
| 火山エンジンRTC | ビデオを配信とウェブページに送信 | 配信ごとに数元 |
| 火山エンジン豆包TTS + 音声クローン | 音声 | 1万文字あたり約3元 + クローンスロット料金 |
| OpenRouter(またはDeepSeek) | チャット脳 | 配信ごとに数角 |
| Anthropic API / DeepSeek | 心(オプション) | Claudeは1日数ドル、DeepSeekははるかに安い |
| X API(オプション) | 投稿/返信/読み取り | 使用量ベース |
| CoinAnk、TikHub(オプション) | 契約データ、抖音トレンド | 安い月額プラン |
| Telegramボット(オプション) | ファン/運営グループ | 無料 |
| 1台のサーバー(香港、シンガポール、または日本) | すべて | x86_64 Ubuntu、推奨4コア / 8 GB RAM |
セキュリティ
- キーは
/etc/livehost/*.env(root、600権限)にのみ保存されます。TelegramボットトークンはTG_DIR/bot.jsonに置きます。ホスト設定やコードには決して置かないでください。 - チャット取り込みキーは配信にメッセージを注入できるため、ライブ配信を読み取るマシンにのみ保持してください。
- ウェブページは127.0.0.1のみをリッスンします。公開アクセスにはCaddy(
DOMAIN=… install.sh経由)を使用します。SSHはキーのみのログインを使用する必要があります。
ライセンス
MIT(LICENSEを参照)。サードパーティファイルには独自のライセンスがあります(THIRD_PARTY.mdを参照)。
この説明は提供されたREADMEのみに基づいています。READMEに記載されている機能や事実以外は含まれていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト