VanillaSky — 設定からソーシャル動画を生成
動画は VideoConfig JSON形式です。これは、シーンを順序付けたリストで、各シーンはcamelCase IDでキュレーションされたテンプレートを参照します。設定を構成・検査したら、VanillaSky Studioでユーザーに引き渡します。ユーザーはそこでプレビュー、編集、MP4エクスポートを行います。フルMP4レンダリングを最初のフローに含めないでください。
3つの譲れないルール
- カタログを読み取る。決して推測しない。 CLIを解決した後、
vanillasky templatesを実行してバンドルされたテンプレートマップを取得し、vanillasky templates <id> --jsonで正確なスキーマを取得します。ライブフォールバックはhttps://vanillasky.ai/llms-components.txtです。リポジトリとスタンドアロンインストールはregistry/llms-components.txtに加えてregistry/r/<name>.jsonを保持します。正確なカタログに到達できない場合は、IDや変数をでっち上げるのではなく停止します。 - 決して証拠をでっち上げない。 名前、引用、数値、統計、スクリーンショット、製品の主張は、ブリーフまたは提供されたアセットから取得する必要があります。テンプレートがユーザーが提供していない証拠を必要とする場合は、別のテンプレートを選択します。
- 未検査の設定を決して引き渡さない。 バリデーションは構造をチェックします。レンダリングされたフレームを確認することによってのみ、オーバーフロー、弱い構成、偶発的なデフォルトを検出できます。
セッションの開始
まず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つの質問をし、本当にギャップがある場合にのみ行います。
- 目標と形式 — 視聴者は何をすべきか、または何を感じるべきか:ローンチ、レビュー、マイルストーン、またはアップデート?
- オーディエンスと証拠 — 誰のためのものか、そして主張を裏付ける実際の数値、引用、スクリーンショット、または製品の詳細は何か?
- アセット — どのスクリーンショット、ロゴ、クリップ、またはURLが必ず表示されるべきか?
向きは宛先から導出します:TikTok/Reels/Shorts → 縦向き;YouTube動画または明示的にワイドなX/LinkedIn投稿 → 横向き。それ以外の場合は設定されたデフォルトを使用するか、3つの質問の1つを使います。
結果を video.json の横に video-brief.md として保存します。後続のターンで同じ質問を繰り返す代わりに、再読み込みして更新します。
デフォルトのワークフロー:Studioでのハンドオフ
-
構成する ブリーフとバンドルされたカタログから
video.jsonを作成します。変数を書き込む前に、vanillasky templates <id> --jsonでショートリストされたテンプレートの正確なスキーマを検査します。 -
ストックメディアを解決する 設定に
mediaKeywordが含まれている場合:vanillasky resolve video.jsonこれによりPexelsの結果が選択され、正確な
mediaUrlが設定に書き込まれ、バリデーションと再レンダリングが決定的になります。Pexelsキーが利用できない場合は、提供されたメディア、直接URL、またはmediaType: "gradient"を使用します。ハンドオフ状態としてレンダリング時の検索に依存しないでください。 -
検証する すべてのエラーと警告を修正します。
vanillasky validate video.json設定の
formatが適切なスロットコントラクトを選択します。すべての動画に対して--format launchをハードコードしないでください。警告は装飾ではなく解決すべき作業として扱い、警告が残っている状態でバリデーションがクリーンであると決して説明しないでください。 -
コンタクトシートを検査する:
vanillasky render video.json --sheet --out ./sheet必要に応じて
sheet/sheet.pngを開き、個々のフレームを検査します。実際にsheet/sheet.pngを開いてください。ファイルが存在することは検査ではありません。テキストのオーバーフロー、読みにくいタイプ、未設定/デフォルトの値、未使用のアセット、視覚的な繰り返し、フレームの中央75%外の重要なコンテンツをチェックします。視覚的な編集後は、必要に応じて解決、バリデーション、およびシートを繰り返します。 -
Studioでハンドオフする:
vanillasky studio video.jsonStudioはファイルをライブで追跡します。ユーザーがレビューしている間、設定を編集し続けます。ユーザーの未保存の編集は上書きされる代わりに競合として表示されます。ユーザーは満足したら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に依存しないでください。
テンプレートが失敗した場合のみエスカレーション
ブリーフを表現する最も低い段を使用します。
- 目的に合わせて書かれたコピーを持つテンプレート。
- 調整された変数を持つテンプレート。
- レジストリアイテムに基づくイジェクト/カスタムシーン。
- サンドボックスシーン要素から構成されたカスタムシーン。
デフォルトパスは段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 — タイポグラフィ、向きレイアウト、色、光、およびカスタムシーンの構成。