mcpField
A
AdAnvil

AdAnvil

ローカル
github.com/maxbuildogメディア・デザイン11 週間前に更新

AdAnvil について

AdAnvilは、映像素材、参考広告、またはアイデアから縦型9:16動画広告を作るエージェント向けのMCPサーバーです。ストーリーボードに基づく編集、決定論的なレンダリング、画像による品質確認を組み合わせています。

主な機能

  1. 01参考広告の分析
  2. 02映像素材の索引作成と一覧画像
  3. 039種類の広告レシピ
  4. 04字幕・音声・映像オーバーレイ
  5. 05ストーリーボードの検証とレンダリング
  6. 06完成動画の品質確認

活用シーン

  1. 01ブランド素材から広告を作成
  2. 02参考広告をブランド向けに再構成
  3. 03トーク動画をUGC広告に編集

MCP 対応

AdAnvilは、Claude Code、Codex、CursorなどのMCPクライアントに動画広告編集ツールを提供します。エージェントはメディアの索引作成、ストーリーボードの作成と検証、レンダリング、品質確認用画像の取得を行えます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"maxbuildog-adanvil": {
"command": "uvx",
"args": [
"adanvil"
]
}
}
}
起動コマンドuvx adanvil

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiadanvil0.4.0

ツール

43

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
namestringはい
project_dirstringはい

詳細

AdAnvil

AI エージェントが縦型 9:16 動画広告を編集できる MCP サーバーです。

AdAnvil は Claude Code、Codex、Cursor、または任意の MCP クライアントで動作します。ブランド独自の映像素材、参考広告、またはアイデアから広告を制作します。どのクリップを使うか、テキストに何を書くか、仕上がりが適切かどうかはエージェントが判断します。AdAnvil は決定論的にレンダリングし、結果を検証します。同じストーリーボードからは、常に同じ動画が生成されます。

特定のニッチに限定されません。レシピと編集ガイドは、さまざまなニッチの例(コーヒー、ファッション、フィットネス、ペット、ソフトウェア、住宅、美容)を交えながら、製品、メリット、課題、ターゲット顧客といった一般的な用語で説明しています。

デモ

上のデモは、examples/demo/ の CC0 デモパック(Wikimedia Commons の 4 本のクリップ、製品写真 1 枚、架空のブランド Ember & Oak)から作成されました。映像素材はこのリポジトリに保存されません。デモパックは必要に応じて取得されます。

できること

  • 参考動画の解析:ショット、テンポ、動画に焼き込まれたテキストと音声を解析し、エージェントが作成して編集結果と比較するショットごとの内訳を作成します。
  • 映像素材ライブラリ:インデックス作成、コンタクトシート、モザイクを使って、エージェントが使用前にすべてのクリップを確認できます。また、すべての動画・音声ファイルの音声も検索できるようにします(単語単位のタイムスタンプ付き。各ファイルの処理が終わるとすぐに検索可能)。話しながら撮影するクリエイターの映像は、無音部分に合わせてカットできます。カット位置は全フレームで検出されるため、長いスマートフォン動画内のテイク間のジャンプカットも別々のショットとして扱われ、セグメントがカットをまたぐとバリデーターが警告します(あるテイクが一瞬映った後、別のテイクに切り替わります)。
  • よくある広告形式に対応した 9 種類のレシピ(YAML):テキストのフック、フックと製品、ビフォーアフター、顧客の日記、コメントへの返信、ミームテキスト、ナレーション広告、長尺リメイク、トーキングヘッド UGC。
  • 絵文字に対応した 7 種類の字幕スタイル(pill、meme、outline、outline_soft、box、label、comment)。
  • 参考映像に焼き込まれたテキストの除去。
  • HDR(HLG および PQ)から SDR へのトーンマッピング。
  • 音楽のマッチングとラウドネス制御。
  • オプションのオープンソース音声ナレーション(Chatterbox)。発話単語に同期し、start/end ウィンドウで一時停止する字幕を生成します。音声で繰り返される文末はカットされ、フラグが付けられます。
  • トーキングヘッド UGC:複数の録音から各セリフの最適なテイクを選び、ためらいを含めずに無音部分でカットします。クリエイター自身の音声を保ちながら、映像に B ロールを重ね、音声から字幕を生成します。
  • 視覚的な演出:ビフォーアフターの切り替え(仕切り線が一方の画像を払い、もう一方を表示)、分割画面、ピクチャーカード(動画の上に表示する写真やスクリーンショット)、動画インセット(ピクチャーインピクチャー)、ステッカーと矢印、プログレスバー、パンチインズーム、AdAnvil が描画する情報カード(カード 1 枚につきアイデア 1 つ、画面には一度に 1 枚ずつ表示し、ナレーションに合わせて表示)。
  • サウンドデザイン:約 18 種類の効果音パック(CC0 または合成音。リポジトリには保存されません)、カットや字幕に合わせて重ねる sfx と audio.sfx_auto、音楽のビートに同期するカット。
  • 実際の製品写真で構成したエンドカード。製品を最初の 1 秒から見せる告知広告やリード獲得広告向けのオファー用ストーリーボード(story: "offer")。
  • 画像を使った品質管理:自動チェック、仕上がりのコンタクトシート、フル解像度のフレーム。
  • インデックス作成、音声生成、レンダリング用の独立したバックグラウンドジョブ。長時間の処理も接続が切れた後に継続します。

