Communitygithub.com

animation-studio

アイデアやスクリプトから完成したアニメーションビデオ(聖書物語、テクノロジー/プログラミング、数学/教育、一般的なストーリー/広告)を、選択したスタイル(スティックマン、ホワイトボード、フラット2D、モダンベクター、絵本、トゥーン3D、シネマティック3D)とフォーマット(9:16、16:9、1:1、4:5)で、コンピューターが安全にレンダリングできることを確認した上で制作します。

animation-studio とは?

animation-studio は、アイデアやスクリプトを完全なアニメーションビデオに変換するための AI エージェントスキルです。聖書物語、テクノロジー解説、数学教育、一般的なストーリーや広告など、様々なコンテンツに対応し、スティックマン、ホワイトボード、フラット2D、モダンベクター、絵本、トゥーン3D、シネマティック3Dなど多様なスタイルを提供します。Claude CodeなどのAIエージェント上で動作し、コンテンツパック、スタイル、レンダリングエンジンをモジュール式に組み合わせます。パイプラインは、ユーザーからの要件収集、ハードウェアチェック、スクリプト作成、音声生成、レンダリング、編集プロジェクトの出力までをカバーし、Piper TTSによるオフライン音声合成やブランドキット機能も備えています。このスキルは、エージェントがレンダリング前に必ずハードウェアチェックを実行し、システムリソースに応じて適切なエンジンと品質を選択することで、安全で効率的なアニメーション制作を実現します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

animation-studio: アイデア → スクリプト → 音声 → 安全なレンダリング → MP4

このファイルはルーターです。4つの大きな質問をし、ハードウェアを確認してから、ジョブに必要なファイルのみを読み込みます: content/<pack>.md(作成と正確性のルール)+ styles/<style>.md(見た目;そのJSONブロックがエンジンが読み取るプリセット)+ engines/<engine>/README.md(レンダリング方法)。共有ツールは shared/ にあります。

スキルフォルダ (SKILL_DIR) を見つける = このファイルを含むフォルダ。Claude Code はこれをスキルのベースディレクトリとして表示します。他のエージェント:読み込むように指示された SKILL.md のフォルダ。常に "$SKILL_DIR/shared/..." のようにツールを呼び出します(パスにスペースが含まれることが多いため引用符で囲みます)。Python 3.10+ (python3、python、または py -3) を見つけて PY と呼びます。setup_check.py --install の後は、それが出力する venv python を使用します。

タスクリストでユーザーに情報を伝え続けてください。すべての成果物は、ユーザーの作業フォルダ内の videos/<slug>/ に書き込みます(slug = 小文字ハイフン区切りの短い名前)。平易な言葉で説明してください。

このバージョンで動作するもの

パートステータス
コンテンツパック✅ 聖書 (content/bible.md) · ✅ テクノロジー (content/tech.md) · ✅ 一般的なストーリー/広告 (content/general-story.md) · ✅ 数学/教育 (content/education-math.md)
スタイルエンジンA: ✅ スティックマン · ✅ フラット2D · ✅ 絵本 · ✅ ホワイトボード · ✅ モダンベクター — エンジンB: ✅ Manim (+ ホワイトボード / モダンベクターカラー) — エンジンC: ✅ トゥーン3D — エンジンD: ✅ シネマティック3D
エンジン✅ A py2d (Python 2D) · ✅ B Manim (LaTeX オプション) · ✅ C トゥーン3D (低速: ティア制限あり) · ✅ D Blender (Eevee プレビュー、Cycles 最終出力は POWER)
フォーマット✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
キャプション✅ 常に .srt + スタイル付き焼き込み、単語ハイライト (shared/captions.py)
音声✅ ユーザーの録音 · ✅ Piper TTS (shared/voice.py、無料、オフライン)
音楽/SFX✅ 合成 (shared/sound.py) · ✅ ユーザー自身のライセンス済み音楽ファイル
エディタプロジェクト✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve (FCPXML) · ✅ Blender VSE · 🧪 OpenShot (実験的) · ✅ エディタパック (CapCut、任意のエディタ)
ブランドキット✅ 保存されたブランド (ユーザーフォルダ)、透かし、ロワーサード、ブランドエンドカード、任意のスタイルへのブランドカラー適用 (shared/brand.py、docs/branding.md)
ソフトウェアインストール✅ 検証済みの単一レジストリ (shared/tools.yaml) と Windows、macOS、各Linuxファミリ向けのコマンド。承諾なしには決してインストールしません

