Install
openclaw skills install @nickflach/album-releaseShip a complete album in one run: write or reuse lyrics, render tracks, generate cover and slideshow art per song, publish either one album film or one video per track plus a playlist, deploy the audio to a radio host, premiere it on air, and fan out the links. Use when releasing a new album, re-running a failed phase, or timing an on-air premiere.
openclaw skills install @nickflach/album-releaseOne config file in, a released album out: audio, art, film, video publish, radio deploy, on-air premiere, social announce.
The pipeline is phase-based and every phase is idempotent — re-run after any failure and it resumes where it stopped. Proven end-to-end: a seven-song album went from blank page to on-air premiere in about two and a half hours.
The release runner itself is operator-specific: it is wired to a particular radio host, credential layout, and set of provider accounts. This skill documents the shape of the pipeline and the failure modes worth knowing. Supply your own runner and provider credentials.
A single JSON file drives the run:
name, out_dir, ledger, theme, default_styletracks[] — each with title, style, art_promptrelease{} — lead track, video metadata, and the deploy targetRegister the album with the radio's programming layer before deploying, since the deploy phase pulls the album definition on the host. A preflight check should abort when the album is not registered — that one mistake otherwise surfaces as a silent no-op an hour later.
Lyrics: pre-write them. Drop a lyrics file per track in out_dir
before running, and the pipeline uses it verbatim; otherwise it generates
them. Hand-written lyrics are almost always the better album.
Instead of one album film, release one video per track plus a playlist. This mode shipped a seven-track album end-to-end (28 art pieces, 7 videos, playlist, link fanout) in one sitting:
cover prompt plus 2-3
support image prompts. Every prompt in the batch opens differently
and varies medium/palette/subject (see the art gotcha below); give
each track its own visual idiom family so the album reads as a set.[cover, s1, s2, s3] with equal slot lengths over the track
duration (ffmpeg concat demuxer with per-image duration entries,
last file repeated), scale/pad to 1280×720, mux the track audio,
-tune stillimage.Skip phases you want to control by hand — this is how you time a premiere:
To sync with a scheduled segment, watch the radio journal for the segment marker and fire after it. If strict ordering matters, wait for the segment's completion marker rather than its start — a slow segment can otherwise be stepped on by the showcase intro.
C:/... style path. Embedded
Python rejects MSYS /c/... form and the builder silently no-ops.theme and default_style get
interpolated into single-quoted inline Python — keep them
apostrophe-free. Per-track fields and lyrics are safe.out_dir)
is the reliable fallback and usually the better album anyway. Verify
the first track's prompt round-trip against the provider's record-info
endpoint before letting a batch run — multi-line lyrics are easy to
truncate to their first line in shell plumbing.pkill -f over ssh can match
the ssh command line that carries it and kill your own connection.
Bracket a character in the pattern (pkill -f "[a]rt.py").podcast-video-publisher — episode videos and playlist
management.