インストール

いずれかの方法を選択してください。最初の方法が最も簡単です。

1. Claude Desktop 拡張機能(ワンクリック)

最新リリースから adanvil-<version>.mcpb をダウンロードし、ダブルクリックして Claude Desktop で「インストール」をクリックします。プロジェクトフォルダーと、必要に応じて Freesound キー(安全に保存されます)を指定します。お使いのコンピューターには ffmpeg 6.1 以降も必要です(brew install ffmpeg、winget install Gyan.FFmpeg、sudo apt install ffmpeg)。インストールされていない場合、拡張機能がシステムに応じたコマンドを案内します。

2. Docker(Python、ffmpeg のインストール不要)
git clone https://github.com/maxbuildog/adanvil && cd adanvil
docker build -t adanvil .

イメージには ffmpeg 6.1 が含まれており、root 以外のユーザーとして実行され、stdio 経由で MCP と通信します。プロジェクトを格納するフォルダーを /projects にマウントしてください。エージェントは /projects 配下のパス(例:/projects/my-ad)を指定してツールを呼び出す必要があります。イメージでは ADANVIL_PROJECTS_DIR=/projects が設定されているため、それ以外のフォルダーと /projects 自体は拒否されます。

# Claude Code
claude mcp add adanvil -- docker run -i --rm -v "$PWD:/projects" adanvil

Linux では --user "$(id -u):$(id -g)" を追加してください。そうすると、フォルダーに書き込まれるファイルの所有者が自分になります。

Codex の場合、~/.codex/config.toml に記述します。

[mcp_servers.adanvil]
command = "docker"
args = ["run", "-i", "--rm", "-v", "/home/you/ads:/projects", "adanvil"]
tool_timeout_sec = 900
default_tools_approval_mode = "approve"  # needed with approval_policy = "never" (codex exec)

Cursor の場合、.cursor/mcp.json に記述します。

{
  "mcpServers": {
    "adanvil": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "/home/you/ads:/projects", "adanvil"]
    }
  }
}

イメージに含まれるのは基本パッケージのみです。文字起こしを利用するには、docker build --build-arg EXTRAS=transcribe -t adanvil:transcribe . を実行してください。音声、ビジョン、音楽生成の環境(adanvil voice-setup、vision_setup、music-setup)は含まれていません。モデルに数ギガバイト必要なため、これらには uvx を使ってください。

3. uvx

必要なもの:Python 3.11 以降、uv(uvx が含まれます)、および PATH 上にある libzimg を含めてビルドされた ffmpeg 6.1 以降(ffmpeg -version で確認できます。別の場所にある場合は、ADANVIL_FFMPEG と ADANVIL_FFPROBE にフルパスを設定してください)。

