Communitygithub.com

krishnagoswami52/stickman

コードから映画的なスティックマンストーリービデオをMP4として生成するスキル。ElevenLabsの音声スクリプト、無料の組み込み音声(ElevenLabs不要)、YouTubeタイトル、サムネイルプロンプトも提供します。/stickman やスティックマンアニメーションのリクエストに使用します。

stickman とは?

このスキルは、ユーザーが指定したトピックを基に、完全にコードからレンダリングされたスティックマンアニメーション映画を生成します。キャラクターはフラットな2Dスタイルで、夕暮れのカラーパレット、映画的なカメラワーク、そして実際の音響(効果音、BGM、ナレーション)を備えており、ビデオと同時に音声スクリプト、YouTubeタイトル、サムネイル用のプロンプトも出力します。特別なAI画像生成ツールやビデオツールは不要で、Claudeのコード実行機能を活用します。ElevenLabsは音声オプションとして利用可能ですが、必須ではなく、無料のオープンソース音声(scripts/tts.py)を使用することもできます。このスキルはClaude Code(無料プランを含む)で動作し、コードの実行環境があればどこでも使用可能です。ワークフローは段階的に構成されており、まずユーザーのリクエストを明確にし(ストーリー発案、ビデオ作成、スクリプト作成など)、その後、設定スクリプト(doctor.py、new_film.py)で環境を整え、リファレンスドキュメントを順に読んでから、プランニング、コーディング、レンダリング、最終チェックと納品を行います。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/krishnagoswami52/stickman-skill/tree/HEAD/skills/stickman

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

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

ドキュメント

/stickman

トピックを、完全にコードからレンダリングされた完成版スティックマンフィルムに変換します。フラットな2Dキャラクター、夕暮れのパレット、映画的なカメラワーク、そして実際のサウンド。このスキルは、ビデオ、ナレーションスクリプト、YouTubeタイトル、サムネイルプロンプトの4つの出力をカバーします。

Claudeがコードを実行できる環境(Claudeの無料プランを含む)であれば、どこでも動作します。有料ツールは不要で、AI画像やビデオツールは使用しません。ElevenLabsはナレーション用のオプションです。MP3がない場合、スキルは無料のオープンソース音声(scripts/tts.py、references/free-voice.mdを参照)を使用してスクリプト自体を読み上げるため、ナレーション付きフィルムにElevenLabsはまったく必要ありません。

以下の内容はすべて、このスキルのフォルダ(このファイルが置かれているフォルダ)からの相対パスです。絶対パスを一度確認し、すべてのスクリプトで使用してください。Claude Codeでは ${CLAUDE_SKILL_DIR} です。以下のコマンドでは SKILL と呼びます。python3 を使用し、Windowsでは python を使用してください。

ステップ 1: リクエスト内容を確認する

ユーザーは全体のパッケージか、一部のみを求める場合があります。リクエストされたことだけを行います:

リクエスト処理
ストーリーのアイデア以下の「ストーリーのアイデア」を実行し、停止
ビデオを作成ステップ 2-6
ナレーションスクリプトを作成references/script-playbook.md を読み、スクリプトを提供し、停止
スクリプトからナレーションを作成references/free-voice.md を読み、tts.py を実行し、vo.mp3 を提供し、停止
タイトルまたはサムネイルreferences/packaging-playbook.md を読み、ペアを提供し、停止
フルパッケージスクリプト、次にビデオ、最後にタイトルとサムネイルプロンプト

ストーリーのアイデア

長さが指定されていない場合は、まずビデオの長さを尋ねてください。その後、5つのアイデアを番号付きで提供し、ユーザーが番号で選択できるようにします。各アイデアには短い名前、何が起こるかを一文で説明、そして結末を含めます。各アイデアをその長さに合わせます:20秒未満の場合は、1人のキャラクターと1つのシンプルな展開にします。アイデアは references/engine.md でアニメーション化しやすいものでなければならず、それぞれがオリジナルである必要があります。後で「アイデア3を実現」と言われた場合、そのアイデアを指します。

ステップ 2: 構築前に質問する

リクエストで既に明確でない限り、以下の質問を1つのメッセージにまとめて行い、質問ツールがあればそれを使用します。既に回答済みの項目はスキップします。誰も回答できない場合、デフォルトを使用し、その旨を伝えます。

  1. スタイル: 2D または 3D? デフォルトは2D。どちらも同じルックを使用。3Dでは、シーン周りで本物のカメラ移動が追加されます。
  2. 長さ: どのくらいの長さ? デフォルトは30秒。MP3がある場合、ナレーションが長さを決定します。
  3. ナレーション: はい または いいえ? MP3が添付されている場合はこの質問をスキップします。はいの場合、ユーザーがMP3とそのスクリプトテキストを提供するか、ElevenLabs用のスクリプトを書くよう依頼し、MP3を持って戻ってくるように求めます。SRTは不要です。または、MP3がない場合のデフォルト:無料の組み込み音声がスクリプト(ユーザー提供または自分で作成)を読み上げるため、ユーザーはチャットを離れる必要がありません。ユーザーが気にする場合にのみ、どの音声にするか尋ねてください;references/free-voice.md に試聴があります。
  4. 効果音: はい または いいえ? デフォルトははい。
  5. BGM: はい または いいえ? デフォルトはいいえ。はいの場合、アップロードされたトラックがあればそれを使用し、なければコード生成の音楽ベッドを使用します。
  6. ストーリーボード: 先にストーリーボードを見たいですか? リクエストで既に言及されていない限り、必ず尋ねてください。誰も回答できない場合、スキップします。

