Communitygithub.com

jjietay/kaleidoscope

ナレーション付き学習解説ビデオ(MP4)を作成します。ソフトな3Dクレイ調のルックと無言のマスコットを使用し、音声生成前にスクリプトをエージェントがチェックします。ユーザーが「固有ベクトルを説明するビデオ」「I2Cの解説アニメーション」などを依頼したときに使用します。

kaleidoscope とは?

このスキルは、開発者が概念を学習するためのナレーション付き解説ビデオ(MP4)を自動生成するエージェントです。現在の会話とプロジェクトのコンテキストを活用し独自のルック(ソフトな3Dクレイ調、無言のマスコット、Manimによる数式グラフ)でビデオを作成します。Cline、Claude Codeなどのプラットフォームで動作し、ユーザーがビデオやアニメーションを依頼した際に会話内で直接実行されます。スクリプトの正確性を専門のスクリプトエージェントがチェックした後、音声合成(Chatterbox / Kokoro)と音楽(Calm / Lo-fi)を組み合わせて最終的なMP4を生成します。エンジンは`~/.claude/skills/kaleidoscope/engine/`にあり、`make`コマンドでビルド、ルックレンダリング、最終出力を実行します。ユーザーはチェックポイント(ストーリーボード後、ファーストルック後、または一発撮り)を選択でき、オーバーラップチェックやセルフテストなどの品質保証機能が組み込まれています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jjietay/kaleidoscope/tree/HEAD

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

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

ドキュメント

解説ビデオ

あなたは、ユーザーが概念を学ぶのに役立つビデオを作成します。新しいツールに対して、あなたには大きな利点があります:あなたはこの会話とこのプロジェクトを知っています。その知識を活用してください。

エンジンは ~/.claude/skills/kaleidoscope/engine/ にあります。このファイルでは、make は以下を意味します:

node ~/.claude/skills/kaleidoscope/engine/make.mjs <command> <project-dir>

ステップ 0:最初に質問する(スキルが起動するたび)

ユーザーが /kaleidoscope と入力したか、言葉でビデオを依頼したかにかかわらず、最初に行うことは、AskUserQuestion を使って以下の質問をクリック可能なオプションとともに尋ねることです。ユーザーのメッセージやこの会話ですでに回答されている質問は省略します(例:「ニュース映画風」はルックを、「ローファイ音楽で」は音楽を回答しています)。推奨オプションを最初に配置し、「(推奨)」とマークします。4つの質問すべてを1回の呼び出しで尋ねます(ツールは最大4つまで受け付けます)。トピック自体が不明確で、どの質問もスキップされない場合は、トピックについて最初に独自の呼び出しで尋ねます。

質問ヘッダーオプション(最初=デフォルト)
ビデオのルックはどれを使用しますか?ルッククレイ3D:ソフトなクレイ調、無言のマスコットが作業を行います · クラシック2D、混合:パートごとに異なる2Dスタイル · クラシック2D、単一スタイル:ユーザーが名前を指定します(ニュース映画、ホワイトボードなど)
誰のためのビデオで、長さはどれくらいですか?視聴者試験復習、標準:講義の表記法、計算例、試験の落とし穴、5〜6分 · 試験復習、詳細版:同様、8〜9分、導出のすべてのステップ · 初心者、短め:直感を優先、記号は少なめ、2〜4分 · (その他:ユーザーが視聴者と長さを指定します。例:「専門家向け復習、短め」)
いつ確認を取ればよいですか?チェックポイント一発撮り:完成したビデオを持って戻る · ストーリーボード後:計画を示し、承認を待つ · ファーストルック後:最初のフレームを示し、待つ
どの音楽を使用しますか?音楽落ち着いた(current):ソフトなパッド、ビートなし · ローファイ(lofi):軽いビート、よりエネルギッシュ · なし

会話が推奨するものを示唆している場合は、最初に推奨オプションを配置します(翌週に試験がある:試験復習、詳細版)。メッセージが視聴者に関する質問の半分だけに答えている場合(例:「試験のために」)、質問を保持し、その半分と一致するオプションのみを提供します。視聴者は試験復習、初心者、専門家向け復習(高速で密度が高い)です。長さは短め(2〜4分)、標準(5〜6分)、詳細版(8〜9分)です。回答をステップ4で video.json に書き込みます:_look(clay または classic)、_brief:{ "viewer": ..., "length": ..., "checkpoint": ..., "style": ... }、および _render:{ "music": "current" | "lofi" | false }。以降のすべてのステップと再ビルドは、そこから読み取り、再度質問しません。ユーザーが質問を却下した場合は、各質問の最初のオプションを使用します。