# 1. Check the install (the first run downloads the package)
uvx --from adanvil adanvil --version

# 2. Register the server in Claude Code
claude mcp add adanvil -e ADANVIL_PROJECTS_DIR="$HOME/AdAnvil" -- uvx --from adanvil adanvil-mcp

# 3. Then ask your agent:
#    "Make a 9:16 ad from the footage in ./my-project"

ADANVIL_PROJECTS_DIR(推奨)はプロジェクトを格納するフォルダーです。設定すると、サーバーはその外部にあるプロジェクトを拒否します。プロジェクトはそのサブフォルダーに作成します(例:~/AdAnvil/summer-ad)。SECURITY.md を参照してください。

パッケージ名は adanvil です。2 つのコマンドがインストールされます。adanvil(コマンドライン)と adanvil-mcp(stdio 経由の MCP サーバー)です。uvx adanvil-mcp だけでは動作しません。uvx はその名前のパッケージを探すため、必ず --from を追加してください。

エージェントがプロジェクトフォルダーを作成し、ファイルを置く場所を案内します。映像素材は footage/、参考広告は reference/、音楽は music/、ロゴとエンドカードは brand/ に置いてください。エージェントは editing_guide ツールと AGENTS.md から編集方法を学習します。

Codex の場合、~/.codex/config.toml に記述します。

[mcp_servers.adanvil]
command = "uvx"
args = ["--from", "adanvil", "adanvil-mcp"]
env = { ADANVIL_PROJECTS_DIR = "/home/you/AdAnvil" }
tool_timeout_sec = 900                   # indexing long footage can take minutes
default_tools_approval_mode = "approve"  # needed with approval_policy = "never" (codex exec)

default_tools_approval_mode がないと、非対話型の codex exec の実行では、すべての AdAnvil ツール呼び出しが「MCP tool call requires approval」というメッセージとともに拒否されます。

Cursor の場合、プロジェクトの .cursor/mcp.json またはグローバルの ~/.cursor/mcp.json に記述します。

{
  "mcpServers": {
    "adanvil": {
      "command": "uvx",
      "args": ["--from", "adanvil", "adanvil-mcp"],
      "env": { "ADANVIL_PROJECTS_DIR": "/home/you/AdAnvil" }
    }
  }
}

その他の MCP クライアントの場合(汎用の stdio エントリー):

{
  "mcpServers": {
    "adanvil": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "adanvil", "adanvil-mcp"],
      "env": { "ADANVIL_PROJECTS_DIR": "/home/you/AdAnvil" }
    }
  }
}

設定を編集したらクライアントを再起動し、エージェントに recipe_list を呼び出すよう依頼してください。9 つのレシピが表示されれば、サーバーに接続されています。

任意:参考広告の文字起こしには transcribe エクストラ(faster-whisper)が必要です。上記の通常の --from の値の代わりに --from "adanvil[transcribe]" を使用してください。

デモパックで試す

取得スクリプトがリポジトリにあるため、デモにはリポジトリのチェックアウトが必要です。

git clone https://github.com/maxbuildog/adanvil
cd adanvil
uv sync
uv run python examples/demo/fetch_demo.py ./demo-project
uv run adanvil index ./demo-project --source footage

次に、MCP サーバーを登録して、./demo-project(絶対パスを指定)から広告を作成するようエージェントに依頼するか、examples/demo/README.md のコマンドライン手順に従ってください。

仕組み

すべてのデータは 1 つのプロジェクトフォルダーに格納されます。footage/、brand/、music/、reference/、renders/、cache/ に加え、adanvil.json、brand.yaml、catalog.json があります。すべてのツールには絶対パスの project_dir を指定します。それ以外のパスはすべてこのフォルダーからの相対パスであり、フォルダーの外には出られません。

  1. エージェントが映像素材をインデックス化し、コンタクトシートを確認し、任意で参考広告をデコードします。
  2. レシピを選び、ストーリーボード(JSON)を作成します。ショット、キャプション、音声が含まれます。
  3. storyboard_validate がレシピのルールに照らしてストーリーボードを検証し、その後 render_start がバックグラウンドでレンダリングします。
  4. qc_run がファイルをチェックし、確認用の画像を返します。エージェントは納品前に画像を確認します。ad_score はクリエイティブの品質を採点します(80 以上を目指してください)。

