広告(Ads)
ユーザーがすでに持っている製品を対象とした、段階的な広告制作プロセスです。事実、スクリプト、ショットリスト、承認済みキーフレーム、クリップ、音声、アセンブリ、QAを含みます。2つの基本ルールがあります。製品忠実性: 物理製品を映すすべてのフレームは、ユーザーの写真を編集エンドポイントで加工したものから始まり、テキストから再想像されることはありません。ソフトウェアは、ユーザーの実際のキャプチャとスクリーンレコーディングを通してのみ表示され、合成され、生成モデルを通過することはありません(references/software-route.md)。主張規律: スクリプトまたは画面上のあらゆる主張、引用、数値、価格は、ユーザーが提供したものに遡り、発明されることはありません。
ステップ0 — プリフライト
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
blockersが空でない場合、CLIが見つからない場合、またはバージョンが0.7.0より古い場合 →/genmedia-skills:setup。キーがない場合 → ユーザーがgenmedia setupを実行するか、FAL_KEYをエクスポートするまで待ちます。キーを読み取ったり、印刷したり、要求したり、入力したりしないでください。config.announce_above_usdとconfig.confirm_above_usd(デフォルトはそれぞれ0.50と2)をコストゲートに使用し、ffmpeg.foundをアセンブリパスに使用します。- まず再開します。
.genmedia/projects/*/plan.mdをグロブします。この広告のプランが存在する場合 → それを読み込み、python3 "${CLAUDE_SKILL_DIR}/scripts/pipeline.py" urls --label <slug>を実行し、最初の未完了ステップから続行します。元帳エントリがあるプロジェクトを決して再開しないでください。同じ製品のproduct-photoshootプランが存在する場合 → そのPRODUCT LOCKと承認済みスチルをキーフレーム参照として再利用します。
UXルール
- ユーザーの言語で返信します(トルコ語の入力 → トルコ語の出力)。モデルプロンプトは英語です。話し言葉、キャプション、画像上のコピーは、対象言語のままで、引用符で囲み、承認されたとおりに綴ります。
- チャット内ではJSON、リクエストID、ツールのナレーションは使用しません。黙って待ちます。バッチごとに最大1行のステータス行のみ表示します。
- 質問予算: プラン前は3つまで。一度に1つ、ラベル付きオプションとして(可能な場合はAskUserQuestionを使用)。それぞれにデフォルト値があり、ユーザーがスキップした場合にそれを使用します。 順番:
- 製品: 写真、またはソフトウェアの場合は実際のキャプチャとスクリーンレコーディング、さらにそれが何であり、それについて何が真実であるか。何も添付されていない場合 → 質問します。これだけはデフォルトがない唯一の質問です。写真はあるが事実がない場合 → パッケージに印刷されていて写真に表示されているものだけを使用し、残りは「除外」としてリストします。
- プレゼンターと音声。デフォルト: 対象者に合わせた生成合成プレゼンター、対象言語での音声(特に指定がない限り、ユーザーが書き込む言語)。オプション: 生成 ·
@handle· 自分の写真(同意が必要) · プレゼンターなし。 - モードとプラットフォーム。デフォルト: トーキングプレゼンターUGC、15秒、9:16(ショートフィード用)。「静的」 → 見出し形式、4:5と1:1。 リクエストですでに回答されているすべての質問をスキップします。最も漠然としたリクエスト(「この広告を作って」) → すべてデフォルトを使用し、プランカードに「前提」としてリストします。同意、プラン承認、チェックポイントは予算外です。
- ハードストップ: プランカード(動画の場合は常に、静止画の場合はゲートが確認を要求した場合)、クリップの前のキーフレーム、音楽の前のクリップと音声、キャプションとアセンブリ。沈黙や成功したジョブは承認ではありません。クリエイティブの選択(フック、プレゼンター、テイク)はユーザーに属します。
- すべてのバリエーションを含むプラン全体のコストゲート: announce未満 → 実行。間の場合 → 1行の見積もりを表示して実行。confirm以上 → はいの返事を待ちます。ユーザーが指定したモデルを決して交換しません。安価なルートをプランカードの行として提案します。
- 制限付き修正: ステップごとに3回の試行。毎回何かが変更されます。ポリシー拒否を変更せずに再送信することはありません。リクエストIDを持つジョブは再開され、再送信されることはありません。それ自体がconfirmしきい値以上(Seedanceのスピーキングテイク1つで該当)の修復またはリロールには、実行中の合計とともに新しい承認が必要です。失敗したジョブはすでに課金されている可能性があります。
- 安全性、交渉不可: 捏造された testimonial、顧客、レビュー、評価、ユーザー数、賞、医療、財務、収入の主張、偽の緊急性、発明された価格は禁止。実際の人物の顔や音声には、ユーザーの同意確認が必要です。生成されたプレゼンターは合成人物です。納品時にその旨を伝え、プラットフォームや一部の法律で開示が必要になる場合があることをユーザーに伝えます。決して顧客として説明してはいけません。競合他社の名前、ロゴ、パッケージは禁止。アップロードと結果は公開URL上にあります。未公開の製品や人物の写真をアップロードする前に、一度その旨を伝えます。ルールと表現:
references/scripts-and-claims.md。
ディスカバリーガードレール
references/routing-video.md、references/routing-audio.md、references/routing-image.md、references/routing-utility.md は日付入りキャッシュです(2026-09-19 確認済み)。プラン内の個別のエンドポイントは、プランカードが表示される前に確認されます:
genmedia models --endpoint_id <id1>,<id2>,<id3> --status all --limit 50 --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>
- すべてのIDが返され、
activeである必要があります(--limitなしの場合、呼び出しは最大20行を返します。行がないことはIDが存在しないことの証明にはなりません。そのIDだけを再度問い合わせてください)。そうでない場合、ルーティングリファレンスでそのタスクの次のティアを選択します。それでもだめなら、genmedia models "<name>" --no-classify --limit 10 --jsonで最新のアクティブな一致を探し、どのモデルが実行されたかを伝えます。 - フィールド名、列挙型、制限はスキーマから取得し、記憶からは使用しません。ファミリー間で引き継がれません(
promptvstext、image_urlvsstart_image_url、"5"vs5)。 - IDやフィールドを決して発明しないでください。エンドポイントIDなしで
genmedia runを実行しないでください。新しいリリースは、ベンダーの名前空間(bytedance/、creatify/、openai/、minimax/、veed/)の下にあります。fal-ai/だけではありません。
ルーティング
製品タイプ。 アプリ、SaaS、開発者ツール、拡張機能、またはインターフェースが製品であるもの → ソフトウェアルート: 計画の前に references/software-route.md を読んでください。これにより、以下のキーフレームと静止画のルールが置き換えられます(キャプチャの編集なし、モデルによるコピーの焼き付けなし)。スクリプト、主張、音声、音楽、キャプション、アセンブリ、コストゲート、チェックポイントはここに記載されているとおりに残ります。
成果物。 静的な単語(「görsel」、「banner」、「static」、「carousel」、指定された見出し) → 静止画形式、references/static-formats.md。動きや音声の単語、または指定がない場合 → 動画、モードは references/ad-modes.md から: presenter(デフォルト)、how-to、unboxing、showcase、problem-solution、testimonial(ユーザーが提供する実際の引用がある場合のみ)、tv-spot。
動画の制作ルート(最初に一致したものが採用):
| 状況 | ルート |
|---|---|
| カメラ前での発話なし: ショーケース、テレビCM、またはナレーションのみのハウツー | B(トーキングヘッドなし: Bロール + ナレーション + 音楽) |
| 話し言葉が英語でない | B。トルコ語がルートAで動作するのはWan 3.0のみ、Seedanceでは不可: ネイティブリスニング(references/platform.md セクション10)ではWanは正しかったが、Seedanceのすべてのバージョンが誤って発音した(şをsと発音、「merhala」)。Veo 3.1 Liteは完璧だったが、falにはもうリストされていない。Aは、1つのプローブクリップがユーザーのリスニングチェックに合格した場合のみ |
| 表現が正確である必要がある場合(ブランド名、価格、法的文言)、固定ブランドボイス、またはバリアント間で同じボイス | B: TTSがテキストを正確に読み上げます。ネイティブ音声モデルは言い換えや誤った発音をします |
| 15秒より長い、またはプレゼンターとBロールのカットアウェイがある場合 | B |
| 英語、6〜15秒のワンコンティニュアステイク、プレゼンターがカメラに話しかける場合 | A |
- ルートA: 1回の生成で台詞を話します。承認済みキーフレーム(実際の製品を持つプレゼンター) → ネイティブ音声画像から動画へ。
- ルートB: ブロックごとのTTS(カメラ前ブロック、ナレーションブロック) → カメラ前ブロックのみのトーキングヘッド → 承認済みキーフレームからのBロール → アセンブル。最初に音声: その測定された長さがすべてのクリップの持続時間を設定します。
ロールのデフォルト(アクティブ 2026-09-19; 価格の単語は日付入りヒントであり、gm.py price が決定します)
| ロール | エンドポイント | 理由 | 価格ヒント |
|---|---|---|---|
| 製品を使用したキーフレーム、プレゼンター、またはシーン | bytedance/seedream/v5/pro/edit | 最大10個の参照により製品とプレゼンターを維持 | ~USD 0.07/画像 + 参照1つあたりUSD 0.0045 |
| エンドカード、静止画広告、正確なコピーを含むフレーム | openai/gpt-image-2.5/flare/edit | 最も強力なテキスト忠実度、最大16個の参照 | ~USD 0.06/画像(quality: "high" 時) |
| 生成されたプレゼンタープレート(人物のみ、製品は含まない) | bytedance/seedream/v5/pro/text-to-image | 人物の品質デフォルト | ~USD 0.07/画像 |
| A: スピーキングクリップ、品質 | bytedance/seedance-2.5/us/image-to-video | リップシンクネイティブ音声でアリーナ1位; 4〜30秒 | ~USD 0.57/秒(720p時)、~USD 0.26/秒(480p時) |
| A: スピーキングクリップ、トルコ語 | alibaba/wan-3.0/image-to-video(start_image_url) | ネイティブリスニング(2026-09-21)でトルコ語が合格した唯一のリスト済みネイティブ音声モデル; 整数の duration、resolution を設定 | ~USD 0.05/秒(480p時)、~USD 0.10/秒(720p時) |
| A: スピーキングクリップ、ドラフトまたは予算、英語 | creatify/boreal | 広告用に構築; [VISUAL] [SPEECH] [SOUNDS] プロンプト; そのモデルページは英語を検証済み言語として指定; オプションの表示AIラベル | ~USD 0.01/秒(720p時) |
| B: 音声、英語 | fal-ai/elevenlabs/tts/eleven-v3 | デフォルトTTS | ~USD 0.10/1000文字 |
| B: 音声、トルコ語およびその他のリスト済み言語 | fal-ai/gemini-3.1-flash-tts | language_code 列挙型に「Turkish (Turkey)」がリストされている; style_instructions | ~USD 0.05/1000文字 |
| B: トーキングヘッド | fal-ai/bytedance/omnihuman/v1.5 | 画像 + 音声; 720pで60秒未満 | ~USD 0.16/音声秒 |
| B: トーキングヘッド、ドラフト | veed/fabric-1.0(480p時) | 半額; resolution は必須 | ~USD 0.08/秒 |
| Bロール、品質 | bytedance/seedance-2.5/us/image-to-video | オプションの end_image_url(リビール用) | ~USD 0.57/秒(720p時) |
| Bロール、ドラフトまたは予算 | minimax/h3-max-turbo/image-to-video | クリップあたり数セント | ~USD 0.04/秒(768P時、2026-09-30にローンチ割引終了) |
| 音楽背景 | elevenlabs/music/v2.5 | music_length_ms で正確な長さを指定 | ~USD 0.60/開始1分あたり |
| キャプション | fal-ai/workflow-utilities/auto-subtitle; 正確なテキスト(任意の言語): veed/subtitles | ローカルの drawtext なしで焼き付け | ~USD 0.03/分; veed ~USD 0.10/分、最低1分 |
| 連結、ミックス、スケール、エンドカードクリップ | ローカルffmpeg、それ以外は references/routing-utility.md | ffmpeg.found の場合は無料で正確 | 数セント |
タイブレーカー:
- ユーザーがモデルを指定した場合 → ライブチェック後にそれを使用します。デフォルトを1行で言及し、黙って交換しないでください。
- 品質ルートが確認しきい値を超える場合(15秒のSeedance 2.5テイク(720p)は約USD 8.50) → プランカードに品質価格とドラフトティア価格を並べて表示します。ユーザーが選択します。安い方を黙って選択しないでください。
@handle→/genmedia-skills:characterがそれを参照URLとアンカーテキストに解決します。それらをキーフレームジョブのプレゼンター参照として使用します。プロンプトに@handleを残さないでください。- 製品写真がない場合 → それを求めます(ソフトウェアの場合はキャプチャ)。存在しない場合 → コンセプトのみ:
/genmedia-skills:imageに渡し、実際の製品ではないことを伝えます。キャプチャのないソフトウェアには、スクリプトとキャプチャリストを提供し、発明されたインターフェースは決して使用しません。 - ストアリスティングのスクリーンショット、リンクカード、Product Hunt画像、およびApple Adsの「クリエイティブ」(Appleは製品ページから広告を構築します) →
/genmedia-skills:launch-graphics。テキストなしの製品スチルのみが必要な場合 →/genmedia-skills:product-photoshoot。スクリプトなしの単一クリップ →/genmedia-skills:video。広告意図なしのオーガニックショート →/genmedia-skills:short-video。ナレーション付き説明動画 →/genmedia-skills:video-explainer。マーケットプレイスリスティングカード →/genmedia-skills:marketplace-cards。サムネイルまたはカバー →/genmedia-skills:youtube-thumbnail。
名前付きトラップ:
- 再想像された製品。 テキストから動画またはテキストから画像は、類似品を描画します。すべての製品フレームはユーザーの写真の編集であり、すべての製品クリップは承認済みキーフレームから始まります。
- 生成されたインターフェース。 キャプチャに触れる編集、テキストから画像、または動画ジョブは、誤ったスペル、発明されたUIを返し、プラットフォームはアプリに欠けている機能を示す広告を拒否します。UIピクセルは
launch-graphicsページと録画から取得されます。動きは録画またはローカルプッシュから取得されます。 - 動画モデルからのテキスト。 動画モデルからの見出し、価格、ロゴ、キャプション、法的文言は、文字化けして出てきます。キーフレームにネガティブスペースを残します。コピーはエンドカード(タイポグラフィモデル)、焼き付けキャプション、またはユーザーのエディタで届きます。
- Klingスピーチ。 Kling v3は中国語または英語のみを話し、他のすべてを英語に自動翻訳します。トルコ語の対話をそこにルーティングしないでください。
- Flashtalkキャンバス。
fal-ai/flashtalkのスキーマは固定の768x448横向き出力を文書化しています: 9:16の広告には使用できません。ドラフトヘッドはveed/fabric-1.0に送ります。 - Muxは短い方の入力にカットされます。
fal-ai/ffmpeg-api/merge-audio-videoは、画像と音声の短い方の長さになります(長い音声は最後が失われ、短い音声は画像がカットされます)そして、クリップの独自の音声を置き換えます。常に両方を同じ長さにしてください。 - Seedanceの
duration: "auto"はコストを不明にします。常に設定してください。BorealとMiniMaxは数値を受け取り、Seedanceは文字列を受け取ります。 - OmniHumanのデフォルト。
resolutionのデフォルトは1080p(音声は30秒未満)です。ユーザーが1080pを要求しない限り、"720p"を送信してください。 - 合成顧客。 「8キロ痩せました」と言う生成された顔は、プロンプトが何と呼んでいようと、捏造された testimonial です。
references/scripts-and-claims.mdを参照してください。
ワークフロー
- インテーク(質問予算内)。スラッグを選択します(例:
serum-ugc)。これはバッチlabel、元帳フィルター、genmedia-output/<slug>/、.genmedia/projects/<slug>/です。任意の自然言語ラベルが機能します。ヘルパーはトルコ語の文字を音訳します。プラットフォーム → アスペクト比と長さ:references/ad-modes.md(プラットフォームテーブル; プラットフォームの現在の広告仕様を確認してください)。 - Readツールを使用してすべての製品写真を確認します。 HEIC、AVIF、TIFF、またはCMYK → 最初にPNGまたはsRGB JPEGに変換します(
references/troubleshooting-ads.md)。PRODUCT LOCKを.genmedia/projects/<slug>/plan.mdに書き込みます: 形状、プロポーション、素材、色、ラベルテキストをそのまま、決して変更してはならないもの、どの面が見えないか。 - 事実シート。 製品について何が真実であり、各事実がどこから来たかをリストします: ユーザーのメッセージ、ブランドノート、パッケージ自体、または製品ページ。
- プランカード。 承認のためにユーザーに提示される構造化カード。コスト、ルート、スラッグ、事実、除外事項、前提(該当する場合)、各バリアントを含みます。動画の場合、常に必要です。静止画の場合、コストゲートが確認を要求した場合に必要です。
- キーフレーム生成。 承認されたプランに従い、各ショットのキーフレーム画像を生成します。物理製品の場合、
bytedance/seedream/v5/pro/editを使用してユーザーの写真から開始し、製品ロックを維持します。ソフトウェアの場合、キャプチャまたはlaunch-graphicsページを使用します。 - クリップ生成。 ルートAまたはBに従い、キーフレームから動画クリップを生成します。
- 音声生成。 TTSまたはネイティブ音声モデルを使用して、スクリプトの音声を生成します。
- 音楽生成。 背景音楽を生成します。
- アセンブリ。 ffmpegまたはユーティリティエンドポイントを使用して、すべてのクリップ、音声、音楽、キャプション、エンドカードを連結します。
- QA。 生成された広告を確認し、製品忠実性、主張規律、および全体的な品質をチェックします。
出力
genmedia-output/<slug>/内のファイル:final.mp4またはfinal.png(広告自体)manifest.json(使用されたすべてのアセットとその参照のリスト)- 中間ファイル(キーフレーム、クリップ、音声など)
- プランカードとQAレポートは
.genmedia/projects/<slug>/に保存されます。
安全とコンプライアンス: このスキルは、誤解を招くような広告や違法な広告の作成を防ぐための安全策を実装しています。虚偽の testimonial、競合他社の名前、医療/財務/収入に関する未確認の主張は禁止されています。ユーザーは、アップロードされたアセットと結果のURLが公開されることを認識する必要があります。