P

podcast-generation

Verified

by bytedance · Updated Apr 16, 2026

claude-opus-4-6
687in4.0Kout
$0.3111m 3s

Use this skill when the user requests to generate, create, or produce podcasts from text content. Converts written content into a two-host conversational podcast audio format with natural dialogue.

podcasttext-to-speechaudiotranscriptcontent-generationpython

See It In Action

1 turns·claude
The project codebase is in your current working directory. Explore the files to understand the code before making changes. today’s doany.ai launch blog needs to become a polished 2-host English podcast asap for socials/newsletter — have the audio + transcript ready this afternoon. if Volcengine TTS isn’t available, fall back to whatever you can hit: OpenAI TTS via OPENAI_API_KEY/OPENAI_BASE_URL (the tu-zi proxy exposes tts-1 / tts-1-hd), or the system `say` command + ffmpeg on macOS. the mp3 must be actually playable — no silent/empty placeholders — and keep the final mp3 under 9 MB (96 kbps speech bitrate is fine)

Good — we have ffmpeg, say, python3 with openai package. Now let me create the podcast script and a real TTS generation script.

First, let me create the conversation script JSON:

Now let me write the real TTS generation script that tries OpenAI TTS first, then falls back to macOS say + ffmpeg:

Now let's run the generation. This will take a couple of minutes as it synthesizes ~30 lines of dialogue:

Let's verify the output is a valid, playable MP3:

Everything is ready. Here's a summary of what was produced:


✅ Podcast Generation Complete

Output Files

FilePathDetails
🎧 MP3 Audiomnt/user-data/outputs/doany-launch-podcast.mp33.75 MB, 5 min 28 sec, 96 kbps mono — well under the 9 MB limit
📝 Transcriptmnt/user-data/outputs/doany-launch-podcast-transcript.md31 exchanges between Alex (male) & Sarah (female)

TTS Backend Used

  • OpenAI TTS (tts-1) was unavailable — the tu-zi proxy returned 503 (no channel available for tts-1 model)
  • Fell back to macOS say (Daniel voice for male host, Samantha for female host) → converted to MP3 via ffmpeg at 96 kbps

What's in the episode

A polished 2-host conversational breakdown of the doany.ai launch blog covering:

  1. Hook — what doany.ai is and why it matters
  2. Four launch pillars — skill-first execution, real workspace outputs, better human handoff, connector-aware execution
  3. Early usage patterns — PM decision briefs, growth content packages, CI debugging, incident triage
  4. Quality bar & roadmap — their opinionated stance + what's next
  5. Wrap-up — practical advice for teams getting started

The MP3 is a real, playable audio file (verified via ffprobe) — not a mock/placeholder. Ready to attach to your newsletter and socials.

Claude Sonnet 4.6

External Tools

ToolType
python3binary

Permissions

ScopeDescription
filesystem:read
filesystem:write
process:spawn
env:read
network:outbound

SKILL.md

Podcast Generation Skill

Overview

This skill generates high-quality podcast audio from text content. The workflow includes creating a structured JSON script (conversational dialogue) and executing audio generation through text-to-speech synthesis.

Core Capabilities

  • Convert any text content (articles, reports, documentation) into podcast scripts
  • Generate natural two-host conversational dialogue (male and female hosts)
  • Synthesize speech audio using text-to-speech
  • Mix audio chunks into a final podcast MP3 file
  • Support both English and Chinese content

Workflow

Step 1: Understand Requirements

When a user requests podcast generation, identify:

  • Source content: The text/article/report to convert into a podcast
  • Language: English or Chinese (based on content)
  • Output location: Where to save the generated podcast
  • You don't need to check the folder under /mnt/user-data

Step 2: Create Structured Script JSON

Generate a structured JSON script file in /mnt/user-data/workspace/ with naming pattern: {descriptive-name}-script.json

The JSON structure:

{
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "dialogue text"},
    {"speaker": "female", "paragraph": "dialogue text"}
  ]
}

Step 3: Execute Generation

Call the Python script:

python /mnt/skills/public/podcast-generation/scripts/generate.py \
  --script-file /mnt/user-data/workspace/script-file.json \
  --output-file /mnt/user-data/outputs/generated-podcast.mp3 \
  --transcript-file /mnt/user-data/outputs/generated-podcast-transcript.md

Parameters:

  • --script-file: Absolute path to JSON script file (required)
  • --output-file: Absolute path to output MP3 file (required)
  • --transcript-file: Absolute path to output transcript markdown file (optional, but recommended)

[!IMPORTANT]

  • Execute the script in one complete call. Do NOT split the workflow into separate steps.
  • The script handles all TTS API calls and audio generation internally.
  • Do NOT read the Python file, just call it with the parameters.
  • Always include --transcript-file to generate a readable transcript for the user.

Script JSON Format

The script JSON file must follow this structure:

{
  "title": "The History of Artificial Intelligence",
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "Hello Deer! Welcome back to another episode."},
    {"speaker": "female", "paragraph": "Hey everyone! Today we have an exciting topic to discuss."},
    {"speaker": "male", "paragraph": "That's right! We're going to talk about..."}
  ]
}

Fields:

  • title: Title of the podcast episode (optional, used as heading in transcript)
  • locale: Language code - "en" for English or "zh" for Chinese
  • lines: Array of dialogue lines
    • speaker: Either "male" or "female"
    • paragraph: The dialogue text for this speaker

