Podcast
zarazhangrui/personalized-podcast
Generate a podcast episode from content you provide. An agent skill from zarazhangrui/personalized-podcast.
Pull long-form podcast transcripts as speaker-labeled markdown — cookie-first across the four major paid...
$ npx skills add mvanhorn/printing-press-library --skill pp-podcast-goat -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-podcast-goat --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/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-podcast-goat .claude/skills/pp-podcast-goat && 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 "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .claude/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goatType 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 mvanhorn/printing-press-library --skill pp-podcast-goat -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-podcast-goat --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-podcast-goat .agents/skills/pp-podcast-goat && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .agents/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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 mvanhorn/printing-press-library --skill pp-podcast-goat -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-podcast-goat --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-podcast-goat .cursor/skills/pp-podcast-goat && 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 "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .cursor/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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/mvanhorn/printing-press-library.git --path cli-skills/pp-podcast-goat--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 mvanhorn/printing-press-library --skill pp-podcast-goat -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-podcast-goat --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-podcast-goat .gemini/skills/pp-podcast-goat && 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 "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .gemini/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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 mvanhorn/printing-press-library pp-podcast-goatInstalls 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 mvanhorn/printing-press-library --skill pp-podcast-goat -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-podcast-goat .github/skills/pp-podcast-goat && 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 "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .github/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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 mvanhorn/printing-press-library --skill pp-podcast-goat -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library pp-podcast-goat --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-podcast-goat .opencode/skills/pp-podcast-goat && 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 "pp-podcast-goat" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-podcast-goat into .opencode/skills/pp-podcast-goat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-podcast-goat", 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.
pp-podcast-goatPull long-form podcast transcripts as speaker-labeled markdown — cookie-first across the four major paid...
Pp Podcast Goat is an agent skill from mvanhorn/printing-press-library. Pull long-form podcast transcripts as speaker-labeled markdown — cookie-first across the four major paid... Trigger phrases: pull this podcast transcript, get the transcript from this URL, summarize this Dwarkesh episode, what did Senra say about, bundle these episodes for me, grep my podcast cache, use podcast-goat, run podcast-goat.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Podcasting. The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d9a1696. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
claudenpxgoFrom 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:
acquired.fmdwarkesh.comhubermanlab.comyoutube.comopen.spotify.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SPOKEN_API_KEYTADDY_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pp Podcast Goat loads about 4.6k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 2,035 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, BashAutomated 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 mvanhorn/printing-press-library at commit d9a1696, republished under its Apache-2.0 licence (© mvanhorn). 2,035 words, ~4,647 tokens.
.claude/skills/pp-podcast-goat/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/media-and-entertainment/podcast-goat/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
This skill drives the podcast-goat-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install podcast-goat --cli-onlypodcast-goat-pp-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/podcast-goat/cmd/podcast-goat-pp-cli@latestIf --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Reach for podcast-goat when an agent needs to read or quote from a long-form podcast and you already subscribe to the show. The CLI walks your member cookies first, falls back to free YouTube/Substack/RSS sources, and only spends money on spoken.md or audio transcription when nothing free works. The MCP surface makes it the canonical podcast adapter for Claude Code agents — every command is an MCP tool, every read is annotated mcp:read-only.
Do not activate this CLI for requests that require creating, updating, deleting, publishing, commenting, upvoting, inviting, ordering, sending messages, booking, purchasing, or changing remote state. This printed CLI exposes read-only commands for inspection, export, sync, and analysis.
Skip podcast-goat for:
yt-dlp or your podcast app directly.whisperapi) is a deferred v0.2 path; for live captions reach for a streaming Deepgram client instead.These capabilities aren't available in any other tool for this API.
magic — Bundle top-N cached transcripts about a topic into one markdown file an agent can summarize in a single call.
Replaces the chip-supply-chain.fly.dev copy-paste workflow with one command. Reach for this when the agent needs cross-episode synthesis.
podcast-goat-pp-cli magic 'AI chip supply chain' --out ~/chip-supply-chain.mdepisode get --explain — Dry-run shows which source tier will fire and why earlier tiers were skipped, with projected cost before any paid call.
Lets agents preview cost and source attribution before committing. Reach for this before any paid run.
podcast-goat-pp-cli episode get https://www.hubermanlab.com/episode/example --explainepisode quote — FTS5 phrase search returns the matched segment plus N surrounding segments preserving the canonical speaker shape and deeplink timestamp.
Grep your podcast memory in 5 seconds. Reach for this when you remember a half-citation and need the exact line back.
podcast-goat-pp-cli episode quote 'pricing power' -C 3 --jsonsource compare — For an episode resolvable on multiple sources, fetch all available adapters and diff segment count, token count, distinct speakers, label confidence.
Reveals when free sources are good enough vs when paid is needed. Reach for this before recommending an upstream source.
podcast-goat-pp-cli source compare https://www.acquired.fm/episodes/vanguard --jsonspeakers list — Aggregate speaker names across the cached corpus with episode counts, optionally filtered by show.
Answers 'what do I have on Senra/Buffett/Karpathy'. Reach for this when building a synthesis prompt.
podcast-goat-pp-cli speakers list --show acquired --jsonepisode get --lang — Fetch YouTube auto-subs in any single language yt-dlp knows (one code per fetch); the default stays en.
Non-English shows have transcripts too. Without --lang, an Italian-only video fails even when its captions exist. Two limits, by design: rolling-cue de-dup applies to space-tokenized languages (captions written without spaces, like zh/ja/th, pass through un-collapsed), and non-default-language fetches are not written to the local cache (cache identity is per-URL and language-blind in v0.1 — use --out to keep them).
podcast-goat-pp-cli episode get 'https://www.youtube.com/watch?v=EXAMPLE' --lang itepisode info --probe — Spend-free availability check: asks spoken.md's search endpoint whether it actually has the episode, instead of showing only a static cost estimate.
Estimates say what a fetch would cost, not whether the source has the episode. Probe before paying — it works with the demo key.
podcast-goat-pp-cli episode info <url> --paid --probe --jsonauth services — One-row-per-service table of cookie age, expiry, last-fetch result, with remediation hint when stale.
Cookies decay silently. Reach for this before a batch run to confirm member access still works.
podcast-goat-pp-cli auth services --jsonbudget show --by-show — Pivot spend.jsonl joined to episodes by URL; group by show, provider, month to attribute cost.
Shows which subscriptions are paying off and which shows still cost money. Reach for this monthly.
podcast-goat-pp-cli budget show --by-show --since 30 --jsonepisode — Pull, search, and inspect podcast episode transcripts
podcast-goat-pp-cli episode get — Fetch one transcript by URL via the cookie -> free -> paid dispatch chainpodcast-goat-pp-cli episode latest — Pull the most recent episode for a subscribed feedWhen you know what you want to do but not which command does it, ask the CLI directly:
podcast-goat-pp-cli which "<capability in your own words>"which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match — fall back to --help or use a narrower query.
The three recipes below cover the end-to-end agent workflows this CLI was built for. Pattern-match against user phrasing — the trigger phrases at the end of each recipe are the kind of natural language an agent should respond to by reaching for this recipe instead of fetching transcripts manually.
# One-time setup (if not already done):
podcast-goat-pp-cli auth set-key --provider spoken --value "$SPOKEN_API_KEY"
podcast-goat-pp-cli auth login-service --service spotify # if user has Spotify Premium
# The actual workflow:
podcast-goat-pp-cli episode batch \
https://www.dwarkesh.com/p/andrej-karpathy \
https://open.spotify.com/episode/<id> \
https://www.acquired.fm/episodes/<slug> \
--json
podcast-goat-pp-cli magic "AI chip supply chain" --limit 5 --out /tmp/bundle.md
# Then: ask the user's preferred LLM to summarize /tmp/bundle.mdPulls multiple episodes in parallel (default 3 concurrent), caches each, then bundles cached episodes matching the topic into one YAML-front-matter markdown file ready for one-shot agent summarization. Each episode in the bundle carries source, show, host, date, provider, cost so the summarizing agent can attribute claims back to the right episode.
Trigger phrases: "pull these podcast episodes", "summarize what I listened to this week", "build a bundle on <topic>", "make me a prompt out of the latest <show>", "monday morning podcast pull".
<speaker> say about <topic>? — local quote greppodcast-goat-pp-cli episode quote "<phrase>" -C 3 --json \
--select 'results.episode_url,results.segments'FTS5 phrase search across the local cached corpus. Returns the matched segment plus N surrounding speaker-tagged segments. Each hit carries episode_url + ts_sec so the agent can hand the user a direct deeplink to the moment. Always reach for this BEFORE re-fetching a transcript — if the user has the episode cached, the answer is free.
Trigger phrases: "what did Senra say about <X>", "find that quote about <Y>", "did <speaker> talk about <Z>", "grep my podcast cache for <phrase>".
# Step 1: preview — no transcript fetch, no spend, no commitment
podcast-goat-pp-cli episode info <url> --paid
# Step 1b: coverage check — does spoken.md actually HAVE this episode?
# Spend-free (search endpoint only; works with the demo key).
podcast-goat-pp-cli episode info <url> --paid --probe
# Step 2: only after preview confirms the URL + cost are right:
podcast-goat-pp-cli episode get <url> --paid --provider spoken --yesepisode info shows which adapters can fetch a URL, the estimated cost per source, whether the episode is already cached, and which source would fire by default. Use this whenever the user pastes a URL you haven't seen before, especially before spending paid credits. JSON output makes the cost/source decision trivially parseable. Add --probe when the question is availability, not just cost: the static estimate says what a spoken.md fetch would cost, while --probe asks spoken.md's search endpoint whether the episode exists there at all (probe: available (<title>) vs probe: no results), so coverage can be mapped across a feed without attempting a single paid fetch.
Trigger phrases: "what does this URL cost", "is this episode already cached", "preview the cost before fetching", "what sources can pull this", "does spoken have this episode".
podcast-goat-pp-cli episode get https://www.dwarkesh.com/p/andrej-karpathy --md --out karpathy.mdFree, no auth. Canonical markdown with speaker labels + timestamps. Hand the file to any agent.
podcast-goat-pp-cli source compare https://www.acquired.fm/episodes/vanguard --jsonFans out to every adapter that matches the URL pattern; shows per-source segment count, distinct-speaker count, diarization quality. Useful when deciding which source to commit to for high-value episodes.
podcast-goat-pp-cli budget show --by-show --since 30Pivots spend_log by show + provider + month. Shows which subscriptions saved money (cookie hits = $0 vs same-show spoken fetches that did cost money).
episode get in a shell. Use episode batch — it dispatches in parallel and shows progress; a shell loop runs sequential with no progress feedback.cache list or episode info first; cached episodes return instantly. The agent should always know whether it's about to re-do work.--yes --paid on an unknown URL. Run episode info <url> --paid first to see the cost; only then commit. The brief explicitly named cost-preview as a non-negotiable UX.--json output's meta.source field. Agents should always be able to attribute a quote back to the source that produced it; that field is the audit trail.auth set-key — it writes to a 0600-permission config file in the user's home, not the project.Three auth surfaces, in cost order. (1) auth login-service --service <huberman|acquired|founders|peterattia> extracts your logged-in Chrome cookie once and stores it locally — the headline workflow. (2) Free sources (Dwarkesh Substack, Podcasting 2.0 RSS transcripts, yt-dlp auto-subs) need no auth. (3) Paid sources (spoken.md SPOKEN_API_KEY, Taddy TADDY_API_KEY+TADDY_USER_ID, audio providers like ElevenLabs/OpenAI/Deepgram) are scoped to commands you explicitly opt into with --paid or --provider <name>. spoken.md's pt_demo key works without signup.
Run podcast-goat-pp-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable — JSON on stdout, errors on stderr
Filterable — --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
podcast-goat-pp-cli episode get mock-value --agent --select id,name,statusPreviewable — --dry-run shows the request without sending
Offline-friendly — sync/search commands can use the local SQLite store when available
Non-interactive — never prompts, every input is a flag
Read-only — do not use this CLI for create, update, delete, publish, comment, upvote, invite, order, send, or other mutating requests
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set — piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
podcast-goat-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
podcast-goat-pp-cli feedback --stdin < notes.txt
podcast-goat-pp-cli feedback list --json --limit 10Entries are stored locally at ~/.podcast-goat-pp-cli/feedback.jsonl. They are never POSTed unless PODCAST_GOAT_FEEDBACK_ENDPOINT is set AND either --send is passed or PODCAST_GOAT_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
podcast-goat-pp-cli profile save briefing --json
podcast-goat-pp-cli --profile briefing episode get mock-value
podcast-goat-pp-cli profile list --json
podcast-goat-pp-cli profile show briefing
podcast-goat-pp-cli profile delete briefing --yesExplicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show podcast-goat-pp-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)Install the MCP binary from this CLI's published public-library entry or pre-built release, then register it:
claude mcp add podcast-goat-pp-mcp -- podcast-goat-pp-mcpVerify: claude mcp list
which podcast-goat-pp-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:podcast-goat-pp-cli <command> [subcommand] [args] --agentpodcast-goat-pp-cli <command> --help.© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli-skills/pp-podcast-goat of mvanhorn/printing-press-library.
Open the folder on GitHubat commit d9a1696
Pp Podcast Goat 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 |
|---|---|---|---|---|---|---|
| Pp Podcast Goat this skillmvanhorn/printing-press-library | 2.1k | — | ~4.6k | Automated safety check: Notes | Apache-2.0 | |
| Podcastzarazhangrui/personalized-podcast | 438 | — | ~2.3k | Automated safety check: Notes | None | |
| Podpullxiaoleiy/podpull | 146 | — | ~962 | Automated safety check: Pass | MIT | |
| Xiaoyuzhou Downloadgainubi/wechat-skills | 171 | — | ~551 | Automated safety check: Pass | None | |
| Summarizetrpc-group/trpc-agent-go | 1.9k | 22 repos | ~552 | Automated safety check: Pass | Apache-2.0 | |
| Article To Podcast Scriptdigoal/blog | 8.6k | — | ~1.6k | Automated safety check: Pass | GPL-2.0 |
zarazhangrui/personalized-podcast
Generate a podcast episode from content you provide. An agent skill from zarazhangrui/personalized-podcast.
xiaoleiy/podpull
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…
gainubi/wechat-skills
Download Xiaoyuzhou FM podcast episode audio files from xiaoyuzhoufm.com/episode links.
trpc-group/trpc-agent-go
Summarize or extract text/transcripts from URLs, podcasts, and local files (great fallback for “transcribe this YouTube/video”).
digoal/blog
Convert a Markdown article into a natural first-person podcast script for 1 to 4 speakers and save it as a .txt file under the current project's markdown directory.
tjxj/z-skills
A skill your agent uses when creating complete generated audio with qwen-audio-3.1-tts-next, including podcasts, radio drama, advertisements, multiple speakers, reference voices, ambience, sound…
mvanhorn/printing-press-library
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
mvanhorn/printing-press-library
The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.
mvanhorn/printing-press-library
Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
Categories
Pull long-form podcast transcripts as speaker-labeled markdown — cookie-first across the four major paid... Pp Podcast Goat is an agent skill from mvanhorn/printing-press-library. Pull long-form podcast transcripts as speaker-labeled markdown — cookie-first across the four major paid...
Pp Podcast Goat fits situations like: phrases: pull this podcast transcript; get the transcript from this URL; summarize this Dwarkesh episode; what did Senra say about.
Run `npx skills add mvanhorn/printing-press-library --skill pp-podcast-goat -a claude-code`. Or copy the skill folder (cli-skills/pp-podcast-goat in mvanhorn/printing-press-library) into .claude/skills/pp-podcast-goat in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-podcast-goat -a codex`. Or copy the skill folder (cli-skills/pp-podcast-goat in mvanhorn/printing-press-library) into .agents/skills/pp-podcast-goat 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 mvanhorn/printing-press-library --skill pp-podcast-goat -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pp-podcast-goat, .gemini/skills/pp-podcast-goat, .github/skills/pp-podcast-goat and .opencode/skills/pp-podcast-goat in your project.
Going by SKILL.md and its folder, Pp Podcast Goat needs the command-line tools its instructions call (claude, npx and go) and credentials named SPOKEN_API_KEY and TADDY_API_KEY. Our summary lists: Node.js; A credential in SPOKEN_API_KEY. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md names 5 domains. In commands or code: acquired.fm, dwarkesh.com, hubermanlab.com, youtube.com and open.spotify.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Pp Podcast Goat is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 19k 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 Pp Podcast Goat: Podcast (zarazhangrui/personalized-podcast, 438 stars), Podpull (xiaoleiy/podpull, 146 stars), Xiaoyuzhou Download (gainubi/wechat-skills, 171 stars) and Summarize (trpc-group/trpc-agent-go, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 2026.
Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.