"公認AIキャラ「AIくさかわ」(本人の声クローン)のショート動画を、台本→安全ゲート→ElevenLabs音声→口パク合成→7PF投稿文→📣DB保存まで1パス生成。Triggers: AIくさかわ/AIくさかわで動画/AI動画作って。NOT: 実写→short-video-create、写真→photo-post"
Resources
1Install
npx skillscat add thiguchi125-debug/claude-config/ai-kusakawa Install via the SkillsCat registry.
SKILL.md
AIくさかわ 動画生成スキル
撮影できない日の代役チャネル。イラストキャラ「AIくさかわ」×本人声クローン×AI明記で、
テキストから投稿可能なショート動画を全自動生成する。
- 合成エンジン正本:
~/.claude/scripts/ai-kusakawa/(設計書は同docs/) - 生成物:
~/outputs/ai-kusakawa/<日付>_<slug>/final.mp4(絶対パス・cwd依存禁止)
前提チェック(起動時に毎回)
~/.config/elevenlabs/api_keyとvoice_idの存在確認。- なければ本番生成不可。
--dev(合成音声プレビュー)しか出せない旨を草川に明示し、
設定手順~/.claude/scripts/ai-kusakawa/docs/SETUP_ELEVENLABS.mdを案内する。
devモード動画は投稿禁止(本人の声ではないため)。
- なければ本番生成不可。
~/.claude/scripts/ai-kusakawa/assets/rendered/に base_green/base_cream/intro/mouth_0-2 の6PNGがあること。
欠けていればassets/templates/render_all.shで再レンダ。
工程(1パス)
Step 1: 台本の用意
- テーマだけ渡された場合: short-video-virality-architect(SOLOモード・35〜50秒・目標45〜50秒・
冒頭名乗りは「AIくさかわです」に置換・voice-dna準拠)で台本生成。 - 台本持ち込みの場合: そのまま使用(60秒超過見込みなら短縮案を先に提示)。
- 冒頭名乗りは実写と区別するため「こんにちは、AIくさかわです。」を標準とする。
Step 2: 安全ゲート(skip禁止)
- content-fact-checker — 数値・固有名詞・計画名を一次情報まで検証
- content-risk-reviewer — 8軸スキャン。災害・選挙期間・他者言及を含む台本は一律HIGH扱い
→ ASK_USERで草川判断。CRITICALは即停止。
指示文にledger: <この動画の保存先>/_ledger.jsonを1行入れる(テーマ内台帳)。後段の7PF投稿文は content-gate-lite 派生モード1回に束ねる - ゲート通過後の台本を草川に提示→承認を得てから生成に進む。
Step 3: 動画生成
# 台本をtxt保存してから
python3 ~/.claude/scripts/ai-kusakawa/generate.py <台本.txt> [--bg green|cream] [--slug <テーマ>]
# ElevenLabs未設定時のプレビューのみ: --dev を付ける(投稿禁止)- 完成後
open <final.mp4>で草川が再生確認できる状態にする。 - 音ズレ・字幕切れ・口パク不同期があれば engine/config.py の該当値を調整して再生成。
Step 4: 7PF投稿文
- sns-content-creator で7PF生成。全PFのキャプション文頭に
「※この動画はAIが生成しています」を固定挿入(削らない・絵文字なし)。 - 動画ホスト3PF(TikTok/Shorts/Reels)=キャプション、
クロスポスト4PF(X/Threads/Facebook/LINE)=動画リンク付きティーザー。
Step 5: 保存
- final.mp4 を Drive
📱動画素材/へミラー(スマホから投稿できるように)。 - 📣SNS投稿管理DB(ds=1bd98deb-)に1ページ保存。タイトル先頭に「🤖🎬」マーカー、
各PF文をセクション化、動画のDriveパスを記載。 - 投稿時のPF別AIラベルON手順
docs/platform_ai_labels.mdを草川に案内。
キャラ画像の差し替え(実キャラ投入時)
nano-banana生成画像(assets/character/prompt_cards.md 参照)が届いたら:
- 画像を
assets/character/に配置し、必ずReadで目視確認 - base用に合成(口領域を空けた1080×1920)→
assets/rendered/base_*.png差し替え - 口3態を
MOUTH_SIZEにクロップ→mouth_0/1/2.png差し替え engine/config.pyのMOUTH_POS/MOUTH_SIZEを実キャラの口位置に合わせて調整- E2E再実行(
python3 -m unittest tests.test_e2e_dev)+フレーム抽出目視
📌 恒久ガードルール
- AI明記4原則(絶対): ①動画冒頭1.5秒の明記カード ②キャラ横の常時小ラベル
③キャプション文頭「※この動画はAIが生成しています」 ④実写の本人動画と誤認させる編集禁止。
いずれもトリミング・削除して投稿しない。 - 選挙運動用への流用は個別リスクレビュー必須(公選法。content-risk-reviewerでHIGH扱い→本人判断)。
- devモード(合成音声)動画は内部プレビュー専用。対外投稿禁止。
- 安全ゲート(fact-checker→risk-reviewer)はいかなる短縮経路でもskip禁止。
- 発信物に絵文字を使わない(DB管理用タイトルの🤖🎬マーカーのみ例外)。
- 他議員の氏名を台本に載せない(feedback_no_other_council_members_names)。