Communitygithub.com

VanillaSky — ソーシャル動画生成スキル

AIエージェントがプロンプトから完成したソーシャル動画(MP4、9:16または16:9)を構成・レンダリングします。Claude Codeや75以上のエージェントで動作。無料、ローカルレンダリング、MITライセンス。

VanillaSky — ソーシャル動画生成スキル とは?

このスキルは、VanillaSkyのAIエージェントが、与えられたプロンプトや資料からソーシャルメディア向け動画(MP4、縦9:16または横16:9)を構成・レンダリングするためのツールです。エージェントはまず、`VideoConfig` JSON形式で動画の設計図を作成し、ユーザーがVanillaSky Studioでプレビュー・編集・エクスポートできるようにハンドオフします。デフォルトではフルMP4レンダリングは行わず、Studio上での調整を優先します。スキルはClaude Code、Cursor、Codexなど75以上のエージェントで動作し、すべてローカル環境で無料かつMITライセンスで利用可能です。重要なのは、テンプレートのカタログを正確に読み取ること、虚偽の証拠を決して作り出さないこと、そして未確認の設定をユーザーに渡さないことです。エージェントは、バンドルされたテンプレートカタログと正確なスキーマに従い、検証・コンタクトシートの検査を経てStudioに引き継ぎます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add VanillaSkyAi/skills

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

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

ドキュメント

VanillaSky — 設定からソーシャル動画を生成

動画は VideoConfig JSON形式です。これは、シーンを順序付けたリストで、各シーンはcamelCase IDでキュレーションされたテンプレートを参照します。設定を構成・検査したら、VanillaSky Studioでユーザーに引き渡します。ユーザーはそこでプレビュー、編集、MP4エクスポートを行います。フルMP4レンダリングを最初のフローに含めないでください。

3つの譲れないルール

  1. カタログを読み取る。決して推測しない。 CLIを解決した後、vanillasky templates を実行してバンドルされたテンプレートマップを取得し、vanillasky templates <id> --json で正確なスキーマを取得します。ライブフォールバックは https://vanillasky.ai/llms-components.txt です。リポジトリとスタンドアロンインストールは registry/llms-components.txt に加えて registry/r/<name>.json を保持します。正確なカタログに到達できない場合は、IDや変数をでっち上げるのではなく停止します。
  2. 決して証拠をでっち上げない。 名前、引用、数値、統計、スクリーンショット、製品の主張は、ブリーフまたは提供されたアセットから取得する必要があります。テンプレートがユーザーが提供していない証拠を必要とする場合は、別のテンプレートを選択します。
  3. 未検査の設定を決して引き渡さない。 バリデーションは構造をチェックします。レンダリングされたフレームを確認することによってのみ、オーバーフロー、弱い構成、偶発的なデフォルトを検出できます。

セッションの開始

まずCLIを解決します。公式のVanillaSky CLIは npmパッケージとして公開されていません。npmを検索したり、npm install vanillasky を実行したり、その名前を所有しているだけのパッケージを使用したりしないでください。command -v vanillasky が失敗した場合は、この SKILL.md のパスからこのスキルのインストールディレクトリを解決し、公式のブートストラッパーを実行します。

node <インストール済みスキルディレクトリ>/scripts/install-cli.mjs

ブートストラッパーは https://github.com/VanillaSkyAi/skills.git のみを ~/.vanillasky/release にクローンし、そのチェックアウトが宣言する依存関係をインストールし、ローカルCLIを PATH に公開します。チェックアウト元が異なる場合やスクリプトが失敗した場合は停止します。レジストリパッケージに代用しないでください。

次に、最初の動画の前に以下を実行します。

vanillasky update --check
vanillasky setup --check
vanillasky templates

update --check は何も変更せずに新しいリリースを報告します。ここに記載されているフラグが欠落している場合は、vanillasky update を実行します。setup --check は、デフォルトの向き、ブラウザ、Pexelsキー、音楽のムード、および DESIGN.md の状態を報告します。

Pexelsキーがないことはブロッキングではありません。ストック検索にはpexels.com/apiからの無料キーが必要であることを一度だけ言及し、その後は提供されたメディアまたはストックに依存しないテンプレートを使用します。DESIGN.mdがないことは自動ブランディングがないことを意味します。ブロックしないでください。

ブリーフの導出

最初にプロンプト、リポジトリ、DESIGN.md、URL、提供されたアセットを使用します。最大3つの質問をし、本当にギャップがある場合にのみ行います。

  1. 目標と形式 — 視聴者は何をすべきか、または何を感じるべきか:ローンチ、レビュー、マイルストーン、またはアップデート?
  2. オーディエンスと証拠 — 誰のためのものか、そして主張を裏付ける実際の数値、引用、スクリーンショット、または製品の詳細は何か?
  3. アセット — どのスクリーンショット、ロゴ、クリップ、またはURLが必ず表示されるべきか?

