mcpField
P
podcast

podcast

github.com/pika-labsクリエイティブ・メディア411.7k 回インストール14 週間前に更新
リポジトリ

podcast について

podcast は、URL や自由形式のブリーフから、2人のホストによる1分間のポッドキャスト動画を作るスキルです。情報源に基づく会話やテーマ別の対話に、生成画像と設定可能な音声を組み合わせます。

主な機能

  1. 01URLまたはテーマを入力
  2. 0215秒の動画を4幕で構成
  3. 03スタジオとホスト画像の生成
  4. 04プリセット音声またはクローン音声
  5. 05有料生成前の費用確認

活用シーン

  1. 01製品ページを短いポッドキャストレビューにする
  2. 02テーマのブリーフから2人の対話を作る

MCP 対応

残高確認や画像・参照動画の生成などにMCPツールを使います。有料ツールの呼び出し前にユーザーの承認が必要です。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pika-labs/pika-plugins --skill podcast

インストール後、Claude Code で/podcastを入力して読み込まれたか確認します。

詳細

/pika:podcast

4幕 × 各15秒=60秒。ホストAは常に左、ホストBは常に右です。URL または自由形式のトピック/概要を受け付けます。

パラメーター

パラメーターデフォルト備考
input必須レビュー対象のURL または自由形式のトピック/概要(例:「私とElon Muskが火星について話す」)
bg_img自動生成ポッドキャストスタジオの背景
host_a_img自動生成ホストAのポートレート — 下記の実在人物の取り扱いを参照
host_b_img自動生成ホストBのポートレート — 下記の実在人物の取り扱いを参照
voice_a876341503281471517ホストA用のKlingプリセットまたはクローン音声ID
voice_b829837252279803904ホストB用のKlingプリセットまたはクローン音声ID
aspect_ratio16:9出力のアスペクト比

コスト透明性ゲート

有料のMCP呼び出しを行う前に、identity_balance({verbose: true})を1回呼び出してください。現在の残高、直近の消費率、残りの利用可能期間を提示し、次の正確なメッセージで実行可否を確認してください。

推定コスト:約6,000~9,000クレジット(約$60~$90)。Kling v3-omni proによる15秒の幕4本、必要に応じた不足アセットの画像生成、幕の修正リトライ1回、結合、実行後のanalyze_mediaによるQAを含みます。これは$5を超えるため、続行するにはproceed、停止するにはcancelと返信してください。

ユーザーがproceedと返信するまで、有料のMCPツールを呼び出さないでください。ユーザーがcancelと返信した場合は、生成せずに停止してください。確認が必要なのはこれだけです。proceedの後は4幕をレンダリングし、URLを返してください。

デフォルト — すぐに実行し、途中で確認しない

  • 音声にはパラメーターテーブルのデフォルトをそのまま使用します。 voice_aはKlingプリセット876341503281471517、voice_bは829837252279803904がデフォルトです。実行前に「どの音声にしますか?」と尋ねないでください — 明示的な上書き(voice_a=、voice_b=)のみ反映します。
  • 不足しているホストのポートレートはすべて、何も確認せずに自動生成します(ステップ1のアーキタイププロンプト)。「ホスト画像を生成しますか?」と尋ねず、そのまま生成してください。
  • proceedの確認が必要なのはコスト透明性ゲートだけです。 proceedの後は、送信 → 4幕をレンダリング → URLを返します。アカウントのクレジット残高とプロバイダーのフェイルオーバーが、標準的なガードレールです。--yesフラグは後方互換性のために受け付けますが、何も行いません。
  • トピックモードのペルソナ(ステップ3) — ユーザーが実在の公人を指定した場合は、ステップ4(実在人物の取り扱い)に従い、何も確認せずに処理します。デフォルトではアーキタイプのポートレートを使用し、写真のようにリアルな肖像を自動生成せず、肖像権についてユーザーに質問しません。

生成前の実時間制限

ポッドキャストの入力が確定し、コストゲートを通過したら、スキルの開始時にタイマーを開始します。最初の有料生成呼び出しは、不足している背景またはホストのアセットを生成する generate_image です。すべてのアセットがすでに提供されている場合、最初の有料生成呼び出しは generate_reference_video です。最初の有料生成呼び出しは、スキル開始から5分以内に実行する必要があります。スキル開始から5分以内に最初の有料生成呼び出しを実行できていない場合は、有料生成呼び出しを行う前に停止し、現時点での内容(入力モード、アセットの状態、音声の状態、URL取得/WebFetchの状態、スクリプトの下書きの状態、正確なブロッカー)とともに failed_pre_generation_timeout を報告してください。ホストのアーキタイプ、事実確認、ジョーク、各幕の表現をさらに練り続けないでください。

