Communitygithub.com

spiritual-dev/explainer-short

縦型(9:16)の話し手解説動画を、アニメーショングラフィック、キャプション、テーマ切り替え機能付きで作成します。短い解説動画や縦型教材クリップ、テーマ変更可能なモーショングラフィック、軽量フレームワークなしで動作するポータブルなHTML Canvasレンダリングパイプラインが必要な場合に使用します。

explainer-short とは?

explainer-shortは、短い縦型(9:16)の解説動画を生成するAIエージェントスキルです。下部に話し手、上部にモーショングラフィックス、中央に大きなキャプションチップを配置するレイアウトが特徴で、1クリップにつき1つのアイデアに焦点を当てます。テーマシステムにより、色、フォント、角丸、モーションを制御するCSS変数を提供し、`use-theme.sh`スクリプトで`warm`(デフォルト)、`mono`、`high-contrast`、`playful`の4つのプリセットを簡単に切り替えられます。Node 18+、Chrome/Chromium、ffmpegがあれば、`npm install`後に`node scripts/render_sample.mjs`でサンプル動画をすぐに生成できます。また、`template/`をコピーしてプロジェクトを作成し、`main.js`でシーンを記述、任意で話し手動画と音声を統合する本格的なパイプラインも構築可能です。テストフレームワークとして、動画の品質を凍結時間、ラウドネス(約 -14 LUFS)、真のピーク(<= -1 dBTP)、カバー、テーマ適用、明瞭性の6軸で0-3点評価し、平均2.3以上を出荷基準としています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/spiritual-dev/explainer-short/tree/HEAD

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

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

ドキュメント

explainer-short は何をしますか?

短い縦型解説動画を作成します。下半分に話し手、上半分にモーショングラフィックス、中央に大きなキャプションチップを配置します。1クリップにつき1つのアイデア。テーマトークンで色、書体、角丸、モーションを制御するため、同じスクリプトでも温かみのある、モノクロ、ハイコントラスト、遊び心のあるスタイルに変更できます。

使用タイミング

  • 8~30秒の縦型教材または製品解説動画
  • 再利用可能なHTML/CanvasパイプラインでMP4を書き出す場合
  • シーンコードを書き換えずにビジュアルテーマを切り替える場合

レイアウト

+---------------------------+
|   モーション/カード (1080) |
|                           |
|---------------------------|  <- キャプションチップ(継ぎ目)
|   話し手クロップ (960)    |
|                           |
+---------------------------+
         1080 x 1920

テーマシステム

