Version: 2.0
Overview
dotstudioPRO requests that content catalogs are provided in the commonly-used Media RSS (MRSS) format. Other formats are accepted but generally result in a longer integration cycle. This document describes the relevant parts of the MRSS specification and shows how dotstudioPRO would prefer the asset metadata to be formatted.
Format
Feeds must follow the below format, where each <item> element contains metadata for a single Movie, TV Episode, Season, or Series.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:dotstudiopro="https://www.dotstudiopro.com/rss/extensions/" version="2.0">
<channel>
<title>THE TITLE OF YOUR FEED GOES HERE</title>
<link>https://your.domain/path/to/mrss</link>
<language>en-us</language>
<item>
METADATA FOR ITEM #1
</item>
<item>
METADATA FOR ITEM #2
</item>
</channel>
</rss>
A custom dotstudioPRO namespace is used to aid in the creation of dotstudioPRO channels and taxonomy-related definitions.
xmlns:dotstudiopro="https://www.dotstudiopro.com/rss/extensions/"
Other feed specifications
- Providers should aim to ensure that the XML files are valid. Free validation tools are available, such as this at FreeFormatter.com.
- Staging feeds can be sent ahead of time to verify the fields, but dotstudioPRO will only fully test production feeds.
- All time and date stamps should adhere to the ISO8601 standard, unless otherwise specified
Taxonomy
Each item in a feed will be ingested into dotstudioPRO as one: Movie, Episode, Season, or Series. The below table outlines the types of assets that can be ingested into dotstudioPRO using MRSS.
Item | Description | Required Metadata |
Movie |
An item that contains a GUID, Title, and video file, but NO Episodic Metadata is considered a Movie. This can be a freestanding video such as a feature film or short. This item will be ingested into dotstudioPRO as a video with no attached channels or playlists. |
|
Episode |
Any item that contains a GUID, Title, video file AND an Episodic Type value of "episode" is considered an Episode. Usually this represents an episode of serial television but could also be part of a playlist of related videos or a video intended to be grouped with other videos. This item will be ingested into dotstudioPRO as a video nested within a playlist. It will grouped into a playlist with other videos that share a Series ID. The playlist will be assigned to the corresponding Season item. |
|
Season |
Any item that contains a GUID, Title and Episodic Type value of "season" is considered a Season. This represents a group of associated videos. Generally it is a playlist of videos or a season of serialized television. This item will be ingested into dotstudioPRO as a Single Channel. The channel will contain a playlist of all associated episodes. The channel will be assigned to the corresponding Series item. |
|
Series |
Any item that contains a GUID, Title and Episodic Type value of "series" is considered a Series. This represents a group of associated seasons. This is usually a TV series, and represents the highest level of taxonomy in DSP. This item will be ingested into dotstudioPRO as a Parent Channel. The channel will contain all all associated Season items. |
|
Required Metadata
The following tables describe the required and optional elements, and give examples of how those elements must appear in the XML. Unless otherwise stated and permitted by the XSD, elements must appear no more than once per asset.
Elements | Description |
GUID <guid isPermalink="false">
|
Required for ALL items. Globally unique identifier - must not change for the lifetime of the asset. GUIDs must not be reassigned to other assets. The “isPermaLink” attribute is required and must be passed as false, adhering to W3C.
<guid isPermalink="false">12345</guid>
|
TITLE <title>
|
Required for ALL items. The asset’s title. For TV Episodes it is usually best to only use the episode name and not include episode numbers or series titles. For Seasons, the format "Series Title - Season #" is recommended.
<title>Big Buck Bunny</title>
|
VIDEO FILES <media:group>
|
Required for ONLY Movies and Episodes. A URL pointing to wherever the video file asset to be ingested is stored. These URLs must always appear using a <media:content element>, that is nested within a <media:group> element. URL's must use an HTTP or HTTPS and not an FTP prefix. YouTube URL's, end cards, and annotations are not supported. Ingest of both MP4 and HLS files is supported. MP4 is generally the preferred format as HLS files can not be transcoded or stored by dotstudioPRO.
Supported Type Attributes: "video/mp4", "application/x-mpegURL" Supported File Extensions: MP4, M3U8 <media:group>
|
EPISODIC <dotstudiopro:episodic type="episode">
|
Required for ONLY Episode, Season, Series. Denotes whether an item is an Episode, Season, or Series using the type attribute. This element uses subelements. Type Attributes: episode, season, series <dotstudiopro:episodic>
|
Required Episodic Elements
This set of elements defines how playlists are created in dotstudioPRO and how they are organized into series/seasonal/episodic groups (“channels” in dotstudioPRO). This element must be omitted for non-episodic assets.
The dotstudiopro:episodic element may be entirely omitted - such assets must be manually assigned to a playlist/channel in the CMS after ingest.
Elements | Description |
SERIES ID (AKA. PARENT ID) <dotstudiopro:seriesID>
|
Required only for Episodes and Seasons. Denotes the parent item for an Episode or Season. It must match exactly to the parent object's GUID . For Episodes: this value must contain the corresponding GUID for the parent Season.
<dotstudiopro:seriesID>12345</dotstudiopro:seriesID>
|
SEASON NUMBER <dotstudiopro:season>
|
Required only for Episodes and Seasons. The season number for and episode or season. The sequence number for a given TV Episode within its parent season. This element only supports integer values less than 99. Broadcast/production number formats (example: E402 or S4E02) are not supported.
<dotstudiopro:season>1</dotstudiopro:season>
|
EPISODE NUMBER <dotstudiopro:episode>
|
Required only for Episodes. The sequence number for a given TV Episode within its parent season. This element only supports integer values less than 99. Broadcast/production number formats (example: E402 or S4E02) are not supported. When playlists are created in dotstudioPRO, videos will be sorted ascending by this value.
<dotstudiopro:episode>3</dotstudiopro:episode>
|
ORDER IN SERIES <dotstudiopro:orderInSeries>
|
Optional. Only required for Seasons that do not include a Season Number. Used by dotstudioPRO for sequencing seasons within a series, when no season number is provider.
<dotstudiopro:orderInSeries>1</dotstudiopro:orderInSeries>
|
Optional Metadata
Optional Media
Image and timed text files are also supported but not required for feed ingest. If not provided by feed, they can be manually uploaded within the CMS.
Elements | Description |
IMAGES <media:thumbnail>
|
Video assets should have at least one image, such as a thumbnail or poster art. dotstudioPRO will crop and/or scale these images to the appropriate size for each of its client applications so providers should offer at least one high resolution original in the aspect ratio required by your client application (usually 16:9). In addition to a URL attribute containing the image path, width and height attributes containing the image dimensions in pixels must also be included. An asset type should be provided, if possible. The logo and key_art types are only supported for Seasons and Series.
Supported Asset Types: poster, wallpaper, thumbnail, logo, key_art, spotlight_poster Supported Extensions: JPG or PNG <media:thumbnail width="1280" height="720" type="thumbnail"
|
TIMED TEXT <media:subTitle>
|
Timed text files should be provided if available using the <media:subTitle> element for a movie or tv episode. Supported formats are SRT and VTT. The lang and type attributes are required for all timed text files. The kind attribution is optional. If no kind attribute is provided, the timed text language will be compared against the video language value. Matching values will be ingested as captions, non-matching values will be treated as subtitles.
Supported Types: application/srt, application/vtt Supported Kind Attributes: subtitles, captions, sdh Supported Languages: English, Spanish, Latin American Spanish, French, German, Italian, Japanese, Cantonese, Mandarin, Hindi, Russian, Afrikaans, Amharic, Arabic, Armenian, Assamese, Azerbaijani, Bengali, Burmese, Chinese Unspecified, Czech, Danish, Dutch, Esperanto, Finnish, Greek, Gujarati, Hausa, Hebrew, Hungarian, Icelandic, Igbo, Indonesian, Javanese, Kannada, Kazakh, Khmer, Kinyarwanda, Korean, Kurdish, Latin, Malay, Marathi, Nepali, Norwegian, Persian, Polish, Portuguese, Punjabi, Romanian, Sindhi, Sinhala, Somali, Sotho, Sundanese, Swahili, Swedish, Tagalog, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Uzbek, Vietnamese, Welsh, Xhosa, Yiddish, Yoruba, Zulu Supported Extensions: SRT, VTT <media:subTitle type="application/srt" lang="English" kind=”subtitles”
|
Other Optional Elements
Elements | Description |
DISPLAY TITLE <title type="display"> |
The title to display in end-user applications. This may be different than the assets title defined higher in the specification to help aid in organizing content in the CMS.
<title type="display">Big Buck Bunny</title> |
DESCRIPTION <description>
|
A plaintext, human-readable description of the asset, as it should appear in the client application. HTML and other markup should be avoided. Maximum 500 characters.
<description>This is a description.</description> |
RATING <media:rating>
|
MPAA or TV Parental Guidance Rating. This parameter is case-sensitive. Please note dotstudioPRO does not accept adult films.
Supported Values: g, nc-17, nr, pg, pg-13, r, tv-14, tv-g, tv-ma ,tv-pg, tv-y, tv-y7, x <media:rating>tv-14</media:rating>
|
RATING REASONS <media:text type="rating_reason">
|
A comma-separated list of the reasons for the rating provided. This parameter is case-sensitive.
Supported Values: Drug Use, Nudity, Fantasy Violence, Violence, Sexual Situations, Coarse or Crude Language, Suggestive Dialogue <media:text type="rating_reason">Drug Use</media:text>
|
GENRES <media:text type="genres">
|
A list of comma-separated genres into which the asset should be categorized. After content is ingested into dotstudioPRO it will be possible to dynamically generate genre-specific playlists. This parameter is case sensitive. The “Children” genre should only be used for content that is geared specifically towards kids. Content tagged with this genre will only appear in the kids programming section on some platforms.
Supported Values: Action, Adventure, Animals, Animated, Anime, Children, Comedy, Crime, Documentary, Drama, Educational, Fantasy, Faith, Food, Fashion, Gaming, Health, History, Horror, Miniseries, Mystery, Mature, News, Reality, Romance, Science, Science Fiction, Sitcom, Special, Sports, Thriller, Technology <media:text type="genres">Action,Thriller</media:text>
|
CREATIVE CREDITS <media:credit role="actor">
|
Notable entity and the contribution to the creation of the media object. Multiple values can be provided for each type, but must be provided as separate rows/elements.
Type Attributes: actor, director, writer <media:credit role="actor">Alan Smithee</media:credit>
|
TAGS <media:keywords>s
|
A list of comma-separated tags which can be used to sort and curate content in dotstudioPRO. Can be used to create dynamic playlists within dotstudioPRO in the future.
<media:keywords>sports,football</media:keywords>
|
LANGUAGE <media:text type="language">
|
The primary language of the asset. This parameter is case-sensitive.
Supported Languages: English, Spanish, Latin American Spanish, French, German, Italian, Japanese, Cantonese, Mandarin, Hindi, Russian, Afrikaans, Amharic, Arabic, Armenian, Assamese, Azerbaijani, Bengali, Burmese, Chinese Unspecified, Czech, Danish, Dutch, Esperanto, Finnish, Greek, Gujarati, Hausa, Hebrew, Hungarian, Icelandic, Igbo, Indonesian, Javanese, Kannada, Kazakh, Khmer, Kinyarwanda, Korean, Kurdish, Latin, Malay, Marathi, Nepali, Norwegian, Persian, Polish, Portuguese, Punjabi, Romanian, Sindhi, Sinhala, Somali, Sotho, Sundanese, Swahili, Swedish, Tagalog, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Uzbek, Vietnamese, Welsh, Xhosa, Yiddish, Yoruba, Zulu <media:text type="language">English</media:text>
|
COUNTRY <media:text type="country">
|
2 letter, ISO Alpha-2 formatted country code representing the country where the content was produced.
<media:text type="country">CA</media:text>
|
YEAR <year>
|
Year of release.
<year>2016</year> |
ORIGINAL RELEASE DATE <media:text type="or_release_date">
|
The original release date is the date when the asset or title was first premiered in any form (broadcast, theatrical, etc.). The format is YYYY-MM-DD.
<media:text type="or_release_date">2020-01-21</media:text>
|
GRACENOTE ID <media:text type="tms_id">
|
Gracenote ID of the title or video. This parameter is case-sensitive.
<media:text type="tms_id">EP001234567890</media:text> |
CUSTOM FIELDS <dotstudiopro:customField key="my-key"> |
Defines a custom key:value pair. Multiple custom fields can be included with each asset.
<dotstudiopro:customField key="my-key">my-value</dotstudiopro:customField> |
The below optional elements are taxonomy specific. These datapoints will only be saved for the item types listed.
Elements | Description |
PROGRAMMING TYPE <media:text type="programming_type"> |
Defines the type of programming for the Channel. This parameter is case-sensitive.
<media:text type="programming_type">Behind the Scenes</media:text> |
CATEGORY <dotstudiopro:category>
|
The dotstudioPRO CMS is capable of providing an additional layer of categorization of channels into “categories”. After content is categorized clients have the option of distributing certain categories (ie “groups” of channels) to specific platforms. In this way your content catalogue on Roku can look different from Apple TV… etc
Providing a category with a series asset will either create that category if it doesn’t exist yet (with all publishing set to “off” by default) - or add the channel to a previously created category if one exists with the same name.
<dotstudiopro:category>New Releases</dotstudiopro:category> |
COPYRIGHT <media:text type="copyright"> |
Allows you to add some verbiage to explain any copyright restrictions on the asset. Generally formatted as [Copyright Holder, YYYY].
<media:text type="copyright">Studio A</media:text> |
SERIES TITLE <media:text type="series_title"> |
If the asset is part of a series (or any other grouping which is episodic in nature) the title of the series can be saved with the video asset. This will aid with content management and search in the CMS.
<media:text type="series_title">Behind the Scenes</media:text> |
SHORT DESCRIPTION (movies/episodes only) <description type="short">
|
A plaintext, human-readable description of the asset, as it should appear in the client application. HTML and other markup should be avoided. Maximum 200 characters.
<description type="short">This is short desc.</description> |
VIDEO TYPE <media:text type="video_type"> |
Defines the type of video. This parameter is case-sensitive.
Supported Values: Full Movie, Full Episode, Teaser Trailer, Behind the Scenes, Commentary, Concert, Condensed Game, Current Preview, Documentary, Excerpt, Event, Full Game, Game Play, Highlights, Instructional, Interview, Music Video, Outtake, Performance, Recap, Short, Short Film, Sneak Peek, Special, Web Exclusive, Web-series <media:text type="video_type">Behind the Scenes</media:text> |
PUBLISH DATE <pubDate>
|
The publish date is the date the content should first appear in your content catalogue. If the pub date is not provided then it will default to the date and time when dotstudioPRO first ingests the asset. The date format must conform to the ISO8601 Date and Time Standard. Note dotstudioPRO does not use pubDate to schedule content release - this will be done through the CMS after content is ingested.
<pubDate>2020-01-01T20:00:00.000Z</pubDate> |
SUNSET DATE <media:text type="sunset_date">
|
The sunset date signifies the end of the validity period for the asset. The date format must conform to the ISO8601 Date and Time Standard.
<media:text type="sunset_date">2020-01-01T20:00:00.000Z</media:text> |
STUDIO/CONTENT PROVIDER (movies/episodes only) <media:text type="studio"> |
Defines the studio or content provider for the asset.
<media:text type="studio">Studio A</media:text> |
GEO RESTRICTIONS <dotstudiopro:include> |
Comma-separated list of countries (ISO Alpha-2 formatted) representing the countries in which this content is allowed to be played back. If no geo restriction value is passed it is assumed there are no restrictions on this asset. Also called Geoblocking.
<dotstudiopro:include>US,CA</dotstudiopro:include> |
AD MARKERS <dotstudiopro:adMarkers>
|
Assets may include cue points indicating where ad breaks could occur. This is done by using the <dotstudiopro:adMarkers> element. Each child node of this element contains a time in seconds, relative to the start of the video, at which an ad break should occur, as well as how many ads should be played during that break. Values must be positive integers.
<dotstudiopro:adMarkers>
|
Updating Metadata via MRSS
After content has been ingested once, the feed can be continued to be polled for updates to certain metadata parameters. MRSS can only update other videos that were ingested via MRSS or CSV. For a title to update, the feed must use the exact GUID that was used during initial ingest.
Some data points can be updated via MRSS, while others must be managed within the CMS. Media files (videos, timed text, and images) and IMDB URL's cannot be updated via MRSS.
Data Fields that Will Update on Subsequent Polling |
|
|
|
Sample MRSS Feed
The below sample includes several example items including: 1 series, 2 seasons, and 2 episodes.
- Series: Silicon Valley (containing two child seasons)
- Season: Silicon Valley - Season 1 (containing two episodes)
- Season: Silicon Valley - Season 2 (empty)
- Episode: Minimum Viable Product (S1E1)
- Episode: A Cap Table (S1E2)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:dotstudiopro="https://www.dotstudiopro.com/rss/extensions/" version="2.0">
<channel>
<title>Example Feed</title>
<link>https://your.domain/path/to/mrss</link>
<language>en-us</language>
<item>
<guid isPermaLink="false">0000000000</guid>
<title>Silicon Valley</title>
<description>The series focuses on five young men who founded a startup in Silicon Valley.</description>
<description type="short">Five young men make a startup.</description>
<media:thumbnail width="1280" height="720" type="poster" url="https://example.com/image11"/>
<media:thumbnail width="1280" height="720" type="spotlight_poster" url="https://example.com/image12"/>
<dotstudiopro:episodic type="series"/>
<dotstudiopro:category>New Releases</dotstudiopro:category>
<media:text type="country">US</media:text>
<media:text type="genres">Comedy,Sitcom</media:text>
<media:text type="programming_type">Series</media:text>
<media:text type="imdb_url">https://www.imdb.com/title/tt000/</media:text>
<dotstudiopro:customField key="my-key">my-value</dotstudiopro:customField>
</item>
<item>
<guid isPermaLink="false">1111111111</guid>
<title>Silicon Valley - Season 1</title>
<description>Richard Hendricks creates an app known as Pied Piper...</description>
<media:thumbnail width="1280" height="720" type="poster" url="https://example.com/image21"/>
<media:thumbnail width="500" height="200" type="logo" url="https://example.com/image22"/>
<media:text type="genres">Comedy,Sitcom</media:text>
<dotstudiopro:customField key="my-key">my-value</dotstudiopro:customField>
<dotstudiopro:episodic type="season">
<dotstudiopro:seriesID>0000000000</dotstudiopro:seriesID>
<dotstudiopro:orderInSeries>1</dotstudiopro:orderInSeries>
<dotstudiopro:episodic/>
</item>
<item>
<guid isPermaLink="false">2222222222</guid>
<title>Silicon Valley - Season 2</title>
<description>Belson promotes Big Head to Hooli...</description>
<media:text type="genres">Comedy,Sitcom</media:text>
<media:thumbnail width="1280" height="720" type="poster" url="https://example.com/image31"/>
<media:thumbnail width="500" height="200" type="logo" url="https://example.com/image32"/>
<dotstudiopro:episodic type="season">
<dotstudiopro:seriesID>0000000000</dotstudiopro:seriesID>
<dotstudiopro:orderInSeries>2</dotstudiopro:orderInSeries>
<dotstudiopro:episodic/>
</item>
<item>
<title>Minimum Viable Product</title>
<description>Richard Hendricks is a low-level programmer...</description>
<guid isPermalink="false">5ade62de99f81553036a043b</guid>
<media:group>
<media:content duration="1000" type="video/mp4" url="https://example.com/bucket/s1e1.mp4"/>
<media:content trailer="true" url="https://example.com/bucket/s1e1_trailer.mp4"/>
</media:group>
<media:thumbnail width="1280" height="720" type="thumbnail" url="https://example.com/video1thumbnail.jpg"/>
<media:thumbnail width="1280" height="720" type="poster" url="https://example.com/video1poster.jpg"/>
<dotstudiopro:adMarkers>
<dotstudiopro:cuePoint time="0" numAds="2"/>
<dotstudiopro:cuePoint time="200" numAds="1"/>
</dotstudiopro:adMarkers>
<media:subTitle type="application/vtt" lang="English” kind="captions" href="http://www.example.org/captions1e1.vtt" />
<media:subTitle type="application/vtt" lang="English” kind="sdh" href="http://www.example.org/sdh1e1.vtt" />
<media:subTitle type="application/srt" lang="Spanish” kind="subtitles" href="http://www.example.org/subtitles1e1.srt" />
<media:credit role="actor">Thomas Middleditch</media:credit>
<media:credit role="actor">TJ Miller</media:credit>
<media:credit role="director">Mike Judge</media:credit>
<media:credit role="writer">Mike Judge</media:credit>
<media:text type="genres">comedy,sitcom</media:text>
<media:keywords>silicon-valley,california,tech,pilot,funny</media:keywords>
<media:text type="video_type">Full Episode</media:text>
<pubDate>2018-07-23T22:49:03.000Z</pubDate>
<media:rating>tv-14</media:rating>
<dotstudiopro:episodic type="episode">
<dotstudiopro:seriesID>1111111111</dotstudiopro:seriesID>
<dotstudiopro:season>1</dotstudiopro:season>
<dotstudiopro:episode>1</dotstudiopro:episode>
</dotstudiopro:episodic>
</item>
<item>
<title>The Cap Table</title>
<description>After rejecting Belson's offer and siding with Peter...</description>
<guid isPermalink="false">5ade62de99f81553036a043b</guid>
<media:group>
<media:content duration="1000" type="video/mp4" url="https://example.com/bucket/s1e2.mp4"/>
<media:content trailer="true" url="https://example.com/bucket/s1e2_trailer.mp4"/>
</media:group>
<media:thumbnail width="1280" height="720" type="thumbnail" url="https://example.com/video2thumbnail.jpg"/>
<media:thumbnail width="1280" height="720" type="poster" url="https://example.com/video2poster.jpg"/>
<dotstudiopro:adMarkers>
<dotstudiopro:cuePoint time="0" numAds="2"/>
<dotstudiopro:cuePoint time="200" numAds="1"/>
</dotstudiopro:adMarkers>
<media:subTitle type="application/vtt" lang="English” kind="captions" href="http://www.example.org/captions1e1.vtt" />
<media:subTitle type="application/vtt" lang="English” kind="sdh" href="http://www.example.org/sdh1e1.vtt" />
<media:subTitle type="application/srt" lang="Spanish” kind="subtitles" href="http://www.example.org/subtitles1e1.srt" />
<media:credit role="actor">Thomas Middleditch</media:credit>
<media:credit role="actor">TJ Miller</media:credit>
<media:credit role="director">Mike Judge</media:credit>
<media:credit role="writer">Mike Judge</media:credit>
<media:text type="genres">comedy,sitcom</media:text>
<media:keywords>silicon-valley,california,tech,pilot,funny</media:keywords>
<media:text type="video_type">Full Episode</media:text>
<pubDate>2018-07-23T22:49:03.000Z</pubDate>
<media:rating>tv-14</media:rating>
<dotstudiopro:episodic type="episode">
<dotstudiopro:seriesID>1111111111</dotstudiopro:seriesID>
<dotstudiopro:season>1</dotstudiopro:season>
<dotstudiopro:episode>2</dotstudiopro:episode>
</dotstudiopro:episodic>
</item>
</channel>
</rss>
Version History
Version | Date | Update Notes |
1.0 | 11/22/19 | Initial spec release |
1.1 | 12/09/19 | Added some new supported parameters such as Series Title & added support for automatic category creation within the CMS |
1.2 | 10/20/20 |
Added support for the following parameters:
Removed IMDB URL (video assets only) |
1.3 | 02/16/22 | Added support for custom fields at title level. |
2.0 | 03/20/24 |
Spec document migrated to Zendesk. Added section defining <item> types and taxonomy. Added support for the timed text file Kind attribute. |
Updated