Communitygithub.com

syydaniel/kazi

カ字:解説動画、ナレーション付きモーショングラフィックス、コードアニメーション、知識系ショート動画を作成します。ナレーションを先に録音し、原稿を各文字のタイムラインに合わせ、音声に同期した映像を生成します。

kazi とは?

このスキルは、解説動画やナレーション付きアニメーションを高精度に作成するためのものです。従来の手法とは逆に、**まず音声(ナレーション)を先に生成し、その音声に合わせて映像を後から同期させる**点が特徴です。これにより、AIが音声を聞かずにタイミングを推測する必要がなくなり、各フレームがナレーションの各文字に正確に一致する動画を制作できます。 ワークフローは6つのステップ(原稿作成、音声生成、タイムライン生成、映像制作、音響、最終チェック)で構成され、各ステップ間にはユーザー確認のための一時停止ポイントが設けられています。Apple Silicon搭載Mac上での動作が最適化されており、音声クローンや文字単位のタイムライン生成など、専用ツール群(`tools/`)が提供されます。 最終チェックでは「カ字率」(ナレーションと映像の同期精度)を定量的に測定し、その結果をユーザーに報告します。このスキルは、コードアニメーション(例:Remotion)を多用し、動詞の動きを視覚化することに重点を置いています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/syydaniel/kazi/tree/HEAD

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

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

ドキュメント

カ字

カ点動画はビートに合わせ、解説動画は文字に合わせる。アニメーションコードを書くAIは音を聞けないため、視聴者が今何を見るべきかを推測するしかありません。

カ字はその順序を逆転させます:まず音声があり、次に映像があり、映像は常に音声に追従します。各文字が何秒目に発声されるかを先に計算し、動作がどのフレームに配置されるかを表から参照します。

この説明はあなた(AI)向けです。各ステップの詳細は docs/ にあり、必要なステップだけを読んでください。一度にすべてを読む必要はありません。 以下の tools/、starter/、docs/ はすべてこのスキル自身のディレクトリ内(このファイルと同じ階層)にあります。使用時は完全なパスに置き換えてください。

6つのステップ、4つの一時停止

ステップ何をするか成果物詳細
1 原稿作成話し言葉で書き、各文に1つのキーワードを設定。ナレーション版と字幕版は分けて作成script.txtdocs/01_原稿作成.md
⏸ 一時停止1原稿をユーザーに確認してもらい、承認を得る
2 ナレーション収録各文を複数回生成し、別のAIが聞き返して採点、最良のものを残すvo/lines/docs/02_ナレーション収録.md
⏸ 一時停止2ユーザーにナレーション全体を試聴してもらう
3 タイムライン生成アライメントモデルを使用して、各文字の開始時間と終了時間を割り当てるtimeline.jsondocs/03_タイムライン生成.md
4 映像制作動詞を描画;アクションはキーワードの最初の文字の3フレーム前に配置コード+レンダリングdocs/04_映像制作.md
⏸ 一時停止3まず20~30秒のサンプルをユーザーに確認してもらうout/sample.mp4
5 音響BGMはナレーションに譲る;効果音はアニメーションのキューから読み取るミックスされた音声トラックdocs/05_音響.md
6 チェックと公開フレーム単位でカ字率、黒フレーム、フラッシュフレーム、ラウドネスを測定;タイトル、サムネイル、概要を準備out/final.mp4 とチェックレポートdocs/06_チェックと公開.md
⏸ 一時停止4完成品とチェックレポートをユーザーに引き渡す

ユーザーが明確に「一時停止不要、そのまま完了して」と指示した場合は一時停止をスキップできますが、ステップ6のチェックは必ず実行し、結果を最終的な応答に含めてください。 ユーザーが既に録音済みのナレーションを持っている場合は、ステップ2をスキップし、ステップ3(timeline.py --whole)から開始します。

