Voice Brand Profile Builder

Sub-skill: Build / update the Voice & Brand Profile

by sergebulaev · MIT license · ★ 3,059 on GitHub · updated Sep 18

Sub-skill: Build / update the Voice & Brand Profile cover

Builds or refreshes ../../../references/voice-profile.md so every writing skill in

# Sub-skill: Build / update the Voice & Brand Profile

Builds or refreshes `../../../references/voice-profile.md` so every writing skill in
this bundle drafts in the user's real voice instead of a generic "human" voice.
Runs on any agent (Claude Code, Codex, OpenClaw): the core path needs only the
user's own writing pasted in. Apify is an optional accelerator, never required.

## When this runs

- User says "build my voice profile", "learn my voice", "set up my profile", or
  invokes `linkedin-humanizer --mode profile`.
- Also offer it the first time a writing skill runs and finds `filled: no`.

## Inputs (any one is enough)

1. **Pasted samples (portable default).** Ask for 3-6 of the user's own real
   LinkedIn posts or comments. This alone is enough; no token, no history needed.
2. **Apify-assisted (optional).** If `APIFY_TOKEN` is set and the user gives their

Overview

Builds or refreshes ../../../references/voice-profile.md so every writing skill in this bundle drafts in the user's real voice instead of a generic "human" voice. Runs on any agent (Claude Code, Codex, OpenClaw): the core path needs only the user's own writing pasted in. Apify is an optional accelerator, never required.

Manual install (npx, ZIP)
Claude Codenpx skills add sergebulaev/linkedin-skills --skill sub-skill-build-update-the-voice-brand-profile -g -a claude-code
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • voice-profile.md3.0 KB
Read voice-profile.md here
sergebulaev/main1 file
voice-profile.md
Show the full text57 lines
sub-skill-build-update-the-voice-brand-profile/voice-profile.md57 lines · 3.0 KB

Sub-skill: Build / update the Voice & Brand Profile

Builds or refreshes ../../../references/voice-profile.md so every writing skill in this bundle drafts in the user's real voice instead of a generic "human" voice. Runs on any agent (Claude Code, Codex, OpenClaw): the core path needs only the user's own writing pasted in. Apify is an optional accelerator, never required.

When this runs

  • User says "build my voice profile", "learn my voice", "set up my profile", or invokes linkedin-humanizer --mode profile.
  • Also offer it the first time a writing skill runs and finds filled: no.

Inputs (any one is enough)

  1. Pasted samples (portable default). Ask for 3-6 of the user's own real LinkedIn posts or comments. This alone is enough; no token, no history needed.
  2. Apify-assisted (optional). If APIFY_TOKEN is set and the user gives their profile URL, pull recent activity with lib.fetch_user_recent_comments(username=...) (and any post URLs they share via lib.fetch_post) to gather more samples. Treat as an accelerator on top of, not a replacement for, pasted samples.
  3. Manual. The user can also just tell you their niche, rules, and links.

Steps

  1. Gather 3+ real samples of the user's writing (pasted or pulled).
  2. Extract the voice fingerprint from the samples, not from assumptions:
    • sentence-length rhythm (short/medium/mixed, and how often a long line appears)
    • recurring openers and transitions they actually use
    • punctuation habits (soft .. pause? never em dashes? line breaks per idea?)
    • vocabulary they lean on, and any words/cliches they clearly avoid
    • emoji and hashtag behavior
  3. Infer niche, ICP, and pillars from the sample topics; confirm with the user rather than guessing.
  4. Capture hard rules and CTA/link style the samples reveal or the user states.
  5. Write ../../../references/voice-profile.md: fill sections 1-5, copy the 2-4 strongest lines verbatim into "Signature examples", and set the Status block to filled: yes, source: <pasted|apify|manual>, updated: <today's date>.
  6. Show the user the filled profile for approval before saving, and tell them any writing skill will now match it automatically. They can edit the file anytime.

Hard rules

  • Build the fingerprint from the user's ACTUAL samples. Never invent a voice.
  • Preserve their quirks (a favorite phrase, an unusual rhythm). Those are the point. Only the generic AI-tell scrub still applies to drafts later, not to the profile itself.
  • Keep it honest about coverage: with 3 samples say the profile is a first pass and will sharpen as they add more; suggest re-running after 10+ posts.
  • Never put secrets, private data, or anything the user did not provide into the file.
  • The filled profile is read by linkedin-post-writer, linkedin-comment-drafter, linkedin-reply-handler, and linkedin-repurposer before they draft.
  • Re-run this any time the user's voice or focus shifts to refresh the profile.
