---
name: avatar-podcast
description: Make a solo video podcast or a YouTube host in 16:9 — a breakout episode found with vidIQ for the structure, the person's own script in segments of about 45 s, two angles of one studio on GPT Image 2.5 Flare, one H3 Max Turbo stub + Extend chain per segment with the angles alternating, joined with the clips' own sound, and a thumbnail.
---
# Solo podcast with two camera angles

FlashBoards user skill, version 1.2.3 (2026-10-13).

On the board, read these guides with `list_skills` and `get_skill` when the assistant exposes them; otherwise use the hosted index through an available read-only retrieval tool. Use that runtime’s actual model discovery, current page context and guarded board actions for execution. Keep native readiness, approval and cost gates; do not claim a guide was read when retrieval is unavailable.

Read related guides with `get_skill({skillId:"<id>"})` or the [hosted index](https://pub-78da82d51ed14147ac554d38094b0c0b.r2.dev/user-skills/1.2.3/index.html). Reading a guide does not start or authorize a paid generation.

Read `avatar` and `avatar-long-speech` for the shared rules. Inputs are the person's own: {character}, {look sheet}, {voice}, {topic}, {studio} (the place and the light), optionally {reference} (a breakout episode on the topic).

## Why segments and two angles

- One chain holds at most 60 s of source, and the picture still softens along a chain (the face is about a third softer by the last quarter).
- A cut to the other angle starts from a fresh stub, so every segment starts sharp — and a podcast cutting between a medium shot and a close-up looks normal.
- Segments of 40–50 s of speech: 3–4 pieces each, the source before the last piece stays well under 60 s.

## Steps

1. **Reference (optional)** — `vidiq_research` with `tool: "outliers"` and `input: {keyword: "<topic>", publishedWithin: "sixMonths", minViews: 50000, limit: 8}` (a breakout has far more views than the channel usually gets), or with `trendCategories: ["full_podcast_or_interview"]` plus a keyword; read the exact input fields with `list_vidiq_research_tools`. Take the **structure** of the chosen episode, never its words: the host's welcome → the hook (a question the viewer feels) → the turn (a new way to see it) → one or two images → one small thing to do tonight → a quiet goodbye.
2. **Script** — the person's own words on {topic} in that structure, in segments of about 90–110 words (about 45 s at a calm pace). Short sentences, room for pauses; v4 tags only where they help (`[softly]`, `[warmly]`, `[exhales]`).
3. **Voice** — one file per segment: `generate_voice_audio` with {voice}, `model: "eleven_v4"`.
4. **Two start frames of the same studio** — `generate_image` with `gpt-image-25-flare`, `quality: "low"`, `width: 2048, height: 1152`, `referenceGenerationIds: [<look sheet>]`:
   ```text
   Picture 1 is a character sheet of one <man/woman/person>. A horizontal 16:9 live-action film still of the same <man/woman/person> hosting <their> <mood> video podcast in {studio}: <they> sit(s) at a desk behind a black podcast microphone on a boom arm, <the lights and the things behind them>. A medium shot from the waist up, the camera at eye level on a tripod, <they> sit(s) a little left of center, the microphone in front of <them> below <their> chin so <their> mouth is clearly visible, <they> look(s) straight into the lens with <a soft calm smile>, about to speak. <Their> face, hair and clothes exactly as in picture 1. Natural film look, shallow depth of field, no text.
   ```
   The close-up: the same prompt with "A close-up from the chest up from a second camera at eye level a little to <their> left, the microphone at the lower right edge of the frame below <their> chin so <their> mouth is clearly visible, <the lights> softly blurred behind <them>". **The mouth must be clear of the microphone** in both — check with `describe_media` before the paid video.
5. **Pieces** — per segment as in `avatar-long-speech` (`transcribe_media` → `plan_audio_timeline` with `chunkMaxSeconds: 14` → `cut_audio_span`).
6. **A chain per segment** — odd segments on the medium frame, even ones on the close-up; the stub and piece prompts below, `output: "continuation"`. Chains of different segments are independent: start them side by side, each step with its own `generationAttemptId`.
7. **Join** — `concat_videos` with the finished segments in order (2–12 per call), with the clips' own sound. Never lay the original voice files under the video: the lips follow the clip.
8. **Thumbnail** — `generate_image` with `gpt-image-25-flare`, `quality: "medium"` (crisp words), `width: 2048, height: 1152`, {look sheet} as picture 1: the face big, one strong expression, at most 5 words in quotes, high contrast. Check the words with `crop_image` + `describe_media` "Read every word exactly."

**Quality route — Seedance 2.5** (`seedance-2-5`): up to 30 s a call with the start frame as @Image1 and the segment's voice as @Audio1, the same piece prompt — a whole segment in one generation, no chain, no stub. It looks better and costs much more per second: quote both.

## Stub prompt (tripod)

```text
One continuous take from the given first image, a horizontal 16:9 video podcast shot on a still tripod camera. The <man/woman/person> sits still and silent behind the microphone, looking straight into the lens, lips closed, one soft natural blink. Everything stays exactly as in the first image. Quiet room tone only, no voice, no music.
```

## Piece prompt (seated host)

```text
The same <man/woman/person> <starts/keeps> talking straight into the camera, calm and warm, like hosting <their> quiet podcast. Audio 1 is <their> voice: <they> say(s) exactly these words, <their> lips exactly in sync with Audio 1: "<the piece's words>" <acting beats tied to words>. <They> stay(s) seated at the desk behind the microphone. The camera holds still on a tripod. <Their> face, hair and clothes, the studio and the warm lamp light stay exactly as in the video. One continuous shot, no cuts, no music, no text on screen.
```

- Beats are small and seated: a breath before the first word, an open hand toward the lens, a hand on the chest, a nod, a lean toward the microphone on a quiet line, a smile on the last words. Big head shakes and hand moves near the face blur.
- "starts" for the first piece of a segment, "keeps" for the rest.

## What was measured

| | Result |
|---|---|
| A 96 s episode, 2 segments × 4 pieces | two chains side by side finish in a few minutes |
| `continuation` vs `extended` on the medium segment | `continuation` sharper in every quarter |
| Close-up vs medium | the close-up softens much less along its chain |

## Not measured yet

- 1080P against 768P; more than two segments; a cut to a fresh stub inside one segment of the same angle.

## Execute through MCP or on the board

Use the person's FlashBoards account; never ask for a personal provider key or run the source's local scripts. Discover `get_account`, `list_generation_models` and the tools of this client first: a published guide does not prove a feature is deployed.

**Headless, no open board.** Quote with `estimate_generation_cost` (skill models: `estimate_skill_model`), then run `generate_image`, `generate_video`, `generate_audio` or `run_skill_model` with one stable `generationAttemptId` per logical attempt. Pass `maxCostUsd` only when the current operation and selected model support it; otherwise use the quoted cost and the person's explicit approval with the supported controls. Never silently ignore an unsupported spending cap; make one `get_generation` check after `retryAfterSeconds`. Pass the person's own results by `generationId`: images in `referenceGenerationIds`, `firstFrameUrl` and `endFrameUrl`, audio in `referenceAudioUrls` or `targetAudioUrl`, videos in `referenceVideoGenerationIds`. They are read on the server; signed result links do not work as public URLs. Every `generationId` a tool returns stays valid: a later read of the same result gives a different string, and both work. Film frames and gallery pictures go in by `previewHandle`: `referencePreviewHandles` of the generation tools, a `{previewHandle}` source of `arrange_images`, `crop_image` and `pad_image`, and `describe_media`. New files come from `show_media_upload_picker` as receipts. The person's character comes in as its sheet, by `generationId` or as an upload; there is no search by name. If the person names a character without the sheet, ask for it or make one with `character-sheet`; do not scan recent results for it. Free server steps: `trim_video`, `concat_videos`, `conform_video`, `replace_video_audio`, `extract_video_frame`, `extract_video_audio`, `detect_video_cuts`, `crop_image`, `pad_image`, `arrange_images`, `cut_audio_span`, `concat_audio_tracks`, `mix_audio_tracks`, `fit_audio_duration`, `add_audio_reverb`. Check every result with `describe_media` (a question about an image; `model`, `mode` and `sourceRange` only for a video) and `transcribe_media` for speech. Both checks are paid: `describe_media` costs a fraction of a cent for an image and about 2–4 ¢ for a short video (more for a long one), `transcribe_media` under 1 ¢ a minute — count the checks you plan in the price you name before the first paid step. `describe_media` is not reliable about sound: it misses effects mixed under music and can hear voices or instruments that are not there. Check speech with `transcribe_media` and ask the person to listen for effects and music. Never repay an uncertain submission; reuse an attempt ID only for the identical request. Make each new `requestId` or `generationAttemptId` unique, for example the task, the date and a short random suffix: an ID used before, even in another chat, replays that earlier request or answers `REQUEST_ID_CONFLICT`.

**On the board.** Inspect with `list_board_sessions` and `get_board_snapshot` and carry the same `sessionId` and a fresh `activeBoardId` as `expectedBoardId`. Native cards: `execute_board_action` (`listNativeModels`, `setModel`), `prepare_board_generation` with ordered board items or owned outputs, then one `generate_on_board` within the authorized budget. Board media tools: `list_media_tools` → `start_media_tool` → `get_media_tool_run`. Put headless results on a board with `add_media_to_board`.

Keep mandatory safety settings and the live limits of each model. Prices, timings, endpoints and "free retry" claims in the sources are historical, not FlashBoards contracts. If a step this guide needs is not available or is refused (a tool error, `audio_not_configured`, a missing model or input), keep the finished assets, tell the person which step is blocked and why, and ask how to go on. A single generation that ends `failed` is not a blocked step: submit it once more with a new `generationAttemptId` (reworded if it may have hit the content checker), and stop to ask only if it fails again. A failed attempt is not always refunded, so the retry may be paid again and `maxCostUsd` caps each request on its own: count both against the budget the person approved. Never swap in another route on your own: no image model redrawing a layout or a frame, no `describe_media` in place of the frames it should check, no clip generated only to take its sound, no picture drawn where the guide takes a film frame.

## Source and related guides

- [Original Learn guide](https://flashboards-h01.vercel.app/learn/formats-and-exhibition/ai-talking-avatar/skills/avatar-podcast.md)
- Updated from the owner's skill sources of 2026-10-11.

Read: `avatar`, `avatar-long-speech`, `reels-voice`, `youtube`. Source experiments and demo materials are historical; use the person's own approved media.