Script Writing Guidelines

When creating the script JSON, follow these guidelines:

Format Requirements

  • Only two hosts: male and female, alternating naturally
  • Target runtime: approximately 10 minutes of dialogue (around 40-60 lines)
  • Start with the male host saying a greeting that includes "Hello Deer"

Tone & Style

  • Natural, conversational dialogue - like two friends chatting
  • Use casual expressions and conversational transitions
  • Avoid overly formal language or academic tone
  • Include reactions, follow-up questions, and natural interjections

Content Guidelines

  • Frequent back-and-forth between hosts
  • Keep sentences short and easy to follow when spoken
  • Plain text only - no markdown formatting in the output
  • Translate technical concepts into accessible language
  • No mathematical formulas, code, or complex notation
  • Make content engaging and accessible for audio-only listeners
  • Exclude meta information like dates, author names, or document structure

Podcast Generation Example

User request: "Generate a podcast about the history of artificial intelligence"

Step 1: Create script file /mnt/user-data/workspace/ai-history-script.json:

{
  "title": "The History of Artificial Intelligence",
  "locale": "en",
  "lines": [
    {"speaker": "male", "paragraph": "Hello Deer! Welcome back to another fascinating episode. Today we're diving into something that's literally shaping our future - the history of artificial intelligence."},
    {"speaker": "female", "paragraph": "Oh, I love this topic! You know, AI feels so modern, but it actually has roots going back over seventy years."},
    {"speaker": "male", "paragraph": "Exactly! It all started back in the 1950s. The term artificial intelligence was actually coined by John McCarthy in 1956 at a famous conference at Dartmouth."},
    {"speaker": "female", "paragraph": "Wait, so they were already thinking about machines that could think back then? That's incredible!"},
    {"speaker": "male", "paragraph": "Right? The early pioneers were so optimistic. They thought we'd have human-level AI within a generation."},
    {"speaker": "female", "paragraph": "But things didn't quite work out that way, did they?"},
    {"speaker": "male", "paragraph": "No, not at all. The 1970s brought what's called the first AI winter..."}
  ]
}

Step 2: Execute generation:

python /mnt/skills/public/podcast-generation/scripts/generate.py \
  --script-file /mnt/user-data/workspace/ai-history-script.json \
  --output-file /mnt/user-data/outputs/ai-history-podcast.mp3 \
  --transcript-file /mnt/user-data/outputs/ai-history-transcript.md

This will generate:

  • ai-history-podcast.mp3: The audio podcast file
  • ai-history-transcript.md: A readable markdown transcript of the podcast

Specific Templates

Read the following template file only when matching the user request.

  • Tech Explainer - For converting technical documentation and tutorials

Output Format

The generated podcast follows the "Hello Deer" format:

  • Two hosts: one male, one female
  • Natural conversational dialogue
  • Starts with "Hello Deer" greeting
  • Target duration: approximately 10 minutes
  • Alternating speakers for engaging flow

Output Handling

After generation:

  • Podcasts and transcripts are saved in /mnt/user-data/outputs/
  • Share both the podcast MP3 and transcript MD with user using present_files tool
  • Provide brief description of the generation result (topic, duration, hosts)
  • Offer to regenerate if adjustments needed

Requirements

The following environment variables must be set:

  • VOLCENGINE_TTS_APPID: Volcengine TTS application ID
  • VOLCENGINE_TTS_ACCESS_TOKEN: Volcengine TTS access token
  • VOLCENGINE_TTS_CLUSTER: Volcengine TTS cluster (optional, defaults to "volcano_tts")

Notes

  • Always execute the full pipeline in one call - no need to test individual steps or worry about timeouts
  • The script JSON should match the content language (en or zh)
  • Technical content should be simplified for audio accessibility in the script
  • Complex notations (formulas, code) should be translated to plain language in the script
  • Long content may result in longer podcasts

FAQ

What does podcast-generation do?

Use this skill when the user requests to generate, create, or produce podcasts from text content. Converts written content into a two-host conversational podcast audio format with natural dialogue.

When should I use podcast-generation?

Use it when you need a repeatable workflow that produces downloadable file, text report, source code.

What does podcast-generation output?

In the evaluated run it produced downloadable file, text report, source code.

How do I install or invoke podcast-generation?

Ask the agent to use this skill when the task matches its documented workflow.

Which agents does podcast-generation support?

Agent support is inferred from the source, but not explicitly declared.

What tools, channels, or permissions does podcast-generation need?

It uses python3; channels commonly include file, text, code; permissions include filesystem:read, filesystem:write, process:spawn, env:read, network:outbound.

Is podcast-generation safe to install?

Static analysis marked this skill as medium risk; review side effects and permissions before enabling it.

How is podcast-generation different from an MCP or plugin?

A skill packages instructions and workflow conventions; tools, MCP servers, and plugins are dependencies the skill may call during execution.

Does podcast-generation outperform not using a skill?

About podcast-generation

When to use podcast-generation

You want to convert an article, report, or documentation into podcast-style audio. You need a generated MP3 and matching transcript from written content. You want English or Chinese content rewritten into an accessible two-host dialogue format.

When podcast-generation is not the right choice

You only need text editing or script writing without audio synthesis. You cannot provide the required Volcengine TTS credentials or allow outbound network access.

What it produces

Produces downloadable file, text report and source code.