mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-11 19:47:12 +03:00
Full skill-builder rebuild of transistor per issue #407: - scripts/transistor (renamed from transistor-cli): 19 commands covering the verified API surface - user probe (GET /v1; the /v1/user route does not exist), shows/episodes with corrected pagination[page]/pagination[per], the dedicated episode publish endpoint (PATCH /v1/episodes/:id/publish with episode[status]=draft|scheduled|published), authorize-upload flow, the three real analytics routes with downloads[] array summing, subscriber management incl. batch, and webhooks. Write bodies are form-encoded bracket keys exactly as documented; dry-run plans carry method/path/params/body; publish guard refuses audio-less episodes. Fixed stale claims: /analytics/show -> /v1/analytics/..., totals -> downloads arrays, pagination[limit] -> pagination[per], user email -> name/time_zone, dropped invented episodes_count/subscribers_count and POST /v1/shows (show creation is dashboard-only). - scripts/test_transistor.py: 50 offline tests (pytest + unittest green, proxy-trap clean) covering help, argument errors, dry-run plans, canned JSON:API compound-document parsing (data/attributes/relationships/ included[]), write-path body shapes, publish guard, create->audio-> publish pipeline, and HTTP error signatures. - references/: auth+JSON:API envelope with jq patterns, endpoint catalog, publish lifecycle with documented request/response shapes, gotchas field guide + worked recipes; all cited to live-verified sources. - evals/evals.json: 8 schema-v1 cases incl. two should-not-trigger probes. - SKILL.md rewritten (308 lines), README refreshed, root README blurb and generated catalogs synced (marketplace.json + llms.txt descriptions). Publish-body shape reconciliation: the contract's data.id+data.type JSON:API PATCH premise was falsified by current official docs (verified 2026-08-29) and the flimzy/transistor Go SDK; implemented reality escalated in handoff (see library/transistor-api-facts.md). Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
66 lines
3.0 KiB
Markdown
66 lines
3.0 KiB
Markdown
# Transistor.fm — Podcast Hosting from the Terminal
|
|
|
|
Manage your Transistor.fm podcast account over its official API: browse
|
|
shows and episodes, publish episodes, pull download analytics, and run
|
|
private-podcast subscriber lists — all from the terminal.
|
|
|
|
## Why Install This Skill
|
|
|
|
When your agent loads this skill, it can **operate your Transistor.fm
|
|
podcast hosting** without the dashboard, including the part no other tool
|
|
gives an agent: the full episode publish lifecycle.
|
|
|
|
- **Publish episodes end to end** — create a draft, attach audio (URL or
|
|
authorized local-file upload), then publish or schedule it through
|
|
Transistor's dedicated publish endpoint
|
|
- **Browse your catalog** — shows, episodes, drafts, season/number
|
|
metadata, with JSON:API compound documents unwrapped for jq
|
|
- **Track downloads** — per-day analytics windows for shows and episodes,
|
|
summed and ready for reports
|
|
- **Run private podcasts** — list, add (single or batch), and revoke
|
|
subscribers; register webhooks so you push instead of poll
|
|
- **Stay under the rate limit** — dry-run request plans and clear 429
|
|
guidance (Transistor allows 10 requests per 10 seconds)
|
|
|
|
## What You Get
|
|
|
|
| Path | Purpose |
|
|
|------|---------|
|
|
| `SKILL.md` | Command reference, publish-lifecycle recipe, jq guidance, gotchas |
|
|
| `scripts/transistor` | Bundled Python CLI for the Transistor.fm v1 API (read + write commands) |
|
|
| `scripts/test_transistor.py` | Offline mocked test suite (canned JSON:API documents, zero network) |
|
|
| `references/auth-and-basics.md` | API-key auth, JSON:API envelope and jq patterns, pagination, errors |
|
|
| `references/endpoint-catalog.md` | Every endpoint's method, path, and parameters |
|
|
| `references/episode-publish-lifecycle.md` | Draft → audio → publish/schedule/unpublish, exact request shapes |
|
|
| `references/gotchas-and-recipes.md` | Symptom → cause → fix guide plus multi-step workflows |
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
export TRANSISTOR_API_KEY="<API_KEY>" # Dashboard -> Account -> API Access
|
|
|
|
transistor user # verify the key
|
|
transistor shows # list your podcasts
|
|
transistor episodes --status draft # what is not out yet?
|
|
|
|
# Publish pipeline: create (draft) -> attach audio -> publish
|
|
EP=$(transistor episode-create --show <SHOW_ID> --title "Ep 12" \
|
|
--audio-url "https://example.com/ep12.mp3" --json | jq -r '.id')
|
|
transistor episode-publish --id "$EP"
|
|
```
|
|
|
|
`--help` and `--dry-run` work without an API key; preview any request with
|
|
`transistor --dry-run episode-publish --id 123`.
|
|
|
|
## Triggers
|
|
|
|
Load this skill when the user mentions Transistor or Transistor.fm, podcast
|
|
hosting, publishing a podcast episode, scheduling or unpublishing episodes,
|
|
podcast download analytics, or private podcast subscribers.
|
|
|
|
## Requirements
|
|
|
|
Python 3.8+ with `requests`, plus a Transistor.fm API key (Account page →
|
|
API Access). The key carries your dashboard role per podcast; treat it like
|
|
a password. No other services or credentials are involved.
|