Azure Realtime Podcast Generation
microsoft/skills
Builds podcast-style audio narration from text with Azure OpenAI's GPT Realtime Mini over WebSocket, from a Python FastAPI backend to a React player.
A skill your agent uses when the user wants to download a podcast episode's audio file (mp3/m4a) to disk — from an Apple Podcasts show or episode link, a raw RSS feed, or a 小宇宙/xiaoyuzhou episode…
$ npx skills add xiaoleiy/podpull --skill podpull -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install xiaoleiy/podpull podpull --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/podpull/integrations .claude/skills/podpull && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .claude/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrationsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add xiaoleiy/podpull --skill podpull -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install xiaoleiy/podpull podpull --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/podpull/integrations .agents/skills/podpull && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .agents/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoleiy/podpull --skill podpull -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install xiaoleiy/podpull podpull --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/podpull/integrations .cursor/skills/podpull && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .cursor/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/xiaoleiy/podpull.git --path src/podpull/integrations--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add xiaoleiy/podpull --skill podpull -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install xiaoleiy/podpull podpull --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/podpull/integrations .gemini/skills/podpull && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .gemini/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install xiaoleiy/podpull podpullInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add xiaoleiy/podpull --skill podpull -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/podpull/integrations .github/skills/podpull && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .github/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoleiy/podpull --skill podpull -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install xiaoleiy/podpull podpull --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xiaoleiy/podpull.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/podpull/integrations .opencode/skills/podpull && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "podpull" agent skill from https://github.com/xiaoleiy/podpull/tree/main/src/podpull/integrations into .opencode/skills/podpull/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "podpull", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
podpullA skill your agent uses when the user wants to download a podcast episode's audio file (mp3/m4a) to disk — from an Apple Podcasts show or episode link, a raw RSS feed, or a 小宇宙/xiaoyuzhou episode…
Podpull is an agent skill from xiaoleiy/podpull. Use when the user wants to download a podcast episode's audio file (mp3/m4a) to disk — from an Apple Podcasts show or episode link, a raw RSS feed, or a 小宇宙/xiaoyuzhou episode link. Covers searching for a show, listing episodes, and downloading one or many. Keywords: download podcast, save episode audio, Apple Podcasts, RSS, xiaoyuzhou, 小宇宙, mp3, m4a, podpull, 下载播客.
Its SKILL.md is about 960 tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `__init__.py` and `opencode_command.md`).
It sits in Media & Creative, covering Podcasting. It works with Python. The repository describes itself as: Download any podcast episode straight to your shell — Apple Podcasts, RSS, or xiaoyuzhou. Interactive picker, live progress, resumable. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 7ba0674. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
brewpipxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
xiaoyuzhoufm.comAlso links to:
podpull.xiaolei.workFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PODCASTINDEX_API_KEYPODCASTINDEX_API_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Podpull loads about 962 tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 331 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from xiaoleiy/podpull at commit 7ba0674, republished under its MIT licence (© xiaoleiy). 331 words, ~962 tokens.
.claude/skills/podpull/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Use the installed podpull command-line tool to download podcast audio.
Repo: https://github.com/xiaoleiy/podpull
If it isn't installed: brew install xiaoleiy/tap/podpull (macOS/Linux) or
pipx install git+https://github.com/xiaoleiy/podpull.
Apple Podcasts holds no audio — it points at each show's RSS feed, where every
episode has a direct <enclosure> URL. podpull resolves Apple show URLs/IDs, raw
RSS feeds, and xiaoyuzhou links to that audio and downloads it.
podpull search "<keywords>" # find shows -> Apple ID, #episodes, name
podpull info <src> # show metadata (title, author, feed, latest)
podpull list <src> [--match RE] [--all] # list episodes; index 0 = newest
podpull get <src> --match RE | --latest N | --index 0,2[,..] # download (alias: `pull`)
podpull get <episode-url> # download a pasted Apple ?i= or xiaoyuzhou link
podpull get <src> ... -q / --quiet # suppress spinner/progress bar
podpull --json <cmd> … # one JSON document on stdout (flag before command)
podpull serve [--host] [--port] # local UI: search / trending / browser downloadHosted web UI (same idea, no install): https://podpull.xiaolei.work/app
<src> = Apple show URL · bare Apple ID · RSS feed URL · Apple episode ?i= URL · xiaoyuzhou episode URL.
podpull search "<name>"; then podpull list <id> to see episodes.--match (title regex), --latest N, or --index 0,2.--no-input. Running podpull get <show> with no selector opens an
interactive keyboard picker — which can't be driven non-interactively and will instead error with a hint.
Use e.g. podpull get 1532755821 --latest 1 --no-input.-q/--quiet to suppress the spinner and live progress bar on stderr — recommended for
agent transcripts, since neither renders meaningfully outside a live terminal. Saved file paths still
print to stdout either way.podpull --json … when you need structured data (search / info / list / get).
The flag goes before the command. On success stdout is one JSON document; on failure check the
exit code (human error on stderr, no JSON)../<show name>/ in the current working directory; pass --out DIR
to change the parent (still creates the per-show folder).search also queries Podcast Index and feed resolution gains a fallback; ximalaya.com/album/<id> links work as a source.podpull search "睡前故事"
podpull --json list 1532755821 --limit 5
podpull get 1532755821 --latest 1 --no-input --quiet
podpull --json get 1532755821 --latest 1 --no-input
podpull get 1532755821 --match "牛頭人" --no-input --out ~/Audio
podpull get "https://www.xiaoyuzhoufm.com/episode/<id>" --no-input© xiaoleiy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in src/podpull/integrations of xiaoleiy/podpull.
Open the folder on GitHubat commit 7ba0674
Podpull next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Podpull this skillxiaoleiy/podpull | 146 | — | ~962 | Automated safety check: Pass | MIT | |
| Azure Realtime Podcast Generationmicrosoft/skills | 3.1k | 1 repos | ~947 | Automated safety check: Pass | MIT | |
| Podcast Episode Cover Artimpredicative/podgenai | 157 | — | ~372 | Automated safety check: Pass | LGPL-3.0 | |
| Event Signalsgooseworks-ai/goose-skills | 1.2k | 1 repos | ~3.9k | Automated safety check: Notes | MIT | |
| Video Podcast Makerdtsola/xiaoyaosearch | 1k | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Podcast Generationbytedance/deer-flow | 83k | 2 repos | ~2.2k | Automated safety check: Pass | MIT |
microsoft/skills
Builds podcast-style audio narration from text with Azure OpenAI's GPT Realtime Mini over WebSocket, from a Python FastAPI backend to a React player.
impredicative/podgenai
Produce a square cover art image for a given podcast episode title, with vibrant, creative artwork and no text or people by default.
gooseworks-ai/goose-skills
Extract leads from conferences, meetups, hackathons, and podcasts by analyzing speaker lists, sponsor lists, hackathon entries, and podcast guests.
dtsola/xiaoyaosearch
Turns a topic into a 4K horizontal video podcast through research, scripting, text-to-speech, Remotion rendering and background music, and can learn styles from references.
bytedance/deer-flow
Turns written content into a two-host conversational podcast MP3 with a transcript, by drafting a JSON script and running a text-to-speech script.
affaan-m/ECC
Ingest, index, search, edit, and monitor video and audio with the VideoDB Python SDK — upload from files, URLs, or RTSP feeds, build spoken and scene indexes with timestamped search and playable…
Works with
Categories
A skill your agent uses when the user wants to download a podcast episode's audio file (mp3/m4a) to disk — from an Apple Podcasts show or episode link, a raw RSS feed, or a 小宇宙/xiaoyuzhou episode…. Podpull is an agent skill from xiaoleiy/podpull. Use when the user wants to download a podcast episode's audio file (mp3/m4a) to disk — from an Apple Podcasts show or episode link, a raw RSS feed, or a 小宇宙/xiaoyuzhou episode link.
Podpull fits situations like: the user wants to download a podcast episodes audio file (mp3/m4a) to disk — from an Apple Podcasts show; A 小宇宙/xiaoyuzhou episode link.
Run `npx skills add xiaoleiy/podpull --skill podpull -a claude-code`. Or copy the skill folder (src/podpull/integrations in xiaoleiy/podpull) into .claude/skills/podpull in your project. Claude Code loads it when a task matches its description.
Run `npx skills add xiaoleiy/podpull --skill podpull -a codex`. Or copy the skill folder (src/podpull/integrations in xiaoleiy/podpull) into .agents/skills/podpull in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xiaoleiy/podpull --skill podpull -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/podpull, .gemini/skills/podpull, .github/skills/podpull and .opencode/skills/podpull in your project.
Going by SKILL.md and its folder, Podpull needs Python for the scripts in its folder, the command-line tools its instructions call (brew and pipx) and credentials named PODCASTINDEX_API_KEY and PODCASTINDEX_API_SECRET. Our summary lists: Python 3; A credential in PODCASTINDEX_API_KEY; A credential in PODCASTINDEX_API_SECRET.
SKILL.md names 2 domains. In commands or code: xiaoyuzhoufm.com; the agent is likely to contact it when it follows the instructions. As links in the text: podpull.xiaolei.work. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Podpull is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 962 tokens (SKILL.md is roughly 3.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Podpull: Azure Realtime Podcast Generation (microsoft/skills, 3.1k stars), Podcast Episode Cover Art (impredicative/podgenai, 157 stars), Event Signals (gooseworks-ai/goose-skills, 1.2k stars) and Video Podcast Maker (dtsola/xiaoyaosearch, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
xiaoleiy (a GitHub user) maintains it in xiaoleiy/podpull, which has 146 GitHub stars. The repository was last updated on September 5, 2026.
Source: xiaoleiy/podpull on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.