各準備段階の後、および有料生成呼び出しの直前に、次の進捗チェックポイントを1行で出力してください。

  • Stage 1/4 done — input resolved and cost gate passed, locking missing-asset image prompts.
  • Stage 2/4 done — missing asset prompts ready, calling image generation now. 背景またはホストの画像が不足している場合、最初の generate_image 呼び出しの直前にこれを出力します。すべての画像がすでに提供されている場合は、代わりに Stage 2/4 done — assets and voices ready, collecting URL/topic facts. を出力し、画像生成を行わずに続けます。
  • Stage 3/4 done — script draft locked, preparing first act.
  • Stage 4/4 done — first act prompt ready, calling Kling now.

不足アセット用の画像プロンプトの反復は、最初の generate_image 呼び出し前に最大2回までです。最大2回の反復後は、できたものを generate_image に渡してください。ホストのアーキタイプ、スタジオの背景の細部、ペルソナのスタイリングをさらに磨き続けないでください。スクリプトと各幕のプロンプトの反復は、Kling を呼び出す前に最大2回までです。最大2回の反復後は、できたものを generate_reference_video に渡してください。ジョーク、割り込み、ペルソナの見せ方、カメラの表現をさらに磨き続けないでください。

Claude Desktop でのローカル画像

Claude Desktop では、インラインで貼り付けた画像を MCP ツールに渡すことはまだできません(Anthropic 側の制限です)。ユーザーが写真をインラインで貼り付けた場合、または host_a_img/host_b_img として使いたいローカルファイルに言及した場合は、ステップ1を一時停止して、次のような案内を丁寧に伝えてください。

ご注意ください。Claude Desktop では、貼り付けた画像はまだ MCP ツールに渡せません(Anthropic の制限です)。写真を使う方法は簡単に2つあります。

  • すでにホスティングされている場合は、URL を貼り付ける(Imgur、S3、ご自身のサイトなど)。これが最も早い方法です。
  • 画像ファイルを添付してください。生成前にこちらでアップロードできます。

ローカルファイルが届いたら、upload_asset で公開 URL に変換し、返された public_url をパラメーターとして使用してからステップ1に進みます。すでにホスティングされている https://... URL はそのまま使用でき、この手順は不要です。

ユーザーが実在する著名人の名前を挙げても、何も添付していない場合は、その人物に似せた画像を自動生成しないでください。ステップ4(実在人物の取り扱い)では、代わりにアーキタイプのポートレートを使用します。

長時間実行タスクのtask_statusポーリング

長時間実行される生成または編集の呼び出しが、初期ステータスの有無にかかわらずtask_idを返した場合({task_id}、{task_id, status: "queued"}、または初期ステータスがqueued、running、processingの場合を含む)、タスクIDと開始時刻をただちに記録します。

  • ターミナル状態(completed | failed | cancelled)になるまで、task_status({task_id})を短い間隔で繰り返し呼び出します。手動でスリープしたり、Bashでポーリングしたりしないでください。ワーカーが各ステータス呼び出しを開いたまま保持します。
  • ステータスがqueued、running、processingの間は、60秒ごとに進捗を示す行を1行表示します:Seedance i2v queued for {N}m {S}s... still processing。Kling、画像生成、音声クローン、連結タスクをポーリングするときは、プロバイダー/ステージのラベルに置き換えます。
  • completedになったら、返された結果URLを取り出して続行します。
  • failedまたはcancelledになったら、task_id、ステータス、最後のステータスメッセージをユーザーに伝えます。
  • 最初の送信から合計15分経過してもタスクがターミナル状態でない場合は、task_cancel({task_id})を呼び出してから、失敗をユーザーに伝えます。キャンセル時にタスクがすでにターミナル状態だと報告された場合は、ステータスをもう一度確認し、そのターミナル結果を伝えます。
  • 元のタスクがまだqueued、running、processingの間は、重複するリクエストを送信しないでください。

手順

0. 入力を解決する(引数が空の場合のメニュー)

$ARGUMENTSからフラグ(--yes、--no-captionsなど)とkey=value形式のパラメーターを取り除きます。取り除いた後の内容が空、または空白のみの場合は、このメニューをそのまま全回答として表示し、そこで停止してユーザーの次のメッセージを待ちます。ツールを呼び出したり、手順1に進んだり、トピックやURLを勝手に考えたりしてはいけません。取り除いた後の入力が空でない場合(URLまたは任意の文章)は、この手順を何も表示せずにスキップし、手順1に進みます。

ポッドキャストで取り上げたい内容は何ですか? 次のいずれでも対応できます。

  • ウェブサイトのURL(製品ページ、ドキュメントサイト、ローンチページなど) — 例:https://pika.art
  • GitHubリポジトリ — 例:https://github.com/anthropics/claude-code
  • ブログ記事/記事のURL — 例:取り上げたい最近の記事
  • 自由形式のトピックや概要 — 例:「私とイーロン・マスクが火星について話す」、または*「2人の科学者がAGIについて議論する」*

選択肢を返信してください。ホスト2人による1分間のポッドキャスト動画(4幕 × 約15秒)を生成します。

