Fish Video Skill v2
あなたは1回の会話から1本の動画を作成します。その品質は、参考分析で分析されたトップショート動画の品質に達する必要があります:
- 約1秒ごとに新しい何かが画面に現れる
- 深度のある実際のアセット(テクスチャ、コンタクトシャドウ、グロー)
- 3倍のヒーローワードコントラストを持つタイポグラフィ
- オブジェクトをポータルとして使用したトランジション
- すべての動きの前に着地するスウィッシュ、リビールで終わるライザー、フラッシュカット上のインパクト
- 聴こえる音楽の上に乗った声
汎用的な声のスライドショーは、QAを通過しても失敗です。
ルーター: タスクに到達したらガイドを読み込む
現在のステップに必要なものだけを読んでください:
- ユーザーが単語だけを与えた、トピックのアイデアが欲しい、またはスクリプトを作成中の場合 → トピックから動画へ
- スタイル、パレット、またはルックを選択中の場合 → スタイルレシピ、
config/styles.yaml - アイデアの説明やムードによる色の選択が必要な場合 → 図解デザイン
- シーンを書く場合 → シーンカタログ(モーションルールとカメラを含む)
- 音楽、SFX、レベル、または「電話で音楽が聞こえない」に関する場合 → サウンドデザイン
- 声の選択や指示の場合 → ボイスディレクション
- キャプションとタイポグラフィの場合 → キャプションとタイポグラフィ
- 画面上のウェブサイトやアプリの場合 → ウェブサイトツアー収録
- 一致させる参考動画がある場合 → 参考分析、参考動画分析、トレンド分析
- プラットフォームのサイズと制限の場合 → プラットフォーム仕様
- どのオープンソースツールを使用すべきかの場合 → フィールドガイド
譲れないワークフロー
0 診断 ─▶ 1 インタビュー(すべての質問、一度だけ) ─▶ 確認 ─▶ 2 調査 + トレンド + 参考(並列)
─▶ 3 アセット + 画面収録 + 音声(並列) ─▶ 4 ストーリーボード(すべての単語をあなたが書く) ─▶ ゲート
─▶ 5 スチル(ルック) ─▶ 6 レンダリング ─▶ 7 QA + レビューループ(修正、再レンダリング、繰り返し) ─▶ 8 パッケージ ─▶ 9 最終レビュー ─▶ 10 クリーンアップ(許可を得て)
ルール:
-
最初の一度だけのインタビュー。 ユーザーの入力を必要とするすべての質問はステップ1で行われます。それには声とトーン、色、画面の手順、APIキー(各キーの取得方法を含む)、およびインストールするオプションの拡張機能が含まれます。
fishvideo interview <dir> --confirmの後は、質問をしません。回答とスタイルレシピから判断してください。以下の場合のみ、再度ユーザーに連絡します:- (a)
checkpointsでユーザーが選択したオプションの停止ポイント - (b) ユーザーが実行しなければならないデスクトップ録画;インタビューで同意済みであり、開始する正確なタイミングを伝えます
- (c) 最終レビュー
- (d) クリーンアップの許可
ユーザーが後で異なることを言った場合は、ユーザーに従ってください。
- (a)
-
インタビューが確認されるまでスクリプトを絶対に書かないでください。
fishvideo script、all、およびフルrenderは、fishvideo gateが通るまで拒否します。 -
テンプレートテキストを絶対に出荷しないでください。 スキャフォールドはTODOのスケルトンです。あなたはこの動画のために、画面上のすべての単語とナレーションの行を新しく書きます。そのため、ゲートはTODO、v1の決まり文句(「X、解説」、「60秒で」、「ご視聴ありがとうございました」)、および
examples/からコピーされた行をブロックします。例は構造を示すものであり、内容ではありません。 -
解説には図解が必要です。
goal: explainの動画には、少なくとも1つのdiagram、whiteboard、neonline、またはsplitリビールメカニズムのシーンが必要です。箇条書きのリストは説明ではありません。
ステップ0: 診断
セットアップ(初回のみ)はREADME.mdにあります:npm install、venv、およびpip install -r requirements.txt。次に以下を実行します:
.venv/Scripts/python scripts/fishvideo.py doctor --keys # Windows (macOS/Linux: .venv/bin/python)
不足しているキーと拡張機能をメモします。それらについてインタビューのラウンド8で正確に尋ねます。
最良の結果を得るためのセットアップ(必ず行ってください、スキップしないでください):
- 自分で拡張機能をインストールします。
doctorが不足している拡張機能を示した場合、ユーザーにやらせずに、スキルのvenvにインストールしてください:pip install "rembg[cpu]"(切り抜き)、pip install kokoro soundfile(自然なローカル音声)、pip install faster-whisper(ユーザー自身のボイスオーバーの位置合わせ)。また、SFXライブラリがない場合は、fishvideo assets sfx-packを一度実行してください。何をインストールしているのか、なぜかを1行でユーザーに伝えます。ユーザーがラウンド8で拒否した拡張機能のみスキップします。- APIキーを尋ねます。 これらはオプションです:無料のフォールバックを通じてすべてが機能します。しかし、最良の結果をもたらします:ElevenLabsは最も自然な音声を提供し、Pexels/Pixabayは最も多くのストック写真と動画を提供し、Freesoundは最も多くのSFXを提供し、YouTube Data APIはトレンドチャートを提供します。ラウンド8では、この動画に関連する不足しているキーを尋ね、それぞれの取得方法を説明し(無料のサインアップリンクは
doctor --keysにあります)、「いいえ」や「後で」を押し付けることなく受け入れます。これはインタビュー内でのみ行い、作成が開始された後は決して行いません。
ステップ1: インタビュー(厳格)
fishvideo new projects/<slug> --prompt "<ユーザーのリクエスト、そのまま>"
fishvideo interview projects/<slug> # JSON: 未回答の質問、8ラウンドにグループ化
質問バンクはconfig/interview.yamlにあります。8ラウンド、約30の質問があります:
| ラウンド | カバー範囲 |
|---|---|
| 1 | 目的 |
| 2 | 形状とスタイル |
| 3 | 色、タイポグラフィ、テクスチャ |
| 4 | 声、配信、音楽、SFX |
| 5 | 実際のアセットと画面収録 |
| 6 | コンテンツ、事実、CTA、言語 |
| 7 | キャプション、サムネイル、承認 |
| 8 | APIキーと拡張機能 |
単語または分野のみ? ラウンド1の前に、5つのトレンド角度を生成します:yt suggest、yt search --recent-days 30、trends(haikuサブエージェント、並列)、トピックから動画へに従って。それらをtopic質問として提供します。選択された角度がその後のすべてを決定します。
質問の仕方:
AskUserQuestion呼び出しごとに1ラウンドずつ(最大4質問)尋ね、オプションをそのまま使用します。推奨オプションが最初に来ます。「その他」は常に利用可能です。- 自由記述の質問(
free_text: true)は、そのラウンドの通常のメッセージで、そのラウンドの多肢選択式の呼び出しと一緒に行います。 - プロンプトがすでに明確に回答している場合(
from_promptで検出されたものが表示される)のみ質問をスキップし、それでも回答を記録します。 - 各回答を記録します:
fishvideo interview <dir> --set style=paper-collage --set platforms='["shorts"]'。回答はbrief.yamlにマッピングされます:パレットはbrand.colorsに、ムードはスコアとテンポに、声と配信は音声設定とポストチェーンに、スタイルはテクスチャ、ペーシング、モチーフにマッピングされます。 - 声: ラウンド4と6の後(言語と配信がわかったら)、
fishvideo voices <dir> --auditionを実行します。build/auditions/内のファイルパスをユーザーに通知して再生できるようにし、選択させます。これもインタビューの一部です。 - キー: ユーザーの回答に関連する不足しているキーのみを提供します。各キーの取得方法(バンク内のテキスト)と、それがない場合の影響を説明します。ユーザーがキーを貼り付けた場合、
--set keys_paste=...で記録します。キーはスキルのgitignoredな.envに保存され、エコー、ログ、コミットされることはありません。ユーザーが拡張機能を選択した場合、今すぐvenvにインストールします(pip install "rembg[cpu]"、kokoro soundfile、faster-whisper)。 - 最後に、
fishvideo interview <dir> --summaryをユーザーに読み返します。単純な「はい、進めて」を求め、--confirmを実行します。
ステップ2: 調査、トレンド、参考(並列実行)
これらを並列サブエージェントとして起動します。モデルルーティング:haikuはフェッチとルックアップスイープ用、sonnetは分析とルーチンコード用、そしてあなた(opus)はスクリプト、ストーリーボード、デザイン判断、最終レビュー用です。各エージェントにプロジェクトパスと生成する正確な出力ファイルを指定します。サブエージェントはレポートファイルを書き込めない場合があります;その場合はテキストを返すので、あなたが保存します。
| タスク | コマンド | エージェント |
|---|---|---|
| 事実とソース | ウェブ検索、次に fishvideo research <dir> --url ... → research/facts.md | haiku |
| トレンド | fishvideo trends <dir> --topic "<topic>" --region <IN/US> → research/trends.md(タイトルフォーミュラ、タグ、フック、現在ランキングから導き出された理想的な長さ) | haiku |
| YouTube検索 | fishvideo yt search "<q>" -n 20 [--recent-days 30]、yt info、yt subs、yt suggest | haiku |
| 参考動画分析(ユーザーが提供した各リンク、および選択したスタイルのトップトレンド例1〜2つ) | fishvideo yt download <url> --purpose reference --project <dir>、次に fishvideo dissect <dir>/reference/<file>.mp4 --out <dir>/reference/dissect --fps 4 [--vtt subs.vtt]。すべてのシート、スペクトログラム、timeline.mdを読み、次に reference/analysis.md を参考動画分析の9セクションで書く | sonnet(ビジョン) |
分析から数値を取得します:変化率、スウィッシュのタイミングとレベル、声の上の音楽ベッドのdB、ダッキングの深さ、ラウドネス、キャプションスタイル。それらをbrief.yaml → match:に書き込み、ストーリーボードとミックスがそれらに従えるようにします。技術をコピーし、コンテンツはコピーしません。
ステップ3: アセット、画面収録、音声(並列実行)
実際のアセット(assets.policyがmixedの場合):
- 検索:
fishvideo assets search <dir> "<noun>" --kind photo|video|music|sfx [--providers wikimedia,pexels]。assets/_candidates/のプレビューを開いて確認します。 - 選択したものをダウンロード:
fishvideo assets get <dir> <ids>。すべてのファイルはライセンスとともにassets/credits.jsonに記録されます。 - 切り抜きを作成:
fishvideo assets cutout in.jpg out.png(rembg、isnet-general-useモデル;非商用のデフォルトモデルは絶対に使用しないでください)。 - Bロールを準備:
fishvideo assets clip <dir> <file> <clip_id> --start S --dur Sでfootageシーン用のフレームを生成します。 - CC-BYのYouTubeセクションを取得:
fishvideo yt clip <url> <start> <end> <dest> --project <dir>。CC以外の動画は拒否します。 - 許可されるライセンス:CC0、PD、Pexels/Pixabayライセンス、CC-BY、CC-BY-SA(クレジット付き)。NCやNDは不可。CC以外のYouTube動画、参考動画からの映像、ロゴの再描画、実在の人物の肖像を誤解を招く方法で使用することも不可。
画面収録:
website:captures:の下のショットをリストし、fishvideo capture <dir>を実行します。仮想時間で読み取り専用で録画します。desktop:fishvideo screenrec record <dir> <shot> --seconds N [--window "Title"] [--scale 2]。開始前に、ユーザーに実行する正確な手順を伝えます。F8でマークをドロップ、F9で停止します。files:fishvideo screenrec import <dir> <shot> recording.mp4。
3つすべてが同じキャプチャフォルダを生成します。tourシーン(frame: inset)は、グローカーソル、クリックリップル、クリックSFX、カーソルへの1.6〜2倍ズーム、スポットライト、STEPカードを追加します。ズームが鮮明に保たれるよう、スケール2で録画します。
音楽:
- ライブラリトラック:
assets search <dir> "<brief.music.search>" --kind music、次にassets get、ファイルをassets/music/に置きます。 - または合成スコアを残します。
music.source: synthを設定して強制します。
SFX: fishvideo assets sfx-packを一度実行します(Kenney CC0)。assets search --kind sfx(Freesound CC0)でassets/sfx/<cue-type>/にさらに追加します。
音声: ナレーションを書き(ステップ4)、次にfishvideo voice <dir>を実行します。実際のクリップに合わせてシーンを再タイミングするためにストーリーボードを再実行します。ユーザーが自分のナレーションを録音した場合、代わりにfishvideo voiceover <dir> recording.wavを実行します:faster-whisperを使用して録音をスクリプトに位置合わせし、行ごとにカットします。
感情: 各シーンにmood:(curious、tense、urgent、excited、warm、serious、reflective、triumphant、neutral)を設定します。これにより、行ごとの速度とピッチ、およびElevenLabsのスタイルが設定されます。句読点はすべてのエンジンで配信を形成します:...はポーズ、?と!はトーンを上げ、短い文はパンチを効かせます。ビート全体でムードを変化させます:40秒間フラットなトーンは「汎用的な声」の苦情です。行内の無音の部分は自動的にカットされます(pacing.max_word_gap)。
音楽のタイミング: ライブラリトラックの場合、fishvideo beats <track>を実行します。ストーリーボードのbpmをそのテンポに設定し、music.offsetを設定して、ビートまたはドロップが最大のリビールと一致するようにします。
画面収録: fishvideo screenrec tighten <dir> <shot>を実行して、アイドル時間をスピードアップします。ローディングスピナーを視聴者に見せないでください。
ステップ4: ストーリーボード(あなたが書く)
fishvideo script <dir>を実行します。スタイルレシピ(config/styles.yaml、スタイルレシピ)からstoryboard.yamlを、TODOで埋め尽くされたビートのスケルトンとしてスキャフォールディングします。そのタイミングはプレースホルダーです。次に、以下の順序で適切に書き直します:
- すべてのTODOを置き換えます:コピー、パラメータ、ナレーション。シーンカタログの上部の表に、必要なパラメータがリストされています。
- `brief.pu
...
[Translation truncated]