Podcast Ad logo

Podcast Ad

Organization
palmier-io
podcast-ad

Builds converting podcast-style ads in Palmier Pro as an overheard two-person conversation — sceptic arc, believer mechanism, opposed reverse-shot stills, locked voice + eyeline, exact off-screen backchannels, Flux-first beats, assemble + silence trim. Use for podcast ads, UGC conversation ads, sceptic-to-believer product spots — not for single-hook talking-head ads (use ugc-video-prompts).

Overview

Publisherpalmier-io
Repositorypalmier-skills
Skill namepodcast-ad
Stars
82
Forks
10
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by palmier-io on GitHub. Read the source before you install it.

Installation

Install the Podcast Ad AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/palmier-io/palmier-skills/tree/main/skills/podcast-ad
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/palmier-io/palmier-skills.git /tmp/palmier-skills
mkdir -p .claude/skills
cp -r /tmp/palmier-skills/skills/podcast-ad .claude/skills/podcast-ad
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Podcast Ad in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Podcast Ad on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Podcast Ad is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Podcast Ad

The ad is two people, one room, one conversation. Viewer overhears; nobody pitches the lens. Script is ~80% of the result.

Palmier does not generate a full multi-speaker room in one pass — segment the exchange into model-length beats, lock room/identity with matching reverse-shot stills, then assemble on the timeline.

Pair with video-prompting. For faces that must match brand talent across variants, run character-pipeline first. Finish captions/layout with ugc-editing patterns when helpful.

Why this format works

  • She never addresses camera — kills “ad argument in the head”
  • His doubts are the buyer’s doubts — conversion when he clicks
  • Pattern-matches podcast clips in the feed, not classic ad shapes

Break overheard staging (lens eye contact, hard CTA, cheerleading sceptic) and you lose the format.

Step 1 — Write the exchange (sceptic first)

RoleJob
BelieverTransformation. Casual certainty. Talks to a mate, not a customer.
ScepticDoubt → convert on camera. Write him first — his arc is the ad.

Sceptic’s four beats (required)

  1. Open doubt — names the quiet part out loud
  2. Honest question — hands her the floor without agreeing
  3. The click — mechanism connects to his life (not a parrot of her claim)
  4. Concession — stops arguing; does not gush

Believer craft: human comparison over feature list; disarm the scary version, then educate with a specific mechanism; callback close; no hard CTA inside the dialogue.

Map the script onto generation beats that fit list_models durations (often 4–10s). Prefer tight durations (often 5–6s). One conversational turn (or half-turn) per clip is safer than cramming. Flux 3 minimum is 5s.

Backchannels (reactive ad-libs)

Agent judgment (this skill): on longer believer turns, decide whether 1–2 quiet off-screen listener murmurs earn a place — sparse, woven through her speech (not parked only at the end), not after every clause, not a reverse-shot cutaway. Skip short callbacks and all sceptic-speaking beats.

Model prompt: never paste that judgment as a menu (uh-huh / oh? / mm). After you decide, write exact off-screen lines and where they sit relative to her words.

Agent decidesPrompt must say
Whether this beat gets a backchannelExact phrase(s): "Oh?"
Which 1–2 murmurs + placementAfter which of her clauses
Same sceptic Voice lock, quieter than herVerbatim Voice + “quieter than her, audio only, not on camera”

Example — agent chose two spots; prompt gets:

[DIALOGUE]
Believer says exactly: "Those water-retention drops changed everything —
one salty meal prep day and I'd look puffy. Now I just don't."
Voice: <believer Voice lock verbatim>

[BACKCHANNEL]
Off-screen male partner only (not on camera). Same sceptic Voice lock, quieter than her.
After she says "changed everything" he says exactly: "Oh?"
After she says "I'd look puffy" he says exactly: "Really?"
No other reactions. Do not invent a second person in frame.

Step 2 — Two matching start frames

list_models({ type: "image" }) → generate_image for each speaker.

Still models (validated)

PreferModel idNotes
1stgrok-imagine (Grok Imagine 2)Strong photoreal + natural podcast staging; no referenceMediaRefs in Palmier yet
1st (tie)gpt-image-2 (GPT Image 2)Use for reverse still with refs; resolution: "1024x1536" for 9:16
1st (tie)seedream-v5-pro (Seedream 5.0 Pro)Refs OK; aspect often portrait_16_9

Do not default to Nano Banana / Krea / Ideogram / Recraft / MAI / Reve for podcast stills unless asked or the preferred trio fails.

These stills are shot / reverse-shot anchors: same room + camera grammar, opposed eyelines.

Hard rules

  1. One person only. No foreground shoulder, OTS, interviewer blur, or second body.
  2. Same camera grammar on both. Height, distance (chest-up), table edge, wall, lights — copy-paste. Only wardrobe + face + gesture + eyeline side change.
  3. Same room word-for-word.
  4. Flip the reverse shot. Believer frame-RIGHT ↔ sceptic frame-LEFT (or vice versa). Mirror mic/boom side with the subject.
  5. Generate A, then B with referenceMediaRefs: [stillA] (use GPT Image 2 / Seedream if A was Grok): preserve room + camera height/distance — replace subject and flip eyeline.

Prompt pattern

Podcast studio mid-shot, chest-up, eye-level camera, locked framing.
Single subject only — no other people, no foreground shoulder, no over-the-shoulder.
Wooden table edge low in frame, broadcast mic on boom in shot.
Background: <identical room description>.
Warm practicals, normal exposure, real room — not a film set.
Subject mid-gesture, mouth slightly open — not into lens.

Then only subject + eyeline differ:

