Communitygithub.com

husniadil/dalang

Dalang — あらゆるトピックを完成されたアニメーションビデオ(ナレーション、無料ローカルAI音声、音楽、効果音、HyperFramesビジュアル)に変換します。スクリプト→音声→単語ごとのタイミング→ビジュアルの各段階をエージェント自身がゲート制御します。あらゆるトピック、言語、プラットフォーム(Shorts、Reels、TikTok、YouTube、Instagram)に対応。ユーザーがビデオ、アニメーション、解説、ショート動画をトピック、アイデア、記事、メモから作成するよう依頼したとき(「Xについてのビデオを作って」「Zについてのビデオを作って」)、またはリファレンスビデオのスタイルを倫理的に借用するときに使用します。既存の映像のカットや字幕付けには使用しません。

dalang とは?

Dalangは、あらゆるトピックを完全なアニメーションビデオに変換するAIエージェントスキルです。スクリプト作成、音声生成(無料ローカルAI音声)、単語レベルのタイミング調整、HyperFramesによるビジュアル生成までを自動化し、各段階をエージェント自身がゲート管理します。対応プラットフォームはShorts、Reels、TikTok、YouTube、Instagramで、あらゆる言語に対応。2つのモード(Express: 高速2.5D、Studio: 高精度3D)と複数のビジュアルスタイル(アイソメトリック、オブジェクトスタジオなど)を提供し、スタイライズされつつ現実に即した出力を実現します。主な原則として、スクリプト→音声→タイミング→ビジュアルの順序を厳守、ユーザーへの質問は最初にまとめて行う、無料サービスを優先、サブエージェントによる並列実行とタスクの段階的エスカレーションにより効率的に動作します。スキルはClaude Code、Cursor、CodexなどのターミナルベースのAIエージェントで使用することを想定しており、ファイルシステム上にプロジェクトを管理し、状態をファイルに保存することで中断・再開が可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/husniadil/sandalkuilang-dalang/tree/HEAD

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

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

ドキュメント

Dalang — トピックからビデオへ

モードとルックはBriefで尋ねられ、その後固定されます(references/looks.md)。モード: Express(デフォルト; Canvas 2Dによる2.5D、references/express.md)または Studio(高精度: three.js、コードファーストのヒーロー、リファレンスボード、ベンチマーク、レビュー)。ルック: アイソメトリックファミリー(メインisometric-world、cutaway、blueprint)または object-studio(淡い背景上のスタディモデル)。3DルックがフィルムをStudioに移すことはありません。Step 6開始後のルック変更: すべてのビルダーを停止し、SPEC.mdを書き換え、すべてのグループを1メッセージで再起動します。ナレーションと音声はそのまま維持されます。

原則

7はStudio専用。それ以外は両モードで有効。

  1. ビジュアルの優先(references/looks.md): ルックの番号付きルールがすべてのフレームとQCを決定します。object-studio: 淡いスタジオ、1つのアクセント、ヒーローは60~70%、1つの入力装置、生楽器、ホールドショット。
  2. 言葉優先、画像は後: スクリプト承認 → 音声 → すべての単語のタイミング → ビジュアル。
  3. 画面上のすべての変化は単語に合わせる、タイミングデータに基づく。
  4. 被写体はすべてのショットで動作する; 静止画の上にカメラを置くのはスライドショーです。
  5. 推測せず、測定する: 報告されるすべての数値はログまたはスクリプトから取得します。
  6. すべての質問は最初に、ユーザーゲートなし。 すべての質問はStep 1で行い、後でユーザーを待つことはありません。各4つのゲートを自分で通過し、チェックが通ったら1行で報告し、完成したフィルムまで実行します。後の変更は新しいラウンドです。最後のレンダリング(Gate 3のスタイルフレームとフックサンプルを除く)の前には最終品質のレンダリングは行いません。
  7. スタイライズされ、現実に即したもの。 フィルムごとに1つのルック。映像、フォトリアルなレンダリング、生成画像、クリップは使用しません。パーツ、プロポーション、スケール、動作は実際のリファレンスに一致します(references/visual-direction.md §1)。
  8. トップスタジオ、やりすぎは禁止: スタイルフレーム、ポリッシュ、レビュールーブリック。ドラフトは10 fps。最終版は --quality high --fps <brief fps> ですべてのチェックを通過します。
  9. デフォルトで無料。 有料または従量制サービス(ElevenLabs、HeyGen)はユーザーが要求した場合のみ使用し、「有料」とラベル付けします。商用利用可能なライセンスを優先。そうでない場合はその旨を明記します。

