/install dz-podcast
Dual-Host Daily Podcast Generator
Automated daily podcast with two AI hosts. Generates text brief + dual-voice audio, publishes to RSS, delivers via messaging.
Concept
- Format: Two hosts — one explains/analyzes, the other asks and transitions
- Duration: Configurable, default ~7 minutes
- Style: Casual, opinionated, conversational — like two friends chatting about the news
- Topics: Customizable (default: AI/Tech, Stocks, Macro, Crypto)
Architecture
Fetch News → Text Brief → Dual-Voice Script → TTS Audio → S3 Upload → RSS Update → Deliver
Configuration
Set these in your environment:
| Variable | Description |
|---|---|
S3_BUCKET |
S3 bucket name |
PODCAST_DOMAIN |
Custom domain or S3 URL |
FISH_API_KEY |
Fish Audio API key (https://fish.audio) |
FISH_VOICE_A |
Fish Audio voice ID for Host A |
FISH_VOICE_B |
Fish Audio voice ID for Host B |
Step 1: Fetch News
Use web_fetch to scrape sources in parallel. Default sources:
https://news.ycombinator.com/— Techhttps://www.coindesk.com/— Cryptohttps://techcrunch.com/category/artificial-intelligence/— AIhttps://finance.yahoo.com/— Markets
Customize sources to match your podcast topic.
Step 2: Generate Text Brief
Organize news into sections with emoji headers:
☀️ Daily Brief | Mar 3, 2026
━━━━━━━━━━━━━━━━━━
🤖 Tech / AI
① Headline
→ One-line take
━━━━━━━━━━━━━━━━━━
📈 Markets
① Headline
→ One-line take
━━━━━━━━━━━━━━━━━━
🎯 Key Takeaway
Summary paragraph
Step 3: Generate Dual-Voice Script
Rewrite the brief as a dialogue. Prefix each line with speaker tag:
HostA: Welcome to today's episode...
HostB: Some big stories today...
HostA: Right, let's start with...
Guidelines:
- Host A: Explains and analyzes, knowledgeable but casual
- Host B: Asks, transitions, reacts
- Substantial turns, not one-liners
- Include analysis and discussion, not just headlines
- End with a lighter topic + sign-off
Step 4: Generate Audio
Fish Audio (recommended — natural, multi-voice):
python3 scripts/fish_dual_tts.py \x3Cscript.txt> \x3Coutput.mp3>
Parses speaker tags, sends each segment to Fish Audio, concatenates into final MP3.
Edge TTS (free fallback, single voice):
edge-tts --voice en-US-GuyNeural --rate "+5%" --file script.txt --write-media output.mp3
Step 5: Publish
bash scripts/generate_episode.sh \x3Cdate> \x3CEP-number> \x3Ctitle> \x3Cdescription> \x3Cmp3-file>
What it does:
- Upload MP3 to S3
- Get actual duration via ffprobe
- Insert
\x3Citem>into RSS feed (newest first) - Update
\x3ClastBuildDate>
Step 6: Deliver
Send text brief + audio via your preferred channel (Telegram, Discord, Slack, etc.)
RSS Feed
See references/rss-format.md for XML template.
Key rules:
\x3Citunes:duration>= actual duration from ffprobe (never hardcode)\x3Cenclosure length>= actual file size in bytes\x3Citunes:owner>with email for Apple/Spotify verification- Cover: 3000x3000 JPEG minimum
Hosting Options
| Option | Notes |
|---|---|
| S3 + Cloudflare Worker | Free HTTPS, recommended |
| S3 + CloudFront | Native AWS |
| Any static host | Just serve MP3 + feed.xml |
Cron (OpenClaw)
openclaw cron add --task "Generate daily podcast" --cron "0 8 * * *" --tz "Your/Timezone"
Dependencies
python3+requests— Fish Audio TTSffmpeg/ffprobe— Audio processingawsCLI — S3 uploadedge-tts(optional) — Free fallback TTS
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install dz-podcast - 安装完成后,直接呼叫该 Skill 的名称或使用
/dz-podcast触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Dual-Host Daily Podcast Generator 是什么?
Generate and publish a dual-host daily podcast. Fetches news, generates a conversational script between two hosts, synthesizes audio via Fish Audio or Edge T... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 421 次。
如何安装 Dual-Host Daily Podcast Generator?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install dz-podcast」即可一键安装,无需额外配置。
Dual-Host Daily Podcast Generator 是免费的吗?
是的,Dual-Host Daily Podcast Generator 完全免费(开源免费),可自由下载、安装和使用。
Dual-Host Daily Podcast Generator 支持哪些平台?
Dual-Host Daily Podcast Generator 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Dual-Host Daily Podcast Generator?
由 Dachao(@dz1922)开发并维护,当前版本 v1.0.0。