開始前の準備

  1. python tools/doctor.py を実行し、不足しているものを確認します。ナレーション収録とタイムライン生成は現在、Apple Silicon搭載のMacでのみテスト済みです;他のプラットフォームの場合は、ツールが提供する代替手段に従い、その旨をユーザーに伝えてください。
  2. ユーザーに確認(まだ言われていない場合のみ):何について、誰に向けて、どのくらいの長さ、横長か縦長か、自分の音声サンプル(10秒程度のクリアな録音と文字起こし)があるか。
  3. プロジェクトディレクトリを作成します。構造は以下を参照。すべての中間ファイルは保持し、各バージョンのサンプルは個別に保存し、上書きしないでください。
プロジェクト/
  script.txt           原稿(フォーマットは docs/01 を参照)
  vo/                  ナレーション:lines/ に各文の wav、takes/ に全テイク
  timeline.json        各文、各文字の開始/終了時間
  film/                映像プロジェクト(デフォルトは starter/ の Remotion テンプレートを使用)
  audio/               BGM、効果音、ミックス
  out/                 サンプル、完成品、チェックレポート

各ステップの最重要ルール

原稿作成(詳細は docs/01)

  • 話し言葉で書く。句読点の間は22文字以内とし、長短の文を織り交ぜる。耳は一度しか聞けない。
  • 各文には1つのキーワードのみを指定:*キーワード*。映像はこのキーワードに合わせる。1つの字幕にキーワードは最大1つまで。
  • 発音と字幕が異なる場合は {発音=>字幕} と記述します。例:{F F M peg=>FFmpeg}。
  • 文は完全な形で書く:主語、目的語、助数詞は省略しない;動詞は2文字以上を基本とし、単文字と複数文字を交互に使用;キーワードに単文字は使用しない。句読点は意味に基づいて配置(docs/01の句読点表を参照)。
  • 読み間違えやすい多音字は原稿作成時に置き換えます(docs/02に代替表あり)。
  • 作成後、python tools/lint_script.py script.txt を実行します。これは、一文が長すぎる、字幕が長すぎる、一文に複数のキーワードがあるなどをチェックし、おおよその尺も推定します。

ナレーション収録

  • python tools/voice.py script.txt vo --ref 音声サンプル.wav:各文を4回生成し、音声認識でテキストに戻して原稿と比較、読み間違いを捨て、最良のものを残します。
  • 多音字や、別の意味に聞こえるものは認識結果に現れます;一致しない文は書き直すか発音を変え、無理に残さないでください。
  • 全体的に少し速くしたい場合は tools/tempo.py(速度変更、ピッチ不変)を使用し、再生成しないでください。
  • python tools/pace.py vo_fast vo_paced:ポーズを整えます。文頭・文末の無音、文内の句読点部分の無音を測定し、不足部分を補い、長すぎる部分をカットします。無音部分のみを操作し、音声部分は変更しません。
  • tools/polyphone.py は、読み間違える可能性のある多音字を抽出し、試聴用の音声を合成します;誤検出や見逃しもあるため、最終的には人間が確認します。

タイムライン生成

  • python tools/timeline.py script.txt vo_paced timeline.json --wav vo_paced/narration.wav --speech-gap を実行し、各文と各文字の開始/終了時間、およびキーワードリストを取得します。--speech-gap は、原稿のポーズを聞こえる無音と一致させます。
  • 映像内のナレーションに関連するすべてのタイミングは、このテーブルから参照します。文字数で推定してはいけません。文字数で推定すると、10文後には3秒以上の誤差が生じる可能性があります。

