
Podchaser
- 92 installs
- 76 repo stars
- Updated August 4, 2026
- vm0-ai/vm0-skills
Helps with ai & agent building tasks during AI-assisted development.
About
podchaser is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- podchaser
- AI & Agent Building
- AI-coding skill
Podchaser by the numbers
- 92 all-time installs (skills.sh)
- Ranked #4,749 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vm0-ai/vm0-skills --skill podchaserAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 92 |
|---|---|
| repo stars | ★ 76 |
| Last updated | August 4, 2026 |
| Repository | vm0-ai/vm0-skills ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Troubleshooting
If requests fail, run zero doctor check-connector --env-name PODCHASER_TOKEN or zero doctor check-connector --url https://api.podchaser.com/graphql --method POST
How to Use
1. Search Podcasts
Search for podcasts by keyword:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcasts(searchTerm: \"technology\", first: 5) { paginatorInfo { count } data { id title description author { name } } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json3. Get Podcast Details
Get detailed information about a specific podcast by ID:
Note: Thetypefield is required in the identifier. UsePODCHASERfor Podchaser IDs,APPLE_PODCASTSfor Apple IDs, orSPOTIFYfor Spotify IDs.
Write to /tmp/podchaser_request.json:
{
"query": "{ podcast(identifier: { id: \"717178\", type: PODCHASER }) { id title description url imageUrl language ratingAverage ratingCount author { name } categories { title } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json4. Search Episodes
Search for episodes across all podcasts:
Write to /tmp/podchaser_request.json:
{
"query": "{ episodes(searchTerm: \"AI\", first: 5) { paginatorInfo { count } data { id title description airDate length podcast { title } } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json5. Get Podcast Episodes
Get episodes for a specific podcast:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcast(identifier: { id: \"717178\", type: PODCHASER }) { id title episodes(first: 10) { data { id title description airDate length } } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json6. Get Episode Details
Get detailed information about a specific episode:
Write to /tmp/podchaser_request.json:
{
"query": "{ episode(identifier: { id: \"789012\", type: PODCHASER }) { id title description airDate length url imageUrl podcast { id title } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json7. Get Podcast Categories
Categories are available as a field on podcast objects. Get categories for a specific podcast:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcast(identifier: { id: \"717178\", type: PODCHASER }) { title categories { title slug } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json8. Filter Podcasts by Category
Get podcasts in a specific category:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcasts(filters: { categories: [\"technology\"] }, first: 10) { data { id title description ratingAverage } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json9. Get Chart Rankings
Get Apple Podcasts chart data:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcasts(filters: { hasAppleChartRank: true }, sort: { sortBy: APPLE_CHART_RANK, direction: ASC }, first: 10) { data { id title appleChartRank } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json10. Get Creator/Host Information
Search for podcast creators:
Write to /tmp/podchaser_request.json:
{
"query": "{ creators(searchTerm: \"Joe Rogan\", first: 5) { data { pcid name bio credits { data { podcast { title } } } } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.json11. Preview Query Cost
Check how many points a query will cost before executing:
Write to /tmp/podchaser_request.json:
{
"query": "{ podcasts(searchTerm: \"tech\", first: 10) { data { id title description episodes(first: 5) { data { id title } } } } }"
}Then run:
curl -s -X POST "https://api.podchaser.com/graphql/cost" --header "Content-Type: application/json" --header "Authorization: Bearer $PODCHASER_TOKEN" -d @/tmp/podchaser_request.jsonGraphQL Schema Reference
Main Queries
| Query | Description |
|---|---|
podcast(identifier: {id: "...", type: PODCHASER}) | Get single podcast by ID |
podcasts(searchTerm: "...", first: N) | Search podcasts |
episode(identifier: {id: "...", type: PODCHASER}) | Get single episode by ID |
episodes(searchTerm: "...", first: N) | Search episodes |
creators(searchTerm: "...", first: N) | Search creators/hosts |
networks(searchTerm: "...", first: N) | Search podcast networks |
chartCategories(platform: APPLE_PODCASTS) | List chart categories (requires paid plan) |
Identifier Types
The type field is required when using identifier to fetch a podcast or episode:
| Type | Description |
|---|---|
PODCHASER | Podchaser internal ID |
APPLE_PODCASTS | Apple Podcasts ID |
SPOTIFY | Spotify ID |
Podcast Fields
| Field | Type | Description |
|---|---|---|
id | ID | Unique identifier |
title | String | Podcast title |
description | String | Podcast description |
url | String | Podcast website URL |
imageUrl | String | Cover art URL |
language | String | Primary language |
ratingAverage | Float | Average user rating |
ratingCount | Int | Number of ratings |
author | Creator | Podcast author/creator |
categories | [Category] | Associated categories |
episodes(first: N) | EpisodeList | Podcast episodes (paginated) |
Episode Fields
| Field | Type | Description |
|---|---|---|
id | ID | Unique identifier |
title | String | Episode title |
description | String | Episode description |
airDate | Date | Publication date |
length | Int | Duration in seconds |
url | String | Episode URL |
imageUrl | String | Episode artwork URL |
podcast | Podcast | Parent podcast |
Creator Fields
| Field | Type | Description |
|---|---|---|
pcid | String | Unique identifier |
name | String | Creator name |
bio | String | Biography |
imageUrl | String | Profile image URL |
credits | CreditList | Podcast appearances |
Filter Options
| Filter | Values |
|---|---|
categories | Category slugs |
language | ISO language codes |
hasAppleChartRank | Boolean |
hasSpotifyChartRank | Boolean |
Sort Options
| sortBy | Description |
|---|---|
RELEVANCE | Search relevance |
POPULARITY | Overall popularity |
RATING | User rating |
APPLE_CHART_RANK | Apple ranking |
SPOTIFY_CHART_RANK | Spotify ranking |
LATEST_EPISODE | Most recent episode |
Rate Limits
- Request Limit: 50 requests per 10 seconds
- Points System: Query cost based on fields returned
- Response Headers:
X-Podchaser-Points-Remaining: Available pointsX-Podchaser-Query-Cost: Points consumed
Example costs:
- Basic podcast metadata: ~9 points
- Search 10 podcasts with details: ~100 points
Guidelines
1. Store Access Token: Tokens last 1 year, avoid requesting new tokens for each query 2. Preview Costs: Use /graphql/cost endpoint to estimate query cost before execution 3. Use Limited Scope: For client-side apps, request tokens with limited_scope: true (1 hour expiry) 4. Optimize Queries: Request only needed fields to minimize points consumption 5. Handle Rate Limits: Check Retry-After header on 429 responses 6. Security: Never expose regular access tokens in client-side code