詳細:パイプラインについては docs/ARCHITECTURE.md、編集の方針については docs/EDITING_GUIDE.md、エージェントが従う手順については AGENTS.md を参照してください(skill/SKILL.md の Claude Code スキル版と同じ内容です)。

モデルの選択

結果は、AdAnvilを動かすモデルによって異なります。リファレンスの分析やショットの選択は判断が求められる作業です。これらには、可能な限り高性能なモデル(たとえばClaude Opus)を使用してください。小型モデルでも手順は問題なく実行できますが、ブランドに合わせてロジックを再構築するのではなく、リファレンスの表面的な要素(同じ言葉、同じショット)をコピーしがちです。

ツール(43)

ツール説明
project_initAdAnvil プロジェクトのひな形を作成します。
project_read_textプロジェクト内にある AdAnvil 独自のテキストファイル(ライセンスに関するメモ、JSON、YAML。最大 1 MB)を 1 つ読み込みます。
brand_onboardブランドのサイトを読み込み、回答をもとにブランドプロフィールを書き込みます。
brand_getブランドプロフィールとブリーフを読み込みます。
library_index映像素材をインデックス化または更新します(長時間の処理は切り離されたジョブになり、refresh_shots はカットを再計測します)。
library_viewコンタクトシート付きでカタログの項目を 1 つ表示します。
library_annotateクリップでエージェントが確認した内容(説明、人物、感情、品質、除外)を保存します。
library_searchインデックス化された映像素材を、テキスト(クリップ内の発話を含む)、タグ、人物、感情、長さ、または文(ビジョン環境での query)で検索します。
speech_view1 つのクリップの音声から、短いフレーズ(フラグ付き)、フィラー、言い直し、クリーンなカット区間を表示します。
speech_takes台本の複数の録音から、各セリフの最良テイクを選びます。
speech_refine選択したクリップをブランドの語彙を使って、より高性能なモデルで再度文字起こしします(切り離されたジョブ)。
library_overviewインデックス化せずに映像素材のフォルダーの概要とモザイクを表示します。
frame_viewt(floor(t * fps)。フレーム境界から 1 ms 以内の t はそのフレーム)または frame で指定した、画面上のフル解像度フレームと正確な時刻を表示します。
reference_decode参考動画をショット、テンポ、テキスト、音声、シートに分解します。
reference_breakdown参考動画のショットごとの分析をエージェントが保存します。
recipe_list広告レシピを用途と長さとともに一覧表示します。
recipe_getルールとサンプルを含むレシピ全体を 1 つ表示します。
editing_guide映像素材、コピー、レンダリング、QC に関する編集方針を表示します。
storyboard_schemaストーリーボードの JSON Schema を表示します。
storyboard_saveストーリーボードを storyboards/<name>.json として 1 回保存します。それ以降のツールではオブジェクトの代わりにそのパスを指定します。
storyboard_patch{path, value} の変更リストを使って、保存済みのストーリーボードを編集します。
caption_preview実際の 9:16 フレーム上に描画したキャプション、コメント、情報カードをプレビューします。
end_card実際の商品写真からエンドカード画像を作成します。
storyboard_validateストーリーボードをスキーマとレシピのルールに照らして検証します。
render_start検証を行い、バックグラウンドレンダリング(プレビューまたは最終版)をキューに追加します。
voice_generate検証済みのナレーション生成ジョブをキューに追加します。
voice_view音声マニフェストと、推奨されるショット境界を読み込みます。
music_profile音楽トラックのテンポ、ラウドネス、エネルギーを表示します。
music_searchOpenverse と Freesound で、広告に使用できるライセンス(CC0、PDM、CC BY、CC BY-SA)の音楽を検索します。fit_to="storyboard" は広告に適した順に並べます。
music_fetch見つかったトラックをライセンス記録(.licence.json、LICENCES.txt)とともに music/ にダウンロードし、プロファイルを作成します。
music_generateローカルでトラックを作成します(ACE-Step 環境は任意。adanvil music-setup)。ジョブとして実行されます。
music_beats広告内で再生されるとおりの音楽トラックのビート時刻を表示します。
sfx_listプロジェクトの効果音を一覧表示します。fetch=true を指定すると、CC0 の効果音パックを sfx/ に作成します。
storyboard_snapストーリーボードのカットを音楽のビートに合わせて移動します。
job_statusレンダリング、バッチ、音声、インデックス作成ジョブのステータスを、必要に応じて待機しながら表示します。
qc_runレンダリング済み動画の技術的な QC と確認用画像を生成します(オーバーレイのクロップは、フォーマットに合わせて再配置されたキャプションに従います。caption_on_face)。任意の storyboard:そのレンダリングで適用されたストーリーボードを指定します。
ad_scoreレンダリング済み広告を 100 点満点でクリエイティブ評価します(フック、テンポ、読みやすさ、ストーリー、プラットフォームのセーフゾーン、音声)。修正すべき点とセーフゾーンのプレビューも表示します。
variants_buildストーリーボードのバリエーションのマトリクス(フック x ボディ x 行動喚起、最大 24 個)を作成します。パッチまたはスロットの置換を検証して保存し、それぞれの最初と最後の 3 秒のコンタクトシートを作成します。
render_batch複数のストーリーボード(およびフォーマット)を共有セグメントキャッシュでレンダリングし、renders/<batch>/manifest.csv に書き出す、1 つの切り離されたジョブを実行します。
timeline_exportストーリーボードを OpenTimelineIO、Final Cut XML、EDL、SRT としてエクスポートします。ストーリーボードのインデックスを名前にしたオーバーレイ PNG、効果音、音楽レベル、実際のメディア記述子、not_exported リストも出力し、DaVinci Resolve または Premiere Pro で仕上げられるようにします(CLI:adanvil export)。
render_formats1 つのストーリーボードを 9:16、4:5、1:1 でレンダリングします(映像素材を再クロップし、帯域ごとにキャプションを再配置し、配置先のセーフゾーンに合わせます)。
compare_pairビフォーとアフターの見た目の違いを、顔またはフレーム全体について 0〜100 で評価します。並べて表示するプレビューを使ってペアを選べます。
vision_setup任意のビジョン環境をインストールします(文による検索、自動タグ付け、製品バージョン、顔)。
CLI コマンド(adanvil <command> --help):mcp、voice-setup、vision-setup、init、cat、onboard、index、decode、recipes、validate、render、voice、qc、preview-caption、end-card、sfx-fetch。機械可読形式の出力には --json を追加します。