映像制作

  • まず画風を決定します。迷った場合は、コードアニメーション画風図鑑 https://github.com/syydaniel/awesome-code-animation を参照し、画風を選んでからツールを選びます。特別な理由がない限り starter/(Remotion)を使用します。
  • 動詞を描画し、名詞を描画しないこと。「体積が大きくなる」を描画する場合、描画するのは「大きくなる」という動作であり、氷の挿絵ではありません。よく使われる動詞の描き方は docs/04 の表を参照。
  • 時間定数(60fps時):アクションが完了するフレームは、キーワードの最初の文字の開始の3フレーム前に配置(hit());許容範囲は6フレーム前から1フレーム後まで。新しく出現するものは、その最初のフレームをキーワードの少なくとも12フレーム前に配置します。
  • キーワードの瞬間は、映像が明らかに多く動くようにします:1秒前よりも多く動くこと。常に動き続けている、または文の先頭で一度だけ動くだけでは、カ字できません。
  • 1画面に新しく追加する情報は4ブロックまで;ナレーションで既に述べられた全文は画面に表示せず、キーワードのみを表示します。
  • 作品全体を貫くもの(小さなキャラクター、色、形状)を見つけます;カメラはパン/ズームし、重要なポイントに追従します;2つの画面間は、可能な限り画面内の要素でつなぎます。
  • 字幕:各字幕は16文字以内、句読点は削除;文字は実際に発声されたタイミングに合わせて薄くから濃く変化し、キーワードは色が変わります。
  • 各パートができたら、短いセクションをレンダリングし、tools/kazi_check.py で測定してから次に進みます。

音響

  • BGMはナレーションの12~18 LU下に配置;文字単位のタイムラインを使用してサイドチェーン:文の開始0.2秒前にBGMを下げ、文の間の無音が1.2秒を超えた場合のみBGMを戻します。
  • 作品全体で2~4回、最も重要な文のためにBGMを完全に停止します。
  • 効果音は映像のキュー(cue)からエクスポートし、4つのレイヤーに分類:ヒット、トランジション、アンビエント、フォーリー。音の質感は映像に合わせます。
  • 完成品のラウドネスは -14 LUFS、トゥルーピークは -1 dBTP 以下、48 kHz。

チェック

  • python tools/kazi_check.py out/final.mp4 --timeline timeline.json:カ字率、ランダムベースライン、黒フレーム、フラッシュフレーム、長時間停止、ラウドネス、オーディオトラック、尺。
  • 不合格の場合は修正し、再測定します。すべて合格してからユーザーに連絡し、レポートの数字をそのままユーザーに伝えます。測定していないものについて「完了しました」とは言わないでください。
  • ユーザーが4KやHDRを要求する場合、チェック合格後に:tools/master.sh で4Kマスターをレンダリング、tools/hdr/hdr_encode.sh でドルビービジョン8.4とHLGを出力。色味を変更した場合は、新しい背景色と発光色を hdr_mask.py に伝えます(docs/06_チェックと公開.md 参照)。

ツール一覧

ツール用途
tools/doctor.py環境チェック、不足しているものとインストール方法を表示
tools/lint_script.py原稿をチェック
tools/voice.py音声クローン、文ごとに収録、複数テイクから最良を選択
tools/tempo.py全体の速度変更、ピッチ不変
tools/pace.pyポーズを整える:文頭・文末・文内句読点の無音を調整
tools/polyphone.py読み間違えやすい多音字を抽出し、試聴用音声を合成
tools/timeline.py文字単位のアライメント、timeline.json を生成;--whole は既存の録音全体用
tools/kazi_check.pyカ字率や各種問題を測定
tools/caption_check.py字幕の出現・消失・文字単位のハイライトとナレーションの同期を測定
tools/mix.pyナレーション、BGM、効果音をミックス、文字単位のサイドチェーン、ラウドネス統一
tools/thin_cues.py効果音のキューが多すぎる場合、優先度でフィルタリング
tools/master.shセグメントレンダリングによる4Kマスター作成、中断再開可能
tools/hdr/SDRマスターからHDRへの変換:ドルビービジョン8.4(HLGベースレイヤー)とHLG
starter/Remotionテンプレート:time.ts で時間を参照、anim.ts でカーブとスプリング、字幕コンポーネント

納品時にユーザーへ伝えること

  • 完成品のパス、尺、解像度。
  • カ字率、ランダムベースライン、ランダム比;同期できなかったキーワードとその理由。
  • チェックで見つかった問題とその対処結果;未解決のものはその旨を直接伝える。

関連スキル