向きは宛先から導出します:TikTok/Reels/Shorts → 縦向き;YouTube動画または明示的にワイドなX/LinkedIn投稿 → 横向き。それ以外の場合は設定されたデフォルトを使用するか、3つの質問の1つを使います。

結果を video.json の横に video-brief.md として保存します。後続のターンで同じ質問を繰り返す代わりに、再読み込みして更新します。

デフォルトのワークフロー:Studioでのハンドオフ

  1. 構成する ブリーフとバンドルされたカタログから video.json を作成します。変数を書き込む前に、vanillasky templates <id> --json でショートリストされたテンプレートの正確なスキーマを検査します。

  2. ストックメディアを解決する 設定に mediaKeyword が含まれている場合:

    vanillasky resolve video.json
    

    これによりPexelsの結果が選択され、正確な mediaUrl が設定に書き込まれ、バリデーションと再レンダリングが決定的になります。Pexelsキーが利用できない場合は、提供されたメディア、直接URL、または mediaType: "gradient" を使用します。ハンドオフ状態としてレンダリング時の検索に依存しないでください。

  3. 検証する すべてのエラーと警告を修正します。

    vanillasky validate video.json
    

    設定の format が適切なスロットコントラクトを選択します。すべての動画に対して --format launch をハードコードしないでください。警告は装飾ではなく解決すべき作業として扱い、警告が残っている状態でバリデーションがクリーンであると決して説明しないでください。

  4. コンタクトシートを検査する:

    vanillasky render video.json --sheet --out ./sheet
    

    必要に応じて sheet/sheet.png を開き、個々のフレームを検査します。実際に sheet/sheet.png を開いてください。ファイルが存在することは検査ではありません。テキストのオーバーフロー、読みにくいタイプ、未設定/デフォルトの値、未使用のアセット、視覚的な繰り返し、フレームの中央75%外の重要なコンテンツをチェックします。視覚的な編集後は、必要に応じて解決、バリデーション、およびシートを繰り返します。

  5. Studioでハンドオフする:

    vanillasky studio video.json
    

    Studioはファイルをライブで追跡します。ユーザーがレビューしている間、設定を編集し続けます。ユーザーの未保存の編集は上書きされる代わりに競合として表示されます。ユーザーは満足したらStudioからMP4をエクスポートします。

    間違ったブラウザが開いた場合は、--browser "Google Chrome" を渡すか、~/.vanillasky/config.json にブラウザを永続化します。リモートシェルでは --no-open を使用します。

デフォルトではフルMP4をレンダリングしないでください。 ユーザーが明示的にファイルを要求した場合、またはStudioを使用できない場合(CI/ヘッドレス)にのみ自分でレンダリングします。

vanillasky render video.json --open

そのブランチでは、結果を監視し、完了バナーを読み取ります:全体の長さ、オーディオカバレッジ、向き、映像の滑らかさを確認します。完了ブロックのWatchとStudioのリンクを含めます。vanillasky link video.json はレンダリングせずにそれらを再印刷します。

デフォルトパスの構成

以下の形状から開始し、カタログの正確なスキーマを使用します。

{
  "format": "launch",
  "orientation": "portrait",
  "style": {
    "font": "Inter",
    "preset": "bold",
    "brandKit": { "accent": "#6D5EF8", "secondary": "#F8B45E" }
  },
  "audio": { "trackId": "<vanillasky tracks から>" },
  "scenes": [
    {
      "id": "s0",
      "templateId": "media",
      "variables": { "texts": "今日出荷します", "mediaType": "gradient" },
      "timing": { "fixedDuration": 3 }
    }
  ]
}
  • brandKit は style 内に属します。スタイルプリセットは意図的に選択してください。
  • textArchetype と backgroundEffect はシーンフィールドであり、変数ではありません。
  • timing.fixedDuration はスタンドアロンシーンの長さを設定します。明示的なタイムラインは連続した startTime + endTime を使用します。timing.duration はフィールドではありません。
  • vanillasky tracks を使用して、ムードとエネルギーに基づいて音楽を選択します。無音も有効ですが、通常はソーシャル動画には弱いです。
  • メディアには実際のHTTPS URLまたはローカルパスを優先します。Base64メディアは共有リンクを大きくしすぎます。また、mediaKeyword の結果は決定的な再レンダリングのために mediaUrl に固定する必要があります。

設定がブランディング、メディア解像度、明示的なタイミング、FPSマッチング、またはリンク動作を必要とする場合は、references/config.md を読んでください。

ストーリーに基づいたフォーマットの選択

フォーマットストーリーの形状典型的な長さ
launchフレーミング → 理解 → 証拠3~8シーン、通常5
review引用 → 帰属 → 結果4~7シーン、通常5
milestone数値 → コンテキスト → 感謝3~6シーン、通常4
update変更 → デモンストレーション → メリット4~7シーン、通常5

