
Promo Writer
- 153 installs
- 400 repo stars
- Updated July 31, 2026
- bitwize-music-studio/claude-ai-music-skills
Write release promo copy—press blurbs, social posts, EPK text, playlist pitches, and launch announcements tailored to an album or single rollout.
About
Music-studio skill that drafts promotional writing for releases—press notes, social captions, playlist pitches, and launch announcements—optimized for distribution channels and consistent artist branding.
- Press and EPK blurbs
- Social launch copy
- Playlist pitch language
- Release announcement drafts
- Channel-specific promo variants
Promo Writer by the numbers
- 153 all-time installs (skills.sh)
- Ranked #1,047 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/bitwize-music-studio/claude-ai-music-skills --skill promo-writerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 153 |
|---|---|
| repo stars | ★ 400 |
| Last updated | July 31, 2026 |
| Repository | bitwize-music-studio/claude-ai-music-skills ↗ |
What it does
Write release promo copy—press blurbs, social posts, EPK text, playlist pitches, and launch announcements tailored to an album or single rollout.
Files
Promo Writer Skill
Generate social media copy for album promotion across Twitter/X, Instagram, TikTok, Facebook, and YouTube. Produces native-feeling content for each platform from album context — themes, track concepts, and streaming lyrics.
Purpose
Populate the promo/ directory with platform-specific copy ready for review. Each platform gets content shaped to its format, tone, and conventions — not the same text cross-posted everywhere.
When to Use
- After track concepts and lyrics are written (need material to pull from)
- Before release — generate copy to fill promo/ templates
- User says "write promo copy", "create social media posts", or "fill in the promo templates"
- When promo/ files exist but are still template placeholders
Position in Workflow
Lyrics Written → Promo Videos (optional) → **[Promo Writer]** → [Promo Review] → ReleaseBetween content completion and promo-reviewer. The promo-reviewer polishes what this skill generates.
Supporting Files
- [copy-formulas.md](copy-formulas.md) — Hook formulas, CTA templates, post structures, hashtag recipes
- [/reference/promotion/social-media-best-practices.md](/reference/promotion/social-media-best-practices.md) — Platform strategy and content guidance
- [/skills/promo-reviewer/platform-rules.md](/skills/promo-reviewer/platform-rules.md) — Character limits and hashtag rules
---
Workflow
1. Album Resolution
Resolve the album from arguments:
Use MCP find_album with the album name from $ARGUMENTS. If no album specified, check get_session for last album context.
Verify readiness:
- Album must have track concepts written
- At least some tracks should have streaming lyrics (for quotable hooks)
- If no streaming lyrics exist, warn: "No streaming lyrics found — using track concepts only. Hooks will be less specific."
2. Data Gathering
Gather album context in batch to minimize round-trips:
1. Album data: get_album_full(album_slug, "concept,streaming,musical-direction") — album narrative + track content 2. Track list: from album data — all track names, concepts, statuses 3. Streaming lyrics: from album data sections — pull quotable hooks from streaming lyrics (NOT Suno lyrics, which contain phonetic spellings) 4. User preferences: load_override("promotion-preferences.md") — tone, platform priorities, messaging themes, hashtag preferences, AI positioning
Critical: Use streaming lyrics for quotable hooks. Suno lyrics contain phonetic spellings (bit-wize, Luh-rock-uh) that must never appear in public-facing copy.
3. Generate Campaign Strategy (campaign.md)
Generate campaign.md first — it's the strategy foundation that informs all platform copy.
Content to generate:
| Section | What to Write |
|---|---|
| Campaign Overview | Album name, release date (or TBD), primary platform, campaign duration |
| Key Messages | 3 core messages derived from album themes — the "why should anyone care" |
| Target Audience | 2-3 audience segments based on genre and themes |
| Schedule | Pre-release, release week, post-release calendar with specific content types |
| Hashtags | Primary (discovery + genre) and secondary (album-specific, AI if applicable) |
Derive key messages from album data:
- What is the album about? → Message 1 (concept hook)
- What makes it different? → Message 2 (unique angle)
- Why listen now? → Message 3 (urgency/relevance)
Present to user for approval before proceeding to platform copy.
4. Language Selection
Before generating any copy, determine the output language(s).
If override exists with a ## Language section in promotion-preferences.md, use that preference without asking.
Otherwise, ask:
What language(s) should the promo copy be written in?
[1] English (default)
[2] German (Deutsch)
[3] French (Français)
[4] Spanish (Español)
[5] Bilingual — two languages per post (e.g., DE + EN, FR + EN)
[6] Other — tell me which language(s)Bilingual mode: When two languages are selected, each post gets both versions stacked in the same code block, separated by a --- divider. The primary language comes first, the secondary language second. Hashtags stay in English (international discovery).
Override file addition ({overrides}/promotion-preferences.md):
## Language
- Primary: de
- Secondary: en
- Mode: bilingualStore the selected language(s) and apply to all generated copy in this session.
5. Platform Selection
If platform specified in arguments, generate only that platform.
If override exists, follow platform priority list and skip list from promotion-preferences.md.
Otherwise, ask:
Which platforms should I generate copy for?
[A] All platforms (Twitter, Instagram, TikTok, Facebook, YouTube)
[1] Twitter/X
[2] Instagram
[3] TikTok
[4] Facebook
[5] YouTube6. Per-Platform Generation
For each selected platform, generate native content following the structures in copy-formulas.md and best practices from the reference guide.
Read the promo template for the platform first (templates/promo/{platform}.md or existing promo/{platform}.md) to match the expected heading structure.
Per-platform content to generate:
Twitter/X (twitter.md)
- Release announcement tweet (1-2 tweets or thread)
- Per-track promo tweets (one per track — hook + concept + link placeholder)
- Behind-the-scenes tweet (process/making-of angle)
- Engagement tweet (question or poll)
- Each tweet: show character count, verify under 280
- 1-2 hashtags per tweet, never starting with a hashtag
Instagram (instagram.md)
- Release announcement caption (hook in first 125 chars)
- 2-3 track highlight captions (story angle, personal)
- Behind-the-scenes caption
- Hashtag block (15-20 tags, separated from caption)
- Show character count for each caption
TikTok (tiktok.md)
- Release announcement caption (under 150 chars)
- Per-track captions (short, casual, under 150 chars)
- Behind-the-scenes caption
- 3-5 hashtags per post
- Note: video content does the heavy lifting — captions are secondary
Facebook (facebook.md)
- Release announcement (longer storytelling format, 150-300 words)
- Track highlight posts (2-3, with personal angle)
- Behind-the-scenes story post
- 3-5 hashtags per post, at end
YouTube (youtube.md)
- Album/track description template (hook in first 2-3 lines)
- Credits section
- Social links section
- 3-5 hashtags
7. Present for Approval
Present each platform's generated copy with metrics:
## Twitter/X — Generated Copy
### Release Announcement
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Generated tweet text]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Chars: 187/280 | Hashtags: 2 | Status: Within limits
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### Track 01: [Track Name]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Generated tweet text]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Chars: 214/280 | Hashtags: 2 | Status: Within limits
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[... more posts ...]
Actions:
[A] Approve all — write to promo/twitter.md
[R] Revise specific posts — tell me which ones and what to change
[N] Next platform — skip this platform8. Write Approved Copy
Write approved copy to the promo/ directory in the album path:
{content_root}/artists/{artist}/albums/{genre}/{album}/promo/Match the file structure expected by promo-reviewer:
- Use
##and###headings to delineate sections - Put post copy inside ``` code blocks
- Include any platform-specific metadata (character counts not written to file)
If promo/ directory doesn't exist, create it. If files already exist, ask before overwriting:
promo/twitter.md already has content. Overwrite? [Y/n]9. Summary and Next Steps
After all platforms are written:
## Promo Copy Generated
| Platform | Posts | Status |
|----------|-------|--------|
| Campaign | 1 | Written |
| Twitter | 8 | Written |
| Instagram | 5 | Written |
| TikTok | 6 | Written |
| Facebook | 4 | Written |
| YouTube | 1 | Written |
Files written to: {album_path}/promo/
Next steps:
1. Review and polish: /bitwize-music:promo-reviewer <album-name>
2. Replace [Streaming Link] placeholders with actual URLs when available
3. When ready to release: /bitwize-music:release-director <album-name>---
Content Rules
Streaming Lyrics Only
Pull quotable hooks from streaming lyrics sections. Never use Suno lyrics — they contain phonetic spellings meant for the AI, not human readers.
Campaign First
Always generate campaign.md before platform copy. The strategy document establishes key messages, audience, and schedule that inform every platform's content.
Native Content
Each platform gets content shaped to its conventions:
- Twitter: punchy, under 280 chars, 1-2 hashtags
- Instagram: visual-first, hook in first 125 chars, hashtag block
- TikTok: ultra-casual, under 150 chars, video does the work
- Facebook: storytelling, longer form, community-building
- YouTube: informative, structured, SEO-aware
Never write the same text for multiple platforms.
Match Promo-Reviewer Structure
The promo-reviewer skill expects specific file structure:
##headings for major sections###headings for individual posts- Post copy inside ``` code blocks
- This structure enables section-by-section review
Hashtag Rules
Follow the researched best practices:
- Twitter: 1-2 per tweet, never start with hashtag, rotate sets
- Instagram: 15-20 per post, separate block, mix volume levels
- TikTok: 3-5 per post, include trending if applicable
- Facebook: 3-5, at end, for categorization
- YouTube: 3-5, first 3 shown above title
- Never use: #MusicPromotion, #SoundCloudPromotion, #FollowBack, #Like4Like
Language Handling
- Write all copy in the language(s) selected in Step 4
- Bilingual mode: Primary language first,
---divider, secondary language second — both in the same code block - Twitter exception: Bilingual mode uses separate tweets per language (one tweet per language, or thread), NOT stacked in one tweet — 280 chars is too tight for two languages
- Hashtags: Always in English for international discovery, regardless of copy language
- Quoted lyrics: Keep in original language with a brief translation in parentheses if the copy language differs
- Platform notes (Notes section at bottom of each file): Always in English for consistency
Override Respect
If promotion-preferences.md override exists:
- Follow tone and voice preferences
- Respect platform skip list
- Apply messaging theme preferences (always/never mention)
- Use hashtag preferences (always include, avoid list)
- Follow AI positioning guidance
- Follow language preferences (primary, secondary, mode)
---
Remember
1. Read copy-formulas.md at invocation — it has the hook formulas and post structures 2. Streaming lyrics only — never Suno phonetic lyrics in public copy 3. Campaign.md first — strategy before platform copy 4. Language before platforms — determine output language(s) before generating any copy 5. Present before writing — show generated copy with metrics for approval 6. Native per platform — different tone, length, structure for each 7. Match promo-reviewer format — headings + code blocks for section-by-section review 8. Check override — load promotion-preferences.md for tone, platforms, messaging, language 9. Suggest promo-reviewer next — always end with the recommendation to review 10. Placeholder links — use [Streaming Link] where real URLs will go 11. Preserve album voice — the copy should feel consistent with the album's themes and tone 12. Hashtags in English — always English hashtags for discovery, even when copy is in another language
Your deliverable: Populated promo/ directory with platform-specific copy ready for review.
Workflow integration: You fill the gap between content completion and promo-reviewer — generating what was previously a manual creative step.
Copy Formulas Reference
Tactical templates for writing social media copy. Used by the promo-writer skill to generate platform-specific posts from album context.
For platform character limits and hashtag rules, see /skills/promo-reviewer/platform-rules.md. For broader content strategy, see /reference/promotion/social-media-best-practices.md.
---
Hook Formulas
Every post needs a hook — the first line that stops the scroll. Pick the formula that fits the content.
1. Question Hook
Pose a question the album or track answers.
What happens when [premise]?
Ever wonder what [subject] sounds like as [genre]?
What if [concept] had a soundtrack?Best for: Concept albums, story-driven tracks, thought-provoking themes Platforms: Twitter (punchy questions), Instagram (caption openers), Facebook (comment bait)
2. Story Hook
Open with a narrative fragment that demands the rest.
It started with [inciting incident].
In [year], [subject] did something no one expected.
This track is about the moment when [turning point].Best for: True-story/documentary albums, personal tracks, tracks with strong narratives Platforms: Twitter threads, Instagram long captions, Facebook, YouTube descriptions
3. Contrast Hook
Juxtapose two unexpected elements.
[Genre A] meets [Genre B]. [Result].
The story of [dark topic] — told through [unexpected genre].
[Beautiful thing] built on [ugly truth].Best for: Genre-blending albums, unexpected sonic choices, dark/light thematic contrast Platforms: Twitter (concise contrast), TikTok (visual + audio contrast)
4. Number Hook
Lead with a specific, concrete detail.
[Number] tracks. [Number] true stories. One album.
[Number] months of research. [Number] sources. Every lyric verified.
[Number] tracks about [topic] you've never heard before.Best for: Album announcements, documentary albums (emphasize research depth), tracklist reveals Platforms: Twitter, Instagram carousels, TikTok text overlays
5. Quote Hook
Lead with the most quotable lyric or line from the track.
"[Quotable lyric]"
Track [N] from [album] — streaming now.Best for: Tracks with strong individual lines, ongoing promotion, lyric-driven content Platforms: Twitter (standalone quotes), Instagram (lyric graphics), TikTok (text overlay on audio)
6. Behind-the-Scenes Hook
Reveal something about the creative process.
This track almost didn't make the album. Here's why it did.
The hardest lyric to write on this album was [track] — here's the story.
I rewrote [track] [number] times before it felt right.Best for: Post-release content, building artist authenticity, process-focused audiences Platforms: Twitter threads, TikTok (talking to camera), Instagram Stories
---
CTA Templates by Goal
Drive Streams
Listen now: [link]
Stream [album name]: [link]
Full album on all platforms — link in bio.
Out now on [platform]. Hit play.Build Audience
Follow for more from this album.
Turn on notifications — more tracks dropping this week.
What do you want to hear next? Reply with your pick.
Save this post for when you need [mood the album creates].Drive Engagement
Which track hits hardest? Drop your answer below.
Rate this album 1-10 in the comments.
Tag someone who needs to hear this.
[Emoji] if this resonates. [Different emoji] if it doesn't.
What's your interpretation of track [N]?---
Post Structure Skeletons
Twitter — Single Track Promo
[Hook — 1 line, under 100 chars]
[1-2 lines of context about the track]
[Streaming link]
#DiscoveryTag #GenreTagTwitter — Album Release Thread
Tweet 1:
[Album hook + cover art]
[Album name] is out now.
[Streaming link]
Tweet 2:
Here's what it's about:
[2-3 line concept summary]
Tweet 3-N:
Track [N]: "[Track Name]"
[1 line concept]
[Optional: quotable lyric]
Final tweet:
Full album: [link]
Thanks for listening. Which track hit hardest?
#NewMusic #GenreTagInstagram — Release Post
[Hook — first 125 chars are the preview]
[2-4 lines: album story, concept, personal angle]
[CTA: "Link in bio", "Save this", engagement question]
.
.
.
[15-20 hashtags in separate block]TikTok — Track Promo
[Under 150 chars — punchy, casual]
[1 discovery hashtag] [1 genre hashtag] [1 trending tag if applicable]Video content does the heavy lifting — caption is secondary.
Facebook — Release Announcement
[Hook — first 2-3 lines visible before "See more"]
[3-5 paragraphs: album story, track highlights, personal reflection]
[CTA: question to drive comments]
[Streaming link]
#Genre #NewMusic #ArtistNameYouTube — Video Description
[Track/Album Name] - [Artist Name] (Official Audio/Lyric Video)
[1-2 line hook — visible in collapsed view]
Stream everywhere: [link]
---
About this track/album:
[2-3 paragraphs of context]
Credits:
[Production credits]
Follow [Artist]:
[Social links]
#ArtistName #AlbumName #GenreTag---
Hashtag Recipes
By Campaign Phase
| Phase | TikTok | ||
|---|---|---|---|
| Pre-release | #NewMusic + genre | #NewMusic + genre + #ComingSoon | #NewMusic + #MusicTok |
| Release day | #NewMusic + genre | #OutNow + genre + niche mix | #NewMusic + genre + trending |
| Post-release | #NowPlaying + genre | Genre + mood + niche | #NowPlaying + genre |
| Evergreen | Genre only | Genre + mood + niche | Genre + trending |
By Genre
| Genre | Primary Tags | Secondary Tags |
|---|---|---|
| Hip-Hop | #HipHop, #Rap | #Bars, #HipHopMusic, #Underground |
| Electronic | #Electronic, #ElectronicMusic | #Synth, #Techno, #DarkElectronic |
| Folk | #Folk, #FolkMusic | #Acoustic, #IndieFolk, #Americana |
| Country | #Country, #CountryMusic | #Americana, #OutlawCountry |
| Rock | #Rock, #RockMusic | #IndieRock, #AltRock, #ClassicRock |
| Ambient | #Ambient, #AmbientMusic | #Atmospheric, #Drone, #Meditation |
| Dark Cabaret | #DarkCabaret, #Cabaret | #GothicMusic, #Vaudeville |
| Industrial | #Industrial, #IndustrialMusic | #EBM, #DarkElectronic, #Noise |
AI Music Tags (Use Sparingly)
- #AIMusic — general, recognizable
- #SunoAI — platform-specific
- #ClaudeCode — tool-specific
Don't put AI tags on every post. Lead with the music. Mention AI when it adds to the story.
---
Engagement Post Ideas Beyond Announcements
Don't only post when you have something to sell. Between releases:
1. "What I'm listening to" — share other artists' music you enjoy 2. "Making of" process shots — DAW screenshots, lyric drafts, revision comparisons 3. Polls — "What genre should I try next?" or "Album art A or B?" 4. Throwback — revisit an older track with new context 5. Fan interaction — reshare someone who posted about your music 6. Hot take — opinion on music, genre, production (authentic, not inflammatory) 7. Milestone celebration — "500 streams!" (small wins are relatable) 8. Question of the day — "What song changed your life?" 9. Lyric card — one quotable line from a track, designed as a graphic 10. "Did you know?" — fact from your research (documentary albums)
---
Tone Adaptation Guide
The same core message, adapted for each platform:
Example: Album release announcement
Core message: New album "[Album Name]" is out — it's about [concept].
Twitter (punchy, direct):
[Album Name] is out now.
[Concept in one sentence].
[Number] tracks. Stream everywhere: [link]
#NewMusic #GenreInstagram (visual + story):
[Album Name] is here.
[2-3 sentences about the story behind it — personal angle]
[CTA: "Link in bio. Which track hits hardest?"]
.
.
.
[Hashtag block]TikTok (casual, authentic):
new album just dropped. [concept in casual language]
#NewMusic #Genre(Video does the work — show your face, play a snippet)
Facebook (storytelling):
[Personal story about why you made this album — 3-5 paragraphs]
[Track highlights]
[CTA: "What do you think? I'd love to hear your take."]
[Link]YouTube (informative):
[Album Name] - [Artist] (Full Album)
[Concept summary] | Stream everywhere: [link]
[Full credits, track listing, social links below]The key: same message, native format. Never cross-post identical text.
---
Language Adaptation
When writing in a non-English language or bilingual mode, adapt the copy naturally — don't just translate English templates word-for-word.
Bilingual Post Format
Primary language first, divider, secondary language second. Hashtags only once (in English).
Example: Facebook release post (DE + EN)
[Album Name] ist ab sofort verfügbar!
[2-3 Absätze auf Deutsch — Konzept, Themen, was Hörer erwartet]
Jetzt streamen: [Streaming Link]
---
[Album Name] is out now!
[2-3 paragraphs in English — same content, not a literal translation]
Stream here: [Streaming Link]
#NewMusic #[Genre] #NewAlbumLanguage Rules
- Hashtags: Always in English for international discovery, regardless of copy language
- Quoted lyrics: Keep in original language. Add a brief translation in parentheses if the copy language differs
- Example: "Juste tourner, tourner, tourner" (Just spinning, spinning, spinning)
- Platform notes: Always in English for consistency
- Bilingual mode: Write each version natively — adapt tone and idioms, don't translate literally
- Twitter exception: Bilingual mode does NOT stack two languages into one tweet — 280 chars is too tight. Instead, post each language as a separate tweet (or thread: Tweet 1 in primary language, Tweet 2 in secondary). All other platforms use stacked format.