Install
openclaw skills install custom-podcast-discoveryDiscover, research, script, fact-check, and generate podcast episodes automatically. Multi-source topic discovery, LLM script generation, citation enforcemen...
openclaw skills install custom-podcast-discoveryAutomated end-to-end podcast production pipeline. Discovers trending topics from configurable sources, researches them deeply, generates fact-checked scripts with citations, and produces audio via ElevenLabs TTS.
Use this skill when user asks to:
cd ~/.openclaw/skills/podcast
cp config.example.yaml config.yaml
# Edit config.yaml: add sources, interests, voice, storage
python3 scripts/discover.py --config config.yaml --limit 10
python3 scripts/pipeline.py --config config.yaml --topic "Your Topic" --mode manual
Minimal config.yaml:
sources:
- type: rss
url: https://aeon.co/feed.rss
name: Aeon
- type: hackernews
min_points: 200
interests:
- AI/Tech
- Science
voice:
voice_id: "<your-voice-id>"
storage:
type: local
path: ./output
Storage options:
type: s3 — Upload to S3 (requires bucket, region)type: local — Save to local directory[Source: URL] citationsEach stage can run standalone or as full pipeline.
Discover only:
python3 scripts/discover.py --config config.yaml --limit 5 --output topics.json
Full pipeline (auto mode):
python3 scripts/pipeline.py --config config.yaml --mode auto
Specific topic:
python3 scripts/pipeline.py --config config.yaml --topic "AI Reasoning" --mode manual
Resume from stage:
python3 scripts/pipeline.py --config config.yaml --resume-from audio
Built-in:
rss — Generic RSS/Atom feed (any URL)hackernews — HN API with point/comment filtersnature — Nature journal (sections: news, research, biotech, medicine)Add custom RSS:
sources:
- type: rss
url: https://yourfeed.com/rss
name: Your Source
category: Your Category
output/
├── discovery-YYYY-MM-DD.json # Ranked topics
├── research-YYYY-MM-DD-slug.json # Research data
├── script-YYYY-MM-DD-slug.txt # Script with citations
├── verification-YYYY-MM-DD.json # Fact-check report
├── tts-ready-YYYY-MM-DD-slug.txt # Clean text for TTS
├── episode-YYYY-MM-DD-slug.mp3 # Final audio
└── pipeline-state-YYYY-MM-DD.json # Pipeline state
For discovery: Run directly (no tools needed)
For full pipeline: Spawn OpenClaw worker with:
web_search() — Research stageelevenlabs_text_to_speech — Audio generationWorker pattern:
cd ~/.openclaw/skills/podcast
# Source environment if available
[ -f ~/.openclaw/env-init.sh ] && source ~/.openclaw/env-init.sh
python3 scripts/pipeline.py --config config.yaml --mode auto
Every factual claim in scripts MUST have [Source: URL] citation:
✅ Correct:
The market grew to $10.2 billion in 2025 [Source: https://example.com/report].
❌ Incorrect:
The market grew significantly.
The verify script cross-references citations against research sources and blocks audio generation if unverified claims are found.
Daily discovery (8 AM):
schedule: "0 8 * * *"
payload: |
cd ~/.openclaw/skills/podcast
python3 scripts/discover.py --config config.yaml --limit 10 \
--output data/discovery-$(date +%Y-%m-%d).json
Weekly full pipeline:
schedule: "0 9 * * 1"
payload: |
cd ~/.openclaw/skills/podcast
[ -f ~/.openclaw/env-init.sh ] && source ~/.openclaw/env-init.sh
python3 scripts/pipeline.py --config config.yaml --mode auto
✅ Zero vendor lock-in — Use any RSS feed, any storage ✅ No external dependencies — Pure Python stdlib (except ElevenLabs for TTS) ✅ Citation enforcement — Every claim must have source ✅ Fact verification — Cross-check against research ✅ Pluggable sources — Easy to add new topic sources ✅ Resume support — Restart from any stage ✅ Manual or auto — Review each stage or run end-to-end
No topics found:
min_points for Hacker NewsVerification fails:
[Source: URL] after claimsS3 upload fails:
SKILL.md — This fileREADME.md — Detailed documentationconfig.example.yaml — Configuration templatescripts/ — Pipeline scriptssources/ — Source implementationstemplates/ — Prompt templatesMIT — Open source, community-maintained OpenClaw skill