Claude
Skills
Sign in
Back

promo-writer

Included with Lifetime
$97 forever

Generates platform-specific social media copy from album themes, track concepts, and lyrics. Use when promo/ templates need to be populated before release.

Writing & Docs

What this skill does


# 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] → Release
```

Between 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`):
```markdown
## Language
- Primary: de
- Secondary: en
- Mode: bilingual
```

Store 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] YouTube
```

### 6. Per-Platform Generation

For each selected platform, generate native content following the structures in [copy-formulas.md](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 platform
```

### 8. 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 |
|----------|---

Related in Writing & Docs