← Files RiversideARCHIVED FILE
skills/podcast-hosting/SKILL.md
5.22 KB · Oct 8, 2026 · 12:02 UTC
--- name: podcast-hosting description: Use when the user wants to browse or manage a Riverside hosted podcast, create or update an episode, change podcast artwork, distribute a show, or read podcast download analytics. For video edits use video-editing; for clips posted to social accounts use social-publishing. --- # Podcast hosting Manage hosted shows and episodes through the `hosting_` tools on the same Riverside connection. Read the current tool schema before each call; schemas, `hosting_get_hosting_config`, and `hosting_get_podcast_guidelines` govern valid values and prerequisites. A missing tool is unavailable in this connection. ## Resolve the show and source Use `hosting_get_user_context` to establish the connected account. Browse with `hosting_list_podcasts` and `hosting_list_episodes`; inspect selected objects with `hosting_get_podcast` and `hosting_get_episode`. Page according to the current schemas. Ask the user to choose when several shows or episodes fit. Podcast and episode IDs are UUIDs. Studio identifiers are not interchangeable: `hosting_create_podcast` takes the studio **slug**, while `hosting_list_podcasts` takes the studio **id**. Resolve both from `platform_list_studios` or `platform_get_studio`; keep their field names. Episode creation takes exactly one source: - `sessionId`: the recording session ID. The hosting schema identifies the `id` returned by `platform_list_recordings` or `platform_get_recording` as this value; verify the intended recording. - `idClip`: a verified Riverside clip ID. Do not substitute an edit ID from `platform_list_edits`. If the clip ID is unknown, ask the user for the clip ID displayed beneath the recording on the Riverside project page. ## Create and update Before metadata writes, read `hosting_get_hosting_config` and `hosting_get_podcast_guidelines`. Collect the fields required by the live schema, including podcast categories and language. Podcast categories are hosting metadata, independent of the plugin directory's Creativity category. `hosting_create_podcast` creates a draft. If its optional artwork upload fails, the show may already exist: preserve the returned podcast ID and retry only `hosting_upload_cover_art` when requested. Do not create a second show. Use `hosting_create_episode` for the chosen source and `hosting_edit_podcast` or `hosting_edit_episode` for requested changes. Preserve fields the user did not ask to change. For a publication date, resolve the user's timezone and supply the schema's date and timezone fields; clarify an ambiguous wall-clock time before writing. Before publishing, scheduling, changing public metadata, replacing artwork, or connecting a distribution platform, show the target show/episode and exact changes and obtain confirmation. Confirmation of draft creation does not authorize subsequent publication or distribution. After a write, read the affected podcast or episode. Episode processing can continue after creation; report the returned state and use bounded status reads instead of recreating it. Before publishing a new episode, read `hosting_get_episode` and wait until it is ready. Stop and report processing or failed instead of sending a publish update. Do not force a processing episode to ready. After an unknown mutation outcome, reconcile with list/get reads before considering another write. ## Artwork and distribution `hosting_upload_cover_art` replaces show artwork. `hosting_upload_episode_artwork` replaces square episode art or a video thumbnail; a linked YouTube thumbnail may change as well. Use the current schema's size, format, and dimension rules. Image sources must be final public HTTPS URLs; do not send private URLs or credentials, or rely on redirects. Use `hosting_connect_platform` only for a requested, confirmed destination. The current workflow requires a nonprivate show and a published episode. Read live platform guidance: submitting a new show differs from supplying the URL of an existing show. A YouTube connection requests uploading existing episodes for the whole show; include that scope in the confirmation before calling the tool. Its returned authorization URL requires the user to complete OAuth. Do not treat an authorization URL as a completed connection. Verify distribution with `hosting_get_platform_links`. An empty connected-platform field on a podcast alone is not proof of disconnection. Submission, connection, and a playable episode on the destination are different outcomes; report only the returned evidence. There are no exposed hosting operations for deleting a show or episode, disconnecting a distribution platform, or managing subscribers. Do not invent them or use a social-account operation as a substitute. ## Analytics Use `hosting_get_podcast_analytics` or `hosting_get_episode_analytics` for the requested show, episodes, period, and mode. Read the schema's window and pagination requirements. Distinguish RSS downloads from YouTube views in the returned metrics; do not infer unique listeners or subscribers from either. `hosting_export_podcast_analytics_csv` returns inline CSV text, not a download URL. Its date window is inclusive in UTC. Respect the live window and response size bounds; narrow a window that exceeds them and describe the resulting coverage. Export analytics only when requested.
SHA-256: 1209277b827acbb29a2941b762e564644b45ebf88dc26288bcae572438b2c328