YouTubeサムネイル は何をしますか?
実際に人々が見るサイズ(フィードで約160ピクセル幅)で評価されるサムネイルとカバー。1つのタイトルから3つの異なるコンセプトを生成し、ユーザーが選択、1つの最終版、限定的な修正、正確な配信サイズのファイルを出力します。クラフト(コンセプトフレームワーク、プロンプト設計図、テキストルール、小ささのゲート)はここにあり、メカニクスは references/cli-contract.md と references/platform.md にあります。
ステップ0 — 事前準備
セッションごとに1回:
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" tools
blockersが空でない、CLIがない、または0.7.0より古い →/genmedia-skills:setup。キーがない → ユーザーがgenmedia setupを実行するか、自分でFAL_KEYをエクスポートするのを待つ。絶対にキーを読み取ったり、印刷したり、要求したり、入力したりしないでください。config.announce_above_usdとconfig.confirm_above_usd(デフォルトは0.50と2)を保持します:これらはコストゲートのしきい値です。thumbcheck.py toolsは、preview、sheet、fit、frameのうちどれがここで実行できるか(ローカルのffmpegまたはmacOSのsipsが必要)、およびlockupが実行できるか(Chromium系ブラウザが必要)を示します。どちらもない場合 → ワークフローステップ6の機能低下ゲート。drawtext、Pillow、ImageMagickを決して計画しないでください:テキストはモデルによってレンダリングされます。- まず再開:このリクエストに一致する
.genmedia/projects/<slug>/thumbnail.mdがある場合 → それを読み、最初の未完了ステップから続行します。元帳エントリがあるプロジェクトを決して再開しないでください。
UXルール
- ユーザーの言語で返信します(トルコ語入力 → トルコ語出力)。モデルのプロンプトは英語で記述します;画像上のテキストは、公開される言語と正確なスペルを維持します。エンドポイントID、フィールド名、パスはそのまま維持します。
- チャット内でJSON、リクエストID、プロンプト、ツールの説明を表示しないでください。静かに待ちます;バッチごとに最大1行のステータスのみ。
- 質問予算:2つ、一度に1つ、ラベル付きオプションとして、答えが不足している場合のみ:
- Q1 フックワード:タイトルもトピックもない → タイトルを尋ねます。タイトルが既知 → 尋ねないでください;自分で2〜4つのフックワードを書きます(コンセプト間で3つの異なるもの)。
- Q2 顔ありかなしか:それを決定するものがない場合のみ尋ねます。写真、
@handle、「私 / 私の顔 / ben」→ 顔あり。「顔なし」、製品、画面録画、風景 → 顔なし。 ユーザーが1つのサムネイルだけを要求するか、コンセプトを指定する場合 → 3つではなく1つのドラフト;選択ははい/いいえになります。それ以外はすべて、配信行で述べるデフォルトです:フォーマット16:9;テキスト言語 = タイトルの言語;パレット = 指定されたブランドカラー、それ以外はコンセプトごとに選択;フォトリアルなポスタールック;3つのコンセプト;最終マスター2560x1440、1920x1080と1280x720で配信。カウントされないもの:同意確認、選択、コスト確認。
- 選択はハードストップです。 比較シートを表示して待ちます。沈黙、成功したジョブ、またはあなた自身の好みは決して選択ではありません。1つを推奨することは許可されます;選択することはできません。
- 真実性。 サムネイルはドラマチックに表現することはできますが、誤解を招くことは決してありません。表示または記述されるすべてのものは、動画内に存在するか、それに正直に従っている必要があります:架空の数字、結果、反応、製品、ゲストは禁止;実際のプラットフォームの偽のUIは禁止;ユーザーが所有していないロゴやキャラクターは禁止。動画が何を提供するかわからない場合 → 約束する前に尋ねます(これはQ1またはQ2を置き換え、質問を追加するものではありません)。
- 顔。 実在の人物の写真(ユーザーを含む)→ その人物の同意を得ていることの1回の確認と、アップロードが公開URL上にあることの1行。ユーザーではない有名人や公人は絶対に不可;「<有名人>に似ている」は拒否され、架空の顔または顔なしのコンセプトを提案します。架空の顔は代役です:実在の名前のある人物、顧客、専門家、ゲストとして決して提示せず、配信時にその顔がAI生成であることを述べます。
- コスト:最初の有料呼び出し(ワークフローステップ4)の前にリクエスト全体を見積もり、事前確認からのしきい値でゲートを適用します:
announce_above_usd未満 → 実行;confirm_above_usdまで → 見積もりとともに1行、その後実行;それ以上 → 見積もりを表示し、明示的な「はい」を待ちます(references/platform.mdセクション8)。承認は表示された計画をカバーします;より大きな計画には新しい承認が必要です。記憶から価格を引用しないでください;お金を節約するためにユーザーが指定したモデルを交換しないでください。 - 制限付き:最大3ラウンドのドラフトと3ラウンドの修正;各試行は何かを変更します;コンテンツポリシー拒否は変更せずに再送信されません;リクエストIDを持つジョブは再開され、再送信されることはありません。
発見ガードレール
以下のルーティングは日付入りキャッシュです(references/routing-image.md、2026-09-19検証済み)。セッション内でエンドポイントへの最初の有料呼び出しの前:
genmedia models --endpoint_id <endpoint_id> --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>
statusはactiveである必要があります。アクティブでないか404 →references/routing-image.mdで同じタスクの次の階層、それ以外はgenmedia models "<name>" --no-classify --limit 10 --json、最新のアクティブな一致、そしてどのモデルが実行されたかを述べます。- フィールド名、列挙型、制限はスキーマから取得し、決して記憶から取得しません。ユーザーがモデルを指定した場合 → 疑う前に検索します;新しいリリースはベンダーネームスペース(
openai/、bytedance/、google/、alibaba/)にあり、fal-ai/ではありません。 - エンドポイントIDなしで
genmedia runを決して実行しないでください(スマートルーティングは古いデフォルトを解決します)。
ルーティング
| ステップ | エンドポイント | 理由 |
|---|---|---|
| ドラフト、参照なし | openai/gpt-image-2.5/flare/text-to-image、quality: "medium" | タイポグラフィリーダー;ターゲットファミリーのみがテキストをプレビューでき、安価なドラフトモデルはできません |
顔写真、@handle参照、製品ショット、動画フレームのあるドラフト | openai/gpt-image-2.5/flare/edit、quality: "medium" | 参照は image_urls(最大16)に入ります;最終版と同じファミリー |
| 最終版 | openai/gpt-image-2.5/sunburst/edit、quality: "high" | 精密階層;選択されたドラフトが画像1になるため、最終版はその構成であり、新しいロールではありません |
| 修正(テキスト、表情、背景、色) | openai/gpt-image-2.5/sunburst/edit、quality: "high" | 現在の最終版が画像1;ラウンドごとに1つのスコープ |
| テキストなしプレート、フォトリアル(代替パス) | bytedance/seedream/v5/pro/text-to-image | アリーナ#1フォトリアル;テキストは後でGPT Image 2.5編集で追加されます |
| 顔がずれた場合のアイデンティティプレート | fal-ai/nano-banana-2/edit | アイデンティティ一貫性のある画像のルーティングデフォルト;テキストは後で追加 |
| 実際のフレームや写真の拡大 | fal-ai/seedvr/upscale/image;顔またはテキストがある場合:topaz/upscale/image/precision | 忠実;Topazには Faces と Text Refine モデルがあります |
| ユーザーの動画のフレーム | thumbcheck.py frame(ローカルffmpeg) | 正確なタイムスタンプ;ffmpegなし → ユーザーにスクリーンショットを依頼します |
| ユーザー自身のロゴをテキストなしプレートに | thumbcheck.py lockup(ローカルブラウザ) | マークはユーザーのファイルから配置されます;モデルはそれを再描画します |
タイブレーカー:
- 画像上のテキスト → GPT Image 2.5、フォトリアルコンセプトでも。テキストなし(ユーザーがそう言った)→ ドラフトは
bytedance/seedream/v5/pro/text-to-imageまたはその/editで実行される可能性があります;フローの残りは変更されません。Seedreamは1280x720を拒否します(最小面積は1024x1024)qualityフィールドはありません:image_size1920x1080(9:16 → 1080x1920、1:1 → 1536x1536)を送信し、ルーティング行から画像ごとに価格を設定します(2026-09-19時点で約0.07米ドル:3つのドラフトは約0.20米ドル、合計を再計算します)。 - デフォルトのテキスト戦略は ワンパスでベイクイン です。プレートパス(テキストなしプレート、次に「このテキストのみ追加」編集)は、以下の場合に使用します:同じプレートに複数の言語またはA/B表現が必要な場合;ダイアクリティカルマークが2回失敗した場合;プレートが実際のフレームまたは写真の場合。詳細:
references/text-and-readability.md。 @handle→.genmedia/characters/<handle>/character.jsonを読み取ります(アンカーdescription;refs[]でrole: "face"かつactive: true)、refのcdn_urlがある場合はそれを再利用し、それ以外はそのファイルをアップロードします;アンカーをそのまま使用します。real_person: true→ UXルール6が適用されます;記録されたconsent_confirmed_atが確認です。不明なハンドル → そう伝え、/genmedia-skills:characterを提供します;決して代用しないでください。- ユーザーがモデルを指定した → ライブチェック後にそれを使用します;デフォルトを1行で提供します。
- デザインがプレートとユーザー自身のロゴ(ブランドチャンネル、アプリのストアプレビュー動画)である場合 → プレートパス、その後
thumbcheck.py lockupがロゴファイルを幅の割合で中央に配置します(references/text-and-readability.mdセクション2b)。プレートがすでに存在する場合(launch-graphicsプレート、ユーザーの写真)→ 有料呼び出しなし:lockup、ゲート、ステップ10。ロゴファイルがない場合 → それを要求します;決してモデルにマークを描かせないでください。
トラップ:
- 自動サイズトラップ。 編集エンドポイントは
image_sizeのデフォルトをautoにしており、これは入力画像に従います:縦長の顔写真は縦長のサムネイルになります。常に{width,height}を送信します。 - デフォルト品質トラップ。
qualityのデフォルトはhighで、ファミリーはトークン単位で課金されます。すべての呼び出しで設定します:mediumドラフト、high最終版;xhighまたはmaxは、ユーザーが価格に同意した後にのみ使用します。 - 16の倍数トラップ。 1920x1080は有効なGPT Imageサイズではありません。1280x720、2560x1440、または3840x2160をレンダリングし、
thumbcheck.py fitで1920x1080を生成させます。 - 添付画像トラップ。 テキストから画像へのエンドポイントには画像フィールドがありません;写真を無視し、とにかく課金します。参照がある場合は
/editエンドポイントを使用します。 - 新しいロールトラップ。 高品質でプロンプトを再実行すると、別の画像になります(このファミリーには
seedがありません)。最終版は選択されたものの編集です。 - 大文字トラップ。 モデルにトルコ語を大文字にさせないでください:最終文字列は自分で書き(
thumbcheck.py text)、引用符で囲み、一字一句確認します。
ワークフロー
- インプット。 タイトルまたはトピック、フォーマット(デフォルト16:9)、顔ありかなしか、ブランドカラー、参照。HEIC、AVIF、TIFF、または非常に大きな写真を最初に:
thumbcheck.py fit <file> --max-side 2048 --out .genmedia/tmp/<name>.jpg;そのコピーを読み取り、アップロードします。計画を立てる前に、すべてのローカル画像をReadツールで開きます(その中に誰が何がいるかがコンセプトを決定します)。ユーザーの動画からのフレーム:python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" frame <video> --at <seconds or m:ss>、次にそれをReadします。質問予算はUXルール3で許可されている場合にのみ使用します。 - 状態カード。 短いASCII
<slug>(eksi-maya)を選びます:これはバッチlabel、元帳フィルター、出力フォルダー、プロジェクトフォルダーです。自然言語ラベルも機能します;ヘルパーは"Ekşi maya"をEksi-mayaに変換し、その変換された形式がフォルダー名になります。Writeツールで.genmedia/projects/<slug>/thumbnail.mdを書き、各ステップの後に更新します:# <title> — thumbnail promise: <one line: what the video really delivers> format: 16:9 | text language: <code> | face: <none | photo path | @handle> (consent: <yes, date | n/a>) | palette: <colours> [ ] concepts [ ] drafts-1 [ ] gate [ ] pick: - [ ] final [ ] revisions 0/3 [ ] delivered log: - <date> drafts-1: 1 <framework> "<TEXT>", 2 <framework> "<TEXT>", 3 <framework> "<TEXT>" - 3つの異なるコンセプト。
references/frameworks.mdを読みます。少なくとも5つを非公開でブレインストーミングし、異なるフレームワークを使用する最も強い3つを保持します(1つのアイデアの3つの配色ではありません)、それぞれに独自の2〜4つのフックワードを付けます。すべてのフックをテキストチェックにかけ、そのupper文字列をそのまま使用します:フックワードと画像は、ユーザーが述べた(タイトル、概要、ファイル)数字、結果、引用、製品、ゲストのみを使用できます;タイトルだけではそれらが得られない場合 → 質問、制約のないフック、テキストなしコンセプトを使用するか、尋ねます(UXルール5)。真実性ルールに違反するコンセプトは拒否します。顔ありと選択された場合 → 3つのコンセプトのうち少なくとも2つでそれを表示します。タイトルがすでにフックを含んでいる場合 → 1つのコンセプトはテキストなしでも構いません。python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" text "şimdi izle" --lang tr - 検証と価格設定。 各エンドポイントの発見ガードレール、その後:
GPT Image 2.5はpython3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" price openai/gpt-image-2.5/flare/edit,openai/gpt-image-2.5/sunburst/edit1 unitsと応答しますが、これは価格ではありません。このスキルのドル:ジョブ数 x サイズ別、品質別の行(リストにないサイズ → 次の大きい行)のreferences/routing-image.mdのGPT Image 2.5テーブル(t2i-typography注記;編集行はすでに1つの入力画像を含む)+ 追加の参照画像ごとのreferences/platform.md§7 の参照許容量。日付入りヒント(2026-09-19):ドラフト1280x720medium約0.01米ドル;最終版または修正2560x1440high約0.055米ドル;3840x2160high約0.10米ドル。典型的なジョブ全体(3ドラフト + 最終版 + 3修正):参照なしで約0.25米ドル、1つの顔参照ありで約0.45米ドル → デフォルトの通知しきい値未満のため、実行し、見積もりを配信行に記載します。2ラウンド目のドラフト、より多くの参照、xhigh、max、4K、または1リクエスト内の複数の動画(動画ごとに1つのスラッグと状態カード;見積もりは合計)→ 最初に再計算し、ゲートを適用します。 - 1バッチでのドラフト。 参照を一度アップロードし、
urlsを保持します(引数の順序);アップロードは公開URLです。プライベートマテリアルについては一度そう述べます:各プロンプトはpython3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" upload ./me.jpgreferences/prompt-blueprint.mdから構築します。Writeツールで.genmedia/projects/<slug>/drafts-1.jsonに計画を書き込みます:実行:{"label": "<slug>", "max_parallel": 3, "jobs": [ {"id": "draft-a", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<concept A>", "image_urls": ["<face url>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}}, {"id": "draft-b", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<concept B>", "image_urls": ["<face url>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}}, {"id": "draft-c", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<concept C>", "image_urls": ["<face url>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}} ]}python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" run .genmedia/projects/<slug>/drafts-1.json - 確認と選択。 下書きが戻ったらすぐに比較シートを生成し(
thumbcheck.py sheetまたはプレビューthumbcheck.py preview)、ユーザーに表示します(Readツール)。UXルール4:待ちます。選択されたら、状態カードを更新し、最終版のimage_urls[0]に選ばれた画像のURLを設定します。下書きラウンドが終了する前にユーザーが気に入ったものを選んだ場合 → 残りのジョブをキャンセルします。 - 最終版(高品質)。 選択されたドラフトで
sunburst/editを使用、quality: "high"、image_sizeは2560x1440(16:9の場合、他のフォーマットは比例幅)。同じプロンプト構成、image_urls[0]が選択されたドラフトのURL。 - 配信。 最終版の画像を適切なサイズに変換します(
thumbcheck.py fit)。ユーザーにファイルを表示します。チェック:小さなサイズでのテキストの可読性。配信サイズを状態カードに記録し、ジョブを完了としてマークします。 - 修正(必要な場合)。 ユーザーが変更を要求 → 状態カードの修正カウンターを確認します(0/3未満)。1つのスコープ(「テキストを大きく」「色を青に」「笑顔を追加」)。現在の最終版を
image_urls[0]として、sunburst/edit、quality: "high"、同じimage_sizeを使用。プロンプトは変更内容を正確に記述します。新しい画像を表示し、状態カードを更新します。 - 機能低下ケース。 利用可能なツールがない場合(
thumbcheck.pyのみ)、モデルのみのワークフローにフォールバックします:最終出力を適切なサイズに調整するための追加の編集ステップを使用します。
参照
references/cli-contract.md:完全なCLI契約references/platform.md:プラットフォームの詳細とルールreferences/frameworks.md:コンセプトフレームワークreferences/prompt-blueprint.md:プロンプト設計図references/text-and-readability.md:テキストと可読性のルールreferences/routing-image.md:画像モデルのルーティング
重要な注意
- このスキルは
genmediaツールセットに依存しています。 - すべての画像生成はコストがかかります。ワークフローは予期しない課金を防ぐためにコストゲートを実装しています。
- テキストの可読性は小さなサムネイルサイズで最も重要です。
- 顔の参照は一貫性を必要とし、許可が必要です。
- ワークフローの状態はプロジェクトファイルを通じて維持されます。