podcast-generation
bytedance/deer-flow
Convert text content into engaging two-host podcast audio with natural dialogue.
What is podcast-generation?
This skill generates podcast audio from any text content by creating a conversational script between two hosts and synthesizing it into an MP3 file. Use it when you need to transform articles, reports, or documentation into audio format with natural dialogue flow.
- Convert text content into structured two-host conversational podcast scripts
- Generate natural speech audio using text-to-speech synthesis for male and female voices
- Mix audio into final podcast MP3 files
- Support both English and Chinese content
- Create readable markdown transcripts alongside podcast audio
- Handle technical content by translating it into accessible spoken language
How to install podcast-generation
npx skills add https://github.com/bytedance/deer-flow --skill podcast-generation- Environment variables configured: VOLCENGINE_TTS_APPID and VOLCENGINE_TTS_ACCESS_TOKEN (or MINIMAX_API_KEY)
- Text content to convert into podcast format
- Write access to /mnt/user-data/workspace/ and /mnt/user-data/outputs/ directories
How to use podcast-generation
- 1.Provide the text content you want converted into a podcast
- 2.The skill creates a structured JSON script file with alternating male and female dialogue in /mnt/user-data/workspace/
- 3.The script is executed through the generation pipeline which synthesizes speech and mixes audio
- 4.Generated podcast MP3 and transcript markdown files are saved to /mnt/user-data/outputs/
- 5.Review the output files and request regeneration if adjustments are needed
Use cases
- Transform technical documentation or tutorials into engaging podcast episodes
- Convert blog articles or reports into audio format for accessibility
- Create educational content from written material in podcast format
- Generate marketing or explainer content as audio podcasts
- Produce multilingual podcasts from existing text content
- Content creators and educators
- Technical writers converting documentation to audio
- Marketing teams creating podcast content
- Accessibility-focused organizations
- Anyone wanting to repurpose written content as audio
podcast-generation FAQ
English (en) and Chinese (zh). The script JSON locale field determines the language for text-to-speech synthesis.
Target approximately 10 minutes of dialogue, which typically requires 40-60 lines of alternating dialogue between the two hosts.
The skill uses two fixed hosts (male and female) with voices auto-selected by the TTS provider. Voice selection is determined by environment variables like MINIMAX_TTS_VOICE_MALE.
The skill translates technical concepts into accessible, conversational language suitable for audio-only listeners. Formulas, code, and complex notation should be converted to plain language in the script.
Yes, the skill generates both the podcast MP3 file and a readable markdown transcript file by default.
Full instructions (SKILL.md)
Source of truth, from bytedance/deer-flow.
name: podcast-generation description: 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.
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-fileto generate a readable transcript for the user.- The TTS provider and its concurrency are selected automatically from environment variables — you do not choose or tune them.
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 Chineselines: Array of dialogue linesspeaker: 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 fileai-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_filestool - Provide brief description of the generation result (topic, duration, hosts)
- Offer to regenerate if adjustments needed
Requirements
The following environment variables must be set:
- For Volcengine:
VOLCENGINE_TTS_APPIDandVOLCENGINE_TTS_ACCESS_TOKEN - For MiniMax:
MINIMAX_API_KEY 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
Providers (Volcengine / MiniMax)
Auto-selected by environment variables:
VOLCENGINE_TTS_APPID+VOLCENGINE_TTS_ACCESS_TOKENset → Volcengine TTS (default).- Only
MINIMAX_API_KEYset → MiniMax TTS (/v1/t2a_v2). - Force with
PODCAST_GENERATION_PROVIDER=volcengine|minimax.
MiniMax overrides: MINIMAX_API_HOST (default https://api.minimaxi.com),
MINIMAX_TTS_MODEL (default speech-2.6-hd), MINIMAX_TTS_VOICE_MALE
(default male-qn-qingse), MINIMAX_TTS_VOICE_FEMALE (default female-tianmei).
Concurrency is owned by each provider internally — MiniMax runs single-threaded to reduce rate-limit failures, Volcengine uses 4 workers. There is no caller-facing concurrency knob; transient rate limits are handled by automatic retry with backoff.
Related skills
More from bytedance/deer-flow and the wider catalog.

ppt-generation
Generate professional PowerPoint presentations with AI-generated images and consistent visual styling.

surprise-me
Dynamically combine other skills to create unexpected, delightful experiences when users ask for surprises.

systematic-literature-review
Use this skill when the user wants a systematic literature review, survey, or synthesis across multiple academic papers on a topic. Also covers annotated bibliographies and cross-paper comparisons. Searches arXiv and outputs reports in APA, IEEE, or BibTeX format. Not for single-paper tasks — use academic-paper-review for reviewing one paper.

vercel-deploy
Deploy applications to Vercel instantly with no authentication required.

video-generation
Generate high-quality videos from structured prompts with optional reference images.

extension-authorization
Role-based access control system with Internet Identity authentication for Caffeine AI apps.