一発撮り(ユーザーがチェックポイントを選択した場合を除く)

ステップ0の後、以下のすべてのステップを停止せずに実行し、完成してチェックされたビデオのみを持って戻ってきます。「続けましょうか?」と尋ねたり、ドラフトを表示したり、ステップ間で待ったりしないでください。以下のすべてのチェックは、あなた自身が実行し、対応するものです。唯一の停止は、ユーザーが選択したチェックポイントです。「ストーリーボード後」はステップ7の後で停止し(ストーリーボードとスクリプトエージェントの判定を表示し、待ちます)、「ファーストルック後」はステップ9の最初の make look で停止します(その画像を表示し、待ちます)。

ユーザーが望むルック(ステップ6の前に読むこと)

動作するものにはクレイ、プロットにはManim、そしてすべてのビデオにマスコットが登場します。 styles/clay.md を読んでください。ユーザーは、ビデオ間の一貫性のために、古いスタイルの混合ではなくクレイルックを選択しました。2Dスタイルはオプトインのクラシックルックです。以下のセクションを参照してください。

  • プロットをクレイに強制しないでください(ユーザーが要求)。 2DのManim画像がクレイよりも視聴者の理解に役立つ場合(曲線、分布、輪郭、投影、または平面内のその他の幾何学)、その部分はManimの暗い背景(styles/math-manim.md)でManimパートにします。数学的な曲線をコピーするクレイモデルを決して作らないでください。ユーザーはそれらを削除しました。動作するオブジェクトとマスコットの物理的な作業はクレイに残ります。ビデオはクレイパートからManimパートへ、そして戻ることができ、同じものには同じ色を使用します。

  • 一つのルック、多くのパート。 ビデオは約15〜40秒のパート(導入、各アイデア、あなたの事例、まとめ)に分割されます。各パートには独自の無地の背景、カメラ、設定があります。隣接する2つのパートが背景を共有することはありません。

  • マスコットが作業を行います。 彼は無言で、リップシンクはなく、ナレーターは声優です。彼は歩き、引き、押し、運び、自分の手で物をオフにします。そのため、スクリプト内の力は、視聴者が彼が行うのを見るものです。ユーザーは、彼が立って見ているだけだったビデオの後でこれを要求しました。彼はデフォルトで無表情を保ち、make check は彼が同じ場所に留まっているときにWARNを発行します。

  • ものはつながっていなければなりません。 バネは壁に届き、ピンは地図に触れ、手はそれが保持するものに触れます。ユーザーは、すべてのチェックに合格した後も壁に届いていないバネを見つけました。make bake は models.js(JOINS)内のすべての結合を測定するため、新しい結合をそこに追加し、静止画で接触を確認してください。

  • 独自のモデルのみ。 styles/library/clay のキットを使用してください。モデルをダウンロードしないでください。ビデオに新しいオブジェクトが必要な場合は、同じルックでキットに追加します。

  • 各パートは1つの連続したショットです。 パート内にはカットも新しいスライドもありません。オブジェクトは、音声が話すにつれて到着し、移動し、結合し、カメラはゆっくりと動きます。パートは、次のパートが開始する状態で終了するか、次のパートの背景でワイプで終了します。

  • 画像が説明します。テキストは名前を付けるだけです。 テキストはフラットでシャープに保ち、3D上にHTMLで表示します。フレームごとに:キッカー(小文字の大文字、パートとソース)、最大8語のタイトル、それぞれ1〜4語で細いリーダー線付きのラベル数個、下部に最大1行のキャプション。文章の列、箇条書き、色の意味の凡例は絶対に使用しないでください。 画面には最大約15語です。

  • 数式は音声を表現します(ユーザーがこれを要求しました)。 固定された数式はノートを読むのと変わりません。eqn() を使用してそれぞれを構築します:項は言及されたときに到着し、音声が移動させるときに移動し、キャンセルと言うときに打ち消し線とバーストを表示し、重要なものを指定するときだけバウンドします。make look は、静止している数式、および画面上でキャンセルが表示されていない「キャンセル」文に対して障害を報告します。styles/clay.md を参照してください。

  • 物理的な動き。 ものは物体のように動きます:腕が届き、ボールが落ちて跳ね返り、ブロックが落下して落ち着き、パルスが伝播します。静的なボックスの積み重ねはありません。

  • 同じオブジェクトはすべてのビデオで色を維持します(ロボットは常にオレンジ、地図は常に黄色)。