ユーザーが 🚧 の項目を選んだ場合は、その旨を明確に伝え、最も近い ✅ のオプションを提案し、それでもスクリプトパッケージは提供します。

ステージ1: 情報収集 (AskUserQuestion、1回の呼び出しにつき最大4質問;既に回答済みのものはスキップ)

呼び出し1

  1. コンテンツ: 聖書物語 · テクノロジー/プログラミング · 数学/教育 · 一般的なストーリー/広告
  2. スタイル: まずコンテンツのデフォルトを提案し (聖書 → 絵本 · テクノロジー → モダンベクター · 数学 → Manim · 一般 → フラット2D)、その他2~3のスタイルを提案。素早く軽い作品にはスティックマンを提案。
  3. フォーマット (複数選択可): 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/プロジェクター) · 1:1 1080x1080 · 4:5 1080x1350。PY shared/formats.py table でプラットフォーム表を表示。
  4. 品質: プレビュー (高速、720p) · 本番 (1080p)。最初は必ず5秒のプレビューを推奨。

呼び出し2 (該当するもののみ) 0. ブランディング? なし · 保存されたブランドを使用 (PY "$SKILL_DIR/shared/brand.py" list で一覧表示) · 新しいブランドを作成。新規作成: 各フィールドを一度にひとつずつ尋ね、すべてオプショナル (名前、タグライン、ウェブサイト、ロゴファイル、電話番号、WhatsApp、メール、ソーシャルメディア、色、OFLフォント、CTA) で、それぞれを brand.py set で保存 (電話/メール/URL/色の形式を検証);ロゴは brand.py logo、フォントは brand.py font。連絡先情報を発明しないこと: ユーザーが提供したもののみ (またはユーザー自身のウェブサイトからの確認済みのもの)。次に、docs/branding.md のデフォルト付きのオプション: 透かし (広告/プロモーションON;聖書、テクノロジー、数学はOFF)、コーナー/サイズ/不透明度/ロゴまたはロゴ+名前 · ロワーサード (いつ、どのくらいの長さ) · エンドカード CTA + 連絡先付き (広告/プロモーションON) とその長さ · スタイルをブランドカラーに変更 (はい/いいえ)。 5. トピック/ストーリーと長さ (30秒 · 60秒 · 90秒 · 2~3分;他の長さは「その他」)。コンテンツパックは独自の質問を追加します (聖書: オーディエンス)。 6. 音声: 自分の録音 (デフォルト) · Piper TTS (無料、オフライン;デフォルト音声 en_US-ljspeech-medium、パブリックドメインデータ)。Piper は一度だけインストール (setup_check.py --tts --install) と音声ダウンロード (voice.py --download、約60MB) が必要:最初に確認。 7. キャプションを焼き込む? 9:16 と 1:1 は「はい」を提案 (ほとんどの人がミュートで視聴)、16:9 は「いいえ」。.srt ファイルは常に作成されます。 8. エンドカード「animation-studio で作成」? デフォルトはオフ;オプトインのみ。透かしを追加しないでください。 9. 出力: 完成した MP4 · エディタ用プロジェクトファイル · 両方。

エディタ選択 (出力にプロジェクトファイルが含まれる場合のみ): PY "$SKILL_DIR/shared/tools.py" status --kind editor を実行し、番号付きリスト全体を表示 (✅ インストール済み+バージョン · ❌ 未インストール · ⚠️ ここではサポート外、例: ヘッドレスサーバー上のデスクトップエディタ)。ユーザーは正確に1つを選択します (AskUserQuestion: 最大4つのオプション、インストール済みエディタを最初に;残りは「その他」で文字入力可能)。選択が ❌ の場合、PY "$SKILL_DIR/shared/tools.py" flow <editor> をそのまま表示し (概要、このOS/ディストリビューション/シェル用のインストールコマンド、公式リンク)、次のように尋ねます: 今すぐインストール (実行します) · 自分でインストールするので、"完了"と言います · 別のエディタを選ぶ · スキップ、MP4 + エディタパックを提供。「今すぐインストール」→ tools.py install <editor> --yes (Windows で権限プロンプトが表示される場合や、手順に sudo が必要な場合は事前に伝えます;sudo 手順は ! sudo ... としてユーザーに委ねます)。インストールまたは「完了」の後: status を再度実行し、✅ を確認して、中断したところから続行します。CapCut およびサポート外のエディタにはエディタパックが提供されます。詳細: docs/editors.md。

