← 返回 Skills 市场
mogens9

Podcast Generation from PDF, Text, and Links

作者 mogens9 · GitHub ↗ · v1.0.11
cross-platform ✓ 安全检测通过
1298
总下载
4
收藏
7
当前安装
12
版本数
在 OpenClaw 中安装
/install ai-podcast
功能描述
Generate AI podcast episodes from PDFs, text, notes, and links using MagicPodcast in OpenClaw. Creates natural two-person dialogue audio, supports custom lan...
使用说明 (SKILL.md)

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:

  1. Ask what the podcast should be about.
  2. Ask for source: PDF URL or pasted text.
  3. Ask for podcast language (do not assume).
  4. Confirm: Ok, want me to make a podcast of this "topic/pdf" in "language". Should I do it?
  5. Create a two-person dialogue podcast from that exact source.
  6. Immediately return https://www.magicpodcast.app/app so user can open their podcast dashboard.
  7. Check status only when user asks.
  8. 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="\x3Cyour_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:]]+$'
}

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.shareUrl as the default completion link.
  • If outputs.shareUrl is missing, fall back to outputs.appUrl.
  • On completion, answer: Here is your podcast link: \x3Curl>.
  • If API returns an error, surface the exact error message and details.
  • Warn users not to send sensitive documents unless they approve external processing.

Status checks:

  • statusLabel = "complete": return outputs.shareUrl (or outputs.appUrl as fallback).
  • statusLabel = "failed": return error message/details to user.
