Geek-skills-podcast-generator
This skill generates professional AI-powered podcasts from text input using Volcano Engine's Podcast AI Model. It creates dual-speaker conversational audio content in Chinese, supporting customizable voice options, audio formats (mp3, ogg_opus, pcm, aac), and speech rate adjustments. Use when transforming written content into engaging podcast audio or creating multi-speaker conversational content with natural flow.
git clone --depth 1 https://github.com/staruhub/ClaudeSkills /tmp/geek-skills-podcast-generator && cp -r /tmp/geek-skills-podcast-generator/skills/Geek-skills-podcast-generator ~/.claude/skills/geek-skills-podcast-generatorSKILL.md
# Podcast Generator
## Overview
Generate professional AI-powered podcasts using Volcano Engine's Podcast AI Model. This skill transforms text input into engaging dual-speaker podcast audio with natural conversation flow, supporting multiple audio formats and voice customization.
## Quick Start
To generate a podcast:
1. Ensure Volcano Engine credentials are available (APP_ID and ACCESS_KEY)
2. Prepare the podcast topic/content text (up to 25,000 characters)
3. Run the generation script with required parameters
4. Receive the output audio file in your preferred format
## Core Workflow
### Step 1: Prepare Input
**Required information:**
- Podcast topic or content text (Chinese, up to 25k characters)
- Volcano Engine APP ID
- Volcano Engine Access Key
**Optional customization:**
- Audio format (mp3, ogg_opus, pcm, aac)
- Sample rate (default: 24000 Hz)
- Speech rate (-50 to 100, where 100 = 2.0x speed)
- Speaker voices (default: male + female duo)
- Opening music (default: disabled)
### Step 2: Generate Podcast
Run the generation script:
```bash
python scripts/generate_podcast.py \
--text "Your podcast topic or content" \
--output "/path/to/output.mp3" \
--app-id "YOUR_APP_ID" \
--access-key "YOUR_ACCESS_KEY" \
--format mp3 \
--sample-rate 24000 \
--speech-rate 0
```
**Alternative: Use as Python module**
```python
import asyncio
from scripts.generate_podcast import PodcastGenerator
async def create_podcast():
generator = PodcastGenerator(
app_id="YOUR_APP_ID",
access_key="YOUR_ACCESS_KEY"
)
result = await generator.generate_podcast(
input_text="分析下当前的大模型发展",
output_path="podcast.mp3",
audio_format="mp3",
sample_rate=24000,
speech_rate=0,
use_head_music=False
)
if result['success']:
print(f"✅ Podcast generated: {result['output_path']}")
else:
print(f"❌ Failed: {result['error']}")
asyncio.run(create_podcast())
```
### Step 3: Handle Output
The script will:
- Stream audio data in real-time
- Display progress for each speaking round
- Save the complete audio file to the specified path
- Return generation statistics (file size, round count, etc.)
## Advanced Features
### Resume from Interruption
If generation is interrupted, use the resume capability:
```python
result = await generator.generate_podcast(
input_text="Your topic",
output_path="podcast.mp3",
retry_info={
"retry_task_id": "previous_task_id",
"last_finished_round_id": 5
}
)
```
The system will continue from the last completed round instead of starting over.
### Custom Speaker Configuration
Specify different speaker voices:
```python
result = await generator.generate_podcast(
input_text="Your topic",
output_path="podcast.mp3",
speakers=[
"zh_male_dayixiansheng_v2_saturn_bigtts",
"zh_female_mizaitongxue_v2_saturn_bigtts"
]
)
```
### Audio Format Options
Supported formats and use cases:
- **mp3**: Best for general distribution (compressed, widely supported)
- **ogg_opus**: High quality with good compression
- **pcm**: Uncompressed raw audio (largest file size, highest quality)
- **aac**: Modern compressed format with good quality
### Speech Rate Adjustment
Control speaking speed:
- `speech_rate=0`: Normal speed (1.0x)
- `speech_rate=100`: 2x speed (fast)
- `speech_rate=-50`: 0.5x speed (slow)
## Common Usage Patterns
### Pattern 1: Quick Blog Post to Podcast
```python
blog_text = """
[Your blog post content here - can be long form]
"""
result = await generator.generate_podcast(
input_text=blog_text,
output_path="blog_podcast.mp3"
)
```
### Pattern 2: Research Paper Summary
```python
paper_summary = "Summarize the key findings of the latest AI research..."
result = await generator.generate_podcast(
input_text=paper_summary,
output_path="research_podcast.mp3",
use_head_music=True # Add opening music for professional touch
)
```
### Pattern 3: Educational Content
```python
lesson_topic = "Explain quantum computing concepts for beginners"
result = await generator.generate_podcast(
input_text=lesson_topic,
output_path="lesson.mp3",
speech_rate=-20 # Slightly slower for educational content
)
```
## Error Handling
Common issues and solutions:
**Connection Errors:**
- Verify APP_ID and ACCESS_KEY are correct
- Check network connectivity
- Ensure firewall allows WebSocket connections
**Text Too Long:**
- The model truncates at 25,000 characters
- Split long content into multiple podcasts
**Audio Not Generated:**
- Check output path is writable
- Verify sufficient disk space
- Review error messages for specific issues
**Incomplete Generation:**
- Use retry_info to resume from last completed round
- Check logs for the task_id and last_finished_round_id
## Resource Usage
### scripts/generate_podcast.py
Complete WebSocket client implementation for Volcano Engine's Podcast API:
- Handles binary protocol communication
- Manages streaming audio reception
- Implements automatic retry logic
- Provides both CLI and programmatic interfaces
**Key features:**
- Async/await pattern for efficient I/O
- Progress tracking with emoji indicators
- Comprehensive error handling
- Flexible parameter configuration
### references/api_reference.md
Detailed API documentation including:
- Complete parameter specifications
- WebSocket protocol details
- Event type reference
- Error code explanations
Consult this file for:
- Advanced API usage
- Protocol-level debugging
- Custom implementation needs
## Requirements
**Python dependencies:**
```bash
pip install websockets
```
**Credentials:**
- Volcano Engine APP ID (obtain from console: https://console.volcengine.com/speech/service/10028)
- Volcano Engine Access Key
## Best Practices
1. **Input Text Quality**: Use clear, well-structured Chinese text for best results
2. **Length Optimization**: Aim for 500-3000 characters for optimal podcast lengA股分析研究助手,提供行情数据获取与技术面/基本面分析框架(仅供研究参考,不构成投资建议)。适用于:(1) 获取A股行情和历史数据,(2) 技术面分析(K线形态、MACD、KDJ、RSI、布林带等),(3) 基本面分析(财务指标、估值分析),(4) 板块热点追踪,(5) 选股策略筛选与量化因子分析,(6) 生成股市分析报告。当用户询问"帮我分析股票"、"今日选股"、"A股行情分析"、"技术分析"、"量化选股"时触发。不用于:预测明日涨跌或给出确定性买卖指令、代客决策、港股美股(数据源不同)、加密货币。
AI咨询/销售的对话策略助手。当用户需要准备AI方案沟通、跟业务部门聊AI落地、写AI提案、应对客户异议、做AI培训破冰时使用。触发场景:"怎么跟老板聊AI"、"客户说AI不靠谱"、"准备一个AI方案汇报"、"帮我想想怎么推AI"、"业务部门不配合"、"AI项目怎么卖"、"demo之后怎么跟进"。也适用于AI咨询师、技术合伙人、CTO做内部AI推广。
Windows C盘清理和磁盘空间管理。当用户说C盘满了、磁盘空间不足、清理临时文件/缓存/回收站/系统日志、查找大文件、分析磁盘占用时使用。仅适用于 Windows 环境。不用于:macOS/Linux 磁盘清理、卸载软件(引导用户走系统卸载)、清理用户个人文件(只报告位置,删除决定权在用户)。
PPT 生产 Agent:理解场景 → 推荐风格 → 先出大纲 → 定义页面 → 双通路交付(PPT 内容稿 / 逐页视觉图 / 信息图组图)。当用户要做汇报、路演、培训课件、提案、咨询报告的演示文稿,或要把大纲/文章做成 slides、deck、PPT、信息图、小红书图文、可视化传播图时使用。支持指定风格或从风格库推荐,支持 image 模型逐页出视觉稿。前身为 notion-infographic(v2)并吸收 ppt-designer 的设计原则。不用于:pptx 文件的纯技术操作(拆分/合并/提取,用宿主 pptx skill)、演讲稿或文章本体的写作(用 wechat-article-writer)、需要先做研究的内容调研(先走 deep-research 再回来)、单张海报或 logo 设计。
>
资深高考命题专家助手,提供专业的命题指导和评审服务。适用于创作高考试题、评审试题质量、分析试卷结构、了解命题趋势等场景。结合文档工具提取解压文件,使用网络搜索了解当年最新命题趋势,使用分析工具评估题目质量和试卷结构。涵盖"一核四层四翼"评价体系、题型规范、评分标准、命题流程等多个维度。不用于:大学/考研/中考命题(体系不同,仅可借鉴)、日常作业题编写、直接替考生解题。
A股专业分析师助手,提供每日股价分析、选股策略和投资建议。适用于:(1) 获取A股实时行情和历史数据,(2) 技术面分析(K线形态、MACD、KDJ、RSI、布林带等),(3) 基本面分析(财务指标、估值分析),(4) 板块热点追踪,(5) 选股策略筛选,(6) 量化因子分析,(7) 生成每日股市分析报告。当用户询问"帮我分析股票"、"今日选股"、"A股行情分析"、"技术分析"、"基本面分析"、"量化选股"等相关问题时触发。
AI咨询/销售的对话策略助手。当用户需要准备AI方案沟通、跟业务部门聊AI落地、写AI提案、应对客户异议、做AI培训破冰时使用。触发场景:"怎么跟老板聊AI"、"客户说AI不靠谱"、"准备一个AI方案汇报"、"帮我想想怎么推AI"、"业务部门不配合"、"AI项目怎么卖"、"demo之后怎么跟进"。也适用于AI咨询师、技术合伙人、CTO做内部AI推广。