MOS Running Order Manager

Open source Python library for managing TV and radio running orders


Can we create a system to produce a complete running order from messages emitted by the newsroom computer system in order to extract detailed information about TV and radio programmes?

When our production teams create TV and radio programmes, lots of useful detailed information is thrown away as soon as the content is broadcast.

We want to retrieve this information, make it machine readable and offer it up to others to use and consume.

This preserved production information can enrich our digital output. With a complete running order and timing information, you can chapterise content on iPlayer or BBC Sounds. We could even alert users of relevant upcoming live content ahead of time - if we process the running order changes in real time.

By preserving information such as the the script, story title and the media used, we can make content text searchable or make better summaries and personalised recommendations.

How does it work?

Like many traditional broadcasters, the BBC uses the MOS Protocol for communications between newsroom computers and servers where media files such as audio and video are kept.

Production teams create running orders using OpenMedia, and every time they add details or make changes, MOS XML messages are emitted by the newsroom computer systems. We've created a way to process these messages to build up a machine-readable version of the running order.

What is mosromgr?

We developed a general solution for dealing with MOS messages - a Python library called mosromgr. It's based on open standards and could be useful to other broadcasting organisations, so we've released it under an open source licence.

The library provides functionality for classifying MOS file types, processing and inspecting MOS message files, as well as merging MOS files into a running order, and providing a "complete" programme.

What have we used mosromgr for?

Now that we have a system for assembling a running order, we have been able to put some ideas into action.

We have used mosromgr to build a pipeline to process MOS messages in real time. This pipeline can update a status dashboard and publish completed MOS running orders and JSON summaries to an internal document store

Screenshot of the mosromgr status page.

The status dashboard helps us to identify any issues that arose during processing and see which programmes are being processed

The pipeline can also populate a directory of programmes with new episodes and lists of stories (complete with timing information) as they become available.

Screenshot of the mosromgr programmes directory showing thumbnail images of BBC programmes branding.

The programmes directory shows the programmes we're processing

This list of stories with timing information is available automatically.

Screenshot of the chapters in an episode of Newsnight.

A chapterised breakdown of an episode of Newsnight

We have also developed a proof-of-concept in which a note in the running order triggers a notification for an upcoming story allowing people to watch along live. The notification can also redirect so the clip can be watched on-demand.

Screenshot of a tweet generated from data in a programme running order.

A test tweet linking to a Newsnight story

What's next for mosromgr?

We've released a beta version of the library, and we aim to gather feedback from other broadcasting organisations to ensure the library is compatible with other systems and workflows.

We also have other project ideas which could use mosromgr as a way to increase the value of our digital output, such as chapterising programmes on iPlayer and BBC Sounds, automatically segmenting content and providing personalised content recommendations to users based on the topics and individuals featured in stories within programmes, rather than the theme of the whole programme.

Extracting information from running orders unlocks huge potential for innovation in personalisation and will now allow us to develop further prototypes and prove concepts without requiring production teams to change their workflows.


  • We have successfully developed a system for producing complete running orders.
  • We have released the library under an open source licence.
  • We aim to gather feedback from other broadcasting organisations to ensure the library is compatible with other systems and workflows.


Love data and code?

We'd like to hear from you.