tl-live-music-data

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
<!-- Copyright (c) 2026 Todd Levy. Licensed under MIT. SPDX-License-Identifier: MIT -->
<!-- Copyright (c) 2026 Todd Levy. Licensed under MIT. SPDX-License-Identifier: MIT -->

Live Music Data APIs

现场音乐数据API

Reference documentation for live music data APIs and how they connect via external IDs. Covers artist metadata, concert events, setlists, and images across multiple providers.
现场音乐数据API及其通过外部ID关联方式的参考文档,涵盖多家提供商的艺人元数据、演唱会活动、演出曲目单和图片内容。

When to Use

使用场景

  • "How do I get concert data for an artist?"
  • "Which API should I use for setlists?"
  • "How do I resolve artist IDs across platforms?"
  • Building applications that need artist metadata, concert events, or setlists
  • Resolving artist identities across multiple platforms
  • Integrating live music data APIs
  • "如何获取某艺人的演唱会数据?"
  • "哪个API适合获取演出曲目单?"
  • "如何跨平台解析艺人ID?"
  • 构建需要艺人元数据、演唱会活动或演出曲目单的应用
  • 跨平台解析艺人身份
  • 集成现场音乐数据API

Outcomes

预期成果

  • Analysis: API selection based on data requirements
  • Reference: Endpoint documentation, auth patterns, rate limits
  • Decision: ID resolution strategy (MBID hub vs name search)

  • 分析:根据数据需求选择合适的API
  • 参考:端点文档、认证模式、速率限制
  • 决策:ID解析策略(MBID中心 vs 名称搜索)

API Quick Reference

API快速参考

Tier 1: Core APIs (High Value, Easy Access)

第一层级:核心API(高价值、易访问)

APIAuthRate LimitPrimary UseReference
MusicBrainzUser-Agent1 req/secID hub, external IDs, releasesmusicbrainz.md
Setlist.fmAPI keyUndocumentedSetlists, song datasetlistfm.md
WikidataNoneReasonableCross-references, SPARQLwikidata.md
DiscogsUser-Agent60/min authDiscography, releasesdiscogs.md
nugs.netNone~2/secLive recordings catalognugs.md
API认证方式速率限制主要用途参考文档
MusicBrainzUser-Agent1 req/secID中心、external IDs、releasesmusicbrainz.md
Setlist.fmAPI key未公开演出曲目单、歌曲数据setlistfm.md
Wikidata合理限制跨平台参考、SPARQLwikidata.md
DiscogsUser-Agent60次/分钟(认证后)音乐作品目录、releasesdiscogs.md
nugs.net~2次/秒现场录音目录nugs.md

Tier 2: Events and Concerts

第二层级:活动与演唱会

APIAuthRate LimitPrimary UseReference
JamBaseAPI key3,600/hourMost comprehensive eventsjambase.md
SongkickAPI keyUndocumentedGigography (KEYS SUSPENDED)songkick.md
BandsintownApp IDUndocumentedArtist events, tour datesbandsintown.md
TicketmasterAPI key5,000/dayEvents, venues, ticketsticketmaster.md
API认证方式速率限制主要用途参考文档
JamBaseAPI key3,600次/小时最全面的活动数据jambase.md
SongkickAPI key未公开演出履历(密钥已暂停)songkick.md
BandsintownApp ID未公开艺人活动、巡演日期bandsintown.md
TicketmasterAPI key5,000次/天活动、场馆、票务ticketmaster.md

Tier 3: Supplementary Data

第三层级:补充数据

APIAuthRate LimitPrimary UseReference
Last.fmAPI keySoft limitSimilar artists, tagslastfm.md
Fanart.tvAPI keyUndocumentedHigh-res artwork (needs MBID)fanarttv.md
TheAudioDBAPI key2/sec freeMetadata, imagestheaudiodb.md
GeniusOAuth 2.0UndocumentedSong annotations (no lyrics)genius.md
API认证方式速率限制主要用途参考文档
Last.fmAPI key软限制相似艺人、标签lastfm.md
Fanart.tvAPI key未公开高清作品封面(需MBID)fanarttv.md
TheAudioDBAPI key2次/秒(免费版)元数据、图片theaudiodb.md
GeniusOAuth 2.0未公开歌曲注释(无歌词)genius.md

Tier 4: Avoid / Difficult Access

第四层级:需避免/访问困难

APIIssue
AllMusicNo public API - scraping only
IMDBAWS Data Exchange subscription required
SpotifyRequires app review for production
API问题
AllMusic无公开API - 仅支持网页抓取
IMDB需要AWS Data Exchange订阅
Spotify生产环境需通过应用审核

Web Scraping Fallback

网页抓取备选方案

