By default, the report covers the previous full calendar month:
- from day 01 of the previous month,
- through the last day of that month (23:59:59).
Yes! In the web UI, use the "Date From" and "Date To" fields to specify a custom date range (ISO format: YYYY-MM-DD).
No. All core metrics are calculated from a single time range (the previous month by default, or your custom range) based on scrobbles.
Top tags are assembled from the tags of the top artists in the selected month.
Last.fm often does not return a complete image field for every entity. The project has fallbacks, but not every entity has artwork in the API.
- artist: artist -> album -> track
- album: album -> artist -> track
- track: track/track album -> track album -> track artist -> top artist
In generated/report.png.
In generated/report.json.
In generated/report.typ.
In generated/assets.
Run:
npm run webThen open the local Next.js app in the browser.
The image preview is streamed from /api/report-image inside the Next.js app and points to generated/report.png.
All main modules can be toggled on/off in the web UI:
- Statistics - Artists, albums, tracks count
- Top Artists Mosaic - Grid of top artist images
- Top Items - Top artist, album, and track sections
- Word Cloud - Tag cloud from top artists
In the web UI, uncheck the corresponding checkbox in the "Modules" section.
The top artists mosaic shows album artwork for your top artists in a dynamic grid. You can set it to display 2, 4, 6, 8, or 10 artists.
The report has three text color modes:
- Auto (default) - Automatically chooses white or black based on the background luminance
- Light - Always uses white text
- Dark - Always uses black text
Use "Auto" mode for best contrast on custom backgrounds.
Use the web UI Mono preset, or edit config.js and set typography.font to mono.
Tags are displayed in a flowing word cloud. Font size scales from 14pt (smallest count) to 32pt (largest count). Tags are shuffled for organic appearance and use varying gray shades (darker = less popular, whiter = more popular).
- Node.js 18+
- Typst CLI
- LASTFM_API_KEY and LASTFM_USERNAME in .env
npm startCheck:
typst --versionMake sure the account has scrobbles in the previous month and that the API key is valid.