ワンクリックで
tsukuyomi-setup
つくよみちゃんボイス(COEIROINK v2)セットアップ・テスト・口パク設定
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
つくよみちゃんボイス(COEIROINK v2)セットアップ・テスト・口パク設定
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | tsukuyomi-setup |
| description | つくよみちゃんボイス(COEIROINK v2)セットアップ・テスト・口パク設定 |
| user_invocable | true |
COEIROINK v2 エンジンを使用したつくよみちゃんTTSのセットアップ、テスト、口パクマスコットとの連携設定を行う。
スキル開始時に、以下のタスクを TaskCreate で一括作成 してからステップを順に実行する。
各ステップの開始時に TaskUpdate(status: "in_progress")、完了時に TaskUpdate(status: "completed") で進捗を更新する。
スキップしたステップも理由をdescriptionに追記して completed にする。
作成するタスク一覧(subject / activeForm):
| Step | subject | activeForm |
|---|---|---|
| 0 | 前提条件をチェック | 前提条件をチェック中 |
| 1 | COEIROINK v2 の状態を確認 | COEIROINK v2 を確認中 |
| 2 | つくよみちゃんスピーカーを確認 | スピーカーを確認中 |
| 3 | TTS config を設定 | TTS config を設定中 |
| 3.5 | グローバルフックをデプロイ | フックをデプロイ中 |
| 4 | フォールバック画像をセットアップ | フォールバック画像をセットアップ中 |
| 5 | モデルディレクトリをセットアップ | モデルをセットアップ中 |
| 6 | TTS テストを実行 | TTS をテスト中 |
| 7 | マスコットアプリを起動テスト | マスコットアプリをテスト中 |
| 8 | settings.json を確認 | settings.json を確認中 |
| 9 | グローバル CLAUDE.md を確認 | CLAUDE.md を確認中 |
依存関係: Step 0 が全ステップをブロックする(addBlockedBy で設定)。それ以降は順次実行。
例:
TaskCreate(subject: "前提条件をチェック", activeForm: "前提条件をチェック中", description: "Python3, Flutter, COEIROINK v2 の存在確認")
TaskCreate(subject: "COEIROINK v2 の状態を確認", activeForm: "COEIROINK v2 を確認中", description: "ポート50032の応答確認")
...(残りも同様に作成)
// Step 0 開始
TaskUpdate(id: "1", status: "in_progress")
// ... チェック実行 ...
TaskUpdate(id: "1", status: "completed")
// Step 1 開始
TaskUpdate(id: "2", status: "in_progress")
// ...
最初にプラットフォームを判定し、以降のコマンドを分岐する:
case "$(uname -s)" in
MINGW*|MSYS*|CYGWIN*) echo "WINDOWS" ;;
Darwin*) echo "MACOS" ;;
*) echo "LINUX" ;;
esac
各ツールがインストールされているか確認する。見つからないものがあれば、ユーザーに「インストールしていますか?」と確認してから次に進む。
Python 3 チェック:
python3 --version 2>/dev/null && echo "OK" || echo "NOT_FOUND"
見つからない場合 → ユーザーに「Python 3 がインストールされていないようです。インストールしていますか?」と聞く。
Flutter チェック:
which flutter 2>/dev/null && echo "OK" || echo "NOT_FOUND"
見つからない場合 → ユーザーに「Flutter SDK がインストールされていないようです。インストールしていますか?(マスコットアプリのビルドに必要です)」と聞く。
(注: flutter --version はSDK初期化で遅いため which で存在チェックのみ行う)
COEIROINK v2 チェック:
まず起動状態を確認し、次にアプリの存在を確認する:
# 1. 起動しているか
curl -s --connect-timeout 2 http://localhost:50032/v1/speakers > /dev/null 2>&1 \
&& echo "RUNNING" || echo "NOT_RUNNING"
macOS のみ — アプリ存在チェック:
ls /Applications/COEIROINKv2.app > /dev/null 2>&1 \
&& echo "INSTALLED" || echo "NOT_INSTALLED"
Windows: アプリ存在チェックは不要(インストール先が環境依存のため)。ポートチェックのみで判定する。
start https://coeiroink.com/downloadopen https://coeiroink.com/downloadxdg-open https://coeiroink.com/download判定ルール:
すべての前提条件が揃っていることを確認してから Step 1 に進む。
curl -s --connect-timeout 2 http://localhost:50032/v1/speakers > /dev/null 2>&1 \
&& echo "COEIROINK v2 is running" \
|| echo "COEIROINK v2 is NOT running"
起動していない場合:
python3 .claude/skills/tsukuyomi-setup/setup_helper.py check-speakers
つくよみちゃんのデフォルトスタイル:
| スタイル | styleId |
|---|---|
| れいせい | 0 |
cat > .claude/hooks/tts_config.toml << 'TOML'
# Tsukuyomi via COEIROINK v2
engine = "coeiroink"
speaker_name = "つくよみ"
TOML
~/.claude/hooks/ にTTSスクリプトと設定を配置する。
macOS / Linux: ユーザーに「シンボリックリンクとコピー、どちらにしますか?」と聞く。
Windows: シンボリックリンクは権限の問題があるため、コピーを使用する。
選択肢A: シンボリックリンク(macOS / Linux 推奨)
リポジトリのファイルを直接参照するため、更新が自動反映される:
mkdir -p ~/.claude/hooks ~/.claude/skills
# フック
ln -sf "$(pwd)/.claude/hooks/mascot_tts.py" ~/.claude/hooks/mascot_tts.py
ln -sf "$(pwd)/.claude/hooks/tts_config.toml" ~/.claude/hooks/tts_config.toml 2>/dev/null || \
cp .claude/hooks/tts_config.toml ~/.claude/hooks/tts_config.toml
# スキル
for skill in tts mute; do
ln -sf "$(pwd)/.claude/skills/$skill" ~/.claude/skills/$skill
done
選択肢B: コピー(Windows はこちらを使用)
リポジトリに依存しない独立したコピーを作成する:
mkdir -p ~/.claude/hooks ~/.claude/skills
# フック
cp .claude/hooks/mascot_tts.py ~/.claude/hooks/mascot_tts.py
cp .claude/hooks/tts_config.toml ~/.claude/hooks/tts_config.toml 2>/dev/null || true
# スキル
for skill in tts mute; do
cp -r ".claude/skills/$skill" ~/.claude/skills/
done
確認:
python3 ~/.claude/hooks/mascot_tts.py --emotion Gentle "グローバルフックのテスト"
Windows: リリース exe にアセットがバンドル済みのため、このステップはスキップする。
macOS / Linux:
utsutsu2d モデル (.inp) が既にある場合はこのステップをスキップする:
ls mascot/assets/models/blend_shape/*.inp 2>/dev/null || ls mascot/assets/models/parts/*.inp 2>/dev/null
.inp が無い場合のみ、フォールバック用の口パク画像をダウンロードする:
cd mascot && make setup-fallback
これにより mascot/assets/fallback/mouth_open.png と mouth_closed.png がダウンロードされ、マスコットはこの2枚絵で口パクする。
Windows: リリース exe にモデルがバンドル済みのため、このステップはスキップする。
macOS / Linux(gh CLI あり):
cd mascot && make setup-models
Windows / gh CLI なし:
mkdir -p mascot/assets/models/blend_shape mascot/assets/models/parts
cp -n mascot/config/examples/blend_shape.toml mascot/assets/models/blend_shape/emotions.toml 2>/dev/null || true
cp -n mascot/config/examples/parts.toml mascot/assets/models/parts/emotions.toml 2>/dev/null || true
python3 .claude/skills/tsukuyomi-setup/setup_helper.py download-models
utsutsu2d モデルファイルがある場合(リネーム不要、emotions.toml の [model] file でファイル名を指定済み):
cp /path/to/tsukuyomi_blend_shape.inp mascot/assets/models/blend_shape/
# または
cp /path/to/tsukuyomi_parts.inp mascot/assets/models/parts/
# プロジェクトのディスパッチャ経由
python3 .claude/hooks/mascot_tts.py --emotion Gentle "つくよみちゃんのテストです"
python3 .claude/hooks/mascot_tts.py --emotion Joy "テスト成功だよ"
# グローバルhook経由
python3 ~/.claude/hooks/mascot_tts.py --emotion Gentle "グローバルフックのテスト"
各テストで:
~/.claude/utsutsu-code/mascot_speaking が一時的に作成されることmacOS:
cd mascot && flutter run -d macos
Windows:
リリース済みの exe を使用する。Flutter ビルド環境は不要。
python3 .claude/skills/tsukuyomi-setup/setup_helper.py check-release
start <URL>open <URL>xdg-open <URL>utsutsu-code-windows.zip をクリックしてダウンロードutsutsu_code.exe をダブルクリックして起動アプリが起動したら、/tts マスコット動いてるよ で口パク・吹き出しの動作確認を案内する。
確認ポイント:
~/.claude/settings.json)Stop hookはグローバル設定に追加する。プロジェクト設定とグローバル設定の両方にStop hookがあると二重起動するため、グローバルにのみ設定すること。プロジェクト設定(.claude/settings.json)に hooks.Stop がある場合は削除する。
グローバル設定にStop hookを追加する:
cat ~/.claude/settings.json
hooks.Stop セクションが無い、または osascript のみの場合は、上記と同じStop hookを追加する。
注意点:
timeout: 5000 を必ず設定する(TTSがClaude Codeをブロックしないように)Windows のパス解決:
hook runner は ~ を展開しない。以下の優先順位で対処する:
bash -c 'python3 ~/.claude/hooks/mascot_tts.py ...' でラップ(Git Bash 環境前提)python3 C:/Users/<username>/.claude/hooks/mascot_tts.py ... と絶対パスを使う(PowerShell でも Git Bash でも動く)絶対パスの取得:
python3 -c "import os; print(os.path.expanduser('~').replace(chr(92), '/'))"
~/.claude/CLAUDE.md にTTS指示が無いと、Claude Codeが作業開始・完了時にマスコットを呼ばない。
確認:
grep -q "mascot_tts.py" ~/.claude/CLAUDE.md 2>/dev/null && echo "OK" || echo "NOT_FOUND"
無い場合、以下の内容を ~/.claude/CLAUDE.md に追記するようユーザーに案内する:
+ 作業開始時と作業完了時に `python3 ~/.claude/hooks/mascot_tts.py --emotion KEY "要約(30文字以内)"` でつくよみちゃんに読み上げさせる。感情キーは `mascot/emotions.toml` を参照(Gentle=通常, Joy=成功, Blush=照れ, Trouble=エラー, Singing=お祝い)。例: 開始時 `python3 ~/.claude/hooks/mascot_tts.py --emotion Gentle "透過の修正を始めます"` 、完了時 `python3 ~/.claude/hooks/mascot_tts.py --emotion Joy "コミット完了しました"` 。COEIROINK v2未起動時はosascript通知にフォールバック。要約にアルファベットは使わず、日本語かカタカナ英語で書く(例: commit→コミット、README→リードミー)
重要: ~/.claude/CLAUDE.md はユーザーのプライベート設定なので、勝手に書き換えず「この内容を追記してください」と案内する。
COEIROINK v2 が起動していない
lsof -i :50032netstat -an | findstr 50032つくよみちゃんが見つからない
音声が再生されない
which afplay で afplay が使えるか確認mascot_tts.py が powershell 経由で再生する(追加ツール不要)マスコットが口パクしない
ls ~/.claude/utsutsu-code/cat ~/.claude/logs/mascot_tts.logフォールバック画像が表示されない
ls mascot/assets/fallback/ で画像があるか確認cd mascot && make setup-fallback を実行正のソースはリポジトリ内。macOS/Linux では ~/.claude/ にシンボリックリンク、Windows ではコピーを置く。
| ファイル | 説明 |
|---|---|
.claude/hooks/mascot_tts.py | 汎用TTSディスパッチャ |
.claude/hooks/tts_config.toml | TTS設定(speaker_name等) |
.claude/hooks/tts_config.example.toml | 設定例 |
mascot/config/emotions.toml | 感情キー定義 |
mascot/config/examples/blend_shape.toml | ブレンドシェイプモデル設定例 |
mascot/config/examples/parts.toml | パーツモデル設定例 |
mascot/assets/fallback/ | フォールバック口パク画像 |
mascot/assets/models/ | utsutsu2dモデルディレクトリ |
.claude/skills/ | スキル定義(コミット対象) |
| リンク | リンク先 |
|---|---|
~/.claude/hooks/mascot_tts.py | → .claude/hooks/mascot_tts.py |
~/.claude/hooks/tts_config.toml | → .claude/hooks/tts_config.toml |
~/.claude/skills/* | → .claude/skills/* |
Windows の場合: シンボリックリンクではなくコピーになるため、リポジトリ側を更新した場合は再度 /tsukuyomi-setup の Step 3.5 を実行してコピーを更新する。
| ターゲット | 内容 |
|---|---|
make setup | モデル + フォールバック画像のダウンロード |
make clean | ビルド + シグナル削除(安全) |
make clean-assets | モデル・画像を削除(要 make setup で再取得) |
make clean-hooks | グローバルフックを削除(要 /tsukuyomi-setup で再作成) |
Windows: make が使えないため、各ステップの curl/python3 コマンドを直接実行する。
/mascot-run — マスコットアプリ起動(セットアップ後の再起動に)/tsukuyomi-cleanup — クリーンアップ/tts-debug — TTS問題の診断/tts — TTS手動実行COEIROINK v2: つくよみちゃん
hook経由の子マスコットspawn/dismissテスト
Windows配布用zipビルド (exe + モデル + emotions)
マスコットアプリとCOEIROINKの起動(セットアップ済み前提)
ターミナル音ゲー - つくよみちゃんと一緒にリズムゲーム
ソシャゲ風カットイン演出 - 感情に応じたSVG背景付きフルスクリーン演出
つくよみちゃんTTS・マスコット関連リソースのクリーンアップ