スマートライブラリ(任意)

編集作業で最も時間がかかるのは、適切なショットを見つけることです。adanvil vision-setup(または vision_setup ツール)を実行すると、画像とテキストに対応した小型の多言語モデル(SigLIP 2、Apache-2.0)と顔検出器(YuNet、MIT)を備えた独立した環境が一度だけインストールされます(約 2.5 GB、CPU のみで動作し、GPU は不要です)。ライセンスは THIRD_PARTY.md に記載されています。これを実行しなくても、ほかに変更はありません。その場合、library_index は vision: unavailable と表示します。

  • ビジョン機能を使ってインデックスを作成。 library_index は各コンタクトシートのフレームも埋め込み表現に変換し、顔を検出します(cache/vision/<file key>.npz)。また、各エントリーに auto_tags(person、bathroom、hands、smiling、text on screen などの固定ラベル一覧)を付与します。これらは独自の tags とは分けて保持されます。
  • 文で検索。 どの言語でも、library_search(query="a woman with a sad face touching her jaw") を使うと、通常のフィルターを先に適用したうえで、ライブラリ全体のショットを順位付けし、最適なものを番号付きのモザイクで返します。シートを開く必要はありません。
  • 写真から製品のバージョンを判定。 brand.yaml に product_versions: [{name: current, photos: [...]}, {name: old, photos: [...]}] を記述します。インデックス作成時に各ショットに映っているバージョンを推定し、library_search(product_version="current") は人による注釈がない限り、この推定を使用します(人による注釈がある場合は常にそちらが優先されます)。言葉ではなく、写真を指定してください。
  • 顔を考慮したフレーミング。 focus: "face" を指定すると、クリップ、画像、分割パネル、リビールの各サイドで、メインの顔を face_y(デフォルトではフレームの 0.38)に中央配置します。reveal では、デフォルトで両方の顔の位置とサイズも揃えます(align_faces)。compare_pair も顔検出器を使用します。

