Schema MusicAlbum JSON-LD
Build Schema.org MusicAlbum JSON-LD with name, artist (byArtist), release date, genre, label and tracklist (itemListElement of MusicRecording with ISO 8601 duration PT3M42S).
Como usar
Cole o <script type="application/ld+json">...</script> no <head> da página do álbum. O Google entende MusicAlbum + MusicRecording e pode exibir rich results em buscas musicais. A duração das faixas é convertida para o formato ISO 8601 (PT3M42S) conforme exigido por schema.org.
Schema.org MusicAlbum: structured data for album pages
JSON-LD MusicAlbum is the structured-data vocabulary defined by schema.org that tells Google, Bing and Yandex what an album page contains. When an album page exposes a well-formed @type: "MusicAlbum" object with byArtist, track and metadata, search engines can render music rich results — album covers in the knowledge panel, tracklists in carousels, "listen on" buttons that deep-link to Spotify, Apple Music, YouTube Music and Bandcamp. The same JSON-LD also feeds AI assistants (Gemini, ChatGPT search, Perplexity) when they answer "what songs are on this album?".
The minimal shape an album page should expose is below. Every track is a nested MusicRecording with an ISO 8601 duration (PT3M45S = 3 minutes 45 seconds):
{
"@context": "https://schema.org",
"@type": "MusicAlbum",
"name": "Acabou Chorare",
"albumProductionType": "StudioAlbum",
"byArtist": {
"@type": "MusicGroup",
"name": "Novos Baianos",
"sameAs": ["https://open.spotify.com/artist/...",
"https://musicbrainz.org/artist/..."]
},
"datePublished": "1972-09-01",
"genre": "MPB",
"recordLabel": "Som Livre",
"numTracks": 8,
"track": [{
"@type": "MusicRecording",
"name": "Brasil Pandeiro",
"duration": "PT4M21S",
"isrcCode": "BR-XYZ-72-00001",
"byArtist": { "@type": "MusicGroup", "name": "Novos Baianos" },
"inAlbum": { "@type": "MusicAlbum", "name": "Acabou Chorare" }
}]
}
Album production types and identifiers
Schema.org accepts a precise albumProductionType: StudioAlbum, LiveAlbum, CompilationAlbum, MixtapeAlbum, DemoAlbum, RemixAlbum, SoundtrackAlbum, SpokenWordAlbum. The albumReleaseType distinguishes AlbumRelease, SingleRelease, EPRelease, BroadcastRelease. Track-level isrcCode carries the International Standard Recording Code — the 12-character identifier (e.g. BR-XYZ-23-00001) issued by IFPI national agencies that uniquely tags every commercial recording in royalty systems.
Cross-linking with sameAs to streaming services
The sameAs property is the most underused win. Listing the album's Spotify URI, Apple Music ID, Tidal page, Bandcamp URL, YouTube Music link and MusicBrainz release MBID lets Google merge entities across services. The MusicBrainz ID is particularly valuable — it is the open, community-maintained canonical ID and is what knowledge graphs cross-reference. Add Genius as a lyrics provider via lyrics, and Discogs as a release database via additional sameAs entries.
Validation, tooling and ID3 reuse
Run the JSON-LD through Google Rich Results Test, schema.org validator and Lighthouse SEO audit. Common bugs: forgetting the PT prefix on ISO 8601 durations, mixing string and number types, or omitting @context. If you already write ID3 tags on MP3 files (TPE1 artist, TIT2 title, TLEN length), the same data maps 1:1 into MusicRecording — extract via mp3-tags, music-metadata on Node or mutagen in Python and feed the generator. For Brazilian artists (Anitta, Caetano Veloso, Marisa Monte, Tim Maia) pair this with hreflang and translated album notes to capture both EN and PT-BR rich results.
FAQ
Does MusicAlbum JSON-LD really improve SEO? Yes for rich results — Google explicitly documents album panels, tracklist carousels and "music" knowledge cards. Indirect ranking effects come from cleaner entity disambiguation.
Is it mandatory? No. Pages render fine without structured data, but they forfeit rich snippets, voice-assistant readability and AI-search citation. For music sites it's leaving money on the table.
Can the generator auto-detect Spotify metadata? Through OEmbed and Open Graph yes, but the Spotify Web API gives canonical data. Combine: Open Graph for human-facing share cards, JSON-LD MusicAlbum for machines.
Where do I put the script tag? Inside <head> as <script type="application/ld+json">. Multiple JSON-LD blocks per page are allowed and standard practice.
Related Tools
HTML Form Generator from JSON
Read a JSON schema with fields (label, name, type, required) and generate a complete HTML form with styled inputs and validation attrs.
Mock GraphQL Schema Generator
Generate a basic GraphQL schema (type, Query and Mutation) from a resource name. Speed up your API prototype and copy the ready SDL into your project.
Prisma Model Generator from Table
Generates a Prisma model block (schema.prisma) with id, name, email and timestamps from a table name.
Fake Paginated JSON Generator
Generate a fake paginated JSON response (with page, pageSize, total and items) to mock a REST API. Speed up front-end development and testing.
AWS S3 IAM Policy Generator
Generate an IAM JSON policy for AWS S3: read-only, write, full access or per-bucket custom. IAM-paste-ready.
Mongoose Model Generator from Collection
Generate a Mongoose (JS) Schema and model with basic fields and timestamps from a collection name. Speed up MongoDB modeling in your Node.js project.