回答を videos/<slug>/brief.md に記録します。

ステージ2: ハードウェアチェック (レンダリング前、決してスキップしない)

PY "$SKILL_DIR/shared/hwcheck.py" を実行し、その表とティアを1つの短いメッセージで表示します。また、システムプロファイル (OS + バージョン、WSL、Apple Silicon、Linux ディストリビューションとファミリ、パッケージマネージャ、シェル、ディスプレイ) を保存し、後続のすべての手順で読み取ります。表示または実行するすべてのインストールコマンドは、PY "$SKILL_DIR/shared/tools.py" cmd <tool> から取得します (このOS、ディストリビューション、シェルに一致);記憶から入力しないでください。ディスプレイなし (ヘッドレス) → レンダリングのみ:エディタアプリなし。

ティアルールエンジン制限
LITERAM < 12 GB または CPU スレッド < 4A, B720p のみ;トゥーン3D と Blender はブロック (静止画を提案)
STANDARD上記の間A, B フル;C は5秒プレビューのみ (それ以上は確認+再開が必要);D Eevee は5秒まで、720p、低サンプルレンダリングジョブ1つ;ワーカー数 = スレッド数 − 2
POWERRAM ≥ 32 GB + 専用 GPU ≥ 6 GB VRAMすべて、Cycles は GPU 上ワーカー数 = スレッド数 − 1
ラップトップがバッテリー駆動の場合、1分以上のレンダリングの前に警告します。空きRAMが25%未満の場合、大きなアプリを閉じるようユーザーに依頼します。

ステージ3: エンジンの選択 (スタイル → エンジン)、その後ファイルを読み込む

スタイルエンジン読み込み
スティックマン、フラット2D、絵本、ホワイトボード、モダンベクターA engines/py2dstyles/<style>.md、engines/py2d/README.md
Manim (数学、アルゴリズム、図);ホワイトボード/モダンベクターカラーもここで動作B engines/manimstyles/manim.md (または選択したスタイル)、engines/manim/README.md
トゥーン3DC engines/toon3d (story.js + world.js を含むプロジェクトフォルダ)styles/toon-3d.md、engines/toon3d/README.md
シネマティック3DD engines/blender (scene.json、Z up)styles/cinematic-3d.md、engines/blender/README.md
ティアがエンジンをブロックする場合、理由を説明し、次のオプションを提案します:同じストーリーをエンジンAのスタイルで、または数枚の静止画のみ。ユーザーは明確な警告の後でのみ制限をオーバーライドできます (「これによりコンピューターがフリーズしたり過熱したりする可能性があります。先に作業を保存してください」)。

次に content/<pack>.md を読み込み、そのリサーチと作成段階に従います。

ステージ4: スクリプトパッケージ (コンテンツパックのルール)、その後 STOP

すべてのパックが提供するもの: コピー可能なブロック内のナレーション (パックが別途指定しない限り、約 3.7 語/秒) と単語数および長さ → script.txt;ショットリスト → shotlist.md;パックの追加要素 (聖書: 忠実度テーブル、学習ノート、説明);および最後にソース。聖句、引用、API、フラグ、バージョン、事実を決して発明しないでください:それらを取得または実行し、そうでなければ 未検証 とマークします。 その後、ナレーションを引き継ぎ (ユーザーの録音: mp3/wav、音楽なし)、音声を待ちます。ユーザーがスクリプトのみを希望した場合、ここで停止します。

