Configuration¶
Config root¶
PLAYLIST_FORGE_HOME: optional override for the config and cache root
Config file¶
Run playlist-forge config init to create the default config file, or
playlist-forge config init --force to replace it.
By default, the app reads config.json from
Path.home() / ".config" / "playlist-forge", which is typically:
- macOS and Linux:
~/.config/playlist-forge/config.json - Windows:
%USERPROFILE%\\.config\\playlist-forge\\config.json
Use playlist-forge config clientid YOUR_SPOTIFY_CLIENT_ID to update the
Spotify client ID without editing the file manually. If PLAYLIST_FORGE_HOME
is set, the app reads, creates, and updates $PLAYLIST_FORGE_HOME/config.json
instead.
Edit spotify.redirect_uri in config.json if you change the Spotify callback
URL. Edit reccobeats.api_key there manually if you need to provide a
ReccoBeats API key.
{
"spotify": {
"client_id": null,
"redirect_uri": "http://127.0.0.1:8080/callback"
},
"cluster": {
"genre_weight": 1.0,
"audio_feature_weight": 1.0,
"audio_acousticness_weight": null,
"audio_danceability_weight": null,
"audio_energy_weight": null,
"audio_instrumentalness_weight": null,
"audio_liveness_weight": null,
"audio_loudness_weight": null,
"audio_speechiness_weight": null,
"audio_tempo_weight": null,
"audio_valence_weight": null,
"year_weight": 0.3
},
"dedupe": {
"title_artist_threshold": 0.9,
"playlist_overlap_threshold": 0.6
},
"reccobeats": {
"api_key": null,
"base_url": "https://api.reccobeats.com",
"request_delay_seconds": 0.2
}
}
Leave per-feature audio_*_weight values as null to inherit audio_feature_weight.
Cache and state¶
- Spotify authentication tokens are cached locally after
auth login. - Tokens are stored in
token.jsonunder the active config directory. - Analyze commands operate on local dataset files and do not call Spotify.
- Write actions call Spotify only after you explicitly run an
pushcommand.