When APIs are unavailable (Tier 4) or rate-limited, use web scraping as a fallback. Workflow escalation: search → scrape → crawl.
bash
undefined
当API不可用(第四层级)或受速率限制时,可使用网页抓取作为备选方案。工作流优先级:搜索 → 抓取 → 爬取。
bash
undefined

Scrape a single artist page to markdown

Scrape a single artist page to markdown

firecrawl scrape "https://www.allmusic.com/artist/mn0000004789" --only-main-content -o .firecrawl/artist.md
firecrawl scrape "https://www.allmusic.com/artist/mn0000004789" --only-main-content -o .firecrawl/artist.md

Wait for JS rendering (SPA sites)

Wait for JS rendering (SPA sites)

firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md
firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md

Extract structured data with a query

Extract structured data with a query

firecrawl scrape "https://example.com/artist" --query "What are the upcoming tour dates?"

**Best practices for music data scraping**:
- Respect `robots.txt` and rate limit aggressively (1-2 req/sec)
- Cache scraped content for 7+ days
- Prefer APIs when available - scraping breaks when sites change
- Use `--only-main-content` to skip navigation/ads

See [firecrawl/cli skills](https://skills.sh/firecrawl/cli) for comprehensive scraping patterns.

---
firecrawl scrape "https://example.com/artist" --query "What are the upcoming tour dates?"

**音乐数据抓取最佳实践**:
- 遵守`robots.txt`并严格控制速率(1-2 请求/秒)
- 缓存抓取内容7天以上
- 优先使用API - 网站变更会导致抓取失效
- 使用`--only-main-content`参数跳过导航栏/广告

查看[firecrawl/cli技能](https://skills.sh/firecrawl/cli)获取完整的抓取模式。

---

ID Mapping Architecture

ID映射架构

MusicBrainz serves as the central ID hub. Most services either accept MBID directly or can be resolved via MusicBrainz url-rels.
mermaid
flowchart LR
    subgraph hub [ID Hub]
        MB[MusicBrainz<br/>MBID]
    end
    
    subgraph direct [Accept MBID]
        Setlist[Setlist.fm]
        Fanart[Fanart.tv]
        Lastfm[Last.fm]
    end
    
    subgraph multi [Multi-ID Lookup]
        JamBase[JamBase<br/>12 ID sources]
    end
    
    subgraph linked [Via url-rels]
        Discogs[Discogs]
        Wikidata[Wikidata]
        Spotify[Spotify]
    end
    
    subgraph name [Name Search Only]
        Bandsintown[Bandsintown]
        TM[Ticketmaster]
        Genius[Genius]
    end
    
    MB -->|MBID| direct
    MB -->|MBID or external ID| multi
    MB -->|url-rels lookup| linked
    MB -.->|artist name| name
MusicBrainz作为核心ID中心,大多数服务要么直接支持MBID,要么可通过MusicBrainz的url-rels进行解析。
mermaid
flowchart LR
    subgraph hub [ID Hub]
        MB[MusicBrainz<br/>MBID]
    end
    
    subgraph direct [Accept MBID]
        Setlist[Setlist.fm]
        Fanart[Fanart.tv]
        Lastfm[Last.fm]
    end
    
    subgraph multi [Multi-ID Lookup]
        JamBase[JamBase<br/>12 ID sources]
    end
    
    subgraph linked [Via url-rels]
        Discogs[Discogs]
        Wikidata[Wikidata]
        Spotify[Spotify]
    end
    
    subgraph name [Name Search Only]
        Bandsintown[Bandsintown]
        TM[Ticketmaster]
        Genius[Genius]
    end
    
    MB -->|MBID| direct
    MB -->|MBID or external ID| multi
    MB -->|url-rels lookup| linked
    MB -.->|artist name| name

Services That Accept MBID Directly

直接支持MBID的服务

ServiceEndpoint Pattern
Setlist.fm
/artist/{mbid}/setlists
Fanart.tv
/music/{mbid}
Last.fm
?method=artist.getInfo&mbid={mbid}
JamBase
/artists/id/musicbrainz:{mbid}
TheAudioDB
/artist-mb.php?i={mbid}
(Premium only)
服务端点格式
Setlist.fm
/artist/{mbid}/setlists
Fanart.tv
/music/{mbid}
Last.fm
?method=artist.getInfo&mbid={mbid}
JamBase
/artists/id/musicbrainz:{mbid}
TheAudioDB
/artist-mb.php?i={mbid}
(仅付费版)

Services Requiring url-rels Lookup

需要通过url-rels查询的服务

Get external IDs from MusicBrainz first:
GET /ws/2/artist/{mbid}?inc=url-rels&fmt=json
Returns IDs for: spotify, discogs, wikidata, allmusic, lastfm, imdb, bandcamp, soundcloud, youtube
先从MusicBrainz获取外部ID:
GET /ws/2/artist/{mbid}?inc=url-rels&fmt=json
返回以下平台的ID:spotify、discogs、wikidata、allmusic、lastfm、imdb、bandcamp、soundcloud、youtube

JamBase Multi-ID Support

JamBase多ID支持

JamBase accepts 12 different ID sources:
/artists/id/{source}:{id}

Sources: jambase, musicbrainz, spotify, ticketmaster, seatgeek, 
         eventbrite, axs, dice, etix, seated, viagogo, eventim-de

JamBase支持12种不同的ID来源:
/artists/id/{source}:{id}

来源: jambase, musicbrainz, spotify, ticketmaster, seatgeek, 
         eventbrite, axs, dice, etix, seated, viagogo, eventim-de

Environment Variables

环境变量

bash
undefined
bash
undefined

Tier 1

Tier 1

MUSICBRAINZ_USER_AGENT="AppName/1.0 (contact@example.com)" SETLISTFM_API_KEY="" DISCOGS_TOKEN=""
MUSICBRAINZ_USER_AGENT="AppName/1.0 (contact@example.com)" SETLISTFM_API_KEY="" DISCOGS_TOKEN=""

Tier 2

Tier 2

JAMBASE_API_KEY="" SONGKICK_API_KEY="" BANDSINTOWN_APP_ID="" TICKETMASTER_API_KEY=""
JAMBASE_API_KEY="" SONGKICK_API_KEY="" BANDSINTOWN_APP_ID="" TICKETMASTER_API_KEY=""

Tier 3

Tier 3

LASTFM_API_KEY="" FANARTTV_API_KEY="" THEAUDIODB_API_KEY="" GENIUS_ACCESS_TOKEN=""

---
LASTFM_API_KEY="" FANARTTV_API_KEY="" THEAUDIODB_API_KEY="" GENIUS_ACCESS_TOKEN=""

---

API Selection Guide

API选择指南

NeedRecommended API
Artist identity resolutionMusicBrainz (as hub)
Live events/concertsJamBase (most comprehensive)
Historical setlistsSetlist.fm
Artist imagesFanart.tv (if have MBID) or TheAudioDB
Similar artistsLast.fm
DiscographyDiscogs
Song metadataGenius
Live recordingsnugs.net

需求推荐API
艺人身份解析MusicBrainz(作为中心)
现场活动/演唱会JamBase(最全面)
历史演出曲目单Setlist.fm
艺人图片Fanart.tv(需MBID)或TheAudioDB
相似艺人Last.fm
音乐作品目录Discogs
歌曲元数据Genius
现场录音nugs.net

ID Resolution Strategy

ID解析策略

Starting with Artist Name

从艺人名称开始

  1. Search MusicBrainz for MBID
  2. Use MBID to get external IDs via url-rels
  3. Use external IDs with other services
  1. 在MusicBrainz中搜索获取MBID
  2. 使用MBID通过url-rels获取外部ID
  3. 将外部ID用于其他服务

Starting with Existing ID (Spotify, etc.)

从已有ID(如Spotify)开始

  1. Use JamBase
    /artists/id/{source}:{id}
    for direct lookup
  2. Or lookup in Wikidata via property (P1902 for Spotify)
  3. Resolve to MBID for other services

  1. 使用JamBase
    /artists/id/{source}:{id}
    直接查询
  2. 或通过属性在Wikidata中查询(Spotify对应P1902)
  3. 解析为MBID以用于其他服务

Rate Limit Summary

速率限制汇总

APIStrategy
MusicBrainz
sleep(1000)
between requests
DiscogsMonitor
X-Discogs-Ratelimit-Remaining
header
JamBase3,600/hour = ~1/sec sustained
Ticketmaster5,000/day = throttle during batch
TheAudioDB
sleep(500)
between requests

API策略
MusicBrainz
sleep(1000)
间隔请求
Discogs监控
X-Discogs-Ratelimit-Remaining
响应头
JamBase3,600次/小时 = 约1次/秒持续请求
Ticketmaster5,000次/天 = 批量处理时需限流
TheAudioDB
sleep(500)
间隔请求

OAuth 2.0 Patterns

OAuth 2.0模式

See OAuth 2.0 Patterns for the full Spotify Authorization Code + PKCE flow, the token refresh pattern, and recommended scopes per provider.

查看OAuth 2.0模式获取完整的Spotify授权码+PKCE流程、令牌刷新模式及各提供商推荐的权限范围。

Pagination Patterns

分页模式

See Pagination Patterns for cursor-based vs offset-based async iterators and the per-API pagination parameter table.

查看分页模式了解基于游标与基于偏移量的异步迭代器,以及各API的分页参数表。

Error Handling Matrix

错误处理矩阵

See Error Handling for the full retry strategy table by HTTP code, the
fetchWithRetry
implementation, and API-specific error code interpretations.

查看错误处理获取按HTTP状态码分类的完整重试策略表、
fetchWithRetry
实现及API特定错误码的解释。

Caching Recommendations

缓存建议

Data TypeTTL
Artist metadata7 days
Event listings1-4 hours
Setlists7-30 days
Images/artwork30+ days
External IDs30+ days

数据类型缓存有效期
艺人元数据7天
活动列表1-4小时
演出曲目单7-30天
图片/作品封面30天以上
外部ID30天以上

Local Data Architecture

本地数据架构

See Local Data Architecture for replica decision criteria, the external-ID-mapping schema (entities, entity_source_ids, sync_state), incremental sync patterns with overlap windows, ID resolution flow, the enrichment pipeline, and deletion/merge handling.

查看本地数据架构了解副本决策标准、外部ID映射 schema(entities、entity_source_ids、sync_state)、带重叠窗口的增量同步模式、ID解析流程、数据增强流水线及删除/合并处理方式。

Detailed Reference Files

详细参考文件

Each API has comprehensive documentation in the
references/
folder:
  • musicbrainz.md - ID hub, url-rels, search, rate limiting
  • setlistfm.md - Setlist search, MBID integration, response schemas
  • jambase.md - Multi-ID lookup, geo search, event filters
  • discogs.md - Discography, releases, rate headers
  • wikidata.md - SPARQL queries, property codes
  • nugs.md - Undocumented API, catalog methods
  • bandsintown.md - Artist events, date filters
  • ticketmaster.md - Events, attractions, venues
  • songkick.md - Gigography, calendar (keys suspended)
  • lastfm.md - Similar artists, tags, scrobbles
  • fanarttv.md - High-res images via MBID
  • theaudiodb.md - Metadata, images, free vs premium
  • genius.md - Annotations, OAuth, no lyrics via API

每个API在
references/
文件夹中都有完整文档:
  • musicbrainz.md - ID中心、url-rels、搜索、速率限制
  • setlistfm.md - 曲目单搜索、MBID集成、响应schema
  • jambase.md - 多ID查询、地理搜索、活动筛选
  • discogs.md - 音乐作品目录、发行内容、速率响应头
  • wikidata.md - SPARQL查询、属性代码
  • nugs.md - 未公开API、目录方法
  • bandsintown.md - 艺人活动、日期筛选
  • ticketmaster.md - 活动、演出方、场馆
  • songkick.md - 演出履历、日历(密钥已暂停)
  • lastfm.md - 相似艺人、标签、播放记录
  • fanarttv.md - 通过MBID获取高清图片
  • theaudiodb.md - 元数据、图片、免费版 vs 付费版
  • genius.md - 注释、OAuth、API不提供歌词

Skill Maintenance

技能维护

Keeping References Current

保持参考文档更新

Each reference file includes a "Keeping Current" section with:
  • Authoritative docs - Official documentation links
  • Version detection - How to check for API changes
  • Test endpoint - Quick verification command
  • Last verified - When this reference was last validated
每个参考文件都包含“保持更新”部分,内容包括:
  • 官方文档 - 官方文档链接
  • 版本检测 - 如何检查API变更
  • 测试端点 - 快速验证命令
  • 最后验证时间 - 该参考文档最后验证的时间

Monitoring for Changes

变更监控

CheckFrequencyMethod
Test endpointsWeeklyAutomated health checks
Documentation linksMonthlyLink validation
Version numbersMonthlyCheck API responses
Changelog reviewsMonthlyVisit official changelogs
检查项频率方法
测试端点每周自动化健康检查
文档链接每月链接有效性验证
版本号每月检查API响应
更新日志查看每月访问官方更新日志

Update Triggers

更新触发条件

Re-verify a reference when:
  • API returns unexpected errors
  • New features announced in changelog
  • Response structure differs from documented
  • Rate limits or auth requirements change
当出现以下情况时,重新验证参考文档:
  • API返回意外错误
  • 更新日志中宣布新功能
  • 响应结构与文档不符
  • 速率限制或认证要求变更

Contribution

贡献方式

To update this skill:
  1. Verify changes against official docs
  2. Test endpoints with real API calls
  3. Update "Last Verified" date
  4. Note breaking changes prominently

如需更新本技能:
  1. 根据官方文档验证变更内容
  2. 通过真实API调用测试端点
  3. 更新“最后验证时间”
  4. 突出标注破坏性变更

References

参考资料

Quilted Skills

Quilted技能

First-Party API Documentation

官方API文档

Community Resources

社区资源