ヒント:/pika:podcastと入力する必要はありません。「についてポッドキャストを作って」「のポッドキャストレビュー」「私とがについて話す」のように伝えるだけで、このスキルが自動的に実行されます。

ユーザーから返信があったら、その返信を解決済みの入力(URLまたはトピック)として扱い、手順1に進みます。再度入力を促してはいけません。

1. 不足しているアセットを生成する(並列)

提供されていないものだけを生成します。デフォルトのアーキタイププロンプト:

  • bg_img — モダンなポッドキャストスタジオ、椅子2脚、暖色系の照明、人物なし、16:9
  • host_a_img — 熱意のあるホスト、スタジオでのポートレート、左寄せの構図、1:1
  • host_b_img — 現実的な懐疑派のホスト、スタジオでのポートレート、右寄せの構図、1:1

入力で特定のペルソナ(手順3)が言及されている場合は、そのペルソナの雰囲気に合うようにアーキタイプを調整します。詳しくは、実在の人物の扱いに関する以下の説明を参照してください。

2. 音声IDを解決する

指定されている場合はvoice_a/voice_bを使用します。指定がない場合は、デフォルトのKlingプリセット(876341503281471517/829837252279803904)を使用します。ユーザーがvoice_a=/voice_b=でクローン音声IDを指定した場合は、そのIDを直接使用します。

3. 入力モードを解析する — URL とトピック

$ARGUMENTS からフラグ(--yes、--no-captions など)と key=value 形式のパラメーターを取り除きます。残った内容を確認します。

URL モード — 入力に https?:// URL が含まれる場合:

  • 視覚的な参考情報に限り、その URL に対して capture_website を呼び出します。取得するのは、製品名/ページ名、目に見えるレイアウト、スクリーンショット、Bロールの手がかり、ジョークにできる視覚的な特徴です。
  • 同じ URL に対して WebFetch を呼び出し、ページ全体のテキストを台本の信頼できる情報源として使います。事実確認をスクリーンショットだけに頼らないでください。
  • 統合した入力から、製品名、価値提案、具体的な機能や事実を2〜3件、価格、ジョークにできる特徴、具体的な引用や主張を抽出します。
  • 長文ページ(Wikipedia、ドキュメント、ブログ記事、記事)の場合は、WebFetch のページ全体のテキストを確認し、リード文以降の詳細なセクションも読みます。内容のある詳細セクションが3つ以上ある場合は、台本でリード文以降の異なるセクションを少なくとも3つ取り上げます(たとえば、アーキテクチャ、トレーニング、ハルシネーション、制限、デプロイ、安全性など)。冒頭の要約だけを取り上げないでください。
  • 事実の根拠には WebFetch のテキストを使い、視覚情報には capture_website を使います。両者が食い違う場合は、事実に関する主張には WebFetch を優先し、スクリーンショットは視覚的な参考情報として扱います。

トピックモード — 入力が自由形式の文章である場合(URL なし):

  • 入力全体を概要として扱います。次の項目を解析します。
    • 主題 — 会話のテーマ
    • ホスト — 明示されている場合はその内容(「私とイーロン・マスク」「科学者2人」「ジョーとサラ」など)。明示されていない場合はデフォルトを使います(熱意あるホスト+懐疑的なホスト)。
    • 切り口 — ディベート/インタビュー/解説/カジュアル
    • 具体的な事実 — ユーザーが提示した具体的な主張、数値、日付、引用
  • 具体的な事実が示されていない場合は、ジョークと「実は……」という転換の軸として、明確に観察や仮説を2〜3件提示します。創作した主張を事実として提示しないでください。トピックの事実の正確さが重要な場合は、情報源または URL を尋ねてください。
  • ユーザーが「私とX」または「僕とX」と指定した場合、ホストAはユーザー(host_a_img= が指定されていればその画像を使用し、そうでなければ生成したホストの肖像を使用)、ホストBはXです。
4. 実在人物の扱い(トピックモードのみ)

解析した入力で、ホストとして特定の実在する公人(例:「イーロン・マスク」「テイラー・スウィフト」「ジョー・ローガン」)が指定されている場合:

  • デフォルトの動作:その人物の写真のような肖像を自動生成しないでください。人物の雰囲気に合った類型的な肖像を生成します。たとえば、イーロン風のホストなら「テック系億万長者の雰囲気を持つ、ポッドキャストのデスクに座るCEO」、テイラー風なら「ポップスターの美学」のようにします。本人の模倣ではなく、明確に着想を得たものにしてください。
  • 例外:ユーザーが host_a_img=<url> または host_b_img=<url> を明示的に指定した場合は、指定された画像をそのまま使います。肖像の権利についてはユーザーが責任を負います。
  • 声:同じルールを適用します。デフォルトでは汎用の Kling プリセットを使い、ユーザーがクローン音声(voice_a=/voice_b=)を提供した場合に限り、それを使用します。
  • 台本のトーン:セリフでは、指定された人物の公知の立場や雰囲気(例:イーロン風の人物なら火星への熱意)を話題にしてもかまいません。公的な記録にある意見は扱って構いません。その人物に、特定の名誉毀損的な発言、人物像にそぐわない発言、または私生活についての捏造した発言をさせないでください。

