Specification
Skill ID
pika-labs/pika-plugins/podcast
Publisher
pika-labs
Repository
pika-plugins
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

pika-labs/pika-plugins/podcastInstalls these files
  • SKILL.md

What this skill tells the agent

/pika:podcast

4 acts × 15s each = 60s. Host A always LEFT, Host B always RIGHT. Accepts a URL or a free-form topic / brief.

Parameters

ParamDefaultNotes
inputrequiredURL to review or free-form topic / brief (e.g. "I and Elon Musk talk about Mars")
bg_imgauto-generatedPodcast studio background
host_a_imgauto-generatedHost A portrait — see Real-person handling below
host_b_imgauto-generatedHost B portrait — see Real-person handling below
voice_a876341503281471517Kling preset or cloned voice ID for Host A
voice_b829837252279803904Kling preset or cloned voice ID for Host B
aspect_ratio16:9Output aspect ratio

Cost transparency gate

Before any paid MCP call, call identity_balance({verbose: true}) once. Surface the current balance, recent burn rate, and remaining runway, then gate the run with this exact message:

Estimated cost: about 6,000-9,000 credits (~$60-$90) for four Kling v3-omni pro 15s acts, optional missing-asset image generation, one act corrective retry, concat, and post-flight analyze_media QA. This exceeds $5, so Reply proceed to continue or cancel to stop.

Do not call any paid MCP tool until the user replies proceed. If the user replies cancel, stop without generating. This is the only yes/no gate; after proceed, render the four acts and return the URL.

Defaults — fire fast, no mid-flow confirmation

  • Use the param-table defaults silently for voices. voice_a defaults to the Kling preset 876341503281471517 and voice_b to 829837252279803904. Do not ask "which voice?" before firing — only honor explicit overrides (voice_a=, voice_b=).
  • Auto-generate any missing host portraits silently (Step 1's archetype prompts). Do not ask "should I generate a host image?" — just generate.
  • Only the cost transparency gate asks for `proceed`. After proceed, submit → render the 4 acts → return URL. Account credit balance + provider failover are the canonical guardrails. The --yes flag is accepted as a no-op for backward compatibility.
  • Topic-mode personas (Step 3) — when the user names a real public figure, follow Step 4 (Real-person handling) silently: archetype portrait by default, no auto-generated photographic likeness, no question to the user about likeness rights.

Pre-generation wall-clock guard

Start a timer at skill start once the podcast input is resolved and the cost gate has passed. The first paid generation call is generate_image for missing background/host assets. If all assets are already provided, the first paid generation call is generate_reference_video. The first paid generation call must be invoked within 5 minutes of skill start. If you have not invoked the first paid generation call within 5 minutes of skill start, stop before any paid generation call and report failed_pre_generation_timeout with what you have so far: input mode, asset status, voice status, URL capture/WebFetch status, script draft status, and the exact blocker. Do not keep refining host archetypes, factual grounding, jokes, or act wording.

Print a single-line progress checkpoint after each prep stage and right before the paid generation call:

  • 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. Use this right before the first paid generate_image call when any background or host image is missing. If all images are already provided, emit Stage 2/4 done — assets and voices ready, collecting URL/topic facts. instead and continue without image generation.
  • Stage 3/4 done — script draft locked, preparing first act.
  • Stage 4/4 done — first act prompt ready, calling Kling now.

Missing-asset image prompt iteration is maximum 2 passes before the first generate_image call. After the max 2 passes, ship what you have to generate_image; do not continue polishing host archetypes, studio background details, or persona styling. Script and act-prompt iteration is maximum 2 passes before Kling. After the max 2 passes, ship what you have to generate_reference_video; do not continue polishing jokes, interruptions, persona framing, or camera wording.

Local images on Claude Desktop

Claude Desktop can't pass inline-pasted images to MCP tools yet (Anthropic-side limitation). If the user pastes a photo inline, or mentions a local file they want as host_a_img / host_b_img, pause Step 1 and kindly send them this — something like:

Heads up — pasted images don't reach MCP tools on Claude Desktop yet (Anthropic limitation). Two easy options for your photo: - Paste a URL if it's already hosted (Imgur, S3, your site) — fastest - Attach the image file so I can upload it before generation.

When a local file arrives, convert it to a public URL with upload_asset and use the returned public_url as the parameter before Step 1. Already-hosted https://... URLs work as-is and skip this entirely.

If the user names a real public figure without attaching anything, do NOT auto-generate their likeness — Step 4 (Real-person handling) uses an archetype portrait instead.

Long-running task_status polling

When any long-running generation or edit call returns a task_id with or without an initial status, including {task_id}, {task_id, status: "queued"}, or an initial queued, running, or processing status, record the task id and start time immediately.

  • Call task_status({task_id}) in a tight loop until terminal (completed | failed | cancelled). No manual sleep and no Bash polling; the worker holds each status call open.
  • Emit ONE visible progress line every 60s while status is queued, running, or processing: Seedance i2v queued for {N}m {S}s... still processing. Replace the provider/stage label when polling Kling, image generation, clone voice, or concat tasks.
  • On completed, unwrap the returned result URL and continue.
  • On failed or cancelled, surface failure to the user with task_id, status, and the last status message.
  • After 15 min total from the original submit, call task_cancel({task_id}) if the task is still non-terminal, then surface failure to the user. If cancel reports the task is already terminal, call status once more and report that terminal result.
  • Do not submit a duplicate request while the original task is still queued, running, or processing.

Steps

0. Resolve input (empty-args menu)

Strip flags (--yes, --no-captions, etc.) and key=value parameters from $ARGUMENTS. If what remains is empty or whitespace-only, print this menu verbatim as your full response, then stop and wait for the user's next message — do NOT call any tool, do NOT proceed to Step 1, do NOT invent a topic or URL. If the stripped input is non-empty (a URL or any prose), skip this step silently and proceed to Step 1.

What would you like a podcast about? I can take any of: - A website URL (product page, docs site, launch page) — e.g. https://pika.art - A GitHub repo — e.g. https://github.com/anthropics/claude-code - A blog post / article URL — e.g. a recent piece you'd like discussed - A free-form topic or brief — e.g. "I and Elon Musk talk about Mars" or "two scientists debate AGI" Reply with your choice and I'll generate a 1-minute two-host podcast video (4 acts × ~15s). Tip: you don't need to type `/pika:podcast` — just say things like "make a podcast about <topic>", "podcast review of <url>", or "I and <persona> talk about <topic>" and I'll fire this skill automatically.

When the user replies, treat their reply as the resolved input (URL or topic) and proceed to Step 1. Do not re-prompt.

1. Generate missing assets (parallel)

Generate only what's not provided. Default archetype prompts:

Use this skill in a project

Open any RiverX project, search the Skills panel for pika-labs/pika-plugins/podcast, and install it in one click.

Use this skill