Sub-skill: Build / update the Voice & Brand Profile
Builds or refreshes ../../../references/voice-profile.md so every writing skill in
by sergebulaev·MIT license·★ 3,059 Stars on the repo·GitHub ↗
Use now
Files of Sub-skill: Build / update the Voice & Brand Profile
sergebulaev/
voice-profile.md
Show the full text57 lines
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)
- 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.
- Apify-assisted (optional). If
APIFY_TOKENis set and the user gives their profile URL, pull recent activity withlib.fetch_user_recent_comments(username=...)(and any post URLs they share vialib.fetch_post) to gather more samples. Treat as an accelerator on top of, not a replacement for, pasted samples. - Manual. The user can also just tell you their niche, rules, and links.
Steps
- Gather 3+ real samples of the user's writing (pasted or pulled).
- 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
- Infer niche, ICP, and pillars from the sample topics; confirm with the user rather than guessing.
- Capture hard rules and CTA/link style the samples reveal or the user states.
- Write
../../../references/voice-profile.md: fill sections 1-5, copy the 2-4 strongest lines verbatim into "Signature examples", and set the Status block tofilled: yes,source: <pasted|apify|manual>,updated: <today's date>. - 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.
Related
- The filled profile is read by
linkedin-post-writer,linkedin-comment-drafter,linkedin-reply-handler, andlinkedin-repurposerbefore 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 | |
| 3 | Builds or refreshes `../../../references/voice-profile.md` so every writing skill in |
| 4 | this bundle drafts in the user's real voice instead of a generic "human" voice. |
| 5 | Runs on any agent (Claude Code, Codex, OpenClaw): the core path needs only the |
| 6 | user'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 | |
| 16 | **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. |
| 18 | **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. |
| 22 | **Manual.** The user can also just tell you their niche, rules, and links. |
| 23 | |
| 24 | ## Steps |
| 25 | |
| 26 | **Gather 3+ real samples** of the user's writing (pasted or pulled). |
| 27 | **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 |
| 33 | **Infer niche, ICP, and pillars** from the sample topics; confirm with the user |
| 34 | rather than guessing. |
| 35 | **Capture hard rules and CTA/link style** the samples reveal or the user states. |
| 36 | **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>`. |
| 39 | **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 |
Discussion
Browse more free Claude skills.