🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Custom Podcast Discovery & Generation

by @harshilmathur

Discover, research, script, fact-check, and generate podcast episodes automatically. Multi-source topic discovery, LLM script generation, citation enforcemen...

Versionv1.0.1
Downloads563
Stars⭐ 7
TERMINAL
clawhub install custom-podcast-discovery

πŸ“– About This Skill


name: podcast version: 1.0.1 description: | Discover, research, script, fact-check, and generate podcast episodes automatically. Multi-source topic discovery, LLM script generation, citation enforcement, ElevenLabs TTS. Zero vendor lock-in - works with any RSS feed, S3 or local storage.

Podcast Discovery & Generation

Automated 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.

Triggers

Use this skill when user asks to:

  • "Generate a podcast"
  • "Make a podcast episode"
  • "Discover podcast topics"
  • "Create an audio episode about X"
  • "Find topics for podcast"
  • "Research and script a podcast"
  • "Produce a podcast episode"
  • Quick Start

    1. Configure

    cd ~/.openclaw/skills/podcast
    cp config.example.yaml config.yaml
    

    Edit config.yaml: add sources, interests, voice, storage

    2. Discover Topics

    python3 scripts/discover.py --config config.yaml --limit 10
    

    3. Run Pipeline

    python3 scripts/pipeline.py --config config.yaml --topic "Your Topic" --mode manual
    

    Configuration

    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: ""

    storage: type: local path: ./output

    Storage options:

  • type: s3 β€” Upload to S3 (requires bucket, region)
  • type: local β€” Save to local directory
  • Pipeline Stages

    1. Discovery β€” Fetch and rank topics from sources 2. Research β€” Web search framework (OpenClaw worker populates) 3. Script β€” Generate script with LLM, enforce [Source: URL] citations 4. Verify β€” Cross-check claims against research sources 5. Audio β€” Strip citations, call ElevenLabs TTS 6. Upload β€” Save to S3 or local storage

    Each stage can run standalone or as full pipeline.

    Usage Examples

    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
    

    Source Types

    Built-in:

  • rss β€” Generic RSS/Atom feed (any URL)
  • hackernews β€” HN API with point/comment filters
  • nature β€” 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 Files

    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
    

    Integration with OpenClaw

    For discovery: Run directly (no tools needed)

    For full pipeline: Spawn OpenClaw worker with:

  • web_search() β€” Research stage
  • LLM access β€” Script generation (Claude Sonnet recommended)
  • elevenlabs_text_to_speech β€” Audio generation
  • Worker 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

    Citation Enforcement

    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.

    Cron Integration

    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
    

    Key Features

    βœ… 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

    Troubleshooting

    No topics found:

  • Check RSS URLs are valid
  • Verify interests match source content
  • Lower min_points for Hacker News
  • Verification fails:

  • Ensure research.json has sources
  • Check script has [Source: URL] after claims
  • URLs must match research sources
  • S3 upload fails:

  • Verify AWS credentials
  • Check bucket exists and region matches
  • Ensure bucket policy allows public read
  • Files

  • SKILL.md β€” This file
  • README.md β€” Detailed documentation
  • config.example.yaml β€” Configuration template
  • scripts/ β€” Pipeline scripts
  • sources/ β€” Source implementations
  • templates/ β€” Prompt templates
  • License

    MIT β€” Open source, community-maintained OpenClaw skill

    πŸ’‘ Examples

    1. Configure

    cd ~/.openclaw/skills/podcast
    cp config.example.yaml config.yaml
    

    Edit config.yaml: add sources, interests, voice, storage

    2. Discover Topics

    python3 scripts/discover.py --config config.yaml --limit 10
    

    3. Run Pipeline

    python3 scripts/pipeline.py --config config.yaml --topic "Your Topic" --mode manual
    

    βš™οΈ Configuration

    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: ""

    storage: type: local path: ./output

    Storage options:

  • type: s3 β€” Upload to S3 (requires bucket, region)
  • type: local β€” Save to local directory
  • πŸ“‹ Tips & Best Practices

    No topics found:

  • Check RSS URLs are valid
  • Verify interests match source content
  • Lower min_points for Hacker News
  • Verification fails:

  • Ensure research.json has sources
  • Check script has [Source: URL] after claims
  • URLs must match research sources
  • S3 upload fails:

  • Verify AWS credentials
  • Check bucket exists and region matches
  • Ensure bucket policy allows public read