Communitygithub.com

saas-promo

キネティックなSaaS/スタートアップ/プロダクト/開発者向けプロモーションビデオ(1080p60 MP4)を、固定された高速モーションデザインスタイルで生成します。ユーザー自身の曲のビートに合わせた約11秒のティーザー、または章立てされた約50秒バージョンを作成可能。

saas-promo とは?

このスキルは、ユーザーが提供したスクリーンショットやテキストをもとに、コードで完全に描画されたプロモーションビデオを生成します。固定されたモーションデザインテンプレートに従い、タイピングアニメーション、3Dスクリーンショットスワール、ベントー壁、カードスライド、グリッチエフェクトなどを自動構成。約11秒のクラシックカットと、複数チャプターを持つ約50秒のロングカットの2種類をサポートし、ユーザー自身の楽曲のテンポやドロップを解析してすべてのカットをビートに同期させます。Claude Code、Cursor、CodexなどのAIエージェント環境で動作し、ffmpeg、Node 22以上、Chrome/Chromium、Python(numpy、scipy)が必要です。1つの設定ファイル(promo.json)のみで完結し、外部のテンプレートサービスやAI動画は使用しません。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chydevit/Skill-create-videos/tree/HEAD/plugins/video-skills/skills/saas-promo

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

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

ドキュメント

SaaS プロモ (テンプレート: "skill 1")

このスキルは、1つの設定ファイル promo.json から完成したプロモーションビデオを生成します。クラシックな約11秒のカット、または promo.json に chapters がある場合は約50秒のロングカットです。すべてのフレームはヘッドレスChrome上でキャンバスシーンとして描画されます。ストックフッテージ、AIビデオ、テンプレートサービスは一切使用しません。

  • 画像: ユーザー自身のスクリーンショット、アプリUI、デザイン、または動画の静止画。不足分は組み込みのUIカードで補います。
  • テキスト: ユーザー自身のテキスト。
  • 音声: すべてのキューにエフェクトが付き、オリジナルのシンセベッドまたはユーザー自身のトラックが流れます。

構造は固定されており、リファレンスリール skill 1 .MP4(TikTokのSaaSエージェンシーリール)のペーシングを再現しています。技術のみがコピーされており、そのフッテージ、言葉、ブランディング、ウォーターマークは一切使用されません。

