Install
$ agentstack add skill-crazynomad-apple-podcast-downloader-apple-podcast-downloader ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Apple Podcast Downloader
A comprehensive skill for searching, browsing, and downloading podcast episodes from Apple Podcasts using the iTunes Search API.
Core Capabilities
- Search Podcasts - Find podcasts by keyword, author, or topic
- Browse Episodes - List episodes from a specific podcast
- Download Audio - Download podcast episodes as MP3 files
- Get Metadata - Retrieve detailed information about podcasts and episodes
Quick Start
Search for Podcasts
When user asks to search for podcasts:
- Use the helper script to search:
python3 .claude/skills/podcast-downloader/scripts/itunes_api.py search "keyword" [limit]
- Display results in a clear table format showing:
- Podcast name
- Author/Publisher
- Total episodes
- Genres
- Collection ID (for downloading episodes)
List Episodes
When user wants to see episodes from a podcast:
- Get the collection ID from search results
- Fetch episodes:
python3 .claude/skills/podcast-downloader/scripts/itunes_api.py episodes [limit]
- Show episode list with:
- Episode title
- Release date
- Duration
- Short description
- Episode index number (for downloading)
Download Episodes
When user wants to download podcast audio:
- Ensure download directory exists:
mkdir -p downloads/podcasts
- Download using the helper script:
python3 .claude/skills/podcast-downloader/scripts/itunes_api.py download [output_path]
- Confirm download completion with file size and location
Workflow Examples
Example 1: Search and Download Latest Episode
User Request: "Download the latest episode of The Daily podcast"
Steps:
- Search for "The Daily"
- Get the collection ID from results
- Fetch episodes (limit 1)
- Download the first episode
- Confirm completion
Example 2: Browse and Select
User Request: "Show me the latest 10 episodes of Python Bytes and let me choose which to download"
Steps:
- Search for "Python Bytes"
- Get collection ID
- Fetch 10 latest episodes
- Display numbered list
- Wait for user selection
- Download selected episode(s)
Example 3: Batch Download
User Request: "Download the 5 latest episodes from All-In Podcast"
Steps:
- Search for "All-In Podcast"
- Get collection ID
- Fetch 5 latest episodes
- Download each episode sequentially
- Report progress and completion
Best Practices
User Experience
- Always confirm before downloading - Show episode details and ask for confirmation
- Display progress - Show download progress and estimated time
- Handle errors gracefully - Provide clear error messages and suggestions
- Organize downloads - Create organized directory structure (e.g.,
downloads/podcasts/podcast-name/)
Error Handling
Common errors and solutions:
- No results found: Suggest alternative search terms
- Invalid collection ID: Verify the ID or re-search
- Download failed: Check network connection, retry with error details
- File exists: Ask user whether to overwrite or skip
Performance
- Limit search results: Default to 10 results, max 50
- Batch downloads: Use sequential downloads to avoid overwhelming the API
- Cache metadata: Reuse search results within the same conversation
Command Reference
Search Command
python3 scripts/itunes_api.py search [limit]
Parameters:
keyword: Search term (required)limit: Number of results (optional, default: 10)
Output: JSON array of podcast objects
Episodes Command
python3 scripts/itunes_api.py episodes [limit]
Parameters:
collection_id: Podcast ID from search results (required)limit: Number of episodes (optional, default: 10)
Output: JSON array of episode objects
Download Command
python3 scripts/itunes_api.py download [output_path]
Parameters:
collection_id: Podcast ID (required)episode_index: Episode number from list (0-based) (required)output_path: Save location (optional, default: downloads/podcasts/)
Output: Downloaded MP3 file path
Data Structures
Podcast Object
{
"collectionId": 1200361736,
"collectionName": "The Daily",
"artistName": "The New York Times",
"trackCount": 2464,
"feedUrl": "https://feeds.simplecast.com/...",
"genres": ["Daily News", "Podcasts", "News"]
}
Episode Object
{
"trackId": 1000742770142,
"trackName": "Episode Title",
"releaseDate": "2025-12-26T10:45:00Z",
"trackTimeMillis": 1247000,
"episodeUrl": "https://...",
"description": "Full description...",
"shortDescription": "Brief description..."
}
Advanced Features
RSS Feed Access
Podcasts include RSS feed URLs that can be used for:
- Getting ALL episodes (not limited by API)
- Subscribing in podcast apps
- Accessing additional metadata
Access via feedUrl field in search results.
Metadata Extraction
Extract rich metadata including:
- Artwork (multiple resolutions: 30px, 60px, 100px, 600px)
- Genres and categories
- Explicit content ratings
- Publisher information
- Episode descriptions
Filtering and Sorting
When displaying results, consider:
- Sorting by release date (newest first)
- Filtering by duration
- Grouping by genre
- Showing only recent episodes (e.g., last 30 days)
Troubleshooting
Common Issues
Issue: "curl: command not found" Solution: Install curl or use Python's requests library
Issue: "Invalid JSON response" Solution: Check network connection and API availability
Issue: "Permission denied" when saving files Solution: Check directory permissions or use different output path
Issue: "File too large" Solution: Check available disk space, typical episodes are 20-100MB
Additional Resources
- For detailed API documentation, see [reference.md](reference.md)
- For more usage examples, see [examples.md](examples.md)
- Helper script source:
scripts/itunes_api.py
Notes
- This skill uses the free Apple iTunes Search API (no authentication required)
- Audio files are downloaded directly from podcast CDNs
- Supports all podcasts available on Apple Podcasts
- Download speeds depend on network connection and CDN performance
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: crazynomad
- Source: crazynomad/apple-podcast-downloader
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.