汎用目的。 あらゆるトピック、言語、プラットフォーム。他の video/<slug>/ フォルダを開かない。ユーザーが選択したシリーズキット以外は引き継ぎません(references/brief.md 「シリーズキット」)。engine/three/ はツールボックスであり、制限ではありません。不足する被写体は、独自の法則からモデル化するか、3Dを使用しないルックで表示します。

言語。 ユーザーの言語でチャットします。すべてのAskUserQuestionは英語です。 名前から言語を推測しないでください。

高速に動作し、少ないトークンで

  • 1ビデオ=1セッション。状態はファイルに保存されます。再開: node <skill-dir>/scripts/state.mjs next、BRIEF.md、PRODUCTION.mdの末尾。
  • サブエージェントタイプ: 記載されている場合、ビルダー(修正ラウンド、スクリプト、音声)dalang-builder、すべての判定 dalang-checker、ファクト dalang-research。それ以外は汎用。
  • スキルバージョン: 最初に next の DALANG v… を表示。git は使用しない。
  • 遅延読み込み: 各ステップで、state.mjs next --print が出力するものだけを、一度にすべて読み取ります(Step 0はStep 1も出力します。最初の approve <n> は次のステップを出力します: next ターンなし、--step で先読みしない)。「必要なときに参照」は、そこに送られた場合のみ。リファレンス、エンジンのREADME、lessons.md全体、またはセクションを2回読まない。/hyperframes では、必要なガイドのみ。
  • 小さな出力: --json でフィルタリング。words.json、*.response.json、完全なログは出力しない。バックグラウンド出力はバイト数で(tail -c 1500)。シーン変更は Edit 呼び出し。sed -i やファイル全体のWriteは使用しない。
  • シーンコードはビルダーサブエージェントに残す。 メインエージェントは src/ や assets/*.js(生成データは除く。スタイルフレームはビルダーに送る)を書き込んだり読み取ったりしない。パイロット、各グループ、アセンブリ、各修正ラウンドは新しいビルダーに送る(最後のレポートとパス、その予算は look-build.md / express.md に)。レビュアーはビルダーではありません。
  • 画像はサブエージェントに残す。 メインエージェントは静止画、ストリップ、シート、スコープ、スタイルフレームを Read しない。サブエージェントがパスと next の「サブエージェントへのコマンド」を受け取り、テキストの判定を返します。例外: style-frames/src/ の作成者は、最初の書き込み前に各 review/refs-board-<frame>.jpg を1度だけ開きます。
  • ジョブごとにモデルを指定、尋ねない: state.mjs next は各ステップのサブエージェントジョブを、モデルと努力量とともに出力します(state.mjs models: すべて、および top/mid/light の意味)。 エスカレーション、繰り返しなし。 失敗したジョブ(赤、使用不可、P0が残っている)は、1段階上の新しいエージェントに送られます。努力量(low → medium → high)、次にモデル(light → mid → top)。top · high が上限: P0が残っている場合は分類されます(hero-asset.md §3)。ダウングレードや2回実行はありません。クリーンなジョブは再実行されません。コピーまたはタイミングの修正は最大3回まで: 1段階下げます。各設定をログに記録します。
  • メインエージェントはオーケストレーションを行い、作業は行いません。 あなたのターンはセッションを再読み取りします(サブエージェントの約10倍)。ループ(write ↔ lint、take ↔ retake、fix ↔ check)は1つのジョブ内で実行されます(Steps 3~4も同様)。各返信があなたを起動します: ジョブは判定まで実行されます。N個のジョブが同時に開始された場合、そのメッセージは wait.mjs . --expect N で終了します(timeout: 600000): 1ターン、1行。ランナー(express.mjs / studio.mjs <step>)は1つのフォアグラウンド呼び出しです(timeout: 600000)。約9分以内に終了する場合に使用し、チェーンやポーリングは行いません。エージェントプロンプトはジョブとパスです(15行以下。next --step <n> --sub で読み取ります)。チェッカーは判定ファイルを書き込み、ビルダーは review/reports/<job>.md を書き込みます。両方とも簡潔に返信し、再入力はしません。state.mjs log は、ステップのコマンドに && で付随し、独自のターンは使用しません。
  • コンパクト: workspace.mjs init は自動コンパクトを設定します(200K)。Gates 2~4で /compact が安全であることを一度だけ伝えます。
  • デフォルトで並列実行。 独立したジョブは1つのメッセージで開始され、各エージェントは独自のファイルで動作します。重いジョブ(VoxCPM、レンダリング、チェック、スナップショット)は単独で実行され、モデルジョブと並行しません。while kill -0 <pid> でキューイングします。同時実行: プリフライト ‖ トピック質問。リファレンス ‖ リサーチジョブ。Gate 1後: 音声ジョブ ‖ アセット(シーンは除く)。Gate 2: プランナーと音楽。Step 6 Studio: パイロット、次にすべてのグループ。Express: すべてのグループを一度に、パイロットなし(クリーンなテイクは express.mjs after-voice でGates 1~2を自身で通過します。プランナーは express.mjs scaffold . を実行します)。Step 7: ドラフトチェック、次にレビュアー ‖ クイズ ‖ Set / Realityチェック。Step 8: レンダリング中に POST.md。
  • 安価なものを先に: テイクの前に --sample。{} のみが移動する場合は --from-response。反復中はスナップショット。修正はラウンドごとにバッチ処理。QCは --fps 10 --quality draft。最終レンダリングは1回。
  • ユーザーの要求が優先: そのルールに反する場合は1行でフラグを立て、黙って通過させない。
  • 短いメッセージ: 何が変わったか、何を決定するか、リンク。待機中は次のゲートの時刻。約2分を超えるステップには見積もりを含める。

プロジェクトファイル(video/<topic-slug>/)

state.mjs log "<step> | <output> | <problems or ->" でログを記録します。フォルダはHyperFramesプロジェクトそのものです。そのフォルダからコマンドを実行します。*.tpl.html のみを編集します。node <skill-dir>/scripts/fill_times.mjs src/index.tpl.html index.html で index.html を再生成します(手動では行わず、2つ目のルート .html も作成しません)。

ステップ

ステップ内容終了条件参照(references/)
0 セットアップpreflight.mjs を実行し、報告された問題を修正、プロジェクトフォルダを作成PRODUCTION.mdbrief.md §0
1 ブリーフトピックを最初に、すべての質問を今行うBRIEF.mdbrief.md §1
2 リファレンス(オプション)クラフトを測定、コピーはしないreference-measurements.mdmeasure-reference.md
3 スクリプトリサーチ、ライター、読み合わせジョブ。approve 1 でリントを実行Gate 1script-voice.md §3
4 音声1つの音声ジョブ。after-voice でパディング、Gates 1~2Gate 2script-voice.md §4
5 ルックSPEC.md、ヒーロー、ストーリーボード、アセット、スタイルフレーム、ベンチマークGate 3look-build.md §5
6 ビルドビルダー、BEATS/WORDS からのタイミング、オーディオミックスindex.html、リントがクリーンlook-build.md §6
7 QCドラフト、チェック、ストリップ、レビュアー、クイズ、修正ラウンドGate 4qc.md §7
8 最終アセットチェック、高品質レンダリング、再チェックfinal.mp4、POST.md、レポートqc.md §8

すべてのステップで: ゲートは state.mjs approve <n> --by agent で通過します(順番通り。ゲートのチェックを実行し、エラーがあれば拒否します。ゲート通過後に編集されたファイルは、再承認されるまでSTALEになります)。BRIEF.md がフォーマットと言語を決定します。録音またはクローン音声は話者の許可がある場合のみ使用します。ページはClaudeの組み込みブラウザのみで開き、ユーザーのChromeは使用しません。すべてのステップと問題を PRODUCTION.md にログ記録します。シリーズフィードバックは series.mjs note で行い、メモリには保存しません。

自律モード

ユーザーがトピックを指定して去った場合、ユーザーの発言を使用します。それ以外は次のデフォルト: Express。YouTube 16:9、60~90秒(ショートまたは60秒以下の場合はShorts 9:16)。ユーザーの言語。object-studio(Studio: isometric-world)。「モダンバランス」。一般視聴者。VoiceStudio、デフォルト音声、brief.md Step 0に従います(Step 4までに準備ができていない場合は停止し、その旨を伝えます)。「デフォルト使用」と PRODUCTION.md の最初に書き込み、各決定をログに記録し、フィルムを完成させます。出荷ルール: references/qc.md 「ユーザー不在」(終了コード2で残留する audio_qc.mjs は、ハンドオフ時に名前を指定され、決して合格としません)。インストールの提案はスキップします(ログに記録します)。インストール済みのスキルは編集しないでください。

問題が発生した場合

grep -n -i '<word>' <skill-dir>/references/lessons.md

関連スキル