Communitygithub.com

evgenspm/launchfilm

公開されたローンチフィルムを1コマずつ解析しテキスト化したレシピ(一部はRemotionコード付き)を検索し、1~3つのレシピからユーザーのフィルムを構築します。

launchfilm とは?

このスキルは、公開されたローンチフィルムをフレーム単位で解析し、テキスト(一部はRemotionコード)として記録した「レシピ」を活用して、ユーザーのプロダクト向けフィルムを迅速に生成するためのものです。主にClaude CodeやCursorなどのAIエージェント上で動作し、`recipes/CATALOG.md`や`recipes/index.json`から適切なレシピを検索・スコアリングし、1~3件を選択します。選択されたレシピのビートシート(タイミング、カメラワーク、モーション、トランジション、サウンド)を読み込み、`npx launchfilm new <slug> --recipe <id>` コマンドでプロジェクトをスキャフォールドします。コード付きレシピ(`status: "built"`)の場合はすぐに使えるコンポーネントが生成され、テキストのみのレシピの場合はビートシートに基づいたTODOシーンが生成されます。生成後は、ユーザーのブランドやコンテンツに合わせてリタイミングやカスタマイズを行い、ストーリーボードの承認を経て最終的なフィルムを構築します。このアプローチにより、実績のある構成や技法を再利用しながら、オリジナル作品のコピーやフッテージを一切流用しない、独自のフィルム制作が可能になります。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/evgenspm/launchfilm/tree/HEAD/skills/recipes

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

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

ドキュメント

recipes

レシピとは、公開されたローンチフィルムを解析し、エージェントがそのクラフトを別のプロダクト用に再構築できるように書き起こしたものです。 <studio>/src/recipes/<id>/ に配置されます:

ファイル常に存在提供するもの
recipe.mdはいいつ使うか、ビートシート(時間、フレーム、絵、カメラ、モーション、トランジション、サウンド)、クラフトに関連する技法、適応すべき点、落とし穴、欠落コンポーネント
recipe.jsonはい同じ内容をデータとして(スキーマ schemas/recipe.schema.json):structure[]、techniques、audio、inputs、components、source
Recipe.tsx + index.tsxstatus: "built"の場合のみすぐに使えるコード:brand + content でパラメータ化されたコンポーネント、デモブランドで登録済み

ほとんどのレシピはテキストのみ(status: "studied")ですが、それでも構築には十分です。ビートシートからスタジオのプリセットとコンポーネントを使ってシーンを記述します。レシピは元のフィルム、そのフレーム、またはそのコピーを一切含みません。ソースリンクはユーザーが参考作品を視聴するためのものです。

コマンドは launch-video/(ユーザープロジェクト)または studio/(launchfilmリポジトリ)から実行します。recipes/ と schemas/ はハーネスのルート(ユーザープロジェクトでは launch-video/、launchfilmではリポジトリルート)にあります。

1. 必要なものを把握する(BRIEF.md / STORYBOARD.mdから)

検索する前に、以下を書き出します:プリセット(アスペクト比)、目標再生時間、モード(プロダクトフィルム / ローンチフィルム / ハイブリッド)、テーマ(brand.jsonからダーク/ライト)、VOの有無、カバーすべきビート(hook、feature、logo…)、ユーザーが実際に持っている入力(ロゴ、スクリーンショット、画面収録、再構築可能なUI、統計、URL)。

2. 検索

recipes/CATALOG.md をざっと見る(1行1レシピ、ファミリーごとにグループ化:フォーマット、主要技法、入力、ソース、テキスト/コード)、または検索:

npx launchfilm ref search "statement vertical dark"            # タイトル、概要、タグ、技法を全文検索
npx launchfilm ref search "launch aspect:9:16 max:30 theme:dark" # フィルター:family: aspect: tech: theme: max: min: status:

または recipes/index.json を直接フィルターする(フィールド:references/index-format.md):

node -e '
const idx=JSON.parse(require("fs").readFileSync("recipes/index.json","utf8")).recipes;
const want={aspect:"9:16",dur:30,techniques:["statement-sequence","end-card"],theme:"dark"};
for(const r of idx){const t=r.techniques.filter(x=>want.techniques.includes(x)).length;
 if(r.format.aspect===want.aspect||t>0) console.log(r.id,r.format.aspect,r.format.duration_s+"s",r.theme,r.vo?"vo":"-",t,r.code?"code":"text");}'

インデックスがない場合? src/recipes/*/recipe.json をグロブして読み込みます。

3. スコアリングと1~3件の選択

基準点数
format.aspect がメインプリセットのアスペクト比と一致+3(再構成は可能だがコストがかかる)
format.duration_s が目標の±30%以内(またはレシピが必要なビートをカバーしている)+2
各技法がストーリーボードのニーズと重なる+1(最大+4)
必要なすべての inputs フィールドをユーザーが持っている+2;不足している入力が作成不可能
theme が brand.json の theme と一致+1
vo が計画と一致+1
code: true(すぐに使える Recipe.tsx)でユーザーが急いでいる+1;status: "reviewed"
render_cost が高く、ユーザーがラップトップ使用中または急いでいる-1

テキストかコードかはスピードのボーナスであり、品質のフィルターではありません。条件に合うテキトレシピは、合わないコードレシピよりも優先されます。フィルム全体には最高スコアの1つを、異なるビート(フックはAから、フィーチャーはBから、エンドカードはCから)には最大3つを選択します。

4. 選択結果を表示

各選択について、ユーザーに以下を表示します:

  • タイトル(id)とtextまたはcodeの区別;
  • なぜそのレシピが条件に合うか(アスペクト比、長さ、カバーするビート、持っている入力);
  • ビートシートを3~6行の短い行で(0–3.1 s hook: name blurs in word by word…)、recipe.mdから要約;
  • ソースリンク(source.url)で、ユーザーが元の作品を視聴できるようにします。ホストされたプレビューはありません。

対話セッションではユーザーに選択させます。ユーザーが「自分で決めて」と言った場合は、最高スコアのものを選び、その旨を1行で伝えます。

5. レシピを読む

選択した recipe.md を全文読みます:ビートシート、フレームと名前付きスプリングによるモーション、トランジション、各イベントのサウンド、「適応すべき点」、「落とし穴」、「欠落コンポーネント」。recipe.json の structure[]、audio、inputs、components も読みます。これらの数値が再利用するクラフトであり、絵とコピーはユーザーのものになります。

6. スキャフォールド

npx launchfilm new <slug> --recipe <id> --preset x-16x9 [--title "Product"] [--dry-run]
  • コード付きレシピ:films/<slug>/Film.tsx に、デフォルトでレシピのコンポーネントをレンダリングする1つの recipe シーンが生成されます。content プロパティ(recipe.json の params)を変更し、ブランドを渡します。
  • テキストレシピ:film.json にビートシートの各行に対応する1つのショット(レシピのタイミング、トランジション、SFXを含む)が生成され、Film.tsx には各行の絵、カメラ、モーション、サウンドをコメントとして持つ1つの TodoScene が生成されます。CLIはTODOのリストを表示します。TodoScene はラベル付きプレースホルダーをレンダリングし、未処理のTODOが残っていると npx launchfilm qa が失敗します(B1)。
  • どちらの場合も、recipe.md を films/<slug>/RECIPE.md にコピーし、STORYBOARD.md にレシピの行を事前入力します。
  • レシピの組み合わせ:最もランタイムを占めるレシピからスキャフォールドし、他のレシピの行をショットとして追加します(コードがあればその Recipe コンポーネントをシーンとして、なければTODOシーンとして)。

7. 構築(詳細:references/remix.md)

  1. まずスケルトンをユーザーの長さとビートグリッドに合わせて再タイミングします(remix.md §3):ビートの順序と比率を維持し、すべての境界をダウンビートまたはVOフレーズにスナップします。film.json のショットとSTORYBOARDの行を更新し、シーン構築前にユーザーがストーリーボードを承認します(ゲート3)。
  2. ブランド:brand.json を useBrand() を通じてすべてのシーンに適用します(コードレシピの場合は brand プロパティ)。レシピフォルダは決して編集しません。
  3. コンテンツ:ユーザーのプロダクト名、セリフ、統計、UI。元のフィルムのコピーやデモブランドのテキストは絶対に使用しません。
  4. テキストレシピのシーン:各 TodoScene を src/presets と src/components から構築したシーンに置き換えます(最初に API.md を読んでください。scene-build スキルがルールを管理します)。recipe.json がリストするコンポーネントを使用し、行の名前付きスプリング、フレーム数、スタガー、トランジションIDを正確に保持します。モーションの継続時間はフィルムの長さに応じてスケーリングしません。レシピが「欠落コンポーネント」としてリストするコンポーネントは、その仕様に従って films/<slug>/scenes/ に構築します。
  5. サウンド:audio.sfx のすべてのイベントと各行の sfx は、新しいフレームでもそのサウンドを保持します(グルールール、craft/02)。
  6. レンダリング前にすべてのショットのスチルを生成し(scene-build ステップ4)、次に film-qa を実行します。

ルール

  • レシピは出発点であり、最終出力ではありません。フィルムはユーザーのストーリーを伝えるものです(STORYBOARDを最初に承認)。
  • 元の作品の要素は一切フィルムに取り入れません:ソースのコピー、ブランド、フッテージは使用禁止。ソースリンクはユーザーが視聴するためのもので、recipe.json とメッセージ内に留め、決してフィルムには含めません。
  • 欠落コンポーネント → レシピフォルダや共有プリセットではなく、films/<slug>/scenes/ 内に構築します。
  • 再実行が再現可能になるよう、使用したレシピ、行、スケール係数、パラメータを STORYBOARD.md に記録します。

Individual skills in this repo

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

evgenspm/launchfilm

Brand intake for a launch film, product video or promo: capture the product's real colors, fonts, logo, radius and theme from the user's repo (Tailwind config, CSS variables, shadcn tokens, next/font, logo SVG), then the live website, then screenshots, and write films/<slug>/brand.json with a source for every value. Use when starting a new film, when the brand, logo or colors changed, or when the user says "use my brand / my colors / my logo". Hard stop if capture fails: never invent a logo or colors. Not for picking a look or grade (scene-build, craft/06) or for writing copy (story).

evgenspm/launchfilm

QA a rendered launch film before anyone ships it. Use for "QA the video", "check the render", "is it ready to post", "review the film", "why does it look cheap", "check the captions/safe zones/loudness", after every render and before package. Reads the CLI's automatic report (`npx launchfilm qa <slug>`), contact sheets and stills at key timestamps, then checks text-at-time readability, contrast, platform safe zones, loudness (−14 LUFS, −1.5 dBTP), ffprobe encode specs, black and frozen frames, cuts on the beat, and the 12 amateur tells as blocking checks. Writes qa/<slug>/QA.md where every line cites a file or a measured number; a check that was not run says NOT CHECKED, never PASS. Use scene-build to fix picture problems it finds, sound to fix the mix, launch-film for the whole pipeline, reference-study for reference videos.

evgenspm/launchfilm

Launch video, launch film, product video, product launch, promo, teaser, trailer, demo video, Product Hunt video, X / LinkedIn launch clip, reel, hero loop, motion graphics, "make a video for my product", Remotion film. Router and gated pipeline for making a pro product-launch film with the launchfilm studio in ./launch-video: brief, brand intake, story and storyboard (user approves), sound, scene build, frame QA, render per platform preset, package, post copy, one-time credit note. Use this first for any request to make, remake or revise a launch or product film; it calls the sibling skills (brand-intake, story, sound, scene-build, recipes, film-qa, launch-post). Do not use it to study a reference video (use reference-study), to browse recipes only (use recipes), or for generic Remotion questions unrelated to a launch film.

evgenspm/launchfilm

Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

関連スキル