1# Sub-skill: Build / update the Voice & Brand Profile
2 
3Builds or refreshes `../../../references/voice-profile.md` so every writing skill in
4this bundle drafts in the user's real voice instead of a generic "human" voice.
5Runs on any agent (Claude Code, Codex, OpenClaw): the core path needs only the
6user's own writing pasted in. Apify is an optional accelerator, never required.
7 
8## When this runs
9 
10- User says "build my voice profile", "learn my voice", "set up my profile", or
11 invokes `linkedin-humanizer --mode profile`.
12- Also offer it the first time a writing skill runs and finds `filled: no`.
13 
14## Inputs (any one is enough)
15 
161. **Pasted samples (portable default).** Ask for 3-6 of the user's own real
17 LinkedIn posts or comments. This alone is enough; no token, no history needed.
182. **Apify-assisted (optional).** If `APIFY_TOKEN` is set and the user gives their
19 profile URL, pull recent activity with `lib.fetch_user_recent_comments(username=...)`
20 (and any post URLs they share via `lib.fetch_post`) to gather more samples.
21 Treat as an accelerator on top of, not a replacement for, pasted samples.
223. **Manual.** The user can also just tell you their niche, rules, and links.
23 
24## Steps
25 
261. **Gather 3+ real samples** of the user's writing (pasted or pulled).
272. **Extract the voice fingerprint** from the samples, not from assumptions:
28 - sentence-length rhythm (short/medium/mixed, and how often a long line appears)
29 - recurring openers and transitions they actually use
30 - punctuation habits (soft `..` pause? never em dashes? line breaks per idea?)
31 - vocabulary they lean on, and any words/cliches they clearly avoid
32 - emoji and hashtag behavior
333. **Infer niche, ICP, and pillars** from the sample topics; confirm with the user
34 rather than guessing.
354. **Capture hard rules and CTA/link style** the samples reveal or the user states.
365. **Write `../../../references/voice-profile.md`**: fill sections 1-5, copy the 2-4
37 strongest lines verbatim into "Signature examples", and set the Status block to
38 `filled: yes`, `source: <pasted|apify|manual>`, `updated: <today's date>`.
396. **Show the user the filled profile for approval** before saving, and tell them
40 any writing skill will now match it automatically. They can edit the file anytime.
41 
42## Hard rules
43 
44- Build the fingerprint from the user's ACTUAL samples. Never invent a voice.
45- Preserve their quirks (a favorite phrase, an unusual rhythm). Those are the
46 point. Only the generic AI-tell scrub still applies to drafts later, not to the
47 profile itself.
48- Keep it honest about coverage: with 3 samples say the profile is a first pass and
49 will sharpen as they add more; suggest re-running after 10+ posts.
50- Never put secrets, private data, or anything the user did not provide into the file.
51 
52## Related
53 
54- The filled profile is read by `linkedin-post-writer`, `linkedin-comment-drafter`,
55 `linkedin-reply-handler`, and `linkedin-repurposer` before they draft.
56- Re-run this any time the user's voice or focus shifts to refresh the profile.
57 
View all files on GitHub →

Details

Updated
Sep 18, 2026
License
MIT
Stars on the repo
★ 3,059
Checked
Source
sergebulaev/linkedin-skills ↗
Creator
sergebulaev · 76 listings
View creator

Similar skills

See all →

More from sergebulaev

SkillAI Writing Tells Detectorsergebulaev/linkedin-skills · by sergebulaevScored the way readers read: by density per paragraph, not per word. One marker in a paragraph is English. Three is a signature. The…★ 3.1k GitHub starsSkillAI Writing Tells Referencesergebulaev/linkedin-skills · by sergebulaevFifteen rules from the linkedin-humanizer package, sorted by what kind of evidence each one actually represents.★ 3.1k GitHub starsSkillEmoji Pattern Analysissergebulaev/linkedin-skills · by sergebulaevPattern data from MagicPost LinkedIn analysis (Feb 2026, viral post with 220 engagement).★ 3.1k GitHub starsSkillIG Niche Analyzersergebulaev/instagram-skills · by sergebulaevRead your Instagram niche and profile from real data via Apify, no login. Scan a hashtag for the posts traveling now (likes, comments, owner) to see the format and hook that works. Pull profile stats for any handle, yours or a competitor's: followers, posts, bio, category. Instagram hides who liked or commented on other accounts, so this is discovery plus profiles, not engagers. Triggers on "what works in my niche", "scan the hashtag", "competitor stats". Not for writing captions (use ig-caption-writer).★ 138 GitHub starsSkillIG Caption Writersergebulaev/instagram-skills · by sergebulaevDraft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes with the image or video you supply via the Publora media flow. Use to caption a single image or a Reel. Not for slide-by-slide carousels (use ig-carousel-planner) or auditing a draft (use ig-humanizer --mode audit).★ 138 GitHub starsSkillIG Carousel Plannersergebulaev/instagram-skills · by sergebulaevPlan an Instagram carousel slide by slide, up to 10 slides, with a hook slide that opens a loop, value slides that front-load the payoff, and a payoff slide that earns the save and follow. Picks a 2026 carousel formula (listicle, before/after, myth-buster, framework) by goal (saves, shares, follows), drafts each slide's text plus the caption, then publishes the images you supply via Publora. Use to structure a multi-slide carousel. Not for single-image captions (use ig-caption-writer).★ 138 GitHub stars