There is too much duplication of effort in public media product development. We can do a better job sharing practices and things we build for ourselves that could be useful to others. The Public Media Kitchen Toolkit is a collection of interesting things we're all working on. The intention is first to inform but over time move to direct collaboration.

Click here for information about the next Public Media Potluck - the Public Media Kitchen's in person meetup January 17-18th, 2019 in San Francisco, CA.

The Toolkit

Instructions for updating this list can be found in this GitHub project's readme file.


Streaming Media

StreamMachine: Next-generation streaming audio infrastructure for radio stations

StreamMachine is an open-source streaming audio server aimed at pushing innovation for radio stations that have spent too many years running old technology like Shoutcast and Icecast. The project has two goals: emulating the traditional streaming experience and building support for new features that push the radio listening experience forward. Currently StreamMachine supports traditional Shoutcast-style streaming and HTTP Live Streaming. SCPR has run StreamMachine in production since 2012.

RateIt App: A Rails engine for rating items.

Validates users using OAuth and the rated thing using injected plugins. Implementations of this ratings engine include the APM|MPR Alexa skill and the APM Radio app (coming to Public Media Kitchen February 2018)

This is a Knight funded project built by APM|MPR.

Top Music: A year-end list generated by your audiences' votes

This app provides a user interface for allowing the display of a large number of items that can be selected by an authenticated user. There is code for importing songs and fetching album artwork and works with OAuth for authentication.

This is a Knight funded project built by APM|MPR.


On-Demand Media

Resound: A suite of applications to help with the storage, management, and distribution of digital audio

The goal of the project is that it's plug-and-play with existing systems, and is easy to use for any user in any given organization. This is a Knight funded project built by SCPR in collaboration with NYPR, WHYY, and NPR-DS.

APM Go and Bragi API: A personal playlist app and supporting backend API.

The front end of this project is a React based player that allows an authenticated user to play and archive audio from a variety of participating websites. The back end of this project is an API that stores data about individual users, what audio files they have saved and whether they are in a new or archived state.

This is a Knight funded project built by APM|MPR.


Data Management


IoT (Internet of Things)

Alexa Skill for Music Stations: An example Alexa Skill for playing live streams and calling Composer API to identify song info

This is a simple skill that demonstrates live music streaming and interacting with the NPR Composer API, initially developed for WYEP

Alexa Skill Share

Developed by APM|MPR with funding from the Knight Foundation.
The base code is here.

A small library to reduce boilerplate and enable sharing of state handlers and intents between skills. Easily compose intents to create a state handler, and compose state handlers to create an Alexa skill lambda handler. This library is currently up and running in a development version of the skill for The Current.


Content Management Systems

Slimdown A library for structured, markdown based pages

Slimdown is a simple gem to allow you to easily add static pages to your app via a folder full of Markdown files. There is also a PHP version available.


Social Media & 3rd Party Platforms

Audiograms A library for generating shareable videos from audio clips

Unlike audio, video is a first-class citizen of social media. It's easy to embed, share, autoplay, or play in a feed, and the major services are likely to improve their video experiences further over time. WNYC's solution to this problem was this library. Given a piece of audio to share on social media, this can generate a video with that audio and some basic accompanying visuals: a waveform of the audio, a theme for the show it comes from, and a caption. For more backstory, read this post.

oEmbed Proxy Simple library to manage first party, embedly, and custom oembeds

At MPR/APM, producers want to include content from tons of third party systems. Many of these support oEmbeds, a spec for content embedding. To handle these, we built the oEmbed Proxy which is a single place to support first party oembeds (where the provider supports oembeds natively), Embed.ly oembeds (where they built support for a pile of additional content providers), and "Fauxembeds (where we build our own embed providers for sites which do not support it). The oEmbed Proxy is highly extensible and makes it easy to add additional oEmbed providers.


Mobile Apps


Design Systems


Marketing Methodologies / Case Studies


Analysis


Live Blogs

Scribble Live: Commercial liveblog tool

Used by MPR News. Has generally been a no fuss hosted service though there have been some speed bumps getting https setup properly.

Sourcefabric Live Blog: Opensource live blog

Based on OSS Superdesk CMS.

Slack Live Blog Slack-based live blog

OSS project that uses Rails 4.2 and the slack-api gem to generate a live blog fed from a Slack channel. Does not appear to be actively maintained.

Live Coverage Forms For (and From) the Immediate Future: SRCCON 2017 session on live events coverage

A deck about—and some examples of—experiments around live event coverage. Most of the software listed was not opensource or commercially available at the time of the presentation.