5

Since Google actively supports the Music microdata structure, I would like to implement this on a site that publishes music mixtapes.

In context of this website, music mixes are usually 60 minute compilations of music, weaved together in a seamless fashion, much like the experience you'd get when going to an Electronic Dance Music festival.

Problem with the MusicRecording schema

The format of the website doesn't match this microdata structure closely enough. For example, Google Webmasters indicates that my submitted microdata is missing the inablum.name, location and startDate properties. I have no desire of fixing these errors because they do not actually befit my content.

Alternative microdata structures

The main problem with alternative schemas is that I haven't seen official recognition by Google. Other problems are:

  • BlogPosting

    The expected schema for content that is delivered through WordPress, the software on which the website runs. While content can be considered a blog post, its contents are usually little more than a blockquote from the mix artist, and a tracklist for the music used in the mix.

  • Review

    While supported by Google, my content doesn't actually review the mix. It provides information about it. At best, my visitors' comments could be considered mini-reviews, but I have already structured them as Comments.

  • MediaObject

    The main issue with this schema is that it's supposedly used inside another schema as a complement. I don't think it's a good solution to build my entire page's content around MediaObjects.

  • AudioObject

    While more accurate than MediaObject, it faces the same limitations.

What is a suitable microdata structure for music mixes?

What I need seems to exist in schemas, but I only a little bit from each of them. Ideally, a schema that is right for me, would include the following microdata properties:

  • Name of artist who created the mix compilation (may be a sub schema, for instance a Person or PerformingGroup)
  • Name of the mix compilation
  • Artwork of the mix compilation
  • List of musical works incorporated in the mix compilation, in order of appearance.
  • Duration of mix compilation
  • URL to audio file: the actual mix compilation
  • Date of publishing
  • Audio format and encoding (for example MP3)
  • Comments about this content (may be in sub schema, for instance Comment)

Perhaps someone could produce a example of a combination of schemas to include all required properties that Google Webmaster could throw errors on. I'm kind of lost at this point which schema is best for my content.

4
  • These are Schema.org classes/types, not Microformats.
    – unor
    Commented Feb 17, 2014 at 21:01
  • @unor, you are right, I thought the terminology was interchangeable but I will edit my wording to reflect the use of Schema.org classes. Commented Feb 17, 2014 at 21:07
  • can you not just be general and use thing? Commented Feb 26, 2014 at 15:51
  • @liam-sorsby unless it's accepted by Google and displayed in their SERPs, that is not an option for me. Commented Feb 26, 2014 at 19:35

2 Answers 2

1
+50

Google understands microdata, so even if there's a pice of it that it's not mentioned on their list, you still can use it. But in any case, using your restrictions, I think this may work.

<div id="container_for_compilation" itemscope itemtype="http://schema.org/CreativeWork">
    <div id="image_for_compilation" itemscope itemtype="http://schema.org/ImageObject">
        <img src="http://domain.com/some_picture.jpg" title="super compilation 2014" alt="great description of the image" itemprop="image" />
        <span class="hidden" itemprop="about">compilation title</span>
    </div>
    <div itemscope itemtype="http://schema.org/MusicAlbum">
        <h1 itemprop="name">compilation title</h1>
        <p itemprop="creator">by somebody</p>
        <p>Created <span itemprop="dateCreated">2014-01-01</span></p>
        <div id="track_itself" itemprop="track" itemscope itemtype="http://schema.org/MusicRecording">
            <meta itemprop="name" content="compilation title" />
            <meta itemprop="duration" content="P60M" />
            <meta itemprop="url" content="http://domain.com/compilation_file.mp3" />
            <meta itemprop="inAlbum" content="none" />
        </div>
        <h2>duration</h2>
        <p itemprop="timeRequired">60 minutes</p>
        <h2>Download the file</h2>
        <p><a href="http://domain.com/compilation_file.mp3" itemprop="url">name_of_compilation</a></p>
        <h2>Technical info of the file</h2>
        <dl>
            <dt>audio format</dt>
            <dd itemprop="encoding">mp3</dd>
            <dt>sample rate</dt>
            <dd>320 kbps</dd>
        </dl>
        <h2>Created in</h2>
        <p>01 - 01 - 2014</p>
    </div>
    <div itemscope itemtype="http://schema.org/ItemList">
        <meta itemprop="about" content="compilation title" />
        <h2 itemprop="name">tracks</h2>
        <ul>
            <li itemprop="itemListElement">01. track name by an artist</li>
            <li itemprop="itemListElement">02. track name by an artist</li>
            <li itemprop="itemListElement">03. track name by an artist</li>
        </ul>
    </div>
    <div id="container_for_comments" itemscope itemtype="http://schema.org/CreativeWork">
        <h2>comments</h2>
        <div id="comment_1" itemscope itemtype="http://schema.org/Comment">
            <p itemprop="text">bla bla bla</p>
            <p>author: <span itemprop="author">some guy</span></p>
            <span class="hidden" itemprop="about">compilation title</span>
        </div>
        <div id="comment_2" itemscope itemtype="http://schema.org/Comment">
            <p itemprop="text">bla bla bla</p>
            <p>author: <span itemprop="author">some guy</span></p>
            <span class="hidden" itemprop="about">compilation title</span>
        </div>
    </div>
</div>

Of course the use of some span, meta and ids are just to point out the information that should be used.

The main problem with the structure of schema.org for music (and other elements) and your criteria is that compilations are not a common thing. Schema.org is not prepared for uncommon things; unless you consider using the expand system.

So, some information have to be duplicated, like name of album and name of song. Of course you can mix more kinds or subcategories, but then is more difficult to relate those parts.

Another element to consider, is that you can use the about to relate information, and that works, but only as a conceptual idea, specially if there are more than one element with the same name. You can use the "isBasedOnUrl" for the songs list, but then you need a specific url for each one.

Also, considering that the songs are not the tracks of the album, you have to move them out of that category and relate them to the album/compilation using the about.

You can find the testing of the code above in here. There may be other options, but I most probably would go with that one with the relevant adjustments to the actual page.

2
  • Thank you for the answer and example source code. I agree that my requirements are not very common, but that a mix-and-match of schemas would help me get there eventually. But I thought I would be restricted to the schemas Google recognizes on their list. Do you have a source to back up your statement that I can use unlisted schemas, and Google would still recognize and use it in their SERPs? Commented Feb 27, 2014 at 7:40
  • 1
    If you check some of these sites, you'll see that they have different results on google. For some you'll have to look on the specific country version of Google, like .co.uk. Of course, some come very low in SERP, some come higher. I have to look for more references, but I also remember that some categories started slowly, like recipes. I'm not sure if it was supported from the beginning.
    – PatomaS
    Commented Feb 27, 2014 at 8:21
0

Is the MusicPlaylist schema a possible option? Perhaps specifying a value for inPlaylist removes any requirements for the inAlbum attributes.

If you were able to post an example URL if your current HTML markup including the schema attributes, then using the Google Webmaster Rich Snippets Tool we might be able to do some trial-and-error style troubleshooting to help provide a more comprehensive solution.

1
  • The MusicPlaylist wouldn't suit my setup, since my compilations do not actually consist of individual audio tracks. The compilation is a continuously mixed single track. Also, the post is published through WordPress, which won't allow me to set up microdata tags in a fool-proof way for my authors using ordered lists. Commented Feb 26, 2014 at 14:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.