安全使用建议
This skill appears to do what it claims, but remember: (1) The MAGICPODCAST_API_KEY you provide is a credential that allows the service to act on your MagicPodcast account and see any content you upload — do not use a key tied to sensitive production data. (2) If you upload a local PDF you may need to put it at a publicly reachable URL; avoid making sensitive documents publicly accessible. (3) Verify MAGICPODCAST_API_URL points to the official service (https://api.magicpodcast.app) before setting the env var. (4) Consider creating a limited or disposable account/API key for testing and review MagicPodcast's privacy/terms to understand how content is stored/used. (5) The skill validates URLs and job IDs before calling the API (good), but you should still avoid sharing confidential documents unless you accept external processing. If you need deeper assurance, inspect network requests (or run in an environment where you can audit outbound HTTP calls) before granting the real API key.
功能分析
Type: OpenClaw Skill Name: ai-podcast Version: 1.0.11 The skill bundle is benign. The `SKILL.md` file demonstrates strong security practices by explicitly instructing the AI agent to "Never interpolate raw user text directly into shell commands" and providing `safe_job_id()` and `safe_http_url()` functions for input validation. It also uses `jq -n --arg` to safely construct JSON payloads, effectively preventing shell and JSON injection vulnerabilities. All network requests are directed to the stated `magicpodcast.app` domain, and there is no evidence of data exfiltration, unauthorized execution, persistence, or malicious prompt injection against the agent.
能力评估
Purpose & Capability
Name/description match the declared requirements: curl + jq and MAGICPODCAST_API_URL / MAGICPODCAST_API_KEY are exactly what's needed to call the MagicPodcast REST API. No unrelated binaries, credentials, or config paths are requested.
Instruction Scope
SKILL.md guides the agent to collect topic/source/language, validate inputs, and call clearly documented API endpoints on MAGICPODCAST_API_URL with the API key. It does not instruct reading unrelated files or exfiltrating other system data; it warns users not to send sensitive documents.
Install Mechanism
Instruction-only skill with no install spec and no code files — nothing is written to disk or downloaded during install, which is the lowest-risk pattern.
Credentials
Only two env vars are required (API base URL and API key), which are proportionate to a REST-API integration. Note: the API key grants the service access to the user's MagicPodcast account and any content sent to the service.
Persistence & Privilege
always is false and no system config paths are requested. The skill does not request permanent system presence or modify other skill settings.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install ai-podcast
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /ai-podcast 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.11
ai-podcast 1.0.11 changelog - Updated the skill description for clarity and detail, highlighting OpenClaw and supported input types (PDFs, text, notes, links). - Emphasized the dashboard experience and custom language support in the description. - No functional or code changes in this release.
v1.0.10
- The podcast dashboard URL is now given as https://www.magicpodcast.app/app (removing the trailing slash). - Users are informed that this dashboard page shows all their podcasts, live progress, and finished episodes. - No code or functional changes—documentation and message details improved for clarity.
v1.0.9
- Adds security: all shell commands now require input validation and JSON-encoding via jq. - Requires jq as a dependency (added to metadata). - Provides secure Bash template snippets for input validation (safe_job_id, safe_http_url). - Updates command templates to use validated, JSON-encoded input for all API requests. - Enhances guidance to never interpolate raw user input directly into commands.
v1.0.8
- After starting a podcast creation, users are now immediately directed to https://www.magicpodcast.app/app/ to follow progress in their library. - Status checks are only performed when the user requests them, not automatically. - The polling loop and repeated status checks were removed for a simpler, user-driven flow. - Instructions and onboarding adjusted to reflect the new user experience. - No file changes detected.
v1.0.7
- Updated completion link to use outputs.shareUrl as the primary podcast link, falling back to outputs.appUrl if needed. - Clarified output message on completion: "Here is your podcast link: <url>". - Updated onboarding and polling instructions for improved clarity. - No changes to commands or API interactions.
v1.0.6
- Added requirement for the MAGICPODCAST_API_KEY environment variable. - Clarified that only PDF URLs or pasted text are accepted; local PDF files must first be uploaded to a reachable URL. - Capped job status polling to a maximum of 45 checks (15 minutes). - Included a warning not to send sensitive documents unless okay with external processing. - Minor improvements to guided onboarding steps for clarity.
v1.0.5
- Added a "Guided onboarding" section with step-by-step user instructions and clearer API key guidance. - Updated interaction flow to prompt users with one question at a time, waiting for replies before proceeding. - Improved error handling for missing or invalid API keys, including a user-friendly message and instructions to obtain an API key. - No changes to core features or commands; documentation and onboarding enhancements only.
v1.0.4
- Switched command examples from npm-based CLI to curl-based API calls for greater flexibility. - Removed CLI installation instructions; now only environment variables are required for setup. - Updated job polling instructions with explicit curl command and terminal status logic. - Added details for error and completion handling based on API response. - Updated required binary from "magicpodcast" to "curl" in metadata.
v1.0.3
- Added steps to prompt for podcast language and to confirm the topic, source, and language before starting. - Clarified that the podcast language must be asked for and not assumed. - Noted that expected generation time is usually 2–5 minutes. - Updated error handling to surface exact API error messages and details.
v1.0.2
- Updated the example MAGICPODCAST_API_URL in the setup instructions to "https://api.magicpodcast.app" for improved accuracy. - No changes to functionality or commands.
v1.0.1
- Improved user interaction: now asks what the podcast should be about and for the source before generating. - Polls job status every 20 seconds instead of every 5 seconds. - Podcast completion now returns the MagicPodcast app library URL as the main link. - Minor wording and step clarifications in usage instructions.
v1.0.0
Initial release of ai-podcast. - Generate a natural two-host podcast conversation from PDFs or plain text using MagicPodcast. - Supports polling job status until completion. - Returns audio URL and podcast title on completion. - Command-line interface setup and instructions provided. - Requires a MagicPodcast API key and URL for usage.
元数据
Slug ai-podcast
版本 1.0.11
许可证
累计安装 7
当前安装数 7
历史版本数 12
常见问题

Podcast Generation from PDF, Text, and Links 是什么?

Generate AI podcast episodes from PDFs, text, notes, and links using MagicPodcast in OpenClaw. Creates natural two-person dialogue audio, supports custom lan... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1298 次。

如何安装 Podcast Generation from PDF, Text, and Links?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install ai-podcast」即可一键安装,无需额外配置。

Podcast Generation from PDF, Text, and Links 是免费的吗?

是的,Podcast Generation from PDF, Text, and Links 完全免费(开源免费),可自由下载、安装和使用。

Podcast Generation from PDF, Text, and Links 支持哪些平台?

Podcast Generation from PDF, Text, and Links 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Podcast Generation from PDF, Text, and Links?

由 mogens9(@mogens9)开发并维护,当前版本 v1.0.11。

💬 留言讨论