音楽、効果音、ナレーションを勝手に想定しないでください。静かな部屋の雰囲気は音楽ではありません。

ステップ 3: セットアップ

python3 SKILL/scripts/doctor.py
python3 SKILL/scripts/new_film.py film        # 3Dの場合は --3d を追加

doctor.py は不足しているものをインストールします。Chromiumがまったく実行できない場合は、「レンダリングが不可能な場合」に進みます。

無料音声: プランニングの前に、今すぐ作成します。なぜなら音声がタイミングを決めるからです。スクリプトを film/script.txt として保存し、python3 SKILL/scripts/tts.py film film/script.txt --voice am_michael を実行し、film/audio_mix.py で VOICE = "vo.wav" と設定します。詳細は references/free-voice.md にあります。

次に、以下の順序で読みます:

  1. references/style-bible.md:ルックと絶対に曲げられないルール。
  2. references/production.md:高速パスと既知の落とし穴。
  3. references/engine.md:ツールキット。再描画せずに再利用するため。
  4. references/film-craft.md:無言または短編映画のためのストーリーとショット。

関連する場合に読むもの:references/script-playbook.md(スクリプト作成用)、references/free-voice.md(無料の組み込み音声用)、references/voiceover.md(MP3用)、references/sound.md(ミックス用)、references/symbolic-beats.md(約1分以上の映画用)、references/3d.md(3D用)。

ステップ 4: 映画を計画する

描画コードの前にこれらを書きます。コード内で計画するとスライドになってしまい、映画になりません:

  1. 気が散った視聴者でも理解できる一文。
  2. 各ビートにアクション、感情、カメラ、サウンドを含むビートシート。
  3. 一つの世界: すべてのキャラクターと小道具の固定位置のリスト。すべてのショットは、その世界に置かれたカメラにすぎません。
  4. 秒数ではなくカットフレーム数で指定したショットリスト。30秒あたり8~11ショットを目指し、地理を示すワイドショットを含めます。
  5. パッケージがリクエストされた場合、サムネイルの瞬間。実際のシーンとして存在するようにします。

ストーリーボードがリクエストされた場合は、レンダリング前にステップ5の「ストーリーボード」に従います。

ステップ 5: 構築

  1. film/film.js を置き換え、エンジンファイルは保持します。スターターのフィルムパターンから始めます。
  2. 最も忙しい瞬間の静止画を確認し、画像を表示します:python3 SKILL/scripts/stills.py film sheet.jpg 1 4.5 9 ... 通常2ラウンドで完了します。
  3. ストーリーボード(リクエストされた場合)。 python3 SKILL/scripts/storyboard.py film を実行します。film/storyboard.jpg に、各ショットの番号付きプレビューが、最終的な映画と同じコードで描画されて出力されます。ユーザーに、ショットごとに1行のテーブル(ショット、時間、内容、カメラ、サウンド)を表示し、画像を表示または送信します。ここで画像を表示できない場合は、ファイルを送信するか、テーブルのみを提供してその旨を伝えます。その後、停止して待ちます。ユーザーの要求に応じて映画を変更し、大幅に変更された場合はストーリーボードを再実行し、承認を得てからレンダリングします。
  4. film/audio_mix.py のマークされたブロックを編集し、サウンドの概要に合わせます。
  5. レンダリング、ミックス、結合、監査を1つのコマンドで実行します:
python3 SKILL/scripts/build.py film --out my-film.mp4

環境がコマンドのタイムアウトを制限している場合は、バックグラウンドで実行し、ポーリングします。各ショットは独自のファイルであるため、同じコマンドを再度実行すると再開されます。修正後は、--shots 3 7 を使用してそれらのショットのみを再実行するか、--audio-only でサウンドをリミックスします。

ステップ 6: 確認して納品する

build.py は監査で終了します。すべての「ISSUE」を修正するか、フラグが立てられた瞬間が意図的である理由を明記します。次に film/contact_sheet.jpg を表示します。これはエンコードされたファイルから生成されます。監査では検出できないため、目視で以下を確認します:

  • 顔が意図した感情として読み取れ、眉が誤って怒っていないこと。
  • 手が持っているものに触れており、何も顔の前を横切らないこと。
  • すべての歩行で腕が正しい方向に曲がっていること。
  • ドアが最初に開き、その後キャラクターが入っていくこと。
  • キャラクターがショット間でオブジェクトとの距離を一定に保っていること。
  • 装飾的な円がどこにもないこと。

MP4を短いメモと共に納品します。ミックスは確認できないことを率直に伝えます:測定したので、ユーザーが聞いて確認する必要があります。実行しなかったチェックを主張しないでください。ユーザーがタイトルとサムネイルをリクエストした場合は、パッケージングプレイブックからペアを追加します。

レンダリングが不可能な場合

コード実行やブラウザが利用できない場合、可能であれば python3 SKILL/scripts/bundle_player.py film を実行します。これにより、1つのHTMLファイルが書き出され、映画を再生し、リアルタイムでWebMを録画します。何も実行できない場合は、不足しているものを伝え、レンダリング不要なスクリプト、タイトル、サムネイルプロンプトを提供します。WebMをMP4にリネームしないでください。

オリジナリティに関するルール

ユーザーが共有する参考ビデオ、タイトル、サムネイル、またはトランスクリプトは、長さ、言葉遣い、構成、ペースといった一般的なパターンのみに使用します。他人の作品の具体的な内容をコピーしたり保存したりせず、前提、キャラクター、プロット、セリフ、ルックを再利用しないでください。すべての映画に独自のストーリーを与えます。

関連スキル