ステージ5: 制作

  1. セットアップ: PY "$SKILL_DIR/shared/setup_check.py" --engine <engine> → ✅/❌ の表。不足しているツール (Blender、Manim、Node、LaTeX、Inkscape...) はエディタと同じフローを使用します:tools.py flow <tool> --for engine を表示し、今すぐインストール · 自分でインストールするので、「完了」と言います · 別のスタイルを選ぶ · スキップ (スクリプト、ショットリスト、参考資料のみ);その後再チェック。Python パッケージはスキル自身の .venv にのみインストールします (--install、承諾後)。
  2. 音声 + タイミング。 Piper: PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85 (正確なフレーズタイム、推測なし)。ユーザーの録音: PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work。両方とも work/words.json + work/phrases.json を書き込みます。
  3. シーン: エンジンA: videos/<slug>/scene.json;エンジンB: from studio import * で始まる Manim .py シーン;エンジンC: videos/<slug>/story.js + world.js;エンジンD: Blender scene.json (形式はエンジンのREADMEに記載)。フレーズごとに1ショット;顔、テキスト、主要プロップは、選択したすべてのフォーマット (shared/formats.md) のセーフゾーン内に保ちます。
  4. ルックチェック: フォーマットごとに3~6枚の静止画をレンダリング (--frames 0,60,...)、コンタクトシートを作成 (PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>)、それを表示し、コンテンツパックのルール (聖書: 敬意 + 暴力) に照らして確認します。レンダリング前に修正します。
  5. 見積り: PY "$SKILL_DIR/shared/estimate.py" --engine <engine> scene.json --fmt <fmts> --quality <q> (Manim: --engine manim scene.py --name SceneName --timing work/phrases.json;トゥーン3D: --engine toon3d <project folder>;Blender: --engine blender scene.json) → DECISION: OK レンダリング · ASK ユーザーに「約X分、Y GB」と伝え、尋ねます (5秒プレビューを提案) · REFUSE ディスク容量不足 (見積りの2倍必要):ユーザーに空き容量を増やすよう依頼します。
  6. レンダリング は一度に1フォーマットずつ (2つのジョブを同時に実行しない)。長時間のレンダリングはバックグラウンドで実行;エンジンは低優先度で実行され、再実行時に最後に保存されたフレームから再開し、空きRAMが15%未満になると自身を一時停止します (終了コード4)。ユーザーは作業を続けられることを伝えます。
  7. 音声: 音楽 PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <video length> --mood warm|calm|tense|tech|playful、SFX ... sfx sfx.wav --seconds <len> --cues cues.json (ポップ、ウィッシュ、タイプ、チャイム、サクセス、スウェル、雨、ソフトサンダー)、その後 PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len> (音楽は音声の下で決して −6 dB より大きくならない;音声が多い、または敬意を表すビデオでは −9 から −12)。ユーザー提供の音楽ファイルは music.wav を置き換えます:権利を所有していることを一度だけ確認します。 7b. ブランド (選択された場合): レンダリング前に色を変更 (brand.py recolor <brand> --style <style> --out style_<brand>.md、これをシーンのスタイルとして使用);レンダリング後、brand.py apply <brand> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] を使用し、以降は branded_<fmt> を使用します。エンドカードがある場合は、--seconds <new length> で音声をミックスします。
  8. キャプション + 仕上げ + QA: PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <style> --fmt <fmt> --quality <q> (→ .srt + _<fmt>.ass)、その後 PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Title>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Title>_<fmt>.ass] --srt out/<Title>.srt [--end-card オプトインの場合のみ]。QA 行 (黒/静止部分、約 −14 LUFS) を確認し、_qa.jpg シートを確認します。
  9. エディタプロジェクト (選択された場合): PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<name>,..." --final out/<Title>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Title>.srt --out videos/<slug>/editor その後 ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>。そのチェック表を表示します (タイミングが MP4 と一致する必要があります;Kdenlive/Shotcut は2秒の melt レンダリングも取得します)。開き方をユーザーに伝えます (docs/tools/.md)。
  10. MP4、.srt、エディタプロジェクト (ある場合)、および各ショットが何を示すかを1行で説明したものを提供します。オプションのエンドカードは、ユーザーがオプトインした場合のみ。

安全ルール (常に)

  • ステージ2とステップ5 (見積り) なしにレンダリングを開始しないでください。常に「最初に5秒のプレビュー」を提案します。
  • ティア制限を尊重します;明確な警告と承諾の後でのみオーバーライドします。
  • 一度に1つの重いジョブのみ。ユーザーのファイルを尋ねずに削除または上書きしないでください (既存のフレームフォルダへの再レンダリングは再開されます;--force は上書きするので、確認してください)。
  • ツールが不足している場合、またはユーザーがインストールを拒否した場合でも、スクリプト、ショットリスト、参考資料は提供します。

クレジットとライセンス

コード: MIT (LICENSE 参照)。バンドルされているサードパーティコードは THIRD_PARTY_NOTICES.md にリストされています。このスキルにはフォント、音楽、画像はバンドルされていません:システムフォントと合成音を使用します。ユーザーのビデオはユーザーのものです:強制的な透かしはありません;エンドカードはオプトインです。

関連スキル