Ai Podcast
PDF to podcast and text to podcast in a natural two-person format with MagicPodcast.
- Rating
- 4.3 (22 reviews)
- Downloads
- 532 downloads
- Version
- 1.0.0
Overview
PDF to podcast and text to podcast in a natural two-person format with MagicPodcast.
Complete Documentation
View Source →
What this skill does
Magic Podcast turns PDFs, documents, and notes into a natural two-host conversation you can listen to in minutes.
Use MagicPodcast to:
- Ask what the podcast should be about.
- Ask for source: PDF URL or pasted text.
- Ask for podcast language (do not assume).
- Confirm:
Ok, want me to make a podcast of this "topic/pdf" in "language". Should I do it? - Create a two-person dialogue podcast from that exact source.
- Immediately return
https://www.magicpodcast.app/appso user can open their podcast dashboard. - Check status only when user asks.
- Return title plus the shareable podcast URL when complete.
Keywords
ai podcast, podcast, podcast generator, ai podcast generator, pdf to podcast, text to podcast, podcast from pdf, audio podcast, magicpodcast
Setup
Set required env:
export MAGICPODCAST_API_URL="https://api.magicpodcast.app"
export MAGICPODCAST_API_KEY="<your_api_key>"
Get API key: https://www.magicpodcast.app/openclaw
Guided onboarding (one step at a time)
- Ask one question at a time, then wait for the user's reply before asking the next.
- If API key is missing or invalid, stop and say:
It's free to get started, and it takes under a minute. Open https://www.magicpodcast.app/openclaw, sign in with Google, copy your API key, and paste it here.
- If user has a local PDF file, ask them to upload it to a reachable URL first.
- After key is available, continue:
Secure command templates
Never interpolate raw user text directly into shell commands.
Always validate first, then JSON-encode with jq.
safe_job_id() {
printf '%s' "$1" | grep -Eq '^[A-Za-z0-9_-]{8,128}$'
}
safe_http_url() {
printf '%s' "$1" | grep -Eq '^https?://[^[:space:]]+$'
}
Create from PDF:
# Inputs expected from conversation state:
# PDF_URL, LANGUAGE
if ! safe_http_url "$PDF_URL"; then
echo "Invalid PDF URL" >&2
exit 1
fi
payload="$(jq -n --arg pdfUrl "$PDF_URL" --arg language "$LANGUAGE" '{pdfUrl:$pdfUrl,language:$language}')"
curl -sS -X POST "$MAGICPODCAST_API_URL/agent/v1/podcasts/pdf" \
-H "Content-Type: application/json" \
-H "x-api-key: $MAGICPODCAST_API_KEY" \
--data-binary "$payload"
Create from text:
# Inputs expected from conversation state:
# SOURCE_TEXT, LANGUAGE
payload="$(jq -n --arg text "$SOURCE_TEXT" --arg language "$LANGUAGE" '{text:$text,language:$language}')"
curl -sS -X POST "$MAGICPODCAST_API_URL/agent/v1/podcasts/text" \
-H "Content-Type: application/json" \
-H "x-api-key: $MAGICPODCAST_API_KEY" \
--data-binary "$payload"
Check job once:
# Input expected from API response:
# JOB_ID
if ! safe_job_id "$JOB_ID"; then
echo "Invalid job id" >&2
exit 1
fi
curl -sS "$MAGICPODCAST_API_URL/agent/v1/jobs/$JOB_ID" \
-H "x-api-key: $MAGICPODCAST_API_KEY"
- Signed-in users can generate free podcast.
- Expected generation time is usually 2-5 minutes.
- Right after starting, direct users to
https://www.magicpodcast.app/app. - Tell the user this page is their dashboard: they can see created podcasts, live progress/status, and finished episodes.
- Return
outputs.shareUrlas the default completion link. - If
outputs.shareUrlis missing, fall back tooutputs.appUrl. - On completion, answer:
Here is your podcast link:. - If API returns an error, surface the exact error message and details.
- Warn users not to send sensitive documents unless they approve external processing.
statusLabel = "complete": returnoutputs.shareUrl(oroutputs.appUrlas fallback).statusLabel = "failed": return error message/details to user.
Installation
openclaw install ai-podcast
💻Code Examples
export MAGICPODCAST_API_KEY="<your_api_key>"
Get API key:
https://www.magicpodcast.app/openclaw
## Guided onboarding (one step at a time)
1. Ask one question at a time, then wait for the user's reply before asking the next.
2. If API key is missing or invalid, stop and say:
`It's free to get started, and it takes under a minute. Open https://www.magicpodcast.app/openclaw, sign in with Google, copy your API key, and paste it here.`
3. If user has a local PDF file, ask them to upload it to a reachable URL first.
4. After key is available, continue:
1) topic
2) source (PDF URL or pasted text)
3) language
4) final confirmation before create
## Secure command templates
Never interpolate raw user text directly into shell commands.
Always validate first, then JSON-encode with `jq`.safe_job_id() {
printf '%s' "$1" | grep -Eq '^[A-Za-z0-9_-]{8,128}$'
}
safe_http_url() {
printf '%s' "$1" | grep -Eq '^https?://[^[:space:]]+$'
}# Inputs expected from conversation state:
# PDF_URL, LANGUAGE
if ! safe_http_url "$PDF_URL"; then
echo "Invalid PDF URL" >&2
exit 1
fi
payload="$(jq -n --arg pdfUrl "$PDF_URL" --arg language "$LANGUAGE" '{pdfUrl:$pdfUrl,language:$language}')"
curl -sS -X POST "$MAGICPODCAST_API_URL/agent/v1/podcasts/pdf" \
-H "Content-Type: application/json" \
-H "x-api-key: $MAGICPODCAST_API_KEY" \
--data-binary "$payload"# Inputs expected from conversation state:
# SOURCE_TEXT, LANGUAGE
payload="$(jq -n --arg text "$SOURCE_TEXT" --arg language "$LANGUAGE" '{text:$text,language:$language}')"
curl -sS -X POST "$MAGICPODCAST_API_URL/agent/v1/podcasts/text" \
-H "Content-Type: application/json" \
-H "x-api-key: $MAGICPODCAST_API_KEY" \
--data-binary "$payload"# Input expected from API response:
# JOB_ID
if ! safe_job_id "$JOB_ID"; then
echo "Invalid job id" >&2
exit 1
fi
curl -sS "$MAGICPODCAST_API_URL/agent/v1/jobs/$JOB_ID" \
-H "x-api-key: $MAGICPODCAST_API_KEY"Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.