複数の独立したローカル作業を安全性と依存関係を確認して実行計画にまとめ、対応環境では並列化やAppleシリコン向け処理の選択を支援します。
- ビルドやテストの独立した処理を並列化したいとき
- 複数段階の作業計画を安全に実行したいとき
- Appleシリコン向け処理の候補を確認したいとき
2人のAIキャラクターが同じ見た目を保って会話する動画を、スタジオ画像や各場面の映像から組み立て、確認用ストーリーボードとMP4に仕上げます。
Makes podcast-style and two-character dialogue videos on varg with AI characters who stay the same in every angle: an empty studio set, one wide master shot built from character references, close-ups and lighting cutaways derived from that master, then 5-second image-to-video scenes in which each character speaks their line with native audio, reviewed on an HTML storyboard and stitched into one MP4. Use when someone asks for a podcast video, an AI podcast, a video podcast with two hosts, an interview, debate or talk-show clip between two characters, a myth-vs-truth or "lie vs truth" explainer, or a short of talking characters trading punchy lines. Not for cutting an existing podcast recording into shorts (find a clipping skill with video-skills), one speaker on a stage (use varg-character-keynote), multi-location ads with real actors (use varg-consistent-characters), or songs (use varg-music-video).
実行スコア 未検証
インストール方法を見る2人のキャラクターが対話するポッドキャスト風動画や短い解説動画を作ります。キャラクターの参照画像をもとに、人物のいないスタジオ画像、2人が映るワイドショット、そこから切り出す各キャラクターのクローズアップや照明を変えたカットを用意します。場面ごとに短い台詞を入れ、5秒の映像と音声を生成します。HTMLのストーリーボードで各場面を確認し、承認した映像を1本のMP4にまとめます。
2人が出演するAIポッドキャスト、インタビュー、討論、トークショー風の動画に向いています。「誤解と真実」のような形式の解説や、キャラクター同士が短い台詞を交わすショート動画にも使えます。既存のポッドキャスト録音を短く切り出す用途や、ステージ上の1人語り、歌の動画には向きません。
VARG_API_KEYとcurl、またはvarg MCP接続が必要です。vargのクレジットを使います。ローカルでMP4を結合する場合はffmpegが必要です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Generate consistent-character podcast and dialogue videos with varg image generation + image-to-video with native audio.
Generation runs on varg: the varg-ai skill (REST at https://api.varg.ai/v2, sign-in and model details) or the varg MCP server (https://mcp.varg.ai/mcp: generate_image, generate_video or call_tool, then get_job). The REST calls below map one-to-one onto the MCP tools.
VARG_API_KEY (the varg-ai skill finds or sets one up) or the varg MCP connectionGET /v2/billing/balance or MCP check_balance)POST /v2/files so you have URLsEvery generation returns a job. Poll GET https://api.varg.ai/v2/jobs/{id} until status is completed; the file is at output.outputs[0].url.
Each scene = 5 seconds. One short punchy line per scene. No long monologues.
Scene 1.1 — Host: "So... is multitasking actually a superpower?"
Scene 1.2 — Trickster: "Absolutely. Five tabs, three calls, zero problems."
Scene 1.3 — Trickster: "Focus is overrated. Real pros do everything at once."
Scene 1.4 — Host (truth cutaway, to camera): "Truth: every switch costs focus. One thing at a time gets more done."
Format: Scene X.Y — Character: "short line". Keep lines under 15 words.
Generate the background/set as a standalone image with no characters. It becomes the base reference for every later shot.
curl -s -X POST https://api.varg.ai/v2/image \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano_banana_2_1",
"prompt": "A modern podcast studio interior, wide establishing shot. Dark walnut wood paneled walls, two brown leather armchairs facing each other at an angle, a small dark wood table between them with two black microphones on boom arms. Warm amber recessed lighting. Bookshelf background. No people. Empty studio set.",
"aspect_ratio": "16:9"
}'
If a character needs clothing different from their reference photo, generate the outfit as a standalone image:
curl -s -X POST https://api.varg.ai/v2/image \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano_banana_2_1",
"prompt": "A dark elegant Victorian-style outfit on a mannequin. Black and dark red velvet tailcoat, high collar, dark crimson vest. Gothic aristocratic aesthetic. No person, just the clothing. Studio product photography.",
"aspect_ratio": "1:1"
}'
Pass all references together in files: character 1 + character 2 + clothing + studio. With files, nano_banana_2_1 edits from the references.
CRITICAL: Do NOT describe the characters' appearance in the prompt. Reference them by position ("left character from ref 1", "right character from ref 2 wearing outfit from ref 3"). Describing appearance conflicts with the ref image and produces a different person.
curl -s -X POST https://api.varg.ai/v2/image \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano_banana_2_1",
"prompt": "Two characters sitting in leather armchairs facing each other in this podcast studio. Left character from ref 1. Right character from ref 2 wearing the outfit from ref 3. Small table with microphones between them. Warm lighting.",
"files": [
{ "url": "HOST_REF_URL" },
{ "url": "TRICKSTER_REF_URL" },
{ "url": "TRICKSTER_CLOTHES_URL" },
{ "url": "STUDIO_URL" }
],
"aspect_ratio": "16:9"
}'
This wide shot becomes the base reference for all camera angles.
Pass the wide shot as the first reference. The prompt must say:
"Exact same scene as the reference image — same room, same characters, same positions, same lighting, same set. ONLY change: [camera move]. Do NOT rearrange anything. Do NOT move characters. Do NOT change the set."
# Close-up on character A
curl -s -X POST https://api.varg.ai/v2/image \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano_banana_2_1",
"prompt": "Exact same scene as the reference image — same room, same characters, same positions, same lighting, same everything. ONLY change: move camera closer to the left character. Same angle, just tighter framing. Do NOT rearrange anything. Do NOT move characters. Do NOT change the set.",
"files": [
{ "url": "WIDE_SHOT_URL" },
{ "url": "CHARACTER_A_REF" }
],
"aspect_ratio": "16:9"
}'
# Close-up on character B
# Same, but "move camera closer to the right character" + pass character B's ref
# Truth cutaway (lighting change)
# "Exact same scene — ONLY changes: shift lighting from warm to cold blue, the left character turns their head to look directly at camera. Do NOT rearrange anything."
What works:
What does NOT work:
Show the stills to the user and get approval before any video. Stills cost a few credits each; video clips cost ten times more or more.
CRITICAL: Put the dialogue line directly in the video prompt and ask for native audio. The model voices the line itself; no separate TTS.
curl -s -X POST https://api.varg.ai/v2/video \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling_v4",
"prompt": "The man in the grey sweater leans forward toward the microphone and says: \"So... is multitasking actually a superpower?\" He gestures with open hands, eyes widen with curiosity, natural talking motion.",
"files": [{ "url": "CLOSEUP_HOST_URL" }],
"duration": 5,
"aspect_ratio": "16:9",
"audio": true
}'
Prompt structure for video:
[Character description] [action/gesture] and says: "[exact dialogue line]" [more action]
"audio": true is varg's unified native-audio switch. Without it, or on a model without native audio, the clip is silent. A flat "provider_options": {"varg": {"generate_audio": true}} is dropped by the API.files = the first frame. Each close-up from step 5 is the start of its scene.kling_v4 (default here, native audio, integer 3–30 s); seedance_2_5 for hero close-ups (best faces and lip movement, higher price); heygen_video_1 for cheap drafts (sound is built in, 5–15 s). minimax_h3_max has no native audio on varg's current routes, so it comes back silent.POST /v2/estimate (same body) or MCP estimate_cost before the batch, quote it in credits, and wait for the user's go.Add action to every scene; without action the video is a static talking head:
Voice drift. Native audio picks the voice per clip, so a character can sound different from scene to scene. If that happens, generate each character's lines with eleven_v4 and one fixed voice (POST /v2/speech), then lip-sync each close-up with sync_v3 (a silent clip + the line) or minimax_h3_max_lipsync (the still + the line).
Create an HTML file with all videos embedded. Include:
<video src="VIDEO_URL" controls playsinline></video>
// Play all in sequence
function playAll() {
let i = 0;
function next() {
if (i >= videos.length) return;
videos.forEach(v => v.pause());
const v = videos[i];
v.currentTime = 0;
v.muted = false;
v.play();
v.scrollIntoView({ behavior: 'smooth', block: 'center' });
v.onended = () => { i++; next(); };
}
next();
}
Locally, with the clips downloaded in order:
printf "file '%s'\n" scene_1_1.mp4 scene_1_2.mp4 scene_1_3.mp4 > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c:v libx264 -c:a aac -r 30 episode.mp4
Or on varg, with the ffmpeg tool (POST /v2/ffmpeg, MCP call_tool with tool ffmpeg):
{ "model": "ffmpeg",
"command": "-i {{in_1}} -i {{in_2}} -i {{in_3}} -filter_complex \"[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" -c:v libx264 -c:a aac {{out_1}}",
"input_files": { "in_1": "SCENE_1_1_URL", "in_2": "SCENE_1_2_URL", "in_3": "SCENE_1_3_URL" },
"output_files": { "out_1": "episode.mp4" } }
Captions, if wanted: transcribe the episode (POST /v2/transcription, word timestamps included) and burn them in, or rebuild the episode as a cloud render with <Captions> (see varg-ai).
"audio": true on a model with native audio; otherwise the video is silent.Rough credits from the varg catalog (October 2026); quote the exact figure from POST /v2/estimate / estimate_cost.
| Item | Credits (~) |
|---|---|
| Studio set image | 8 |
| Clothing ref image | 8 |
| Wide shot image | 8 |
| 3 close-up / cutaway images | 24 |
9 video scenes, 5 s each at 720p (kling_v4) | ~750+ |
| Total per question (9 scenes) | ~800 |
Video is almost all of the cost. heygen_video_1 drafts cost a fraction of that; seedance_2_5 costs more than twice as much.
podcast/
script.md # Full script (all questions)
storyboard.html # HTML review page with embedded videos
ref_host.png # Character reference
ref_trickster.png # Character reference
studio_set.png # Studio background
trickster_clothes.png # Clothing reference
wide.png # Wide shot (base for angles)
cu_host.png # Close-up, host
cu_trickster.png # Close-up, trickster
truth.png # Truth cutaway (blue light)
scenes/ # Generated clips, one per scene
episode.mp4 # Stitched result
varg-ai (sign-in, models, REST and cloud render), varg-consistent-characters (the same people across several locations, with captions and QA), varg-character-keynote (one speaker on a stage), video-skills (find a skill for another format, e.g. clipping a real podcast).
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
複数の独立したローカル作業を安全性と依存関係を確認して実行計画にまとめ、対応環境では並列化やAppleシリコン向け処理の選択を支援します。
TikTokやMeta広告の勝ちパターンを分解し、異なる切り口のテスト案や予算、評価時期を整理して、数値から継続・修正・停止を判断するスキルです。
将来の読み手が理由を知りたくなる未決定や暫定対応を、技術的負債として登録し、後から項目ごとに整理できるスキルです。
LangChain、EINO、AutoGen、AgentScope、CrewAI向けのコード雛形やAPI対応、プロジェクト構成を参照し、バージョン確認を踏まえてAIエージェント開発を支援します。
エラーやテスト失敗、画面の異常などを再現して原因を特定し、テストで確認しながら影響を絞った修正を進めるデバッグ用スキルです。
対話を通じてAI Agentの要件整理から設計、ツール定義、コード生成、動作確認まで6段階で進め、実行可能なプロジェクトを作ります。