Loading...
Loading...
End-to-end playbook for creating, identifying, and enriching a new artist account. Use when the user asks to create, add, onboard, or set up a new artist — phrases like "create artist", "onboard X", "add this artist", "set up a new artist", or any task that starts a brand-new artist record from a name. The skill drives 8 sequential API calls (create → Spotify match → PATCH profile → Chartmetric research → Spotify catalog → web socials search → PATCH socials → synthesize KB) from a `RECOUP.md` checklist scaffolded by the `artist-workspace` skill, ticking each box and persisting captured values back to the file as it goes.
npx skill4agent add recoupable/skills create-artistRECOUP.mdartist-workspace$RECOUP_ACCESS_TOKENapi.recoupable.com$RECOUP_ORG_IDARTIST_NAME="The Weeknd"RECOUP.mdartist-workspacePOST /api/artistsPATCHPATCHknowledgesagent+agent+...@recoupable.com$ARTIST_DIR/RECOUP.md# Show the next unchecked step
grep -n '^- \[ \]' "$ARTIST_DIR/RECOUP.md" | head -1ARTIST_RESPONSE=$(curl -sS -X POST "https://api.recoupable.com/api/artists" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg name "$ARTIST_NAME" --arg org "$RECOUP_ORG_ID" \
'{name: $name, organization_id: $org}')")
ARTIST_ID=$(echo "$ARTIST_RESPONSE" | jq -r '.artist.account_id')account_id$ARTIST_IDorganization_idhttps://developers.recoupable.com/api-reference/artists/createartistId: $ARTIST_ID- [ ] 1.- [x] 1.RECOUP.mdSPOTIFY=$(curl -sS -G "https://api.recoupable.com/api/spotify/search" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "q=$ARTIST_NAME" \
--data-urlencode "type=artist" \
--data-urlencode "limit=10")MATCH=$(echo "$SPOTIFY" | jq --arg name "$ARTIST_NAME" '
.artists.items
| (map(select((.name | ascii_downcase) == ($name | ascii_downcase))) | sort_by(-.popularity) | first)
// (sort_by(-.popularity) | first)
')
SPOTIFY_ARTIST_ID=$(echo "$MATCH" | jq -r '.id // empty')
SPOTIFY_PROFILE_URL=$(echo "$MATCH" | jq -r '.external_urls.spotify // empty')
SPOTIFY_IMAGE_URL=$(echo "$MATCH" | jq -r '.images[0].url // empty')
[ -n "$SPOTIFY_ARTIST_ID" ] || { echo "No Spotify match for $ARTIST_NAME"; exit 1; }genresfollowers.totalpopularity$MATCHhttps://developers.recoupable.com/api-reference/spotify/searchspotifyArtistIdspotifyProfileUrlimageUrlgenresfollowers.totalpopularity## Notes- [ ] 2.- [x] 2.PATCHprofileUrlscurl -sS -X PATCH "https://api.recoupable.com/api/artists/$ARTIST_ID" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg image "$SPOTIFY_IMAGE_URL" --arg url "$SPOTIFY_PROFILE_URL" \
'{image: $image, profileUrls: {SPOTIFY: $url}}')"update_account_infoupdate_artist_socialslabel/api/research/profilehttps://developers.recoupable.com/api-reference/artists/update- [ ] 3.- [x] 3.POST /api/research/deepartist_idartist_idLOOKUP=$(curl -sS -G "https://api.recoupable.com/api/research/lookup" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "spotifyId=$SPOTIFY_ARTIST_ID")
CM_ARTIST_ID=$(echo "$LOOKUP" | jq -r '.artist.id // empty')
[ -n "$CM_ARTIST_ID" ] || { echo "No Chartmetric match for Spotify ID $SPOTIFY_ARTIST_ID — skipping structured research"; }https://developers.recoupable.com/api-reference/research/lookupPROFILE=$(curl -sS -G "https://api.recoupable.com/api/research/profile" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$CM_ARTIST_ID")https://developers.recoupable.com/api-reference/research/profileCAREER=$(curl -sS -G "https://api.recoupable.com/api/research/career" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$CM_ARTIST_ID")https://developers.recoupable.com/api-reference/research/careerPLAYLISTS=$(curl -sS -G "https://api.recoupable.com/api/research/playlists" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$CM_ARTIST_ID")https://developers.recoupable.com/api-reference/research/playlistsRESEARCH_WEB=$(curl -sS -X POST "https://api.recoupable.com/api/research/web" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg name "$ARTIST_NAME" \
'{query: ($name + " biography press recent collaborations")}')")https://developers.recoupable.com/api-reference/research/webcmArtistId: $CM_ARTIST_ID## ResearchRECOUP.md- [ ] 4.- [x] 4.TOP_TRACKS=$(curl -sS -G "https://api.recoupable.com/api/spotify/artist/topTracks" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$SPOTIFY_ARTIST_ID")
ALBUMS=$(curl -sS -G "https://api.recoupable.com/api/spotify/artist/albums" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$SPOTIFY_ARTIST_ID")
# For each notable album, drill in (ALBUM_ID from $ALBUMS):
ALBUM_DETAIL=$(curl -sS -G "https://api.recoupable.com/api/spotify/album" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
--data-urlencode "id=$ALBUM_ID")$SPOTIFY_ARTIST_ID/api-reference/spotify/artist-top-tracks/api-reference/spotify/artist-albums/api-reference/spotify/albumreleases/releases/{release-slug}/RELEASE.md-ep-single-compilationGET /api/spotify/album?id=$ALBUM_IDreleases/top-tracks.mdRELEASE.md⚠️ TBDartist-workspacereferences/release-template.md- [ ] 5.- [x] 5.SOCIALS_SEARCH=$(curl -sS -X POST "https://api.recoupable.com/api/research/web" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg name "$ARTIST_NAME" \
'{query: ($name + " official instagram tiktok twitter youtube")}')")## Notes- [ ] 6.- [x] 6.curl -sS -X PATCH "https://api.recoupable.com/api/artists/$ARTIST_ID" \
-H "Authorization: Bearer $RECOUP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"profileUrls": {
"INSTAGRAM": "https://instagram.com/...",
"TIKTOK": "https://tiktok.com/@...",
"TWITTER": "https://x.com/...",
"YOUTUBE": "https://youtube.com/@..."
}
}'https://developers.recoupable.com/api-reference/artists/update- [ ] 7.- [x] 7.## Researchreleases/RECOUP.md## Knowledge baseartists/$ARTIST_SLUG/RECOUP.mdartist-workspace- [ ] 8.- [x] 8.profileUrls| URL contains | |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
RECOUP.md## Notes