The 7-Day Release Campaign Generator
What you'll learn
~25 min- Build a CLI campaign pack generator from a single track metadata file
- Generate platform-specific captions for Instagram, TikTok, YouTube, and Spotify
- Produce a 7-day posting calendar with timing strategy
- Scaffold a deployable EPK webpage with embedded Spotify player and video
What you’re building
Release week is chaos. You need captions for Instagram, TikTok, YouTube. Hashtag packs for each platform (because they’re different). A posting schedule so you’re not dumping everything on day one. A press blurb for playlist curators. And ideally an EPK page you can send to blogs and playlist submitters.
You usually do this by… opening Notes and freestyling? Copying last release’s captions and swapping the track name? That works, but it’s inconsistent and it eats an afternoon every time.
You’re going to build a system that takes one metadata file about a new track and produces all of it in 10 seconds.
Structured data (JSON) → multiple formatted documents. This pattern works for permits, lab reports, invoices — any scenario where structured data produces multiple formatted outputs.
The metadata file
First, create a simple JSON file that describes your release. This is the only input you need:
{ "artist": "moodmixformat", "title": "JADED", "genre": "Melodic House & Techno", "bpm": 124, "key": "Am", "mood": "Driving, atmospheric, late-night", "releaseDate": "2026-03-14", "spotifyUrl": "https://open.spotify.com/artist/YOUR_ID", "youtubeUrl": "https://youtube.com/@moodmixformat", "shopUrl": "https://moodmixformat.myshopify.com", "previousHits": ["KICK IT W/U", "LIVE IT UP", "MOOD"], "recordedLocationsEpisode": "S2E04", "oneLineHook": "When the night gets heavy, the bass gets deeper"}Save this as release.json in your project folder. Swap in your real details — real track name, real URLs, real previous hits.
The more real data you put in here, the more useful the output. If you have a track dropping soon, use its actual metadata. The captions and EPK will be immediately usable instead of placeholder-filled templates.
The prompt
Start your AI CLI tool and paste this prompt:
Build a Node.js CLI tool called campaign-gen.js that reads a release metadata JSONfile and generates a complete 7-day release campaign pack.
INPUT: A JSON file path as the first argument (e.g., release.json) containing:artist, title, genre, bpm, key, mood, releaseDate, spotifyUrl, youtubeUrl, shopUrl,previousHits (array), recordedLocationsEpisode, oneLineHook
OUTPUT DIRECTORY: ./campaign-pack/ (create if needed)
GENERATE THESE FILES:
1. captions.md — Platform-specific captions: - Instagram (3 variations: teaser, release day, post-release) - TikTok (short, punchy, hook-first, with trending format suggestions) - YouTube (community post for release day) - Spotify bio update paragraph Each caption should reference the track's mood and BPM naturally. Include the one-line hook. Reference previous hits where it feels natural (e.g., "From the artist behind KICK IT W/U...").
2. hashtags.md — Platform-specific hashtag packs: - Instagram: 30 hashtags, mix of broad (#melodichouse) and niche (#melodictechno124bpm) - TikTok: 5-8 hashtags, trend-aware format - YouTube: 15 tags for video metadata Group by platform with copy-paste-ready blocks.
3. calendar.md — 7-day posting calendar: - Day -3 to Day +3 relative to release date - Each day: platform, content type, time (ET), caption reference, asset needed - Include strategic notes (e.g., "Day -1: teaser clip drives pre-save")
4. press-blurb.md — A 150-word press/curator blurb: - Third person, professional tone - References previous tracks and the RECORDED LOCATIONS series - Suitable for playlist submission or blog pitch
5. epk/index.html — A single-page EPK website: - Dark theme matching the artist's aesthetic (bg #0a0a0a, text #e5e5e5) - Sections: Hero with track title and hook, About (2 paragraphs), Latest Release with embedded Spotify iframe, Video section with YouTube embed, Press blurb, Links (Spotify, YouTube, Merch shop) - Clean, minimal design. Sans-serif font. No images required (text-only is fine). - The Spotify embed should use the standard iframe embed format - Mobile-responsive
STYLE GUIDELINES:- All copy should feel authentic to an independent electronic music artist- No corporate marketing language. No "leveraging synergies" or "elevating your brand"- Use the mood and genre to set the tone naturally- Captions should sound like they were written by the artist, not a social media managerWhat you get
After your AI CLI tool finishes, you’ll have:
The generated captions and press blurb are first drafts based on your release.json data. They’ll need your voice and personality. Read every caption out loud — if it doesn’t sound like something you’d actually post, iterate with follow-up prompts like “make the Instagram captions more casual, like a late-night studio story” until the tone is right.
campaign-pack/ captions.md hashtags.md calendar.md press-blurb.md epk/ index.htmlVerify each file
captions.md — Open it and read through the Instagram variations. Do they sound like you? Does the tone match your brand? If something sounds too corporate or too generic, that’s your iteration target.
hashtags.md — Check the Instagram block. Are there 30 hashtags? Do they mix broad reach tags with niche genre tags? Copy the block and paste it into a draft post to verify formatting.
calendar.md — Does the 7-day schedule make sense? Is the teaser before release day? Is there post-release content planned? Check the suggested times.
press-blurb.md — Read it out loud. Does it sound like a real press bio, or does it sound like AI wrote it? This is the file you’ll iterate on the most.
epk/index.html — Open it in your browser. Check:
- Does the dark theme look clean?
- Is it mobile-responsive? (Resize your browser window.)
- Do the Spotify and YouTube embeds load? (They’ll need real URLs.)
That epk/index.html file is a real website. You can deploy it to Netlify or Vercel with one command (Module 11 covers deployment). Send the URL to playlist curators, blogs, or venues. It’s a professional EPK that you built in minutes.
If something is off
| Problem | Follow-up prompt |
|---|---|
| Captions sound too corporate | The captions sound like a social media agency wrote them. Rewrite them in a more casual, authentic voice. Think late-night studio Instagram story, not brand campaign. |
| Hashtags are too generic | The hashtags are all broad (#music #newrelease). Add more niche genre tags like #melodichouse, #progressivehouse, #deepmelodictechno, #undergroundtechno. Mix in city-based tags like #virginiamusic. |
| EPK Spotify embed broken | The Spotify embed isn't loading. Use the standard Spotify iframe format: <iframe src="https://open.spotify.com/embed/artist/ARTIST_ID" width="100%" height="352" frameBorder="0" allowtransparency="true" allow="encrypted-media"></iframe> |
| Calendar dates are wrong | The calendar dates are off. The release date is 2026-03-14 (a Saturday). Day -3 should be Wednesday March 11, Day 0 should be Saturday March 14. |
Customize it
Add a Linktree-style page
Add a links.html file to the epk folder. It should be a simple Linktree-style pagewith the artist name at the top and buttons linking to: Spotify, Apple Music,YouTube, SoundCloud, Merch Shop, and Instagram. Same dark theme as the EPK.Each button should be full-width, rounded, with a subtle border. Mobile-first design.Generate email templates
Add an emails.md file with 3 email templates:1. Playlist curator pitch (subject line + 100-word body)2. Blog/press outreach (subject line + 150-word body)3. Fan newsletter announcement (casual tone, 100 words)Each should reference the new track, include the EPK link placeholder, and feelauthentic to an independent artist -- not a mass marketing template.Automate the whole release
Add a run-all.sh script that:1. Runs the resize-assets tool (from Lesson 1) on a cover art image2. Runs this campaign generator on the release.json3. Copies the generated assets into the epk folder4. Opens preview.html and the EPK in the browserAccept the cover art path and release.json path as arguments.🔍Chaining tools together
That last customization — the run-all.sh script — is where things get powerful. You’re connecting the image resizer from Lesson 1 with the campaign generator from this lesson into a single command.
This is the orchestrator mindset from Module 2 in action. You’re not doing the creative work (writing captions, resizing images). You’re not doing the technical work (writing JavaScript, learning sharp). You’re directing AI tools to handle both, and connecting them into workflows that save hours per release.
By the time you finish this module, you’ll have a complete release pipeline: art assets, campaign copy, YouTube metadata, and analytics — all triggered by a few commands.
When Things Go Wrong
Use the Symptom → Evidence → Request pattern: describe what you see, paste the error, then ask for a fix.
Try it yourself
- Create a
release.jsonwith your real (or upcoming) track metadata. - Paste the main prompt into your AI CLI tool.
- Run the tool and open each generated file.
- Open the EPK in your browser — this is a real website you can deploy.
- Pick one customization and add it.
The first time you generate a complete campaign pack in 10 seconds instead of spending an afternoon in Notes and Canva, you’ll understand why this matters.
Key takeaways
- One metadata file drives everything — a single JSON file with your track details generates captions, hashtags, a calendar, press copy, and a full EPK.
- Platform-specific output matters — Instagram captions are different from TikTok hooks. Hashtag strategy varies by platform. The tool handles this automatically.
- The EPK is a deployable artifact — you end this lesson with a real website you can host and send to curators.
- Chaining tools is the power move — connecting the asset engine (Lesson 1) with the campaign generator creates a full release pipeline.
- Authentic voice requires iteration — the first draft of captions will sound generic. One follow-up prompt about tone fixes it.
You generated captions but they sound too corporate and generic. What's the most effective fix?
What’s next
In the next lesson, you’ll build a RECORDED LOCATIONS Episode Builder — a folder-to-publish workflow for your YouTube series. Point it at a folder of episode notes and clips, and it generates titles, timestamps, descriptions, thumbnail concepts, and a publishing checklist.