時間シーン
0~0.5秒大きなグリフ(# < @ ! ?)が中央でフラッシュ。紫とライムのネオンバー、4点スパークルが薄暗いドットマトリクスグリフフィールド上でストロボ点灯。
0.5~3.3秒text.typed がカーソルとともに入力される。26枚のカードが遠くから飛来し、3Dリングとして単語を周回(最初はハーフトーンドット、次に実際の画像)。リングは加速し、カメラの前を急通過してブラーアウト。
3.3~6.45秒雲、鳥、蝶がいるペイントされた草原。パステル調から彩度が上がる。3枚のカードが右からスライドインし、残りが12枚のベントー壁に飛び込む。bento[0] がヒーローカードにタイプ入力、bento[1] が背の高いガラスカードに縦書きでタイプ入力、2枚のカードが画像を交換、bento[2] が白いカードにタイプ入力。その後カメラがそのカードにズームイン。
6.45~約8.8秒暗いドットウェーブフィールド。光るグラデーションオーブがポップインし、左にスライド。headline が単語ごとに表示(ブラーからシャープへ)、次に sub がワイプイン。すべてがデフォーカス。
約8.8~11.1秒グリッチ(色相シフト、スライス)からヒーローへ:青からオレンジの空に長時間露光の青/白の花、飛び交う ! @ # $ % * 記号とデジタルレイン。from がブラーイン・アウト、次に to がブームとともに着地し、オプションのロゴがその下に表示される。フェードアウトで終了。

長さは約11.1秒です。見出しが長いと少し伸びます。サブラインは常に約0.85秒表示されるためです。

ロングカット(約50秒):chapters

"chapters"(製品、プロジェクト、テーマごとに1つ)を追加すると、同じ4つのシーンが各1.5小節のビートとして繰り返され、フィナーレは2小節となります。

ビート再生内容
イントロオープン(typed + すべてのスワール)→ 壁(すべての画像、bento)→ オーブ(headline / sub)
各チャプターオープン(チャプターの typed、その画像をスワールに含む。typed がない場合はスキップ)→ 壁(その画像を先頭に、その bento、その wall ルック)→ オーブ(その headline / sub / orb カラー)
エンドフィナーレ(from / to / url / ロゴ)、2小節

3つのタイプライターオープナーを持つ4チャプターで合計23小節、109 BPM で約50秒です。

  • 画像: 各画像に "tag" を付けてチャプターに分類します。
  • 壁のルック: "meadow"(昼)、"dusk"(夕暮れ)、"dark"(チャプターのオーブカラーで発光するドットウェーブフィールド)から選択。これらを交互に使用することでチャプターを区別します。
  • 音楽同期:
    • music を使用する場合、assets.py が曲のテンポとドロップ(エネルギーの最大の上昇ポイント、キックドラムにスナップ)を測定します。ビデオは、イントロスワール後の最初のカットがドロップに合うように開始され、以降のすべてのカットはバーグリッド上に配置されます。
    • 出力された music: … bpm, drop at … s 行を確認してください。間違っている場合は、自分で bpm と musicDrop(曲の秒数)を指定してください。
    • sfxLevel(例:-4)を使用して、エフェクトを曲の下に収まるように調整します。
  • 著作権: 商用曲を使用すると、公開時に動画がミュートされたり、クレームが付く可能性があります。この点に言及し、公開投稿にはプラットフォームのサウンドライブラリを推奨してください。

必要環境: ffmpeg、Node 22以上、Google Chrome または Chromium(CHROME_PATH)、および numpy と scipy をインストールした Python(PROMO_PY。promo.sh が自動で探します)。

ワークフロー

1. プロモに必要なものを集める

  • カード(8~20枚の画像): プロダクト、ウェブサイト、アプリ、ダッシュボードのスクリーンショット、デザイン作品、ユーザーの動画からの静止画。画像と動画の両方が使用可能。動画の場合は "at" 秒、または長さの30%の位置の静止画が使われます。横向きの画像はワイドスロットに、縦向きの画像は縦長スロットに配置されます。8枚未満の場合は、組み込みのUIカード(検索バー、フォーム、チャート、グラデーションオーブ、ピルなど。text.labels でラベル付け)が残りを埋めます。まず画像を確認し、ほとんど空の画像は除外してください。
  • テキスト: シーンが一定の速度でタイプ・表示するため、短く簡潔にしてください。
    • typed: 句読点を含む1つの単語または名前、約4~8文字("SaaS."、"KumNit.")。
    • bento: 3つの短いフレーズ(1語、2~4語、2~3語)。
    • headline: 5~8語。sub: 最大約90文字の1行。
    • from / to: 最後の "From … / To …" のペア。
    • クメール語("lang": "km")の場合は、自然なクメール語で記述してください。一度に1つずつ表示されるべき headline、from、to のチャンクの間にはスペースを入れてください。Kantumruy Pro フォントがバンドルされています。
  • オプション:
    • logo: 最後の行の下に表示されます。不透明なロゴは角丸のアプリアイコンになります。
    • text.url: エンドカードにウェブサイトの行を表示します。
    • hero: 花の代わりにユーザー自身のフィナーレ画像を使用します。
    • backdrop: ペイントされた草原の代わりに画像を使用します。
    • music: ユーザー自身のトラック。ロングカットでは、そのドロップが最初のカットに合うように調整されます。上書きするには musicStart を設定します。
    • chapters: 約50秒のロングカット。各チャプターの tag、typed、bento、headline、sub、wall、orb を指定します。
    • sfxDir: ユーザー自身の効果音フォルダ。
    • colors: ネオン、オーブ、空、シンボルのブランドカラー。

2. プロジェクトを書く

プロジェクトフォルダを作成し、examples/kumnit-saas.json(または -km.json)を promo.json としてコピーし、編集します。すべてのキーは references/config.md で説明されています。パスはプロジェクトフォルダからの相対パスです。

3. プレビュー(約10秒)

<skill>/scripts/promo.sh <project>/promo.json --preview

これにより、画像の準備(および音楽の測定)が行われ、12枚の静止画(ロングカットのビートごとに1枚)が out/<name>-preview.png にレンダリングされます。これを確認し、以下をチェックしてください。

  • タイプされた単語がカードと重なっていない。
  • テキストが詰め込まれていない。長いテキストは収まるように縮小されますが、読みにくくなります。
  • ヒーローカード(大きく左側)に適切な画像が表示されている。cards の最初の横向き画像が使用されます。
  • フィナーレのテキストが花やヒーロー画像の上で読める。

4. レンダリング(1分未満。ロングカットは約4分なのでバックグラウンドで実行)

<skill>/scripts/promo.sh <project>/promo.json

ステージは次の順序で実行されます: assets、plan(タイムラインとシーンからのサウンドキュー)、render(3つのChromeレンダラー、--jobs N)、mix、encode。

  • --from mix はフレームを再レンダリングせずにサウンドを再ミックスし、エンコードし直します。
  • --from render は画像を再描画します。

出力: out/<name>-1080p60.mp4 および out/<name>-contact.png(ビデオ全体から約30フレーム)。

5. 引き渡し前に確認

  • コンタクトシートを確認します。
  • ffprobe で約11.1秒(クラシック)またはビートの合計時間(ロング。build/cues.json に各ビートがリストされています)が表示されるはずです。ミックスは -14 LUFS / -1 dBTP にノーマライズされています。次のコマンドで測定できます: ffmpeg -i out.mp4 -af ebur128 -f null -
  • ミックスステージで、sfxDir から使用された効果音の数とシンセサイズされた効果音の数が表示されます。
  • 結果の音声は聞こえないため、確認した内容をユーザーに伝え、聴いてもらうよう依頼してください。イントロのクリックと草原のインパクトが最も大きな音です。

チューニング

  • タイミング:
    • scripts/scene.mjs の先頭にある plan() にクラシックシーンの時間が保持されています。
    • beatSpecs() がビートをレイアウトし、mapT() がそれらの時間を各ビートに移動・伸縮します。
    • audio.py が build/cues.json から読み取るため、cuesFor() のサウンドキューは自動的に追従します。
  • ルック:
    • 色は colors から取得されます。
    • ベントーレイアウトは scene.mjs の SLOTS テーブルです。
    • 草原、花、オーブは buildMeadow、drawFlower、drawOrb で描画されます。
  • サウンド: scripts/audio.py の SFX テーブルにあるファイル名が sfxDir で試行され、キューごとにバリアントが選択されます。ベッドのコードとセクションは make_bed() にあります。
  • サイズ: テンプレートと同様、1920×1080のみ。縦9:16版には独自のレイアウトが必要です。

Individual skills in this repo

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

brand-loop

Make a seamless looping background video of glossy 3D liquid blobs in a brand's colours. Two colour families float slowly in zero gravity, each merging and pinching off like mercury, on a soft off-white studio backdrop with a warm gradient, faint ripple rings, soft drop shadows and shallow depth of field. It renders in Blender EEVEE at 4K 60 fps as H.264, HEVC 10-bit and 1080p, and the last frame flows into the first. Use it whenever the user wants a looping background, brand backdrop, abstract 3D or liquid loop, motion background for a website, stream, event screen or presentation, a "seamless loop", or a background for their logo or text, or types /brand-loop.

brand-promo

Make a ~50-second dark, kinetic studio showreel / promo video from a brand's own videos, its logo animation and a few lines of text. It has a typed intro, a ring of 3D cards, a glitchy title drop, and 3-5 spotlights (each work on a tilted card or a phone, playing its own sound). Then "Your story… next.", a 3D rush of clips, and the liquid logo reveal with the name, chips and website. It comes with an original synthesised score, narration (VoxCPM2, English or Khmer) and sound effects, as a 1080p60 MP4. Use it whenever the user wants a showreel, studio reel, portfolio video, agency or brand promo, "demo video" of their work, a promo like a template video, or a Khmer version of one, or types /brand-promo, even if they only hand over a few videos and a logo.

generate-logo

Turn any logo image (PNG, JPG, WebP or SVG) into finished 5-second animated logo reveals in five styles (liquid, neon, bounce, lens, rise). Each comes as a 1080p60 MP4 with synthesised sound effects, a transparent WebM (optional ProRes 4444 .mov) for video editors, and a keyframe sheet. It can add a two-tone wordmark, render square or vertical versions for social media, and build a bespoke style for a particular logo. Use it whenever the user wants a logo animation, animated logo, logo reveal, intro, outro or sting, motion logo, a brand intro for a video, or "make my logo move", or types /generate-logo, even if they only attach a logo and say "animate this".

portfolio-reel

Make a ~30-second creator / freelancer / developer portfolio intro reel (1080p60 MP4) in one fixed, friendly motion-design style (template "skill 2"). A mustard-yellow gradient asks a hook question ("Looking for a … Video editor?"), a white circle wipes to a profile hero (round avatar, badge pill, "Hello, I'm …", roles split by bars, a black "Here's my work ↑" button). The page then scrolls through 1-4 work sections on light grey with window-light shadows, each a title plus 1-3 rounded cards playing the user's own clips or showing their pictures. A yellow light wipe brings two closing lines, then a black social profile card pops up with counting stats, a cursor clicks Follow (it turns into Following) and the card flips in 3D to its back. Two UIs: "classic" (the template) and "app" (a search bar that types the hook and opens a results dropdown, a bento dashboard of glass tiles, a carousel of browser and phone mockups, a chat screen for the closing lines, and a profile card with a co...

関連スキル