ストーリーボードがこれらのいずれかに違反する場合は、コードを書く前にストーリーボードを変更します。

ハードルール

  • ここ、メインの会話で思考を行ってください。 スクリプト、ストーリーボード、シーンは自分で書きます。コンテキストはここにあるからです。これらのステップをサブエージェントに決して与えないでください。サブエージェントはコンテキストなしで開始します。ステップ7のスクリプトエージェントは唯一の例外であり、それは意図的にコールドスタートします。
  • コアとなる説明を決して急がないでください。 ユーザーはこれらのビデオから学びます。reference/script.md のペーシングルールに従い、すべてのペーシングWARNを修正します。
  • 事実を捏造しないでください。 すべての数字、数式、主張は、チェックしたソース(ユーザーのコード、データシート、仕様書、論文、ドキュメント)から来ています。それらを storyboard.md にリストします。チェックできなかったものは報告します。
  • 「あなたの事例」はオプションです。 この会話またはプロジェクトに本当に一致する例(ユーザーが遭遇したバグ、修正、測定値)がある場合にのみ追加します。決して発明しないでください。
  • 重複なし。 どのビジュアルも別のビジュアルを覆ってはいけません:テキストの上にテキスト、テキストの上にグラフィック、または別のグラフィックを隠すグラフィック。各ラベル、数式、矢印、オブジェクトには独自のスペースが必要です。check はテキストの重複をWARNし、review は測定されたすべての重複を overlaps.md に書き込みます。混雑はユーザーの判断に委ねられるため、フルサイズのフレームでそれを確認してください。IDパスが役立ちます:make look は最も狭いギャップの画像を追加し、他のオブジェクトから12ピクセル未満のテキスト、描画上のテキスト、低いテキストコントラスト、他のオブジェクトに隠れているモデルをWARNします。make final の前にすべての重複を修正します。
  • 字幕は1行です。 各キュードは最大42文字で、2つのキュードが同時に表示されることはありません。そのため、プレーヤーは2行を表示することはありません。エンジンがこれを行います。verify はこのルールに違反するキュードを報告します。キュードを収めるために make.mjs の SUB_MAX を変更しないでください。
  • クローズドループ(ユーザーがこれを要求し、エンジンが強制します)。 編集のたびに:make look、リストされたすべての画像を読み、見えたものを修正し、再度確認します。その後にのみビルドします。決して盲目的に編集してビルドしないでください。ビルドは長く、ルックは数秒で完了します。各画像の右上にCHECK桁があり、ゲートはすべての画像の桁が順番に揃った場合にのみ開きます:
    1. 編集。script.md を変更した場合は、make voice を実行します。ビデオにManimパートがあり、manim_scenes.py または音声を変更した場合は、make manim を実行します:make look はManimフレームを描画しますが、作成はしません。
    2. make look <dir>:変更された各シーンをすべてのフレームで測定し、その近傍フレームと動く部分を描画します。それらすべてを読みます。次に make look <dir> --ok <digits>。make build はこれなしでは停止します。
    3. make build <dir>。衝突があると停止します。
    4. build/review/moving.md のすべてのストリップを読みます。次に make look <dir> --moving-ok <digits>。
    5. make final <dir>。ルックまたはビルド後にソースが変更された場合、または衝突または重複が未解決の場合に停止します。 各ステップを独自のコマンドとして実行し、最初の失敗で停止し、編集が適用されたことを確認します。
  • すべてのレビュアーは近傍フレームと動く部分を確認します。 ビデオを評価するエージェントまたはセッションは、編集された各パートの近傍フレーム、および動くすべてもの(マスコットとオブジェクト)のすべてのフレームを、その動き全体を通じて読みます。ビデオのサンプルはカウントされません。手がサンプルフレーム間でテーブルを通過した可能性があります。
  • 新しい障害にはガードレールを追加します。 ユーザーが障害を見つけた場合、最初にそれを reference/faults.md と engine/test/selftest.mjs に追加し、テストがそれで失敗することを確認します。その後、ビデオを修正します。ビデオのみを修正しないでください。チェックを変更するたびに make selftest を実行します。

ユーザーが要求したもの(これらを維持)

それぞれユーザーが要求したか、耳で選ばれたものです。エンジンはそのほとんどを自動的に実行します。

トピック内容自動?
音声Chatterboxの組み込み音声、engine/tts/slow-reference.wav で約160語/分にスロー。各段落はトーンが伝わるように一気に読まれますはい
ポーズすべてのピリオドは正確に0.6秒、すべてのカンマは最大0.3秒、スクリプトの句読点から設定はい。voice はポーズを配置できなかった場合にWARNを発行
悪いテイクスクリプトと単語が異なるパート(Whisperチェック)は、新しいシードで最大3回再テイク。最良のテイクが保持されるはい。それでも間違っている場合WARN
速い箇所ビデオの通常のペースの1.3倍を超える節(記号の単語は2倍にカウント)は再テイク。ユーザーは「λv は v に λ を掛けたもの」が速すぎると感じたはい。「速い」WARN:独自の短い文と [pause] を与える
負の数「マイナス」ではなく「負の」と読むvoice はERRORで停止
繰り返し単語「一つ一つ」はカンマを入れる(「一つ、一つ」)、または音声が滑るはい
書き方接続された段落。[pause] はアイデアが終わるかアニメーションが再生される場所のみ。拒否:各文の後のポーズ、途切れ途切れの文、速い音声、引き伸ばされた(こもった)音声、Kokoroあなた。reference/script.md を参照
音楽可聴、安定、音声より約13dB低い(musicVolume 0.37。ユーザーは0.26から3dB上げた)、穏やかなダッキング。承認済みの2トラック、current(デフォルト)と lofi。拒否:ラウドソフトポンピング、聞こえないほど小さい音楽、他の4トラックはい。あなたがトラックを選択。SOUND.md を参照
効果音engine/sfx.mjs のキット、耳で承認済み。フライインのウィッシュは他のアクセントより4dB低い(ユーザーは少し大きすぎると感じた)。新しいビデオではオン(_render.sfx: true)、古いビデオではオフあなたはキューの場所で s.sfx を追加。エンジンがミックス
オーディオ48kHz ステレオはい。verify がチェック
字幕ソフト、焼き込みなし。ユーザーのmpvは小さく表示(sub-scale=0.7)はい
字幕は1行キュードごとに1行、最大42文字、同時に2つのキュードなし。ユーザーはROS 2セットのビデオ1で2行を見たはい。verify は違反するキュードを報告
重複なしテキストやグラフィックが別のものを覆わないcheck はテキストをWARN、overlaps.md とあなたのフレームチェックリストが残りを担当
ルックソフトな3Dクレイルックと無言のマスコット、および独自のモデル。曲線とプロットには暗い背景のManimパート(ユーザー要求:プロットをクレイに強制しない)。拒否:ダウンロードしたモデル、全体が暗いビデオ、テキスト列、色の凡例、ビルドアップスライドmake check はクレイでもManimでもないシーン、またはマスコットのいないビデオをERROR。残りはあなた。 「ユーザーが望むルック」を参照
数学5つの数式ステップ(必要性、画像、数式、意味、テスト)。曲線、プロット、または段階的に変化する数式にはManim:2Dの場合は manim()、3D画像の場合は manim({ threeD: true })、手描きキャンバスではないmake check は単独の数式をWARN。残りはあなた。reference/script.md と styles/math-manim.md を参照
クイズストーリーボードにはなしあなた
視聴mpv <dir>/out/<slug>.mp4レポートに含める

マシン設定

ステップ1の前に make config を実行します。これにより、インストーラーまたは /setup-kaleidoscope が書き込んだこのマシンの設定が出力されます。

voice 行は音声を指定します:Chatterbox(自然、NVIDIA GPUまたはAppleシリコンで最高)またはKokoro(CPUで小さく高速、約150語/分)。プロジェクトは video.json で独自のものを選択できます:"_tts": {"engine": "kokoro"}。GPUがない場合、ChromeはSwiftShaderでフレームを描画し、ffmpegはlibx264でエンコードします。

…

[翻訳のために切り詰めました]

関連スキル