org.atpodcasting.episode
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"chaptersRef": {
"description": "Reference to an externally hosted chapters file.",
"properties": {
"mimeType": {
"description": "MIME type of the chapters file (e.g. application/json+chapters).",
"type": "string"
},
"url": {
"description": "URL of the chapters file.",
"format": "uri",
"type": "string"
}
},
"required": [
"url",
"mimeType"
],
"type": "object"
},
"main": {
"description": "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.",
"key": "any",
"record": {
"properties": {
"alternateMedia": {
"description": "Alternate versions of the episode media (e.g. different formats or audio-only versions of video episodes).",
"items": {
"ref": "#mediaRef",
"type": "ref"
},
"maxLength": 10,
"type": "array"
},
"artwork": {
"accept": [
"image/png",
"image/jpeg"
],
"description": "Episode-specific artwork. Overrides the podcast artwork when set. Recommended: 1400x1400 to 3000x3000 pixels, square, no alpha channel.",
"maxSize": 5000000,
"type": "blob"
},
"chapters": {
"description": "Reference to an externally hosted chapters file.",
"ref": "#chaptersRef",
"type": "ref"
},
"createdAt": {
"description": "When the episode record was created.",
"format": "datetime",
"type": "string"
},
"description": {
"description": "A description or show notes for the episode.",
"maxLength": 10000,
"type": "string"
},
"duration": {
"description": "Duration of the episode in seconds.",
"minimum": 1,
"type": "integer"
},
"episodeNumber": {
"description": "Episode number within its season or the overall series.",
"minimum": 1,
"type": "integer"
},
"episodeType": {
"description": "The type of episode. Defaults to full.",
"knownValues": [
"full",
"trailer",
"bonus"
],
"type": "string"
},
"explicit": {
"description": "Whether the episode contains explicit content. Overrides the podcast-level setting when set.",
"type": "boolean"
},
"feedItemGuid": {
"description": "The original feed item identifier. Must match the <guid> element of the corresponding RSS feed item. The record key (rkey) is derived from this value as uuid5(<podcast:guid>, feedItemGuid).",
"maxLength": 2000,
"type": "string"
},
"link": {
"description": "URL of a companion webpage or show notes page for the episode.",
"format": "uri",
"type": "string"
},
"media": {
"description": "The primary media file for the episode.",
"ref": "#mediaRef",
"type": "ref"
},
"podcast": {
"description": "Identifies the parent podcast. Since episodes live in the same repository as their podcast, the AT URI is always derivable from the episode's DID and the podcastGuid.",
"ref": "org.atpodcasting.defs#podcastRef",
"type": "ref"
},
"publishedAt": {
"description": "When the episode was published.",
"format": "datetime",
"type": "string"
},
"seasonNumber": {
"description": "Season number of the episode.",
"minimum": 1,
"type": "integer"
},
"title": {
"description": "The title of the episode.",
"maxLength": 500,
"type": "string"
},
"transcript": {
"description": "References to externally hosted transcript files (e.g. VTT, SRT, JSON). Multiple entries allow providing transcripts in different formats.",
"items": {
"ref": "#transcriptRef",
"type": "ref"
},
"maxLength": 10,
"type": "array"
}
},
"required": [
"podcast",
"title",
"media",
"publishedAt",
"duration",
"feedItemGuid",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"mediaRef": {
"description": "Reference to an externally hosted media file.",
"properties": {
"mimeType": {
"description": "MIME type of the media file (e.g. audio/mpeg, video/mp4).",
"type": "string"
},
"url": {
"description": "URL of the media file.",
"format": "uri",
"type": "string"
}
},
"required": [
"url",
"mimeType"
],
"type": "object"
},
"transcriptRef": {
"description": "Reference to an externally hosted transcript file.",
"properties": {
"language": {
"description": "Language of the transcript (ISO 639-1 two-letter code, e.g. 'en', 'es', 'pt').",
"format": "language",
"type": "string"
},
"mimeType": {
"description": "MIME type of the transcript file (e.g. text/vtt, application/x-subrip, application/json).",
"type": "string"
},
"url": {
"description": "URL of the transcript file.",
"format": "uri",
"type": "string"
}
},
"required": [
"url",
"mimeType"
],
"type": "object"
}
},
"id": "org.atpodcasting.episode",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mla4fbm6mt3f25pehrsl3jum - CID
-
bafyreib5bfxznappjn2v7bpbgipkvcwtpx5wer4xea5dsirf7vjgxaggie - Indexed At
- 2026-02-18 19:43 UTC
- AT-URI
-
at://did:plc:mla4fbm6mt3f25pehrsl3jum/com.atproto.lexicon.schema/org.atpodcasting.episode
Referenced Schemas (1)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
place.pod.episode record
A single podcast episode.
-
live.voxport.podcast.episode record
A podcast episode belonging to a series
-
pink.vase.pod.episode record
A podcast episode belonging to a show.
-
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.
-
org.atpodcasting.podcast record
A podcast feed/show. Record key is the podcast's Podcasting 2.0 UUIDv5 GUID, enabling direct lookup from RSS feed metadata.