🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Transistor FM

by @christophrumpel

Manage podcasts on Transistor.fm via their API. Use when creating, publishing, updating, or deleting podcast episodes, uploading audio files, listing shows/e...

Versionv1.0.0
Downloads875
TERMINAL
clawhub install transistorfm

πŸ“– About This Skill


name: transistor-fm description: Manage podcasts on Transistor.fm via their API. Use when creating, publishing, updating, or deleting podcast episodes, uploading audio files, listing shows/episodes, checking analytics, or managing private podcast subscribers. Triggers on any Transistor.fm podcast management task.

Transistor.fm Podcast Management

Manage podcasts hosted on Transistor.fm through their REST API.

Prerequisites

  • Transistor.fm API key (from Dashboard β†’ Account)
  • Store as environment variable TRANSISTOR_API_KEY or retrieve from a secrets manager
  • Quick Reference

    All requests use base URL https://api.transistor.fm/v1 with header x-api-key: . Rate limit: 10 requests per 10 seconds.

    For full endpoint details, parameters, and response formats, see references/api.md.

    Core Workflows

    List shows and episodes

    # Get all shows
    curl -s "$BASE/shows" -H "x-api-key: $KEY"

    Get episodes for a show

    curl -s "$BASE/episodes?show_id=SHOW_ID" -H "x-api-key: $KEY"

    Upload audio and create an episode

    Three-step process:

    # 1. Get authorized upload URL
    UPLOAD=$(curl -s "$BASE/episodes/authorize_upload?filename=episode.mp3" -H "x-api-key: $KEY")
    

    Extract upload_url and audio_url from response

    2. Upload the audio file

    curl -X PUT -H "Content-Type: audio/mpeg" -T /path/to/episode.mp3 "$UPLOAD_URL"

    3. Create episode with the audio_url

    curl -s "$BASE/episodes" -X POST -H "x-api-key: $KEY" \ -d "episode[show_id]=SHOW_ID" \ -d "episode[title]=My Episode" \ -d "episode[summary]=Short description" \ -d "episode[audio_url]=$AUDIO_URL"

    Episode is created as draft. Publish separately.

    Publish an episode

    # Publish now
    curl -s "$BASE/episodes/EPISODE_ID/publish" -X PATCH -H "x-api-key: $KEY" \
      -d "episode[status]=published"

    Schedule for future

    curl -s "$BASE/episodes/EPISODE_ID/publish" -X PATCH -H "x-api-key: $KEY" \ -d "episode[status]=scheduled" \ -d "episode[published_at]=2026-03-01 09:00:00"

    Check analytics

    # Show-level (last 14 days default)
    curl -s "$BASE/analytics/SHOW_ID" -H "x-api-key: $KEY"

    Episode-level

    curl -s "$BASE/analytics/episodes/EPISODE_ID" -H "x-api-key: $KEY"

    Custom date range (dd-mm-yyyy)

    curl -s "$BASE/analytics/SHOW_ID?start_date=01-01-2026&end_date=31-01-2026" -H "x-api-key: $KEY"

    Tips

  • Episodes are always created as drafts β€” publish is a separate step, allowing review before going live
  • Use episode[increment_number]=true to auto-assign the next episode number
  • episode[description] supports HTML; episode[summary] is plain text
  • Audio upload URLs expire in 600 seconds β€” upload promptly after authorizing
  • Use sparse fieldsets to reduce response size: fields[episode][]=title&fields[episode][]=status
  • βš™οΈ Configuration

  • Transistor.fm API key (from Dashboard β†’ Account)
  • Store as environment variable TRANSISTOR_API_KEY or retrieve from a secrets manager
  • πŸ“‹ Tips & Best Practices

  • Episodes are always created as drafts β€” publish is a separate step, allowing review before going live
  • Use episode[increment_number]=true to auto-assign the next episode number
  • episode[description] supports HTML; episode[summary] is plain text
  • Audio upload URLs expire in 600 seconds β€” upload promptly after authorizing
  • Use sparse fieldsets to reduce response size: fields[episode][]=title&fields[episode][]=status