テーマは template/themes/*.json(デモ用に sample/themes/ にも)にあります。アクティブなテーマはプロジェクトフォルダ内の theme.json です。

bash template/scripts/use-theme.sh warm          # または mono | high-contrast | playful
# コピーしたプロジェクトから:
bash scripts/use-theme.sh mono

トークン(loadTheme 実行後のCSS変数):

トークン役割
--ink --muteテキスト
--bg --bg-hi --bg-lo背景ウォッシュ
--surface --surface-2カード
--accent --accent-2 --accent-3強調
--chip-bg --chip-fgキャプションチップ
--radius-card --radius-chip --chip-size形状
--headline-weightタイトルの太さ
--font-sans --font-mono書体(OFLライセンスwoff2、fonts/に配置)

プリセット: warm(デフォルト)、mono、high-contrast、playful。

JSONファイルを編集し、use-theme.sh を再実行し、ブラウザをリロードします。テーマ自体にビルド手順は不要です。

フォントの差し替え

  1. オープンライセンスのwoff2を fonts/ に配置し、ライセンスファイルも同梱します。
  2. テーマJSONで fonts.sans / fonts.sans_file(およびmono)を設定します。
  3. フォントファミリー名が変わる場合は、index.html の @font-face で新しいファイルを参照します。
  4. 中間フレームの静止画で確認します。

バンドルされているデフォルト: Inter + JetBrains Mono(SIL OFL)。ライセンステキストは fonts/ に同梱されています。

クイックスタート(テーマデモ、話し手動画は不要)

npm install
node scripts/render_sample.mjs warm
node scripts/render_sample.mjs mono
# 出力: sample/out/<preset>/<preset>.mp4 + フレーム静止画

必要条件: Node 18+、システムにインストールされたChromeまたはChromium、ffmpeg。

本格的なプロジェクトパイプライン(自己完結型)

  1. template/ を新しいプロジェクトフォルダにコピーする(または sample/ 内で作業する)。
  2. main.js でシーンを記述し、window.render(t) を呼び出し、テーマのCSS変数を使用する。
  3. オプションの話し手動画: テイクを配置し、src/edit.json を記入し、python3 src/edit.py(numpy + soundfileが必要)を実行し、次に python3 src/captions.py を実行する。
  4. スキルルートで(npm install 後):
PRESET=warm bash template/build.sh
# または、コピーしたプロジェクトの場合:
SKILL_ROOT=/path/to/explainer-short PRESET=mono bash build.sh
# またはレンダラーを直接呼び出す:
node scripts/render.mjs --dir path/to/project --preset warm --out path/to/project/out/video.mp4
  1. out/voice.wav が存在する場合、python3 mix.py で約 -14 LUFS / -1 dBTP にラウドネス正規化し、build.sh が多重化する。

template/scripts/render.mjs はテンプレートと一緒にコピーされるため、プロジェクトはローカルコピーを保持できます。

デザインルール

  1. 1つのアイデア。 1つのオブジェクト、1つの約束。エンディングまでに回収する。
  2. 腕の長さで読めること。 大きな文字、高いコントラスト、画面に表示する単語は少なく。
  3. キャプションチップが声を表現する。 キューは短く。最後の単語で一瞬フリーズする。
  4. テーマを使い、ハードコードしない。 色、角丸、チップサイズはトークンから取得する。
  5. 味付けはニュートラルがデフォルト。 Warmがデフォルト。選択するのは作成者。

出荷前のレビュー

各軸を0-3点で評価。平均が2.3以上の場合のみ出荷する。独立したレビュアーがメインファイルを評価する。

軸確認項目
凍結最後のキャプションが約0.3~0.5秒間保持されている。単語の途中でカットされていない。
ラウドネス約 -14 LUFS 統合(ffmpeg loudnormで測定)
真のピーク<= -1 dBTP
カバーエンドフレームまたはサムネイルオフセットがクリアなタイトルカードになっている。
テーマトークンが適用されている。ハードコードされたブランドカラーが残っていない。
明瞭性初見の人が音声なしで要点を理解できる。

完全なルーブリック: references/review-rubric.md。セーフゾーン: references/cover.md。

ファイル

パス役割
package.jsonplaywright-core を宣言
template/スタータープロジェクト(HTML、テーマ、フォント、build.sh)
template/themes/プリセットJSON
template/theme.jsloadTheme() -> :root にCSS変数を設定
sample/自己完結型の12秒テーマデモ
scripts/render.mjsヘッドレスフレームレンダリング + ffmpeg多重化
scripts/render_sample.mjsサンプルプリセット用の便利ラッパー
references/構造、テーマ、レビュールーブリック、カバー、仕上げ
docs/検証済み実行からのプレビュー静止画

エージェントチェックリスト

  • スキルルートで npm install を実行済み
  • テーマプリセットを選択済み(またはwarmデフォルト)
  • theme.json がプリセットと一致している
  • シーンがCSS変数を使用し、ハードコードされたブランドカラーを使用していない
  • サンプルまたはフルビルドでMP4が生成される
  • ffprobeで1080x1920および期待される長さを確認できる
  • 中間フレームの静止画がプリセットに対してブランドに適合している
  • オーディオがある場合、ラウドネスが約-14 LUFS、真のピークが<= -1 dBTPである
  • レビュールーブリックの平均が2.3以上
  • プロジェクト内に個人やサードパーティのブランドが残っていない

関連スキル