The Release Asset Engine
What you'll learn
~20 min- Build a CLI tool that takes cover art and generates platform-sized versions
- Understand image aspect ratios across Spotify, Instagram, YouTube, and SoundCloud
- Use iterative prompting to enforce your minimalist brand aesthetic
- Create a reusable workflow you can run for every future release
What you’re building
Every release means the same grind: take your cover art, open Photoshop or Canva, resize it for Spotify Canvas (9:16), Instagram Reels (9:16), YouTube Shorts (9:16), YouTube Community (1200x900), SoundCloud banner (2480x520) — five-plus crops of the same image, every single time.
You’re going to build a tool that does all of that in one command.
This module isn’t just practice — it’s building real tools for your actual workflow. By the end of these four lessons, you’ll have a release asset engine, a campaign generator, a YouTube publishing workflow, and an analytics dashboard — all built around your brand, your catalog, and your data. These are artifacts you use on your next release, not homework you throw away.
These lessons use a fictional artist called “moodmixformat” as the running example. Replace all artist names, track titles, and metadata with your own throughout. The tools and techniques are universal — only the details change.
Point your AI CLI tool at a single piece of cover art and watch it generate a folder of platform-ready assets — properly sized, centered, with clean padding that preserves your minimalist aesthetic. No stretching, no cropping your artwork awkwardly. Just clean, platform-ready files.
The platform specs
Here’s what you’re targeting:
| Platform | Dimensions | Aspect Ratio | Use |
|---|---|---|---|
| Spotify Canvas | 720 x 1280 | 9:16 | Looping video/image on track page |
| Instagram Reels | 1080 x 1920 | 9:16 | Stories and Reels cover |
| YouTube Shorts | 1080 x 1920 | 9:16 | Shorts thumbnail |
| YouTube Community | 1200 x 900 | 4:3 | Community tab posts |
| SoundCloud Banner | 2480 x 520 | ~4.8:1 | Profile header |
| Open Graph | 1200 x 630 | ~1.9:1 | Link previews (social sharing) |
Your cover art is probably square (3000x3000 for Spotify/Apple Music). The tool needs to place that square image onto backgrounds of different aspect ratios without distortion.
One input → multiple formatted outputs. This pattern works for product photos, document exports, video transcoding — anywhere you need the same content in multiple formats.
The prompt
Open your terminal, navigate to a project folder, start your AI CLI tool, and paste this prompt:
Build a Node.js CLI tool called resize-assets.js that takes a single square coverart image and generates properly sized versions for every major music platform.
REQUIREMENTS:
1. INPUT - Accept a file path to a square image (JPG or PNG) as the first argument - Accept an optional --output or -o flag for output directory (default: ./release-assets) - Accept an optional --bg flag for background color (default: extract dominant color from the image, or fall back to #0a0a0a)
2. OUTPUT FILES (generate all of these) - spotify-canvas.jpg (720x1280, 9:16 vertical) - instagram-reel.jpg (1080x1920, 9:16 vertical) - youtube-shorts.jpg (1080x1920, 9:16 vertical) - youtube-community.jpg (1200x900, 4:3 landscape) - soundcloud-banner.jpg (2480x520, ultra-wide) - og-image.jpg (1200x630, social sharing)
3. RESIZING STRATEGY - For vertical formats (9:16): center the square artwork in the middle of the canvas, scale it to fit the width, fill top/bottom with the background color - For landscape formats: center the artwork, scale it to fit the height, fill left/right with the background color - For the SoundCloud banner: the artwork is very small relative to the canvas, so center it and keep generous padding on both sides - NEVER stretch or distort the image. NEVER crop the artwork. - Use sharp (npm package) for image processing
4. OUTPUT - Create the output directory if it doesn't exist - Print each file as it's generated with dimensions - Print total file count and output directory path when done
5. STYLE - Clean, minimal output. No emoji. File paths and dimensions only. - Add a --preview flag that generates an HTML file (preview.html) showing all assets in a grid so I can visually verify them in a browserThat entire block is the prompt. Paste it as-is into your your AI CLI tool session. The specificity about “never stretch, never crop” and the exact dimensions are deliberate — the more precise your requirements, the closer the first output matches what you want.
What you get
After your AI CLI tool finishes (typically 60-90 seconds), you’ll have a few files:
resize-assets.jspackage.jsonyour AI CLI tool will likely install the sharp dependency automatically. If not, run npm install in the same folder.
Try it
Grab any square image — your latest cover art, or even a placeholder. Run it:
node resize-assets.js your-cover-art.jpg --previewYou should see output like:
Created release-assets/spotify-canvas.jpg (720x1280)Created release-assets/instagram-reel.jpg (1080x1920)Created release-assets/youtube-shorts.jpg (1080x1920)Created release-assets/youtube-community.jpg (1200x900)Created release-assets/soundcloud-banner.jpg (2480x520)Created release-assets/og-image.jpg (1200x630)Created release-assets/preview.html
6 assets generated in ./release-assetsOpen preview.html in your browser. You should see all six assets displayed in a grid. Check each one:
- Is the artwork centered?
- Is there clean padding (not white — your background color)?
- Is the artwork NOT stretched or cropped?
If you don’t have cover art handy, grab any square image. But the real payoff comes when you use your actual artwork. Try it with the cover from KICK IT W/U or JADED — seeing your real brand assets auto-generated is when this clicks.
If something is off
LLMs occasionally produce code with small bugs. Here are the most common issues and one-line fix prompts:
| Problem | Follow-up prompt |
|---|---|
| White background instead of dark | The background is white. Change the default background color to #0a0a0a (near black). If you're extracting the dominant color, make sure it's actually running. |
| Artwork is tiny on the SoundCloud banner | The artwork on the SoundCloud banner is too small. Scale it to about 400px tall and center it on the 2480x520 canvas. |
| sharp module not found | I'm getting "Cannot find module sharp". Add it to the package.json dependencies and run npm install. |
| sharp install fails on Apple Silicon (M1/M2/M3/M4) | sharp is failing to compile on my Mac with an Apple Silicon chip. Install the pre-built binary instead: run npm install --platform=darwin --arch=arm64 sharp |
| Preview HTML doesn’t show images | The preview.html is showing broken images. Make sure the image paths are relative to the HTML file location. |
Customize it
The base tool works, but here are follow-up prompts to make it fit your workflow better:
Add your logo watermark
Add a --watermark flag that accepts a small PNG logo file. When provided, place thelogo in the bottom-right corner of each asset at 5% of the canvas width, with 60%opacity. This is for my "moodmixformat" wordmark on promo assets.Add Spotify Canvas video
Add a --canvas-video flag. When set, instead of a static image for spotify-canvas,generate an 8-second looping MP4 where the cover art slowly zooms in from 100% to105% scale with a subtle parallax drift. Use ffmpeg (assume it's installed). SpotifyCanvas requires 720x1280, 3-8 seconds, H.264, under 8MB.Batch process an album
Add support for passing a directory of images instead of a single file. When adirectory is given, process each image in it and create a subfolder per image in theoutput directory, named after the input filename. This is for processing an entirealbum's worth of singles art at once.🔍Why CLI tools beat Canva for this
Canva is great for one-off design. But when you’re running the same resizing operation for every release, a CLI tool wins because:
- Speed: one command vs. 10+ minutes of manual cropping
- Consistency: every release gets identical treatment
- Scriptable: you can chain this with your campaign generator (Lesson 2)
- Free: no subscription needed once built
- Customizable: add formats as platforms change their specs
The pattern here — turning repetitive creative-adjacent tasks into scripts — is one you’ll use constantly.
When Things Go Wrong
Use the Symptom → Evidence → Request pattern: describe what you see, paste the error, then ask for a fix.
How it works (the 2-minute explanation)
You don’t need to understand every line, but here’s the mental model:
- sharp is a Node.js image processing library (like Photoshop in code). It reads your image, lets you resize and composite it onto a canvas.
- For each platform, the tool creates a blank canvas at the target dimensions, fills it with your background color, then places your artwork centered on that canvas.
- The key math: for vertical formats (9:16), the artwork fits the width, so the height has padding. For landscape formats, the artwork fits the height, so the width has padding.
- The preview HTML is a simple page that displays all generated images in
<img>tags so you can visually verify everything.
Try it yourself
- Open your AI CLI tool in an empty folder.
- Paste the main prompt.
- Run the tool with any square image.
- Open the preview HTML and verify all six assets.
- Pick one customization from the list above and add it.
If you want to go further, try feeding it the cover art from your next release. The first time you watch six platform-ready assets appear in seconds instead of spending 20 minutes in Canva, you’ll never go back.
Key takeaways
- One prompt, one tool: a detailed prompt produces a working image resizer in under 2 minutes.
- CLI tools automate repetitive creative work — resizing the same image for 6 platforms is busywork, not creative work.
- Never stretch, never crop — the strategy of placing artwork on a colored canvas preserves your aesthetic across every aspect ratio.
- Iterative customization is the pattern: get a working base, then add watermarks, video, or batch processing one prompt at a time.
- sharp is the standard for Node.js image processing — knowing it exists means you can always extend this tool.
Your cover art is 3000x3000 (square) and you need a Spotify Canvas at 720x1280 (9:16). What's the correct resizing strategy?
What’s next
In the next lesson, you’ll build a 7-Day Release Campaign Generator — feed it metadata about a new track and get platform-specific captions, hashtag packs, a posting calendar, and a deployable EPK webpage. Same pattern: one prompt, one tool, then customize.