Skip to content
Portable discography schema for YAML/JSON
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Portable Music Discography Schema (YAML/JSON)

There are many existing schemas for music metadata on the web [1]. However, existing music schemas tend to be either too specific to their implementation, too general for discography use, or too difficult to implement.

The goal of this project is to define a discography schema in YAML/JSON to allow a band, artist, or record label to manage their discography metadata using a portable and human readable file format. It is not intended to replace fully spec'd XML schemas, or backend databases, it is meant to complement and help connect existing applications and services.

Example use cases for a YAML/JSON format:

  • Import/export discography information into open web apps like Pushtape Cassette [2] and Cash Music
  • A resource for generating flat file music sites, using Jekyll, Express JS, or similar
  • An API response for a music website
  • Input for a streaming music player on the web
  • Networked music discography applications (i.e. a decentralized, open source version of Spotify)
  • Can be read and edited by hand, as well as by a machine
  • Can be converted quickly into many other formats


  • This is an experimental YAML/JSON implementation for importing/exporting discographies.
  • How this information is parsed and displayed is dependent on the application that imports/exports it.


  • CHANNEL INFO: The first level items describe the discography itself, similar to RSS channel level info. Title, Publish date, URL, Image, Author, Description, lastBuild time.

  • RELEASES is an array of items. Each item can either be a single track entity or an album entity containing an array of tracks. Your discography should be structured in such a way that you only have to define things once, and that nesting and track order are implied. We want to avoid overengineered semantics, data redundancy and circuitious node referencing when possible to keep things human readable.


  • Explore differences between discography.yaml and cassette.json. For instance, discography.yaml assumes information is embedded directly, while cassette.json assumes most information is delivered via a network resource -- primarily file URIs such as, artwork.jpg, and tracklist.jspf.
  • Clarify what minimum fields are required to make this useful: i.e. Every release needs a Title & URI


[1] Existing Music Schemas for the web

  • Musicbrainz XML
  • Microformat
  • Discogs JSON
  • Music Ontology
  • Podcasts / RSS
  • Media RSS

[2] Background:

You can’t perform that action at this time.