このガードレールにより、「火星についてテック系CEOと議論するポッドキャストが欲しい」といった創作を可能にしつつ、実在人物の名前を挙げただけで、その人物のディープフェイクが自動生成されるのを防ぎます。

CJK/非ラテン文字の取り扱い

URL、トピック、製品名、ホスト名、引用、または必要なスクリプトの詳細に、中国語、日本語、韓国語、アラビア語、デーヴァナーガリー文字、キリル文字、アクセント付きラテン文字、絵文字、その他の非ラテン文字が含まれる場合は、このセクションを使用してください。

  • 文字の保持:ユーザーから提供された非ラテン文字は、スクリプト内および事実をまとめる際に、文字の状態を変えずにそのまま保持してください。ユーザーから明示的に求められない限り、製品名、人名、スローガン、引用句をローマ字化、音訳、翻訳しないでください。読み方の補助が有用な場合は、元の文字に置き換えるのではなく、近くの英語の文章に記載してください。
  • Kling の音声 ID:voice_a= と voice_b= には、引き続き有効な Kling の音声 ID を指定する必要があります。中国語/日本語/韓国語のセリフには、その言語を話すことが分かっている Kling の音声 ID またはクローン音声サンプルを優先してください。その言語に合った Kling 音声がない場合は、セリフに元の文字を残し、無関係な TTS プロバイダーに黙って切り替えるのではなく、発音に訛りが出る可能性を明記してください。
  • 多言語のセリフ:各ホストのセリフは短く、曖昧さのないものにしてください。長い多言語の段落を Kling に発音させるのは避け、複雑な名前や引用句は複数のアクトに分け、周囲の英語は簡潔にしてください。
  • 字幕/フォントのフォールバック:ポッドキャストのセリフでは専門用語が誤認識されるため、このスキルでは既定で add_captions をスキップします。それでもユーザーが字幕を明示的に求める場合は、自動文字起こしではなく、作成したスクリプトの subtitles[] を渡してください。中国語/日本語/韓国語には font: "noto-cjk" を設定し、元の非ラテン文字をそのまま保持してください。
  • 品質確認:非ラテン文字が含まれていた場合は、最終判定に一行の注記を含め、元の文字をスクリプト内に保持したか、選択した音声が対象言語に合っているか、または最善の選択だったかを記載してください。
専門用語の多いネイティブ音声の取り扱い

