recoup-brand-voice-caption
Write social captions that sound like a specific artist — not generic AI. Use when the user says "write a caption for [artist]", "caption this post in [artist]'s voice", "give me an IG caption for the new single", "what should [artist] post", "caption ideas for the launch", or any request for post copy / on-screen text for an artist. Reads the artist's own voice from their workspace (`context/artist.md`, `context/audience.md`) — falling back to their real past captions via the API — then drafts on-brand caption options and writes them back into the workspace.
What this skill does
# Brand-Voice Caption
Anyone can ask a model for "a caption." The value here is **voice fidelity**: a caption
that sounds like *this* artist, drawn from how they actually talk and what their fans
respond to. The whole job is (1) gather the real voice, (2) draft in it, (3) hand back
post-ready options.
This skill is artist-workspace-native. Read `references/workspace-context.md` for the
read-context-first / write-back rules and `references/account-resolver.md` for auth and
the `account_id`-vs-`id` distinction. (Both files ship alongside this skill.)
## Inputs
- **Artist** (required) — name or workspace slug.
- **Subject** (required) — what the caption is about: a single/release, a song, a photo
dump, a tour date, an announcement. If the user didn't say, ask — a caption with no
subject is just filler.
- **Platform** (optional) — Instagram / TikTok / X / YouTube. Defaults to Instagram;
affects length and hashtag conventions.
- **Count** (optional) — how many options. Default 3.
## Steps
### 1. Resolve the artist and workspace
Find `artists/{slug}/`, read `RECOUP.md` for IDs. See `references/account-resolver.md`.
If the artist has no record at all, run `recoup-create-artist` (Recoupable skills library)
first.
### 2. Gather the voice (the moat — do this before drafting)
**Primary — workspace context (source of truth):**
```bash
cat "$ARTIST_DIR/context/artist.md" 2>/dev/null # voice, tone, aesthetic, do/don'ts
cat "$ARTIST_DIR/context/audience.md" 2>/dev/null # who fans are, how THEY talk
```
Pull out concrete voice signals: sentence length, capitalization habits, emoji/no-emoji,
slang, recurring themes, punctuation tics, and anything in an explicit "voice" or "tone"
section.
**Fallback — real past captions (when there's no `artist.md`):** learn the voice from what
the artist has actually posted. Use the row `id` here (not `account_id`):
```bash
curl -sS "${AUTH[@]}" \
"https://api.recoupable.com/api/artists/$ARTIST_ROW_ID/posts" \
| jq -r '.posts[].caption // empty' | head -30
```
Treat 10–30 real captions as **few-shot examples** of the voice. If neither workspace
context nor posts exist, stop and ask the user for voice guidance — do **not** invent a
persona.
### 3. Gather the subject context
Pull the facts the caption should reference, from the workspace where possible:
```bash
cat "$ARTIST_DIR/releases/$RELEASE_SLUG/RELEASE.md" 2>/dev/null # release narrative, date, title
```
For a song's mood/lyrics, the `recoup-song-analysis` skills (Recoupable skills library)
can supply a hook or lyric line — but never paste third-party copyrighted lyrics wholesale;
reference or paraphrase.
### 4. Draft in-voice
Write `Count` distinct caption options, each grounded in the voice signals from step 2 and
the subject from step 3. The model doing the drafting is *you* — use the real captions as
few-shot anchors so the output matches their register, not a generic "music marketing"
tone. For each option vary the angle (e.g. direct/hype, intimate/personal, witty), and
include platform-appropriate hashtags/CTA from `context/audience.md`.
**Optional API assist (on-screen / video overlay text):** when the caption is burned-in
text for a video rather than a post caption, generate it via the endpoint and reuse its
styling hints. Encode the voice + subject into `topic`:
```bash
TOPIC="In ${ARTIST_NAME}'s voice (${VOICE_SUMMARY}). Post is about: ${SUBJECT}."
curl -sS -X POST "https://api.recoupable.com/api/content/caption" \
"${AUTH[@]}" -H "Content-Type: application/json" \
-d "$(jq -n --arg topic "$TOPIC" --arg len "short" '{topic:$topic, length:$len}')"
# -> { content, font, color, borderColor, maxFontSize }
```
`length` is `short` (default) | `medium` | `long` | `none`. The styling fields matter only
for burned-in video text (hand them to the video/edit step); for a plain post caption,
just use `content` as one more option.
### 5. Present, then persist
Show the options to the user, labeled by angle, with the platform noted. On approval, write
them back into the workspace and commit:
```bash
mkdir -p "$ARTIST_DIR/content/captions"
# write the chosen/option set to a dated markdown file, then:
git add "$ARTIST_DIR/content/captions" && \
git commit -m "content: brand-voice captions for ${SUBJECT}"
```
If there's no workspace, just return the options in the conversation.
## Guardrails
- **Never fabricate the voice.** No `artist.md` and no posts → ask, don't invent.
- **Don't overwrite static context.** `context/artist.md` is the maintained source of
truth; this skill *reads* it and writes captions elsewhere (`content/captions/`).
- **Lyrics.** Reference or paraphrase the artist's own lyrics; never reproduce third-party
copyrighted lyrics wholesale.
- **Voice over volume.** Three captions that nail the voice beat ten generic ones.
## Reference
- `references/workspace-context.md` — read-context-first, the context files, write-back.
- `references/account-resolver.md` — auth modes + `account_id` vs row `id`.
Related in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".