AI VTuber の起動を自動にする:Claude Code に頼んだ指示と毎回の起動手順

AI VTuber「ATW」を、配信のたびにダブルクリックだけで起動できるようにした手順です。Claude Code に頼んだ指示と、作ってもらったスクリプト、毎回の起動手順、困ったときの見るところを載せます。

手順10:毎回の起動を自動にする

配信のたびに、5つを決まった順番で起動します。順番を間違えると動きません(たとえば VOICEVOX を起動する前にボットを起動すると、ボットがすぐ止まります)。

  1. AWS にログインする(VS Code の外の PowerShell で。ログインは最大12時間で切れます)
  2. VOICEVOX を起動する
  3. 立ち絵を表示するサーバーを起動する
  4. OBS を起動し、立ち絵が映っているか確認する
  5. ボットを起動する

ここまでは手で順番に起動していましたが、毎回は大変なので、こう頼みました。

① 私の指示

手順を最大限に自動化して。

② Claude Code がしたこと

  • ダブルクリックだけで全部を順番に起動する 起動.cmd、全部を止める 停止.cmd を作った
  • 中身の start.ps1 は、VOICEVOX のエンジン(画面なし)→ 立ち絵サーバー → OBS → ボット、の順に起動し、起動済みのものは飛ばす。ボットが止まったら10秒後に自動で起動し直す
  • AWS のログインが切れているときだけ、ログイン用の画面を開く
  • トークンは、手順書やスクリプトには書かず、secrets.ps1 から読み込む形にした

start.ps1 の中心部分です(途中を省いています)。

function Test-Url($url) {
  try { Invoke-WebRequest -UseBasicParsing -TimeoutSec 2 $url | Out-Null; return $true } catch { return $false }
}
function Wait-Until($what, $seconds, [scriptblock]$check) {
  $end = (Get-Date).AddSeconds($seconds)
  while ((Get-Date) -lt $end) {
    if (& $check) { Write-Host "  OK: $what" -ForegroundColor Green; return }
    Start-Sleep -Seconds 2
  }
  throw "$what が $seconds 秒たっても準備できませんでした"
}

# 3. 立ち絵サーバー(画面は出さず裏で動かす)
if (-not (Test-Url 'http://127.0.0.1:3000/status.json')) {
  Start-Process python -ArgumentList "`"$here\serve.py`"" -WorkingDirectory $here -WindowStyle Hidden
}
Wait-Until '立ち絵サーバー' 30 { Test-Url 'http://127.0.0.1:3000/status.json' }

# 5. Twitch ボット(止まったら10秒後に起動し直す。終わるときは Ctrl + C)
while ($true) {
  python "$here\twitch_bot.py"
  Write-Host "ボットが止まりました。10秒後に起動し直します(やめるときは Ctrl + C)" -ForegroundColor Yellow
  Start-Sleep -Seconds 10
}

補足:自分のパソコンの中のサーバーを確かめるときは 127.0.0.1

最初は、立ち絵サーバーの確認先を http://localhost:3000 と書いていました。すると、Windows PowerShell 5.1 では最初の接続に2秒以上かかり、待ち時間(2秒)で毎回「失敗」になって、黒い画面が止まりました。127.0.0.1 に直すと0.3秒で通りました。頼むときは、こう書くと避けられます。

PowerShell 5.1 で自分のパソコンの中のサーバーを確認する処理は、localhost ではなく 127.0.0.1 で書いて。
起動したあと、確認が通るところまで実際に試して。

毎回の起動手順(そのまま使える)

ふだんはこれだけ

フォルダを開いて、次のファイルをダブルクリックします。

やりたいことダブルクリックするファイル
起動する(配信は OBS の「配信開始」を自分で押す)起動.cmd
起動して、配信もすぐ始める起動して配信.cmd
全部止める停止.cmd
  • 起動.cmd を開くと、黒い画面に「1/5」〜「5/5」の進み具合が出ます。「ゼロスBot接続完了」と出たら準備完了です。この黒い画面は配信中、閉じません
  • 終わるときは、黒い画面で Ctrl + C を押してから 停止.cmd をダブルクリックします
  • 起動して配信.cmd は、OBS が起動するとすぐ配信が始まります。ふだんは 起動.cmd を使います

試して動いたのは 起動.cmd と 停止.cmd です。AWS のログインが切れたときの動きと、起動して配信.cmd は、まだ試していません。

手で起動するとき

順番何を起動するかどこで
1AWS にログイン(aws login --profile プロファイル名)Windows PowerShell(VS Code の外)
2VOICEVOXスタートメニュー
3立ち絵サーバー(python serve.py)VS Code のターミナル①
4OBS(立ち絵が映っているか確認)スタートメニュー
5ボット(. .\secrets.ps1 のあと python twitch_bot.py)VS Code のターミナル②

5 の最初の . .\secrets.ps1 は、トークンを読み込む命令です。最初の「.」と空白を忘れないでください。

困ったとき

症状見るところ
「[エラー]」と出て、Token・credential・expired などの文字があるAWS のログインが切れている。やり直す
ボットの起動直後に URLError や 10061 と出て止まる、声が出ないVOICEVOX が起動していない
立ち絵が映らない立ち絵サーバーが止まっていないか確認する。OBS のブラウザソースを右クリック →「プロパティ」→「現在のページのキャッシュを更新」
チャットに書いても反応しない黒い画面に「接続完了」が出ているか確認する。出ていれば send_test.py で試して、ボット側か Twitch 側かを切り分ける
OBS に「Twitch のチャンネル情報の読み込みに失敗(401)」と出るOBS の「設定 → 配信」で、アカウントの接続を解除して、もう一度接続する

この記事のつづき

コメント

タイトルとURLをコピーしました