URL、トピック、製品名、引用、または必要なスクリプトの詳細が専門的、または専門用語の多い内容(特に金融、法律、医療、AI/暗号資産、頭字語、造語、珍しい製品名、長い数値、複数語からなる複合語)の場合は、このセクションを使用してください。Kling-omni のネイティブ TTS は、自動字幕だけでなく、音声でも造語を正しく発音できないことがあります。そのため、有料の Kling 呼び出しを行う前にリスクを減らしてください。

  • リスクスキャン:1つの行に複数の専門用語、頭字語、桁数の多い数字、または経済学者のような入れ子構造・複数節の言い回しが含まれる場合、その行を専門用語が多いものとして扱います。stablecoins、unbundle、reassure のような語は意味を担う重要な用語とみなし、意味が伝わる状態を保ってください。
  • スクリプトの書き換え:スクリプトの状態と最終的な振り返りには正式な用語をそのまま残しつつ、話し言葉の行はそれを囲む部分を短くしてください。短い行を使い、長い節は分割し、ホストの各行に含める高リスク用語は1つか2つまでにします。Kling が似た響きの埋め草を推測しやすくなるような、入れ子構造の節は避けてください。
  • 発音ガイド:高リスク用語について、アクトごとに簡潔な発音ガイドを作成します。例:stablecoins = STAY-bul coins、unbundle = un-BUN-dul、reassure = ree-uh-SHOOR。発音ガイドはプロンプトのメタデータに限ります。会話、字幕、ファクト、最終的な振り返りでは正式な用語を置き換えないでください。
  • 発音が難しい既知の用語の修正:用語の発音が不安定になることが知られている場合、または事後確認で似た別の語への聞き間違いが判明した場合、同じ難しい単語を単独で再試行しないでください。アクトのメタデータには正式な用語を残し(canonical_terms: ["unbundle"])、修正後の音声トークン行には、発音しやすい合図や短い間を入れた文脈付きの短いフレーズを使います。例:we un-bundle payments。観測された誤りの形を、メタデータの否定的な発音ガードとして追加します。例:unbundle = un-BUN-dul, not un-bumble。
  • 発音が難しい既知の用語に対する公開可能な代替策:有料の Kling 呼び出しを行う前に、過去の E2E または今回の事後確認で unbundle が unbubble、un-bumble、unbundable のように発音のずれを示している場合は、unbundle などの難しい用語を発音が難しい既知の用語として記録します。canonical_terms と observed_wrong_forms を記録してください。発音が難しい既知の用語は、Kling のネイティブ音声で話させないでください。代わりに、ネイティブ音声の音声トークン行に発音が難しい既知の用語を含めず、該当するビジュアルアクトまたは最終動画を生成した後、正式な綴り(ハイフン付きの発音ガイドではなく unbundle)を使って、generate_speech(text=<spoken-only script>, provider: "minimax-tts", minimax_model: "speech-2.8-hd", language: "en") で制御されたナレーションを生成します。話し言葉のみのスクリプトでは、作成済みのホスト発話順を維持しつつ、HOST_A/HOST_B ラベル、メタデータ、発音ガイド、観測された誤った綴りを含めないでください。差し替え前の QA では、transcribe_audio(audio=<tts_audio_url>) と analyze_media(media=<tts_audio_url>) の両方を使って TTS 音声を確認します。必須の canonical_terms はすべて transcribe_audio のテキストに含まれ、analyze_media の観測された書き起こしにも含まれている必要があります。正式な用語が欠落している場合、観測された誤った形に置き換わっている場合、または新たな似た語に置き換わっている場合は、TTS を却下してください。その後、edit_audio_replace(video_url=<final_mp4>, audio_url=<tts_audio_url>, duration_policy: "video") を呼び出し、ネイティブ音声を破棄して制御された TTS トラックに差し替えます。差し替え後の QA では、transcribe_audio(audio=<replaced_mp4_url>) と analyze_media(media=<replaced_mp4_url>) の両方を使って差し替え後の MP4 を確認します。必須の canonical_terms はすべて最終確認の両方に含まれている必要があります。また、analyze_media ではホストの発話順と、許容できる音声・映像の同期も確認する必要があります。最終確認のいずれかで誤った形が聞き取られる、正式な用語が欠落する、または代替策によってポッドキャストの会話構造が崩れていると判断された場合は、not publish-ready とします。両方の確認に合格した場合は、Kling のネイティブ音声ではなく制御された TTS を使っていても、代替策による出力を公開可能とします。
  • 数字と頭字語:読み上げる際に重要な場合は、話しやすい形で記述します。$175B は one hundred seventy-five billion dollars にします。ブランドが通常単語として発音する場合を除き、API は A P I にします。
  • アクトのプロンプト:音声トークン行の近くに、アクトごとの発音ガイドを記載し、それが会話ではなく、そのまま読み上げてはならないという指示を加えます。正式な用語を明瞭に発音し、似た語を即興で作らないよう指示してください。
5. 台本を作成する

4幕×2行(HOST_A/HOST_B)で作成します。各行の音声は約10~12秒です。

必須要件(URL モードとトピックモードの両方に適用):

  • 具体的な詳細に結びついた、具体的なジョークを1つ入れます(URL モードではスクレイピングした事実、トピックモードではトピックから導いた主張)。
  • 「待って、実は……」という懐疑からの転換を1つ入れます。
  • 少なくとも1か所、文の途中で話を遮ります。
  • 「okay so」「wait」「right?」「i mean」「honestly」などの自然なつなぎ言葉を入れます。
  • 型どおりの称賛ではなく、自然な反応を入れます。
  • 実際の機能名、価格、主張、引用のうち、少なくとも1つに言及します。
  • 無理に「バイバイ!」と言わせず、自然に締めくくります。
  • トピックが専門分野に特化している、専門用語が多い、または造語を使っている場合は、幕のセリフを確定する前に、専門用語が多い内容向けのネイティブ音声処理を適用します。

幕の構成:フック → 機能の詳しい解説 → 転換 → 評価 (トピックモードでは、これに相当する構成はフック → 内容 → 視点の転換 → 評価です。)

6. 動画の各幕を生成する(サブエージェント、順次実行)

解決済みのアセットと台本をすべてサブエージェントに渡します。サブエージェントは幕1→2→3→4の順に実行し、並列化しないでください。サブエージェントは上記の長時間タスクの task_status ポーリング契約に従い、Kling、画像生成、音声クローン、または連結タスクの完了を待っている間、60秒ごとの進捗メッセージをすべて親エージェントに中継する必要があります。

通常の各幕では、generate_reference_video を1回呼び出します(kling-v3-omni、duration=15、sound=true、quality_mode: "pro")。通常の各幕では毎回 reference_images=[bg_img, host_a_img, host_b_img]、voice_ids=[voice_a, voice_b]、quality_mode: "pro" を渡してください。コストゲートがプロ品質の15秒の幕の費用を提示するため、quality_mode: "pro" を渡す必要があります。任意のパラメーターとして、実行間の再現性が必要な場合は、特定の Kling ファミリーメンバーを固定する kling_model を指定できます。3つのショットは次のとおりです。

  • 既知の発話困難語に関するフォールバック例外:既知の発話困難語を含む幕では、該当するビジュアル幕を sound=false でレンダリングし、該当する行には音声トークンを付けません。制御された TTS による置き換えで後から語を補うため、既知の発話困難語を正規の表記のまま <<<voice_*>>> ネイティブ音声トークン行に含めないでください。専門用語が多くても既知の発話困難語を含まない幕では、ステップ5の発音補助情報を、会話以外のメタデータとして幕のプロンプトに含め、引用符で囲んだ <<<voice_*>>> 行では正規の表記を維持してください。
  • ワイドショット 5秒:両ホスト、音声トークンなし
  • MCU-A 5秒:<<<voice_1>>> '<HOST_A line>'
  • MCU-B 5秒:<<<voice_2>>> '<HOST_B line>'

