Communitygithub.com

funi-ai/ads

ユーザーの実際の製品を基に、UGCや洗練された広告動画(プレゼンター、開封、紹介、 testimonial、テレビCM)と、コピー入り静止画広告を段階的に制作するAIスキルです。

ads とは?

このスキルは、ユーザーが実際に所有する製品(物理製品またはソフトウェア)を元に、広告動画や静止画を段階的に制作するためのものです。物理製品の場合はユーザーが提供した製品写真を編集してキーフレームを作成し、そこから動画クリップを生成します。決してテキストから製品を想像して生成することはありません。ソフトウェアやSaaSの場合は、実際の画面キャプチャやスクリーンレコーディングをそのまま使用し、生成モデルを通さずに合成します。これらの「製品忠実性」と、スクリプトや画面上の主張(価格、評価など)はすべてユーザーが提供した事実に基づく「主張規律」が2つの基本ルールです。対応プラットフォームはClaude Code(Codex)で、genmedia CLIツールと連携して動作します。まずプリフライトチェックで環境を確認し、質問予算内で製品、プレゼンター、モードを決定、その後スクリプト作成、キーフレーム生成、クリップ・音声・音楽の生成、アセンブリ、QAというワークフローをたどります。コストゲートにより予算超過時にはユーザーの確認を求め、安全ルールとして虚偽の顧客証言や競合他社名の使用などを禁止しています。静止画広告、アプリインストール広告、15秒TikTok広告など、様々な形式に対応し、静止画か動画か、動画のモード(プレゼンター、ハウツー、開封など)はユーザーのリクエストから自動的にルーティングされます。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/funi-ai/claude-plugins/tree/main/plugins/genmedia-skills/skills/ads

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

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

ドキュメント