Believer: <wardrobe/face>. Eyeline: looking frame-RIGHT toward off-screen partner.
Sceptic: <wardrobe/face>. Eyeline: looking frame-LEFT (OPPOSITE of believer).
Preserve room and camera height/distance from reference — flip orientation only.

Negatives: no second person, no OTS, no interviewer, no looking into lens, no same-side eyeline as the other speaker.

Frame checklist

  • One person only; no OTS / shoulder
  • Matching height, distance, room
  • Mic in front of speaker
  • Off-axis eyeline; opposed across the pair
  • Mid-gesture / mouth slightly open

folder: "PodcastAd/Stills"

Step 3 — Generate conversation beats

  1. get_timeline — set delivery aspect (often 9:16) via set_project_settings before placing if needed.
  2. list_models({ type: "video" }).
  3. Prefer Flux 3 draft: true for dialogue naturalism (validated bakeoff). Also fine: seedance-2-mini, MiniMax H3 (hailuo-03). Lip-sync misses: Kling V3/O3 or Grok.
  4. Final: Flux draft → generate_video({ enhanceDraftMediaRef }) only (FLUX Enhance; not upscale_media; needs canEnhanceDraft). Else re-gen on seedance-2 / H3.
  5. Propose beats; wait for confirmation.
  6. startFrameMediaRef = that speaker’s still. Seedance: framesAndReferencesExclusive — don’t combine first frame with reference image pools.

Voice lock (required)

Before any generate_video, write two fixed Voice lines with explicit accent + tone + pitch + pace. Paste verbatim every beat for that speaker. Name the accent the user wants (e.g. Australian, US California, UK).

Believer Voice: <accent>, <pitch>, <tone>, <pace>, no dead air
Sceptic Voice: <accent>, <pitch>, <tone>, <pace>, no dead air

Example (only if the brief asks Aussie):

Believer Voice: Australian woman, natural Aussie accent not exaggerated,
warm mid pitch, lightly upbeat certainty, brisk conversational pace, no dead air
Sceptic Voice: Australian man, natural Aussie accent not exaggerated,
medium-low pitch, dry sceptical tone, measured but snappy, no dead air

Never rewrite mid-ad. Optional: beat-1 audio as @Audio1 on later Seedance/H3 calls.

Prompt extras every beat

[SCENE]
Animate from the start frame. Overheard — talks to off-screen partner, not the lens.
Locked camera; ambient room only.

[GEOGRAPHY]
Match the start frame: one subject, mic in shot. Hold the SAME off-axis eyeline
side as the still for the entire clip. Natural micro head turns only within that
side — never swing to camera, never flip to the opposite side.

[DIALOGUE]
<Speaker> says exactly: "<line>"
Voice: <paste that speaker's locked Voice line verbatim>

[BACKCHANNEL]   // believer long turns only, after agent decided exact lines
...exact off-screen lines + placements...

[ACTING]
Talk to the off-screen partner the whole time. Fill the duration with speech —
minimal trailing silence. No cheerleading. No hard sell to lens.

[CAMERA]
Hold the start-frame angle. No orbit, no new coverage.

[NEGATIVES]
No looking down the lens, no eye contact with camera, no turning to face camera,
no flipping eyeline, no second person, no OTS, no room/light change, no CTA
lower-third, no identity swap, no subtitles/watermark, no long pauses.

Regenerate that beat only on failure. folder: "PodcastAd/Beats"

Step 4 — Assemble + finish

add_clips({
  entries: [
    { mediaRef: BEAT1, startFrame: 0 },
    { mediaRef: BEAT2, startFrame: END1 }
  ]
})
  • remove_silence (tight: minimumPauseSeconds: 0.25, light speechPaddingSeconds) after assembly
  • Product / before-after over mechanism beat: higher video track or apply_layout PIP
  • Captions: add_captions — clean default unless asked
  • Do not over-polish into “ad grade”

Turning one into thirty

LeverChange
Objection swapOnly his lines / his beats
Product swapKeep four-beat arc; rewrite mechanism
Clip the clickHis click beat as a short with a new hook ahead

Anti-patterns

  • Writing believer first; sceptic has nothing to do
  • Sceptic ends as brand ambassador
  • Start frames or video beats staring at / turning to camera
  • Same-side eyelines on both speakers
  • Vague Voice lines (no accent + tone) — voices drift
  • Vague backchannel menus in the model prompt (agent must pick exact lines)
  • Reverse-shot cutaways for uh-huh / oh? (bake off-screen under her instead)
  • OTS / foreground shoulder / second person in a “single” still
  • Over-long durations leaving dead air
  • Vague mechanism (“it just works”); hard CTA in dialogue
  • One overloaded clip for the whole ad; skipping timeline assembly

Frequently asked questions

What does the Podcast Ad AI skill do?

Builds converting podcast-style ads in Palmier Pro as an overheard two-person conversation — sceptic arc, believer mechanism, opposed reverse-shot stills, locked voice + eyeline, exact off-screen backchannels, Flux-first beats, assemble + silence trim. Use for podcast ads, UGC conversation ads, sceptic-to-believer product spots — not for single-hook talking-head ads (use ugc-video-prompts).

Why use Podcast Ad on TypingMind?

Because you install it once and use it with any model. Podcast Ad is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Podcast Ad in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/palmier-io/palmier-skills/tree/main/skills/podcast-ad. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Podcast Ad?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Podcast Ad?

As many as you like. As long as a model supports skills, you can use Podcast Ad with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Podcast Ad AI skill free?

Yes. It is published on GitHub by palmier-io under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