幕ごとの感情表現:

  • 幕1:Aは興奮し、Bは懐疑的
  • 幕2:Aはジェスチャーを交えて説明し、Bは質問する
  • 幕3:Aは断固とした態度を示し、Bは驚いて考えを改める
  • 幕4:Aは満足し、Bは認める

幕4の後、サブエージェントは edit_concat([act1, act2, act3, act4]) を呼び出し、非同期ポーリングの進捗を親エージェントに中継したうえで、最終動画の URL を返します。後処理の品質ゲートで、問題のない幕を再生成せずに、対象を絞った幕の修正を最大1回行えるよう、4幕分の URL を状態に保持してください。

7. 出力

最終動画の URL と、1文の評価を返します。デフォルトでは add_captions を呼び出さないでください。Whisper の自動文字起こしは、ポッドキャストの会話でよく使われる専門用語(製品名、ペルソナ名、専門用語)を正確に認識できないためです。ユーザーが字幕を明示的に求めた場合は、自動文字起こしではなく、作成済みの台本から手動で subtitles[] を渡してください。CJK 文字や非ラテン文字については、上記のフォントと文字保持に関するガイダンスに従ってください。デフォルトの納品物は Kling Omni のネイティブ音声です。

フライト後の品質ゲート

成功を宣言する前に、最終動画 URL に対して analyze_media を呼び出し、構造化された判定を求めてください。

Return JSON only: {
  "verdict": "clean" | "degraded" | "catastrophic",
  "observations": string[],
  "quality_warning": string | null,
  "re_roll_suggestion": string | null
}
Check that Host A remains on the left, Host B remains on the right, product names / persona names / topic-specific terms are not visibly garbled, the four-act podcast structure is present, and there are no black frames or wrong-host shots.
Also check the spoken audio, not only captions or visible text: product names, persona names, topic-specific terms, coined terms, and jargon must be intelligible. Flag garbled or mispronounced native audio such as "stablecoins" sounding like "stable kinds", "unbundle" sounding like "un-bumble" or "unbundable", or "reassure" losing syllables.
  • verdict が clean の場合、まずスクリプトの状態に既知の発話難語が含まれているか確認します。既知の発話難語がある場合は、clean の判定を受け入れる前に、Known-hard publishable fallback を実行し、置換前と置換後の transcribe_audio / analyze_media チェックも実行してください。置換後の MP4 のチェックに合格した場合にのみ成功を返してください。既知の発話難語がない場合は、通常どおり最終 URL と1文の判定を返してください。
  • 通常の非ブロッキングな視覚上の問題により verdict が degraded の場合は、ユーザーが公開前に確認できるよう、最終 URL と quality_warning を返してください。
  • 発話音声で専門用語、新語、その他の分野固有の用語が不明瞭になることが原因で verdict が degraded の場合は、問題がないものとして成功を返さず、公開可能な状態ではないものとして扱ってください。既知の発話難語、または観察された難語の発音のずれがある場合は、ネイティブ音声の演技補正を行わないでください。別の Kling ネイティブ音声プロンプトに、対象を絞った演技補正の予算を使わないでください。Known-hard publishable fallback を直接使用します。generate_speech(text=<spoken-only script>, provider: "minimax-tts", minimax_model: "speech-2.8-hd") を呼び出し、TTS 音声に対して置換前の transcribe_audio と analyze_media を実行してから、edit_audio_replace(video_url=<final_mp4>, audio_url=<tts_audio_url>, duration_policy: "video") を呼び出し、ネイティブ音声を破棄して最終 MP4 の音声を置き換えてください。置換後の MP4 に対して transcribe_audio と analyze_media を実行してください。これらのチェックに合格した場合は置換後の URL を返してください。フォールバックのチェックでも発話中の専門用語が不明瞭なままの場合、または不明瞭な箇所が十分に限定されておらず補正や置換ができない場合は、ポッドキャストを完成扱いにしないでください。URL とともに not publish-ready、該当する用語、quality_warning を返してください。既知の発話難語以外の発音不明瞭さに限り、観察結果または re_roll_suggestion から問題の原因が1つの演目に特定できる場合は、対象を絞った演目補正の予算を1回分使ってください。不明瞭な行を短くする、複数節の表現を分割する、発音ガイドを追加または改善する、あるいは失敗の原因となったショットプロンプト、参照画像、音声 ID、その他の演目固有の入力を変更して、その演目のペイロードを大幅に変更します。quality_mode: "pro" を指定して演目を1つ修正し、4つの演目を再結合したうえで、この analyze_media チェックをもう一度実行してください。2回目の判定でも発話中の専門用語が不明瞭と報告された場合は、ポッドキャストを完成扱いにせず、not publish-ready として返してください。
  • verdict が catastrophic の場合、観察結果または re_roll_suggestion で、問題のある演目、ホストの取り違え、黒いフレーム、または局所的な視覚・音声の不具合が1つに特定できる場合に限り、対象を絞った演目補正の予算を1回分使ってください。kling-v3-omni にはシードがなく、同一の演目ペイロードを送信すると同じジョブ/アセットが返される場合があります。同一の Kling ペイロードを送信しないでください。再試行の前に、台本の行、ショットプロンプト、参照画像、音声 ID、発音ガイド、または失敗の原因となった演目固有のその他の入力を調整し、問題のある演目のペイロードを大幅に変更してください。quality_mode: "pro" を指定して演目を1つ修正し、4つの演目を再結合したうえで、この analyze_media チェックをもう一度実行してください。コストゲートの範囲を超えないでください。2回目の判定も catastrophic の場合、または問題が1つの演目に起因しない場合は、ポッドキャストを完成扱いにせず、成功を宣言する代わりに判定結果と re_roll_suggestion を提示してください。