広告(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ルール

  1. ユーザーの言語で返信します(トルコ語の入力 → トルコ語の出力)。モデルプロンプトは英語です。話し言葉、キャプション、画像上のコピーは、対象言語のままで、引用符で囲み、承認されたとおりに綴ります。
  2. チャット内ではJSON、リクエストID、ツールのナレーションは使用しません。黙って待ちます。バッチごとに最大1行のステータス行のみ表示します。
  3. 質問予算: プラン前は3つまで。一度に1つ、ラベル付きオプションとして(可能な場合はAskUserQuestionを使用)。それぞれにデフォルト値があり、ユーザーがスキップした場合にそれを使用します。 順番:
    • 製品: 写真、またはソフトウェアの場合は実際のキャプチャとスクリーンレコーディング、さらにそれが何であり、それについて何が真実であるか。何も添付されていない場合 → 質問します。これだけはデフォルトがない唯一の質問です。写真はあるが事実がない場合 → パッケージに印刷されていて写真に表示されているものだけを使用し、残りは「除外」としてリストします。
    • プレゼンターと音声。デフォルト: 対象者に合わせた生成合成プレゼンター、対象言語での音声(特に指定がない限り、ユーザーが書き込む言語)。オプション: 生成 · @handle · 自分の写真(同意が必要) · プレゼンターなし。
    • モードとプラットフォーム。デフォルト: トーキングプレゼンターUGC、15秒、9:16(ショートフィード用)。「静的」 → 見出し形式、4:5と1:1。 リクエストですでに回答されているすべての質問をスキップします。最も漠然としたリクエスト(「この広告を作って」) → すべてデフォルトを使用し、プランカードに「前提」としてリストします。同意、プラン承認、チェックポイントは予算外です。
  4. ハードストップ: プランカード(動画の場合は常に、静止画の場合はゲートが確認を要求した場合)、クリップの前のキーフレーム、音楽の前のクリップと音声、キャプションとアセンブリ。沈黙や成功したジョブは承認ではありません。クリエイティブの選択(フック、プレゼンター、テイク)はユーザーに属します。
  5. すべてのバリエーションを含むプラン全体のコストゲート: announce未満 → 実行。間の場合 → 1行の見積もりを表示して実行。confirm以上 → はいの返事を待ちます。ユーザーが指定したモデルを決して交換しません。安価なルートをプランカードの行として提案します。
  6. 制限付き修正: ステップごとに3回の試行。毎回何かが変更されます。ポリシー拒否を変更せずに再送信することはありません。リクエストIDを持つジョブは再開され、再送信されることはありません。それ自体がconfirmしきい値以上(Seedanceのスピーキングテイク1つで該当)の修復またはリロールには、実行中の合計とともに新しい承認が必要です。失敗したジョブはすでに課金されている可能性があります。
  7. 安全性、交渉不可: 捏造された 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 で最新のアクティブな一致を探し、どのモデルが実行されたかを伝えます。
  • フィールド名、列挙型、制限はスキーマから取得し、記憶からは使用しません。ファミリー間で引き継がれません(prompt vs text、image_url vs start_image_url、"5" vs 5)。
  • 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-ttslanguage_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.5music_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.mdffmpeg.found の場合は無料で正確数セント

タイブレーカー:

  1. ユーザーがモデルを指定した場合 → ライブチェック後にそれを使用します。デフォルトを1行で言及し、黙って交換しないでください。
  2. 品質ルートが確認しきい値を超える場合(15秒のSeedance 2.5テイク(720p)は約USD 8.50) → プランカードに品質価格とドラフトティア価格を並べて表示します。ユーザーが選択します。安い方を黙って選択しないでください。
  3. @handle → /genmedia-skills:character がそれを参照URLとアンカーテキストに解決します。それらをキーフレームジョブのプレゼンター参照として使用します。プロンプトに @handle を残さないでください。
  4. 製品写真がない場合 → それを求めます(ソフトウェアの場合はキャプチャ)。存在しない場合 → コンセプトのみ: /genmedia-skills:image に渡し、実際の製品ではないことを伝えます。キャプチャのないソフトウェアには、スクリプトとキャプチャリストを提供し、発明されたインターフェースは決して使用しません。
  5. ストアリスティングのスクリーンショット、リンクカード、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 を参照してください。

ワークフロー

  1. インテーク(質問予算内)。スラッグを選択します(例: serum-ugc)。これはバッチ label、元帳フィルター、genmedia-output/<slug>/、.genmedia/projects/<slug>/ です。任意の自然言語ラベルが機能します。ヘルパーはトルコ語の文字を音訳します。プラットフォーム → アスペクト比と長さ: references/ad-modes.md(プラットフォームテーブル; プラットフォームの現在の広告仕様を確認してください)。
  2. Readツールを使用してすべての製品写真を確認します。 HEIC、AVIF、TIFF、またはCMYK → 最初にPNGまたはsRGB JPEGに変換します(references/troubleshooting-ads.md)。PRODUCT LOCKを .genmedia/projects/<slug>/plan.md に書き込みます: 形状、プロポーション、素材、色、ラベルテキストをそのまま、決して変更してはならないもの、どの面が見えないか。
  3. 事実シート。 製品について何が真実であり、各事実がどこから来たかをリストします: ユーザーのメッセージ、ブランドノート、パッケージ自体、または製品ページ。
  4. プランカード。 承認のためにユーザーに提示される構造化カード。コスト、ルート、スラッグ、事実、除外事項、前提(該当する場合)、各バリアントを含みます。動画の場合、常に必要です。静止画の場合、コストゲートが確認を要求した場合に必要です。
  5. キーフレーム生成。 承認されたプランに従い、各ショットのキーフレーム画像を生成します。物理製品の場合、bytedance/seedream/v5/pro/edit を使用してユーザーの写真から開始し、製品ロックを維持します。ソフトウェアの場合、キャプチャまたは launch-graphics ページを使用します。
  6. クリップ生成。 ルートAまたはBに従い、キーフレームから動画クリップを生成します。
  7. 音声生成。 TTSまたはネイティブ音声モデルを使用して、スクリプトの音声を生成します。
  8. 音楽生成。 背景音楽を生成します。
  9. アセンブリ。 ffmpegまたはユーティリティエンドポイントを使用して、すべてのクリップ、音声、音楽、キャプション、エンドカードを連結します。
  10. QA。 生成された広告を確認し、製品忠実性、主張規律、および全体的な品質をチェックします。

出力

  • genmedia-output/<slug>/ 内のファイル:
    • final.mp4 または final.png(広告自体)
    • manifest.json(使用されたすべてのアセットとその参照のリスト)
    • 中間ファイル(キーフレーム、クリップ、音声など)
  • プランカードとQAレポートは .genmedia/projects/<slug>/ に保存されます。

安全とコンプライアンス: このスキルは、誤解を招くような広告や違法な広告の作成を防ぐための安全策を実装しています。虚偽の testimonial、競合他社の名前、医療/財務/収入に関する未確認の主張は禁止されています。ユーザーは、アップロードされたアセットと結果のURLが公開されることを認識する必要があります。

Individual skills in this repo

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

funi-ai/demo-video

Product demos, store previews, App Store header/search videos and loops cut from the user's REAL screen recording: trimmed, sped, zoomed, framed, captioned, voiced with local ffmpeg. Models add only what is not the product: narration (Eleven v3, Gemini TTS for Turkish), music and UI sound. Use when: "make a demo video of my app", "App Store preview video", "App Store header video", "Google Play promo video", "turn this screen recording into a demo", "GIF loop for my changelog", "Product Hunt launch video", "ekran kaydımdan tanıtım videosu yap", "changelog için GIF döngüsü". Chain: takes recordings, device frames (`layers`) and end cards from `launch-graphics`; produces MP4, WebM, GIF, SRT/VTT and posters. NOT for: generated b-roll shorts (use `short-video`); explainers with generated pictures (use `video-explainer`); paid ads (use `ads`); store screenshots, link cards (use `launch-graphics`); one generated clip (use `video`); voice or music alone (use `audio`); joining finished files (use `pipelines`).

funi-ai/youtube-thumbnail

Thumbnails and covers that survive at small size: YouTube thumbnails (16:9), Shorts, Reels and TikTok covers (9:16), podcast and course covers (1:1), from a title plus an optional face photo, @handle character, brand colours or a frame of the user's own video. Text baked in by GPT Image 2.5; faces locked through reference edits. Use when: "make a thumbnail for my video", "YouTube thumbnail with my face", "Shorts cover", "podcast cover art", "thumbnail from this frame", "change only the text on the thumbnail", "videoma thumbnail yap", "kapak görseli hazırla", "küçük resimdeki yazıyı değiştir". Chain: consumes an @handle from `character` and stills or frames from `image` and `video`; produces sized PNG and JPEG. NOT for: posters, photo edits (use `image`); logos (use `brandkit`); link cards, OG images (use `launch-graphics`); ad creatives (use `ads`); the video (use `video`, `short-video`); new characters (use `character`); batches (use `pipelines`); model choice (use `models`); setup problems (use `setup`).

関連スキル