バリデーターは、シーン数、禁止されたフック、クローザーの配置、隣接ルールを実施します。references/formats.md には生成されたコントラクトが含まれています。あなたの仕事は、バリデーターが判断できない判断を下すことです。

クリエイティブ品質ゲート

真実とアセット

  • すべてのテンプレートデフォルトをブリーフ固有のコンテンツに置き換えます。10K、99.9%、<50ms のようなプレースホルダー統計を決して出荷しないでください。
  • 重要なすべての提供スクリーンショットを使用します。実際の製品表面は、同じものを表示する合成ターミナル、エディター、電話、またはブラウザよりも優れています。
  • 縦向きのスクリーンショットを電話モックアップに、横向きのスクリーンショットをブラウザモックアップに一致させます。

ストーリー

  • フックは緊張または好奇心を生み出します。見返りを消費してはいけません。
  • 具体的な製品、オーディエンス、または結果を名前付ける少なくとも1つの説明ボディを含めます。通知、コール、ツイート、数値はフレーミングや証明に使用できますが、製品を単独で説明することはできません。
  • クローザーはブランド、URL、またはアクションへのアドレスであり、証拠の繰り返しではありません。

バラエティとペース

  • すべてのボディをカードにしないでください。少なくとも2つの非カード主導の表現形式を使用します。
  • 単一のフラットグラデーション上のプレーンな文章は、フォールバックであり、自動的に強力なフックではありません。ブリーフに基づいた視覚的メカニズムを優先します。アラートには通知、開発者ワークフローには端末/エディター、会話にはチャット、提供された製品表面にはデバイスまたはブラウザなどです。意図的にミニマルな動画でも、1つの具体的な視覚的アイデアが必要です。ミニマルとは要素が少ないことを意味し、すべてのシーンで同じグラデーションとタイポグラフィを使用することではありません。
  • 一貫したパレットはシーンのバラエティではありません。3つ以上のシーン行が同じフラット背景を共有している場合、タイプレイアウトが異なっていてもこのゲートに失敗します。接地されたアセット、ストック背景、テンプレート、または控えめなエフェクトを使用して、少なくとも1つの表現形式を変更します。ブリーフに多くの異なるシーンをサポートするのに十分な承認済みコピーや証拠が含まれていない場合は、それを繰り返す代わりに、フォーマットの最短の有効なストーリーを使用します。
  • 意図的に短いブリッジでない限り、映像には少なくとも3秒の長さを与えます。1つのエフェクトをどこにでも適用するのではなく、背景の動きを変化させます。
  • グラデーションのみのメディアシーンは、ストックや提供されたメディアが不便だったために選ばれたフォールバックではなく、意図的なブランドビートであるべきです。
  • 実際に表示されるものを検査します。期間制限のあるテンプレートは、設定に含まれていても後のアイテムを省略する場合があります。

コピー

  • フック:最大7語。CTA:最大4語、できればコマンド。
  • ユーザーが承認したスローガンまたは引用は、少なくとも1つのシーンでそのまま保持します。1つの承認された行をその断片を別々に表示することによって、いくつかの疑似個別シーンに変換しないでください。視覚的な進行に他のビートを運ばせます。
  • 3つの一般的な名詞、カテゴリ、または動詞のリストを避けます。リズムには緊張、進行、またはひねりが必要であり、3つの同義語ではありません。
  • 一緒に留まる必要があるテキストはnowrapスパン内に保持します。SVGエクスポートのためにNBSPに依存しないでください。

テンプレートが失敗した場合のみエスカレーション

ブリーフを表現する最も低い段を使用します。

  1. 目的に合わせて書かれたコピーを持つテンプレート。
  2. 調整された変数を持つテンプレート。
  3. レジストリアイテムに基づくイジェクト/カスタムシーン。
  4. サンドボックスシーン要素から構成されたカスタムシーン。

デフォルトパスは段2で停止します。段3または4を使用する前に、references/custom-scenes.md、references/libraries.md、references/motion.md、および references/visual-rules.md を読んでください。APIをでっち上げる代わりに、vanillasky scope と生成された references/motion-api.md を使用します。

リファレンスルーター

  • references/config.md — タイミング、スタイリング、ブランディング、メディア、オーディオ、FPS、DESIGN.md、および共有リンクの動作。
  • references/formats.md — 生成されたスロットコントラクトとテンプレートカテゴリ。
  • references/custom-scenes.md — イジェクト、プロベナンス、サンドボックスコントラクト、およびバリデーションルール。
  • references/libraries.md — 生成された5ライブラリマップ、オーディエンスガイダンス、依存関係、インストールターゲット、正確なエクスポートグループ。
  • references/motion.md — 振り付け、読み取り時間、焦点階層、およびカットの連続性。
  • references/motion-api.md — カスタムシーンで利用可能な生成された関数、スプリング、イージング名。
  • references/visual-rules.md — タイポグラフィ、向きレイアウト、色、光、およびカスタムシーンの構成。

関連スキル