ルール:

  • voice_ids は有効な Kling 音声 ID でなければなりません。Calm_Man のような名前形式の文字列は使用しないでください。
  • ホスト A は常に左(<<<image_2>>>)、ホスト B は常に右(<<<image_3>>>)です。入れ替えないでください。

重要なフレーズ

これらのアンカーにより、URL モードとトピックモードのどちらでも、ポッドキャストの出力に一貫性を保てます。

フレーズ場所重要な理由
Host A always LEFT, Host B always RIGHTレイアウトとショットのプロンプト4つの独立したアクトのレンダリングを通して、ホストの識別が入れ替わるのを防ぎます。
4 acts × 15s each全体構成結合後の構成を予測可能にし、アクトごとのテンポにばらつきが出るのを防ぎます。
Hook → Feature deep-dive → The Turn → Verdictスクリプト構成エピソードを、ばらばらな4つのリアクションではなく、会話の流れに沿った構成にします。
wait, actually... skeptic-flip momentスクリプト要件ポッドキャストを本物のやり取りのように感じさせる転換点を生み出します。
Do not call add_captions出力ルールデフォルトで品質の低い焼き込み字幕が付くのを防ぎます。明示的に字幕をリクエストされた場合は、自動文字起こしの代わりに手動の subtitles[] とフォントのフォールバックを使用します。

エンジンの選択:ネイティブな2人のホストの対話には Kling v3-omni

4つのアクトには Kling v3-omni を使用してください。単一のショットプランで、2人の参照ホストと音声トークンを使ったネイティブな対話に対応しているためです。トレードオフとして、一貫性を保つためにアクトは順次実行され、純粋な編集/合成のワークフローより時間がかかることがあります。デフォルトでは、字幕レイヤーや音楽レイヤーを別途追加しないでください。このスキルの価値は、ネイティブな音声でのやり取りにあります。

実行時間の目安

4アクト全体のレンダリングにかかる通常の実時間は24~32分です。現実的な目安は約25分、P95は約32分です。 4つのアクトは Kling Omni で順次実行されます。これが実行時間の大半を占めるため、並列作業として説明しないでください。 ユーザーまたは実行ハーネスの時間制限が32分未満の場合は、全体のレンダリングが完了しない可能性があることを事前に伝え、2アクト/30秒の代替案を提示してください。それ以外の場合は、通常どおり確認を求めずに進めてください。

ステップ実時間備考
不足アセットの生成30-90s背景/ホストの参照が提供されている場合はスキップ
URL/トピックの解析+スクリプト1-3 minURL モードの品質はページの取得状況に左右されます
4つの Kling アクト24-32 minKling Omni を順次呼び出す(約8分×4回)。実行時間の大半を占めます
結合+返却30-90s最終 URL のみ。デフォルトでは字幕をスキップ

失敗時の対応

capture_website / clone_voice / generate_video / edit_concat で上流の 5xx が発生した場合の復旧

次のいずれかが発生した場合:

  • MCP 呼び出しが code: "provider_5xx" かつ retry_class: "retry_after_backoff" を返す
  • または、上流プロバイダー(Kling、音声クローン、キャプチャ、ストレージ)から HTTP 502 / 503 / 504 が返る

次の手順を実行してください。

  1. 5秒待ちます。
  2. 引数を一切変更せず、まったく同じ MCP ツールをもう一度呼び出します。スクリプトを書き換えたり、音声やホストの参照を変更したり、アクトの順序を変えたり、別のプロンプトを再送信したりしないでください。
  3. 再試行でも 5xx が発生した場合は中止し、ユーザーに次のメッセージを伝えます:"Provider returned a transient upstream error twice. Try again in 1-2 minutes; this usually clears on its own."