ナレーション(任意)

AdAnvil は、オープンソースのテキスト読み上げモデル Chatterbox を使って音声を生成し、読み上げた言葉に字幕を同期できます。

  • adanvil voice-setup を一度実行してください。AdAnvil のキャッシュフォルダーに専用の Python 環境を作成し、約 3 GB のモデルをダウンロードします。adanvil voice-setup --engine kokoro を実行すると、同じ環境に高速なエンジン(下記)が追加されます。
  • 生成処理は CPU で実行されます。ジョブごとに 1 つのワーカープロセスが各モデルを 1 回読み込み、すべての工程(音声、アライメント、チェック)を処理します。アイドル状態の 8 コアサーバーでの計測結果(フランス語、約 5 秒の行が 3~9 行):Chatterbox の音声では 1 行あたり約 25~35 秒かかるため、9 行では約 5.5 分かかります(V2.6 より前は 10.5 分でした)。マシンが高負荷の場合はさらに時間がかかり、1 文あたり最大 5 分を見込んでください。
  • エンジンは 2 種類あります。chatterbox はデフォルトで、広告に推奨される音声です(オーナーが両方を試聴し、こちらを採用しました)。reference の音声を複製するため、声を合わせたいブランドにも適しています。kokoro(Apache-2.0)は固定音声のみで、複製には対応していません({"engine": "kokoro", "voice": "ff_siwis"}。フランス語は ff_siwis、英語のデフォルトは af_heart、イギリス英語には bf_emma など):下書きやプレビューに適した高速な選択肢です(実際の音声に費用をかける前に、スクリプト、タイミング、字幕を確認してください)。同じサーバーで、9 行の読み上げに約 25 秒、アライメントとチェックにさらに約 50 秒かかります。フランス語と英語のみを読み上げます。
  • 発音チェックでは、すべての単語の信頼度が高く(check_confidence、デフォルトは 0.6)、行の読み上げが記述どおりの場合、アライメントの文字起こしを再利用します。疑わしい行のみ、check_model で再度文字起こしします。すべての行を check_model でチェックするには、check_confidence を null に設定するか、ADANVIL_VOICE_CHECK_CONFIDENCE=off を指定してください。
  • 音声はナレーターとしてブランドを代弁します。偽の顧客を装ってはいけません。
  • 音声の言語は、音声仕様の language です。仕様で設定されていない場合、AdAnvil はプロジェクトの brand.yaml の language を使用します(fr-FR は fr として扱われます)。ブランドに設定がない場合は en が使われます。
  • 音声が文末を繰り返す場合、スクリプトの最後の単語の後で行を切り取り、フラグを付けます(trimmed_extra)。繰り返しを切り取れない場合、その行は疑わしいものとして扱われます。外国語の単語は、発音させたいとおりに say に記述し({"say": "...", "show": "..."})、音声がうまく発音できない略語は避けてください。
  • Chatterbox は音声に Perth のウォーターマークを埋め込みます。AdAnvil はこれを保持します。削除しないでください。
  • 使用する権利のある参照音声のみを使用してください。

トーキングヘッドUGC(任意)

映像内でクリエイターがカメラに向かって話す部分は、音声から切り出されます。library_index は、音声のあるクリップと音声ファイルを文字起こしします(単語ごとのタイムスタンプ付き。同じジョブ内でファイルごとに1回、処理が終わるたびに各ファイルを保存します)。faster-whisper がインストールされている場合はそれを使い(pip install 'adanvil[transcribe]')、そうでなければ音声環境を使います(adanvil voice-setup)。どちらもない場合もインデックス作成は成功し、各エントリーにその旨が表示されます。インデックス作成では、音声を検索可能にするため高速モデルを使います。speech_refine は、採用したクリップをより高性能なモデルでもう一度文字起こしし、ブランド名、商品名、および brand.yaml の speech.vocabulary を文字起こし処理に渡します。別の音声ファイルに録音された音声は、音のない動画上で名前から検出されます(separate_audio_candidates)。そして audio_from で重ねます。同期はプレビューを確認しながらエージェントが行います。次に、speech_takes が各セリフの最適なテイクを選び、speech_view が音声を残しつつ間や言いよどみを取り除くカットを提示します。さらに、audio.clips、audio_from(音声に重ねるBロール)、speech_captions オーバーレイを使ったストーリーボードで広告をレンダリングします。ugc_talking レシピがこれらをまとめて実行し、ガイドで各手順を説明しています。

  • ADANVIL_SPEECH_MODEL でインデックス作成に使うモデルを設定します(デフォルトは base。高速で、検索には十分な精度です)。特に指定しない場合、speech_refine は medium を使います。言語は brand.yaml の language を使い、指定がなければ自動検出します。
  • ADANVIL_SPEECH=off にすると、library_index による自動文字起こし(transcribe="auto")を停止できます。transcribe=true の場合は引き続き文字起こしが行われます。
  • クリエイターの発言はクレームとして扱われます。採用した単語がブランドの禁止リストにある場合、バリデーターは banned_word_spoken の警告を出します。また、単語の途中でカットされている場合(カットをまたいで音声が続く場合は該当しません)は cut_mid_word の警告を出します。カットされるつなぎ言葉(euh、um、uh、er、genre など)は、brand.yaml の speech で置き換えられます。また、正しい綴りにする単語のリストを vocabulary に指定できます。start と end を指定すると、speech_captions オーバーレイの表示範囲を限定できます。聞き間違えられた単語は、キャプションの speech_captions.corrections で修正できます(近い綴りのものに限ります。文字起こし処理で結合された単語は最大3語に分割できます)。修正内容はすべてレビュー用に一覧表示されます(speech_corrections)。

ビジュアル演出(任意)

reveal セグメント(2枚の実際の写真または2つのクリップを使い、仕切り線が動いて変更前の画像を消し、変更後の画像を見せます。ラベルはそれぞれの側に追従します)は、変更前と変更後の様子を視聴者が見届けられる演出です。split セグメント(左右または上下に並べ、「FROM THIS」「TO THIS」などのラベルを付けます)は比較に使います。animation、frame、rotate を指定する image オーバーレイ(写真やレビューのスクリーンショットがカードとして動画上に表示されます)、video オーバーレイ(矩形、角丸、円形の形状に枠線と影を付けたピクチャーインピクチャー)、sticker オーバーレイ(矢印、手描きの円や下線、バッジ、絵文字、画像をポップまたは描画アニメーションで表示)、progress バー、クリップを瞬時にズームする punch、info_card(AdAnvilが描画する情報カード。アクセントカラーの導入カードの後、番号付きの項目カードを1枚ずつ表示します。それぞれ音声で内容を読み上げる間に表示し、表示と終了のアニメーションを付けます。デフォルトでは影なし)があります。広告ごとに1〜2種類を使ってください。フィールドとルールについては、AGENTS.md と編集ガイドを参照してください。

サウンドデザイン(任意)

