live.voxport.podcast.episode

A podcast episode belonging to a series

Repository @voxport.live did:plc:hhtgwctzcuhlkqrxu526sco5 namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authoritypodcast.voxport.live
Indexed

Record

record · key tid

Properties

audio

blob

Audio file reference

  • maxSize: 524288000
  • accept: audio/mpeg, audio/mp4, audio/wav, audio/ogg, audio/aac

Byte size of the audio file when using audioUrl. Required for a valid RSS enclosure — without this, a firehose consumer cannot reconstruct the feed from records alone.

  • minimum: 0

audioType

string

MIME type of the audio file when using audioUrl. Pairs with audioLength for RSS enclosure reconstruction.

  • maxLength: 64
  • knownValues: audio/mpeg | audio/mp4 | audio/wav | audio/ogg | audio/aac

audioUrl

string · uri

External audio URL (if not using blob)

Reference to the Atmosphere cross-post (app.bsky.feed.post) for this episode. Set when the episode is auto-cross-posted, enabling custom feed operators to discover the cross-post from the episode record.

Episode chapters/timestamps

  • maxLength: 100
itemsref
Reference

createdAt

requiredstring · datetime

duration

integer

Duration in seconds

  • minimum: 0

Episode number in series

  • minimum: 1

Episode type per RSS spec

  • maxLength: 16
  • default: "full"
  • knownValues: full | trailer | bonus

explicit

boolean

Whether episode is explicit

image

blob

Episode-specific cover art

  • maxSize: 2097152
  • accept: image/png, image/jpeg

Original GUID from RSS feed (for imported episodes)

  • maxLength: 2048

persons

array

People associated with this episode — hosts, guests, co-hosts (Podcasting 2.0 podcast:person)

  • maxLength: 50
itemsref
Reference

publishedAt

string · datetime

Publication date (null = draft)

Season number

  • minimum: 1

series

requiredref

Reference to parent series (uri + optional cid)

Short clip markers for apps to surface (Podcasting 2.0 podcast:soundbite)

  • maxLength: 20
itemsref
Reference

summary

string

Episode description/show notes (supports markdown)

  • maxLength: 10000

tags

array

Episode tags/keywords

  • maxLength: 20
itemsstring
  • maxLength: 64

title

requiredstring

Episode title

  • maxLength: 256

Episode transcript (singular — deprecated, prefer transcripts array)

Reference

Episode transcripts — multiple entries for different languages/formats (Podcasting 2.0 podcast:transcript). Preferred over the singular transcript field.

  • maxLength: 20
itemsref
Reference

updatedAt

string · datetime

#chapter

object

Properties

endTime

integer

End time in seconds (optional)

hidden

boolean

Whether the chapter is hidden from the table of contents (Podcasting 2.0 toc:false)

image

string · uri

startTime

requiredinteger

Start time in seconds

title

requiredstring
  • maxLength: 256

url

string · uri

Chapter link URL (Podcasting 2.0 chapter url)

#person

object

Properties

did

string · did

ATProto DID if the person has a verified identity

group

string

Group from the Podcast Taxonomy Project (e.g. cast, writing, visuals). Defaults to 'cast' if absent.

  • maxLength: 64

handle

string · handle

ATProto handle (e.g. alice.bsky.social) if the person has a Bluesky account

image

string · uri

Profile image URL (maps to podcast:person img attribute)

name

requiredstring

Full name or alias of the person (spec: max 128 chars)

  • maxLength: 128

role

string

Role from the Podcast Taxonomy Project (e.g. host, guest, co-host). Defaults to 'host' if absent.

  • maxLength: 64

url

string · uri

External profile URL (maps to podcast:person href attribute)

#soundbite

object

Properties

duration

requiredstring

Duration in fractional seconds (e.g. '60.0', '42.25'). Matches Podcasting 2.0 spec exactly.

  • maxLength: 16

startTime

requiredstring

Start time in fractional seconds (e.g. '73.0', '1234.5'). Matches Podcasting 2.0 spec exactly.

  • maxLength: 16

title

string

Title/label for the soundbite (spec: max 128 chars)

  • maxLength: 128

#transcript

object

Properties

language

string · language

Language of the transcript (defaults to feed language if absent)

rel

string

If 'captions', the file is a closed captions file with time codes

  • maxLength: 16
  • knownValues: captions

type

requiredstring

MIME type of the transcript file

  • maxLength: 64
  • knownValues: text/plain | text/html | text/vtt | application/x-subrip | application/json

url

requiredstring · uri

URL of the transcript file

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A single podcast episode.

  • A podcast episode. Record key is a UUIDv5 derived from the podcast GUID (as namespace) and the episode's feedItemGuid (as name), enabling deterministic lookup from RSS feed metadata.

  • A podcast episode belonging to a show.

  • org.swappulse.podcastEpisode

    record not from the namespace authority

    A podcast episode (often derived from a voice space recording), mirrored to AT Protocol as a real org.swappulse.podcastEpisode record so episodes are portable and playable across instances.

  • A podcast series/channel owned by a creator on VoxPort