再試行は1回を超えて行わないでください。5xx は一時的な障害であり、ポッドキャストのトピック、音声、スクリプトに問題があることを示すものではありません。

上流の 4xx / moderation_blocked が発生した場合の復旧

任意の generate_image ヘルパー、ホストアセット、Kling アクトで上流の 4xx または moderation_blocked が発生した場合:

  1. 同じ入力を再試行しないでください。モデレーションと、ほとんどの 4xx バリデーションエラーは同じ入力に対して再現します。
  2. その段階で明示的に利用可能な場合に限り、フォールバックプロバイダーを使用してください。デフォルトの Kling v3-omni による2人のホストのアクト経路には同等のフォールバックプロバイダーはありません。無関係な字幕や単一音声の TTS でポッドキャストを偽装しないでください。
  3. ユーザーに次のメッセージを伝えます:"Provider declined this podcast input. Try a different host reference, less recognizable public figure/brand wording, or a safer topic angle."
上流の 429(レート制限)が発生した場合の復旧

上流からバックオフのヒントとともに HTTP 429 が返された場合:

  1. 指定されたバックオフ時間だけ待ちます。ヒントがない場合は30秒待ちます。
  2. 引数を一切変更せず、まったく同じ MCP ツールをもう一度呼び出します。
  3. 再試行は1回を超えて行わないでください。再度 429 が返された場合は中止し、レート制限のメッセージをユーザーに伝えます。
capture_website が空を返す/ページが読み込まれない

URL モードで capture_website を呼び出し、200 を返すものの、action_bboxes が空、または recording_viewport が 0x0 の場合:

  1. capture_website を再試行しないでください。キャプチャ環境でページのレンダリングに失敗しています。
  2. WebFetch から利用可能なページ全体のテキストが返された場合は、capture_website を再試行せずに続行してください。事実を確認する根拠には WebFetch を使い、壊れたキャプチャにページの詳細が含まれているかのように扱わず、汎用的なビジュアルまたは生成したビジュアルを使用してください。
  3. キャプチャと WebFetch の両方から利用可能なソース情報を取得できない場合は、次のメッセージを提示してください:"Could not capture . The page may be blocked / paywalled / require auth. Please provide a text brief or paste the source material instead."

キャプチャされたページに、記事やコンテンツ本文がなく、ファーストビューのナビゲーションしか表示されていない場合、スクリプトの根拠として十分なページ全体のテキストが WebFetch から返された場合に限り続行してください。その場合、ビジュアルにはキャプチャを、事実の確認には WebFetch を使用してください。キャプチャと WebFetch の両方から利用可能なソース情報を取得できない場合、ページの奥にある詳細をでっち上げるのではなく、ソース情報を貼り付けるよう依頼してください。

upload_asset のネットワーク/認証エラー

ローカルホストの参照先、音声サンプル、またはソースメディアをホストされた URL に変換する際に upload_asset が失敗した場合、ローカルのファイルシステムパスを使って続行しないでください。再試行は、上記の 5xx または 429 のクラスに限り、1 回のみ行ってください。auth_error、未対応の MIME タイプ、ネットワーク障害、または再試行後もアップロードに失敗した場合は、ホストされた URL、または対応形式の代替ファイルを依頼してください。

task_status の実行が上限を超えて長時間続く場合

各非同期 MCP 呼び出しは、インラインの結果、またはポーリング用の {task_id, status} を返します。タスクが停止していると判断する前に、次の上限を使用してください。

  • Kling Omni act:呼び出しごとに 15 分
  • 音声クローン:5 分
  • 編集/結合:5 分

プロバイダーの上限の 1.5 倍、またはスキル固有のポーリング上限のうち、早いほうを適用してください。これには、上記の長時間実行される task_status のポーリング契約にある合計 15 分の上限も含まれます。task_status がその早いほうの上限を超えて status: "processing" または status: "queued" を返した場合は、task_cancel({task_id}) を呼び出し、次のメッセージを提示してください:"Provider taking unusually long; aborting. Try again."

例

URL モード(ウェブサイト/リポジトリ/ブログを確認):

/pika:podcast https://pika.art
/pika:podcast https://github.com/anthropics/claude-code
/pika:podcast https://cursor.com voice_a=876341503281471517

トピックモード(自由形式の概要):

/pika:podcast Two AI researchers debate whether AGI arrives before 2030
/pika:podcast I and a Mars-obsessed tech CEO talk about colonization timelines
/pika:podcast interview with a seed-stage VC about what kills most startups
/pika:podcast podcast about quantum computing breakthroughs in 2026

混合(トピックのプロンプト内に URL がある場合。有効な URL が見つかれば、エージェントは URL モードを優先します):

/pika:podcast podcast about https://pika.art with skeptical investor energy

コメント