Communitygithub.com

ショートビデオ組み立て(short-build)

クリエイターが送ってきたナレーションMP3を元に、音声書き起こし・レベル調整、Pexelsのフリー動画・Pixabayの楽曲(Content IDなし)検索、クリップ編集、lib_shortを用いたシーン生成、VHSテープエフェクト適用、フレームチェック、HyperFramesでのレンダリングまでを行い、完成したショート動画をデスクトップに出力するスキル。

ショートビデオ組み立て(short-build) とは?

このスキルは、ショート動画制作ワークフローの一部(`short-start` フロー)を担当します。クリエイターが録音したナレーションMP3を受け取り、書き起こしとレベル調整を実施。Pexelsからフリーのストック動画を、PixabayからContent ID未登録のBGMを自動検索・ダウンロードし、カット編集を行います。その後、`lib_short` ライブラリが提供するテキストアニメーション(kline, words_js, slam など)、カウンター、いいね・共有アニメーション、コメントカード、フォローカードといったパーツを組み合わせて、各シーンの `generate.py` を生成。HyperFrames のルール(`data-start`/`data-duration`、`immediateRender:false` など)に従ったコードが書かれます。最後に HyperFrames CLI で `check`(品質確認)、`snapshot`(スナップショット確認)、`render`(レンダリング)を実行し、完成動画をデスクトップへコピー。ループの整合性チェックやLUFS測定も行い、`REVIEW.md` に決定事項を記録して終了します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kelvinmacaco/kit-shorts-virais/tree/HEAD/.claude/skills/short-build

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

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

ドキュメント

ショート動画の組み立て

short-start フローの一部です。メディア詳細は short-media、アニメーションは short-animation、確認・レンダリングは short-review を参照してください。サポートツール: hyperframes, hyperframes-cli, media-use。

事前にプロジェクトの RULES.md と ROTEIRO.md を読んでください。プロジェクトの kit.json には 必ず handle(クリエイターが選んだ @)が設定されている必要があります。空欄または "@SEU_CANAL" のままの場合は、続行する前にクリエイターに確認してください。

1. ナレーション

  • mp3 を assets\audio\narracao_raw.mp3 にコピーします。
  • silencedetect=n=-40dB:d=0.6 で長い無音を検出します。フック部分に該当する無音は短くし、トーンがエネルギッシュな場合は 0.8 秒以上の無音をさらに短縮します。tools\ffmpeg_recipes.md にある接続レシピを使用してください。
  • build\transcribe.py で文字起こしを行い、各単語のタイムコードを含む assets\audio\narracao_words.json を生成します。
  • レベル調整を実行: python -I -X utf8 build\level_voice.py <mp3> <words.json> video\assets\audio\narracao.mp3
  • template\video\ から hyperframes.json, package.json, meta.json, AGENTS.md, CLAUDE.md を video\ にコピーします。meta.json の id を調整してください。

2. メディア

  • 内蔵ブラウザで Pexels.com のページを開き、tools\pexels_search.js を実行して複数の検索を一度に行います。
  • サムネイルをダウンロードし、ffmpeg の tile で一覧シートを作成してから確認して選択してください。
  • ロゴ、ブランドロゴ、チームのユニフォーム、ナレーションの内容に合わないものは除外します。
  • curl -L -A "Mozilla/5.0" -e https://www.pexels.com/ を使って assets\video\stock\ にダウンロードします。
  • 楽曲: Pixabay から、「Content ID Registered」 のないトラックだけを video\assets\audio\musica.mp3 として取得します。
  • 効果音: tools\sfx\README.md を参照し、video\assets\sfx\ に配置します。
  • クリップはレシピに従ってカット(縦 1080×1920 または TV ウィンドウ 1000×750)し、video\assets\video\ に保存します。フック用に反転クリップも作成します。
  • シェルの cut コマンドを関数名に使わないでください(システムの cut が隠れてしまうため)。

3. シーン (build\generate.py)

  • template\build\generate.py をベースにします(コメント付き)。SCENES = [(名前, 開始, 終了)] を使って単語のタイムコードを指定します。各シーン内の時間は相対時間(0 = シーン開始)です。
  • lib_short のパーツを使用:
    • テキスト: kline/words_js/slam/punch/shake/label;
    • 数値: onUpdate を使ったカウンター;
    • いいね&共有: like_block/plane_svg;
    • インタラクション: comment_card/follow_card/step_badge。
  • すべてのシーンにアニメーションを付けます。 リストの進行状況を示す必要がある場合は、テーマに沿ったインジケーターをオーバーレイシーンとして追加します(例:ライブラリの pavio_scene。アイテムごとに導火線が燃え、クライマックスで爆発します)。
  • 字幕: write_captions(WORDS, TOTAL, SKIP, alt_from, alt_top)。SKIP では、シーンのタイポグラフィですでに発話が表示されている部分をカバーします。
  • インデックス: write_index(TOTAL, SCENES, SFX, dur_voz, 0.1, handle=HANDLE)。HANDLE は kit.json から build.ps1 を経由して渡されます。
  • @マークは字幕の下に配置します(WM_TOP)。手動でマークの位置を指定しないでください。
  • ループ: 最後のシーンは、フックの 0 フレームに反転クリップを合わせ、同じタイトルで終了します。
  • エンディングは動画のトーンに合わせます。 重く暗くスローな動画では、派手な演出は避けてください。
  • HyperFrames のルール:
    • class="clip" + data-start/data-duration;
    • clip 自体の visibility や opacity はアニメーションさせず、内部の要素のみアニメーション;
    • 後続の fromTo では immediateRender:false を使用;
    • 各 <audio> は固有の id と track を持つ;
    • 動画は常に muted;
    • SVG の線には pathLength="1" を指定して描画エフェクトを実現。

4. 生成、確認、レンダリング

  • build\build.ps1 内の $alvos を調整: 撮影シーン、.fv(全画面)、.tv(TV ウィンドウ)。
  • powershell -ExecutionPolicy Bypass -File build\build.ps1 -Duracao <TOTAL> を実行。出力を Select-Object -First にパイプしないでください。
  • npx --yes hyperframes@<バージョン> check --json を実行し、エラーを修正します。以下のエラーは想定内で、残しても構いません:
    • 半透明ブランドマークのコントラスト;
    • ループタイトルが短すぎる。
  • スナップショットを取得 (snapshot -o <フォルダ> --no-end --at "...") し、連絡先シートを確認。以下の点に注意:
    • テキストが画面外にはみ出ていないか;
    • 字幕が読めないか;
    • 要素が隠れていないか;
    • 停止しているシーンがないか。
  • render --quality standard -o renders\<名前>_master.mp4 でレンダリングし、ebur128=peak=true で測定(目標: 約 -13.5 LUFS、ピーク -2 dBTP 未満)。
  • x264 CRF 19、AAC 192k、+faststart でデスクトップにコピーします。
  • ループを確認: 0 フレームと最終フレームを横に並べ (hstack)、同一であることを確認します。
  • 決定事項、測定値、目視確認のみ行った項目(「誰も音を聞いていない」)を video\REVIEW.md に記録します。

5. 納品

動画、タイトル(TikTok と YouTube、それぞれ 5 個の # 付き)、説明文、固定コメントを送信します。投稿時刻を伝え、48 時間後のスクリーンショットを依頼してください。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル