Communitygithub.com

evgenspm/launchfilm

レンダリング済みランチフィルムのQAを実施し、出荷前に問題を発見します。「ビデオのQA」、「レンダリングの確認」、「投稿準備完了?」、「フィルムのレビュー」、「安っぽく見える理由」、「キャプション/セーフゾーン/ラウドネスの確認」などのリクエストに対応します。CLIの自動レポート(`npx launchfilm qa <slug>`)、コンタクトシート、キータイムスタンプのスチルを読み取り、テキストの可読性、コントラスト、プラットフォームのセーフゾーン、ラウドネス(−14 LUFS、−1.5 dBTP)、ffprobeエンコード仕様、黒・フリーズフレーム、ビートに合わせたカット、12のアマチュア兆候をブロッキングチェックとして確認します。結果は `qa/<slug>/QA.md` に書き出され、各行がファイルまたは測定値を引用します。実行されなかったチェックは NOT CHECKED と記載され、PASS とは決して記載されません。scene-build でピクチャの問題を修正し、sound でミックスを修正し、launch-film でパイプライン全体を、reference-study で参照ビデオを扱ってください。

launchfilm とは?

このスキルは、AIエージェント(Claude Code、Cursor、Codexなど)向けに設計された、レンダリングされたランチフィルムの品質保証(QA)ツールです。`npx launchfilm qa` コマンドの結果を解析し、コンタクトシートやスチル画像を確認することで、ビデオの品質を詳細に検証します。検証項目は多岐にわたり、テキストの可読性、コントラスト、プラットフォームごとのセーフゾーン、ラウドネス(−14 LUFS、−1.5 dBTP)、ffprobeによるエンコード仕様、黒フレームやフリーズフレームの検出、ビートに合わせたカット、さらには12のアマチュア制作の兆候(T1-T12)と16の納品チェック(D1-D16)を実施します。各チェックはPASS/FAIL/NOT CHECKEDで評価され、FAILの場合はフレーム範囲と修正提案が報告されます。最終的なQAレポートは `qa/<slug>/QA.md` に出力され、すべてのチェックがPASSでなければ「READY」とはみなされません。主なプラットフォームはCLIツールであり、Remotionとffmpegに依存します。

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

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

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

ドキュメント

film-qa

あなたはフレームと数値をチェックします。意図ではありません。PASS には証拠が必要です。開いたファイルパスまたは測定した数値です。 それ以外は NOT CHECKED: <理由> と記載します。確認または測定していないものに対して PASS と書かないでください。

パス(launch-video/ からの相対、または launchfilm リポジトリ内の studio/):フィルムソース films/<slug>/(film.json、 STORYBOARD.md、BRIEF.md)、レンダリング out/<slug>/、QA qa/<slug>/(CLI が report.md を書き込みます。あなたはその隣に QA.md を書き込みます)。 正確な CLI フラグ:npx launchfilm <cmd> --help。テスト済み構文のコマンド:references/commands.md。

手順

  1. 自動パス。 npx launchfilm qa <slug> → 最初に qa/<slug>/report.md を読む(シート、ffprobe、ラウドネス、 自動チェック)。その測定数値を証拠として QA.md にコピーします。測定済みの項目を再測定しないでください。
  2. シート。 レポートにリストされている(または npx launchfilm sheet <slug> で生成された)すべてのコンタクトシートを開きます。すべてのセルを読みます。 開いたファイルを QA.md にリストします(T12 の証拠)。
  3. スチル。 npx launchfilm still <slug> <t> --preset <id> を、フィルムが出荷する各プリセットに対して、以下で実行します: 各ショット境界 + 6 フレーム、各テキスト開始 + ホールド/2、フレーム 0、最後のフレーム、およびフリーズまたは黒フレームスキャンがフラグを立てたすべての間隔。 さらに、ヒーローテキストフレームで --scale 0.25(16:9 で 480×270)で 1 枚のスチル:X タイムラインプレビュー。各 PNG を読みます。
  4. 測定 レポートが測定しなかった項目:ラウドネス、トゥルーピーク、黒フレーム、フリーズ区間、ビートに対するカットタイミング、 テキスト背後またはセーフゾーン内のコントラスト、キャプション行の長さ。コマンドは references/commands.md を参照。
  5. ブロッキングチェック 以下の T1~T12、次に納品チェック D1~D16。各チェックは PASS / FAIL / NOT CHECKED + 証拠 + ルール。
  6. qa/<slug>/QA.md を書く references/qa-template.md から。
  7. 修正ループ。 すべての FAIL:発見事項をフレーム番号と共に scene-build または sound に渡し、影響範囲のみを再レンダリング (npx remotion render … --frames=<a>-<b> または CLI 同等のもの)、それらの項目を再チェック。最大 2 ループ。その後、残った FAIL をスチル添付でユーザーに報告します。新しい証拠なしに FAIL を PASS に格下げしないでください。

ブロッキングチェック:12 の兆候(craft/00)

ID合格条件証拠
T1 静止フリーズ区間が 0.6 秒以上ない(エンドカードの落ち着き(≤ 3 秒)を除く)。フラグが立てられた各区間について、開始と終了のスチルでドリフトまたは動きが確認されているfreezedetect 出力 + 区間ごとに 2 枚のスチル
T2 デフォルトイージングfilms/<slug> 内で grep G1(scene-build)が空。CSS トランジションなしgrep 出力
T3 一度に全部3 つ以上の兄弟を持つすべてのグループは、ステガーで入場(シートセルに部分状態が見える、またはコード内でステガー ≥ 1 フレーム)。グループ入場 ≤ 24 フレームシートセル参照またはコード行
T4 単一速度20 秒超のフィルムにはリズムの区切りが 1 つ以上ある(沈黙、黒へのスプラッシュカット、パレット反転、中央ショット時間の 2 倍以上のホールド)。発射モード:すべてのカットがビートの ±2 フレーム以内film.json の境界と beats.json。検出されたカット
T5 サウンドfilm.json のすべての視覚的イベントに SFX があるか、VO/音楽でカバーされている。音楽は VO 下でダッキング。計画された場所に真の沈黙イベント数(音あり/なし)。VO ウィンドウと音楽のみのウィンドウのラウドネス
T6 ラベルとしてのテキストテキストがメッセージである場合(主張 10 %)、ヒーローテキストはフレーム高の 8 % 以上。すべてのテキストは 0.2 ×(単語数 + 1)秒以上保持。3 行以内。キャプションは 2 行以内項目ごとの表
T7 フラットな見た目発射モード:グレイン + ビネットが存在。セクションごとに 1 つの名前付き処理。プロダクトモード:ヘアライン、ソフトシャドウ。mp4 スチルの最も暗いグラデーションにバンディングなしgrep + mp4 からのスチル
T8 ウェブレイアウトスチルごとに焦点は 1 つ。3 行を超える段落なし。箇条書きなし。UI クロームはクローム自体が目的の場合のみスチル
T9 汎用ストックfilms/<slug>/footage/SOURCES.md 内のすべてのフッテージクリップにソース + ライセンスの記載あり。ストッククリップはグレーディング済みで 1.5 秒以下にカットSOURCES.md + スチル
T10 装飾的トランジショントランジションは語彙内。非カットトランジションは 5 秒あたり 1 つ以下。blur-dissolve ≤ 12 フレームfilm.json
T11 ストーリー前のテンプレートSTORYBOARD.md に approved: がある。フレーム 0 が黒でなく、0.5 秒のスチルと異なる。1.5 秒(x, li)/ 1 秒(reel)までにプロダクトのカテゴリが明確。問題の後にペイオフ。最後にブランドサーフェスで 2 秒以上の静けさスチル 0、0.5、1.5 秒、最後の 2 秒
T12 一度も見てないこの QA:開かれたすべてのシートとスチルがリストされているQA.md のファイルリスト
T1~T12 のいずれかの FAIL は、配信用レンダリングとパッケージをブロックします。

納品チェック(プリセットごと。番号は craft/08#delivery-checks)

値は harness.config.json presets から、なければ craft/10#presets から。これらの ID を正確に使用してください。craft/08 と QA.md で共有します。

ID合格条件
D1ビデオ h264、プロファイル High(Remotion の ffprobe が 100 を出力)、pix_fmt yuv420p、コンテナ mp4
D2幅 × 高さがプリセットと正確に一致
D3一定の fps = コンポジション fps(r_frame_rate = avg_frame_rate)
D4長さ = film.json ±1 フレーム、かつプリセットの長さ範囲内(x-16x9 ≤ 140 秒、reel-9x16 ≤ 90 秒)
D5オーディオ aac LC(Remotion の ffprobe が 1 を出力)、48000 Hz、2 チャンネル、~192 kbps。hero-loop:オーディオストリームなし
D6統合ラウドネス −14 ±1 LUFS。トゥルーピーク ≤ −1.5 dBTP。VO −16…−14 LUFS(測定可能な場合)
D7moov が mdat の前にある(faststart)
D8ポスター = そのプリセットのフレーム 0 が存在し、同じサイズ、黒ではない(YAVG > 20)、フックが表示されている
D9VO があるすべてのプリセットについて SRT がレンダリングの隣にある。キャプションと同じフレーズ。HH:MM:SS,mmm。2 行以下。各 0.8 秒以上。タイミング ±2 フレーム
D10重要なもの(キャプション、テキスト、ロゴ、使用中の UI)がプリセットのセーフゾーン外にない(オーバーレイスチル)
D11キャプションは VO があるすべてのプリセットに焼き付け(hero-loop:なし、ph-16x9 は設定による)。2 行以下。16:9 では 1 行 42 文字以下、4:5, 1:1, 9:16 では 32 文字以下。変化する要素の上に決して重ならない。フッテージ上のキャプションとテキストのコントラスト ≥ 4.5:1、背景上のアクセント ≥ 3:1。480 px(16:9)および 360 px(4:5, 9:16)幅のスチルで読み取り可能
D12フリーズリストとブラックリストが、設計されたホールドおよびブラックビート(film.json または STORYBOARD にリストされたもの)のみと一致
D13BT.709 タグまたは未タグの HD。最も暗いグラデーションが、mp4 スチルと PNG の比較で新しいバンディングを示さない
D14ファイルサイズが上限未満:x ≤ 512 MB、README ヒーロー ≤ 10 MB
D15out/<slug>/credits.txt がすべての CC BY アセットをそのクレジット行とともにリスト。films/<slug>/footage/SOURCES.md が完全
D16hero-loop のみ:フレーム N がフレーム 0 と等しい。3 回ループしたファイルが継ぎ目でジャンプを示さない

テキスト時点での可読性

film.json 内のすべてのテキストアイテム(主張、キャプション、ラベル、VO が指す UI コピー)について:単語数、イン/アウトフレーム、 保持 = (out − in) / fps、必要 = 0.2 × (単語数 + 1) 秒。また、480×270 のスチルでヒーロー行がまだ読み取り可能か(文字が区別できるか)を確認します。 QA.md ではアイテムごとに 1 行です。

レポートのルール

  • すべての PASS は証拠を引用します:qa/<slug>/stills/x-16x9-12.30.png、I = −14.2 LUFS、grep G1: 0 lines。
  • 測定された数値は、単位とそれを生成したツールを保持します(system ffmpeg 8.1 ebur128 または remotion ffmpeg loudnorm)。 Remotion にバンドルされた ffmpeg には ebur128、signalstats、freezedetect、tile、drawbox および rawvideo 出力がありません。それらにはシステムの ffmpeg を使用し、その旨を明記します。存在しない場合、それらの項目は NOT CHECKED です。
  • FAIL はフレーム範囲、ルール(craft/NN#anchor または T#/D#)、および提案された修正を指定します。
  • サマリーブロックは、T1~T12 および D1~D16 がすべて PASS の場合のみ READY と表示します(D16 は hero-loop のみ)(NOT CHECKED は理由とともに準備未完了とカウントされます)。

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

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).

evgenspm/launchfilm

Find launchfilm recipes (published launch films studied frame by frame and written down as text, some with ready Remotion code) and build the user's film from 1 to 3 of them. Use for "use a template", "start from a recipe", "make a 30s launch film from recipe <id>", "something like this style", "show me options", "which recipe fits a 30 s vertical launch", "remix recipe X with our brand", or when a storyboard needs a proven hook, feature beat, logo reveal or end card. Searches recipes/CATALOG.md or recipes/index.json, scores and picks 1 to 3, shows each with its source link, reads the recipe.md beat sheet, then scaffolds with `npx launchfilm new <slug> --recipe <id>`: ready code when Recipe.tsx exists, else TODO scenes built from the beat sheet with studio presets, keeping the recipe's timings, springs and sounds re-timed to the user's length and beat grid. Use reference-study to make a new recipe, story for the storyboard, scene-build for scenes, launch-film for the whole pipeline.

関連スキル