ListenHub
Turn ideas into podcasts, explainer videos, voice narration, and AI images via ListenHub. Use when the user wants to "make a podcast", "create an explainer v...
Turn ideas into podcasts, explainer videos, voice narration, and AI images via ListenHub. Use when the user wants to "make a podcast", "create an explainer v...
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Generate podcasts, explainer videos, TTS audio, and AI images through shell scripts that wrap the ListenHub API.
Set
LISTENHUB_API_KEY before first use. Two options:
Option A — OpenClaw env config (recommended): Add to
~/.openclaw/openclaw.json under env:
{ "env": { "LISTENHUB_API_KEY": "lh_sk_..." } }
Option B — Shell export:
export LISTENHUB_API_KEY="lh_sk_..."
Get your key: https://listenhub.ai/settings/api-keys
For image generation, also set
LISTENHUB_OUTPUT_DIR (defaults to ~/Downloads).
All scripts live at
scripts/ relative to this SKILL.md. Resolve the path:
SCRIPTS="$(cd "$(dirname "<path-to-this-SKILL.md>")" && pwd)/scripts"
Dependencies:
curl, jq (install if missing).
| Mode | Script | Use Case |
|---|---|---|
| Podcast | | 1-2 speaker discussion |
| Explainer | + | Narration + AI visuals |
| TTS | | Pure voice reading |
| Speech | | Multi-speaker scripted audio |
| Image | | AI image generation |
Helper scripts:
get-speakers.sh (list voices), check-status.sh (poll progress).
get-speakers.sh to discover them.Auto-detect from user input:
create-podcast.shcreate-explainer.shcreate-tts.shgenerate-image.shIf ambiguous, ask user.
$SCRIPTS/get-speakers.sh --language zh # or en
Returns JSON with
data.items[].speakerId. If user doesn't specify a voice, pick the first match for the language.
$SCRIPTS/create-podcast.sh --query "topic" --language zh|en --mode quick|deep|debate --speakers <id1[,id2]> [--source-url URL] [--source-text TEXT]
quick is default mode. debate requires 2 speakers.--source-url / --source-text allowed.Use only when user wants to review/edit the script before audio generation.
Stage 1:
$SCRIPTS/create-podcast-text.sh (same args as one-stage)
Review: Poll with check-status.sh --wait, save draft, STOP and wait for user approval.
Stage 2: $SCRIPTS/create-podcast-audio.sh --episode <id> [--scripts modified.json]
$SCRIPTS/create-explainer.sh --content "text" --language zh|en --mode info|story --speakers <id> $SCRIPTS/generate-video.sh --episode <id>
$SCRIPTS/create-tts.sh --type text|url --content "text or URL" --language zh|en --mode smart|direct --speakers <id>
direct (no content modification). smart fixes grammar/punctuation.$SCRIPTS/create-speech.sh --scripts scripts.json
JSON format:
{"scripts": [{"content": "...", "speakerId": "..."}]}
$SCRIPTS/generate-image.sh --prompt "description" [--size 1K|2K|4K] [--ratio 16:9|1:1|9:16|...] [--reference-images "url1,url2"]
$LISTENHUB_OUTPUT_DIR (default ~/Downloads).$SCRIPTS/check-status.sh --episode <id> --type podcast|flow-speech|explainer [--wait] [--timeout 300]
Exit codes: 0=done, 1=failed, 2=timeout (retry safe).
Use
--wait for automated polling. Run generation in background for long tasks.
get-speakers.sh, pick first matchcheck-status.sh --waitMatch response language to user input language. Chinese input → Chinese responses. English → English.
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.