yb.podcast.publish

Assemble a publishable podcast episode from a media file.

Produces the per-episode asset bundle in an output directory: an MP3 (with ID3 chapters embedded), show-notes text, a PSC chapter sidecar, a chapters JSON, and optionally a cover-over-audio video for video platforms. Delivery to a host/Spotify is via RSS (yb.podcast.feed) — this prepares the assets and a ready-to-use yb.podcast.feed.EpisodeFeedItem stub.

Functions

prepare_podcast_episode(media, output_dir, *)

Build a podcast episode bundle from media into output_dir.

Classes

PodcastEpisode(audio, show_notes[, ...])

Paths to the generated episode assets.

class yb.podcast.publish.PodcastEpisode(audio, show_notes, chapters_psc=None, chapters_json=None, cover_video=None, content=None, extras=<factory>)[source]

Bases: object

Paths to the generated episode assets.

yb.podcast.publish.prepare_podcast_episode(media, output_dir, *, content=None, audio=None, cover_image=None, make_cover_video=False, ken_burns=False, embed_chapters=True, language='English', brand=None, extra_context=None, audio_bitrate='192k')[source]

Build a podcast episode bundle from media into output_dir.

Parameters:
  • media (str | Path) – Source audio or video.

  • output_dir (str | Path) – Directory to write the episode assets into.

  • content (PublicationContent | None) – Precomputed PublicationContent; built via yb.content.prepare_content() when omitted.

  • audio (str | Path | None) – Explicit episode audio. When omitted, media is used if it is audio, else its audio track is extracted to MP3.

  • cover_image (str | Path | None) – Cover art (required for make_cover_video).

  • make_cover_video (bool) – Also render a cover-over-audio mp4 (e.g. for YouTube).

  • ken_burns (bool) – Apply a Ken Burns pan/zoom to the cover video.

  • embed_chapters (bool) – Embed ID3 chapter frames into the episode MP3.

  • extra_context (str | None) – Forwarded to prepare_content.

  • audio_bitrate (str) – Bitrate for extracted MP3 audio.

Return type:

PodcastEpisode

Returns:

A PodcastEpisode with the asset paths.