サウンドは広告の音声に重ねて再生します。カットに合わせたシュッという音、キャプションに合わせたポップ音、価格表示に合わせたディンという音、公開前のライザーなどです。

  • adanvil sfx-fetch <project_dir>(または fetch=true を指定した sfx_list)を実行すると、プロジェクトの sfx/ フォルダーに約18種類の短いサウンドを用意します。各サウンドは、SHA-1 で検証された固定の CC0 ソースからダウンロードするか、コードで合成した後、トリミングして音量を統一します。このリポジトリには何も保存されません。ソースとライセンスは examples/sfx/README.md に記載され、sfx/LICENCES.txt にも出力されます。sfx/ に独自のファイルを置いて使用することもできます。
  • {"type": "sfx", "source": "sfx/pop.wav", "at": 3.2, "volume": 0.8} でサウンドを配置できます。audio.sfx_auto を使うと、カットやキャプションに合わせて配置できます。サウンドがクリッピングしたり、終了時刻を過ぎて再生されたりすることはありません。
  • music_beats はトラックの再生時のビートを取得し、storyboard_snap はカットをビートに合わせて移動します(バリデーターは、すでにビートに合っているカットの数を報告します)。

パフォーマンス設定

  • ADANVIL_WORKERS:同時に処理するファイル、サムネイル、セグメントの数です。デフォルトは max(1, min(4, cpus // 2)) で、RAM が 12 GB 未満のマシンでは最大2です。
  • ADANVIL_FFMPEG_THREADS:各 ffmpeg デコーダーまたはエンコーダーのスレッド数です。デフォルトは max(1, cpus // workers) です。
  • 音声:ADANVIL_VOICE_CHECK_MODEL は発音チェックに使う Whisper モデルを設定します(音声仕様で check_model が設定されている場合を除く)。ADANVIL_VOICE_THREADS は torch と Whisper のスレッド数を設定します(デフォルト:使用可能なコア数)。ADANVIL_VOICE_CHECK_CONFIDENCE は、アラインメントの文字起こし結果でチェックモデルの結果を置き換える単語信頼度のしきい値を0〜1で設定します(常にチェックモデルを実行するには off を指定します。仕様の check_confidence が優先されます)。ADANVIL_VOICE_PERSISTENT=0 を指定すると、ジョブごとに1つのワーカーを使う方式ではなく、ステップごとに1つのプロセスを使う方式に戻ります。
  • 音声認識:ADANVIL_SPEECH_MODEL(デフォルトは base)、ADANVIL_SPEECH=off(自動文字起こしを無効化)、ADANVIL_SPEECH_PROMPT(文字起こしの方向性を指定する任意のテキスト。たとえば、言いよどみを残すよう促します)。
  • その他:ADANVIL_CACHE はキャッシュフォルダーを変更します。ADANVIL_FFMPEG と ADANVIL_FFPROBE はバイナリを指定します(絶対パスを指定してください。それ以外の場合は PATH 上から検索され、現在のフォルダーは検索されません)。
  • セキュリティ:ADANVIL_PROJECTS_DIR はすべてのプロジェクトを1つのフォルダーの下に保持します。ADANVIL_ALLOW_PRIVATE_URLS=1 を指定すると、brand_onboard とダウンロードが localhost およびローカルネットワークにアクセスできるようになります(開発時のみ)。SECURITY.md を参照してください。
  • ベンチマーク:uv run python scripts/bench.py --files 12 --seconds 4。

責任ある利用

AdAnvil は広告を編集します。広告で伝え、表示する内容には、あなたが責任を負います。

  • 実際のコメントと実際の顧客の言葉だけを使用してください。このツールがオファー、価格、保証、主張を作り出すことはありません。人間が内容を確認します。
  • 映像に登場する人から同意を得てください。
  • 使用する音楽と映像のライセンスを確認してください(デモパックは CC0 ですが、独自のファイルは異なる場合があります)。
  • 広告の主張がすべて事実であり、販売地域で認められていることを確認してください。
  • 適切な権利なく音声を複製したり、生成音声を実際の顧客の声として提示したりしないでください。

コントリビュート

CONTRIBUTING.md を参照してください。

ライセンスとステータス

MIT です。詳細は LICENSE を参照してください。フォント、絵文字、その他のサードパーティ素材は THIRD_PARTY.md に記載されています。

ステータス:アルファ版、バージョン 0.4.0。インターフェースは今後変更される可能性があります。CHANGELOG.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。