---
name: "LinkedIn ghostwriting"
repo: https://github.com/samber/cc-skills
source: https://github.com/samber/cc-skills/blob/HEAD/skills/linkedin-ghostwriting/SKILL.md
license: "MIT"
install: "npx skills add samber/cc-skills --skill linkedin-ghostwriting"
page: https://100xlab.com/resources/agent-skills/samber-cc-skills--linkedin-ghostwriting--xsc5zd
---

**Persona:** You are a B2B ghostwriter. You extract authentic, quantified stories and turn them into high-conversion LinkedIn posts — results first.

# LinkedIn Ghostwriting

Generate conversion-focused LinkedIn B2B posts, prioritizing results and authority over vanity metrics.

## Workflow

### Phase 1: Strategic Interview

Extract authentic, quantified material before writing anything. Without raw material, even skilled writing produces generic posts that blend into the feed.

**Ask questions** (8-14 at once) covering these areas:

**Audience & Context**

- Target audience (who exactly?)
- Starting situation
- Main constraint

**Business Goal**

- Post objective
- Offer/CTA

**Results**

- Exact BEFORE → AFTER numbers + timeframe
- Volume/sample size
- What's publicly claimable

**Mechanism**

- Method in 3 steps max (action verbs, not theory)
- The detail that changes everything

**Insight**

- Market belief you contradict
- Common expensive mistake

**Credibility**

- What it cost you (time/money)
- Specific scene or moment
- Social proof (optional)
- Resource to offer

**Validation checklist:** Only move to Phase 2 when you have all four — missing any one leaves the post without the structural tension that drives engagement:

- At least 1 quantified metric
- 1 clear counter-intuitive insight
- 1 mechanism (2-3 steps)
- 1 determined CTA

### Phase 2: Hook Engineering

Propose 3-5 hooks based on frameworks in [references/hook-frameworks.md](references/hook-frameworks.md).

Rules:

- Reveal 80% (result/subject), keep 20% (how) to create tension — giving away everything kills the reason to read on
- No rhetorical questions, no vague promises
- Radical specificity: numbers, deadlines, contrasts, costs
- Provide ONLY hooks (no body, no outline, no explanation)

Wait for user to choose one.

### Phase 3: Post Body

Apply these copywriting principles:

**Writing rules:**

- Cut ruthlessly — every word must earn its place; padding dilutes impact
- Remove: "very", "really", "incredibly"
- Use active voice (Zombie Test: would "by zombies" work? If yes, rewrite)
- Vary sentence length: 3-5 words for impact, then medium length for explanation

**Structure:**

- Re-Hook: Punchy transition from hook
- ABT logic: AND (context) → BUT (problem) → THEREFORE (solution)
- Revelation rate: New info/numbers/wit at regular intervals to maintain scroll momentum
- Psychology lever: Complicity | Support | Reciprocity | Mindfuck
- CTA: Clear and directive (no open-ended questions — they reduce action)

**Formatting:**

- Mobile-first: 58% of LinkedIn reads happen on phones; long paragraphs become walls of text and get skipped
- Never more than 2 visual lines per paragraph on phone
- Line breaks between most sentences
- Use bullet points heavily

**Avoid:**

- Rhetorical questions — they signal low confidence and annoy readers
- Empty words ("digital landscape", "incontournable", "liberate potential")
- Emoji abuse
- Clichés ("X is like Y")
- Ternary structures

## Final polish

After writing the post, invoke a humanizer skill (e.g. "humanize", "humanizer", "de-slop", "natural writing check", "AI detection cleanup", "rewrite like a human") to scrub AI-generated patterns — filler words, predictable cadence, over-hedging, and hollow transitions. A LinkedIn post that reads like GPT output loses credibility instantly.

**Preserve hooks.** The hook (first 1-3 lines) was deliberately engineered in Phase 2 for tension and specificity. Instruct the humanizer to leave the hook intact — rewriting it for "naturalness" destroys the copywriting structure that drives engagement.

## Mental Models

**Jenga vs Kapla:** Remove words until the structure is pure without collapsing. Less is more.

**Aristotle's Triptych:**

- Ethos: Show results, social proof, experience
- Logos: Logic, numbers, clear process
- Pathos: Emotion only if it serves credibility/connection

**Costly Signal:** Visible effort increases perceived value ("I spent 40 hours..." | "I invested €2,000..."). Signals skin in the game.

**Allbound Strategy:** Content (inbound) triggers conversations (outbound). Design posts to drive DMs and profile visits, not just impressions.

## Style

Use unicode bold instead of simple bold styling. Much easier to copy-paste into Linkedin for a human.

## References

- [references/hook-frameworks.md](references/hook-frameworks.md) — Six proven hook frameworks with examples
- [references/example-post.md](references/example-post.md) — Real example post with breakdown

---

## Supporting file: evals/evals.json

```json
{
  "skill_name": "linkedin-ghostwriting",
  "evals": [
    {
      "id": 1,
      "prompt": "Write a LinkedIn post about how I grew my newsletter from 0 to 50,000 subscribers in 18 months.",
      "expected_output": "Should NOT write the post. Instead, should conduct a strategic interview with 8+ questions before writing anything.",
      "files": [],
      "assertions": [
        { "id": "1.1", "description": "asks questions before writing a post (no post content in the response)" },
        { "id": "1.2", "description": "asks 8 or more distinct questions" },
        { "id": "1.3", "description": "asks for specific before/after metrics or exact numbers" },
        { "id": "1.4", "description": "asks about the mechanism/process (how it was achieved)" },
        { "id": "1.5", "description": "asks about the target audience" },
        { "id": "1.6", "description": "asks about the CTA or business goal of the post" }
      ]
    },
    {
      "id": 2,
      "prompt": "Here's my context for a LinkedIn post:\n- I'm a SaaS founder\n- Reduced customer churn from 8% to 2% monthly in 6 months\n- Did it by implementing weekly 1:1 calls with top 20% of customers\n- Counter-intuitive: more human touch beats automation for retention\n- CTA: DM me if you want the exact call script\n\nNow generate hooks for my post.",
      "expected_output": "Should propose 3-5 hook options only (single lines), no full post body. No rhetorical questions. Hooks should use specific numbers.",
      "files": [],
      "assertions": [
        { "id": "2.1", "description": "proposes 3 or more hook options" },
        { "id": "2.2", "description": "each hook is a short standalone line — no full post body written" },
        { "id": "2.3", "description": "response waits for user to choose a hook (does not write the full post)" },
        { "id": "2.4", "description": "no rhetorical questions in any of the hooks (no '?' at end of hook lines)" },
        { "id": "2.5", "description": "at least one hook includes specific numbers from the context (8%, 2%, 6 months)" }
      ]
    },
    {
      "id": 3,
      "prompt": "I'll use hook #2: 'I cut churn from 8% to 2% in 6 months without a single new automation.'\n\nNow write the full post body.",
      "expected_output": "Full post body starting with the hook. No rhetorical questions, active voice, short paragraphs, clear directive CTA. No empty phrases.",
      "files": [],
      "assertions": [
        { "id": "3.1", "description": "post starts with or closely follows the selected hook (not a preamble)" },
        { "id": "3.2", "description": "no rhetorical questions in the post body" },
        { "id": "3.3", "description": "post uses active voice (zombie test: sentences should not work with 'by zombies')" },
        { "id": "3.4", "description": "has a clear, directive CTA (not an open-ended question)" },
        { "id": "3.5", "description": "paragraphs are short (2 visual lines or fewer per paragraph)" },
        { "id": "3.6", "description": "does not contain 'very', 'really', or 'incredibly'" }
      ]
    },
    {
      "id": 4,
      "prompt": "I want to write a LinkedIn post about my leadership journey but I don't have any specific numbers to share.",
      "expected_output": "Should ask for quantified data and specific scenarios — not write a generic post. Should push back on lack of metrics.",
      "files": [],
      "assertions": [
        { "id": "4.1", "description": "does not write a generic post without metrics" },
        { "id": "4.2", "description": "asks for quantified before/after results or specific measurable outcomes" },
        { "id": "4.3", "description": "asks for a specific scene or moment (not just abstract lessons)" },
        { "id": "4.4", "description": "asks for a counter-intuitive insight that the post could be built around" }
      ]
    },
    {
      "id": 5,
      "prompt": "Write a LinkedIn post about the importance of remote work culture in 2024.",
      "expected_output": "Should not write a generic thought-leadership post. Should interview the user about their personal experience, numbers, and specific insight.",
      "files": [],
      "assertions": [
        { "id": "5.1", "description": "does not immediately write a generic thought-leadership post" },
        { "id": "5.2", "description": "asks about the user's personal experience with remote work" },
        { "id": "5.3", "description": "asks for specific data, outcomes, or evidence from the user's own context" },
        { "id": "5.4", "description": "asks what specific insight or belief the user wants to contradict or challenge" }
      ]
    },
    {
      "id": 6,
      "prompt": "Here's all my context:\n- B2B SaaS founder, 8 years experience\n- Launched an AI feature that nobody used for 3 months\n- Discovered the problem: wrong messaging, not wrong product\n- Fixed by rewriting 3 lines on the pricing page\n- Revenue from that feature went from $0 to $45k MRR in 60 days\n- CTA: commenting 'PRICING' gets my free messaging framework\n\nWrite the full post.",
      "expected_output": "Should first propose hooks (Phase 2), not skip straight to writing the full post.",
      "files": [],
      "assertions": [
        { "id": "6.1", "description": "proposes hooks before writing the full post (does not skip Phase 2)" },
        { "id": "6.2", "description": "if full post is eventually written: CTA is directive, not an open-ended question" },
        { "id": "6.3", "description": "if full post is written: no empty phrases like 'digital landscape' or 'incontournable'" },
        { "id": "6.4", "description": "if full post is written: no ternary structures (not 'X, Y, and Z' as a list of three equal items in the hook)" }
      ]
    },
    {
      "id": 7,
      "prompt": "Write a hook for my LinkedIn post about cold email. I sent 10,000 cold emails last quarter with a 38% reply rate using a 3-step personalization framework. My audience is B2B sales reps.",
      "expected_output": "Proposes 3-5 hooks. No rhetorical questions. Hooks reference specific numbers. Hooks reveal result without revealing full method.",
      "files": [],
      "assertions": [
        { "id": "7.1", "description": "proposes 3 or more hook options" },
        { "id": "7.2", "description": "no rhetorical questions in any hooks" },
        { "id": "7.3", "description": "hooks include specific numbers (10,000, 38%)" },
        { "id": "7.4", "description": "hooks reveal the result (38% reply rate) but not the full method — maintaining tension" }
      ]
    },
    {
      "id": 8,
      "prompt": "Here's my post:\n'Remote work is really changing the digital landscape of modern business. It's very important to have good culture. Teams that adapt will thrive. Teams that don't adapt will struggle. Companies need to think carefully about this very complex topic.'\n\nPlease improve this post.",
      "expected_output": "Rewrites removing empty phrases, filler words, passive constructions. Should suggest interview for concrete data. Result should be tighter with specific claims.",
      "files": [],
      "assertions": [
        { "id": "8.1", "description": "removes 'very', 'really', or similar filler adverbs" },
        { "id": "8.2", "description": "removes empty phrases like 'digital landscape'" },
        { "id": "8.3", "description": "uses active voice throughout" },
        { "id": "8.4", "description": "result is noticeably shorter/tighter than the original" },
        { "id": "8.5", "description": "suggests the user needs specific numbers/data to make the post credible" }
      ]
    },
    {
      "id": 9,
      "prompt": "My final CTA should be: 'What do you think about this approach? Let me know in the comments!'",
      "expected_output": "Should flag this as a weak, open-ended CTA and suggest a directive alternative. Open-ended questions reduce action.",
      "files": [],
      "assertions": [
        { "id": "9.1", "description": "identifies the open-ended question as a weak CTA" },
        { "id": "9.2", "description": "suggests a directive alternative (e.g., 'Comment X', 'DM me', 'Save this post')" },
        { "id": "9.3", "description": "explains why directive CTAs outperform open-ended questions" }
      ]
    },
    {
      "id": 10,
      "prompt": "Write a LinkedIn post body for this hook: 'I closed $2M in B2B deals last year using one question I never skip.'\nContext: The question is 'What happens if you don't solve this problem in 6 months?' It creates urgency without pressure. 47 deals closed, average deal size $42k. CTA: Comment 'QUESTION' to get the script.",
      "expected_output": "Post with hook, ABT structure, active voice, directive CTA, short paragraphs, no rhetorical questions. Costumer signal included.",
      "files": [],
      "assertions": [
        { "id": "10.1", "description": "post starts with or immediately after the given hook" },
        { "id": "10.2", "description": "no rhetorical questions in the post body" },
        { "id": "10.3", "description": "CTA is directive: 'Comment QUESTION' or similar — not a question" },
        { "id": "10.4", "description": "paragraphs are short (2 visual lines max per paragraph)" },
        { "id": "10.5", "description": "active voice throughout (no 'was closed by', 'are being used by')" }
      ]
    }
  ]
}
```

---

## Supporting file: references/example-post.md

# Example LinkedIn Post

## A Decade of Failure

```
Yesterday I published a review of my first decade dedicated to entrepreneurship.

Why such a disaster?

Many blamed luck. After all, you just keep trying until you find the right thing. Eventually I'll get there.

I don't think that's it.

For me, it comes from something more personal.

I jump compulsively from one entrepreneurial venture to the next.

I'm becoming a known speaker? (120 conferences in 2019, €5k per conference by the end) → I drop everything and move to LinkedIn.

My agency hits €3M in 2021? → Time to build software!

I exceed $4M ARR with my open-source dev marketplace in crypto? Let's pivot to do AI in San Francisco.

All without ever taking a meaningful personal check.

No time to sell with constraining clauses that would dramatically increase acquisition price—that would cost me 12-18 months.

Unthinkable.

Besides, my next venture has so much more financial potential... it's obviously the right choice! (except I've repeated this pattern for 10 years)

But why this constant escape forward?

I always want to maximize learning. I chase what's hardest and most stimulating.

Because of that, in 10 years I went from "renting meeting rooms in a Grenoble coworking space" to "working with AI research teams in SF."

That's positive.

But there's also an adrenaline addiction. I love putting myself at risk and starting from zero.

Being an outsider means not having to bear the consequences of failure.

Who could blame me when I had no chance anyway?

That's what I need to get rid of. Time to grow up.
```

## Why This Works

**Hook:** Cognitive dissonance (admitting failure while showing extreme success)

**Mechanism:** ABT structure

- **AND** (kept jumping ventures)
- **BUT** (kept abandoning them for new ones)
- **THEREFORE** (finally recognizing the pattern)

**Costly signal:** Specific numbers ($4M ARR, €5k conferences, €3M agency)

**Vulnerability:** Admitting compulsion and adrenaline addiction (strategic disclosure)

**Psychology lever:** Support (overcome failure) + Complicity (the reader probably relates to FOMO)

**Results:** High engagement because it's:

- Specific (actual numbers, actual decisions)
- Counter-intuitive (successful person admits dysfunction)
- Human (vulnerability without melodrama)
- Actionable (reader recognizes their own pattern)

---

## Supporting file: references/hook-frameworks.md

# 🎣 Hook Mastery: Framework Principles

The hook must follow the **80/20 Rule:** Reveal 80% of the value (subject/result) but keep 20% of mystery (the how/why) to create tension.

Use these structures in Phase 2:

## A. Cognitive Dissonance (The Paradox)

**Principle:** A negative situation followed by a positive reaction (or vice versa).

**Example:** "Yesterday, the tax authority took €666,000 from me. I popped champagne."

## B. "A to C without B" (The Jump)

**Principle:** Show the starting point (A) and final result (C), hiding the method (B).

**Example:** "Five years ago, I was eating pasta in my teenage bedroom. Today, I generate €500k in annual revenue."

## C. Contrarian Opinion (Counter-intuitive)

**Principle:** Take the opposite stance of market consensus.

**Example:** "Stop chasing virality. It's the best way to kill your B2B business."

## D. Voyeurism Bias (Behind-the-scenes)

**Principle:** Promise a secret or confession.

**Example:** "I hesitated for a long time before posting this." or "I'm revealing the numbers nobody shows."

## E. Brutal Social Proof

**Principle:** Frame authority with massive numbers on line 1.

**Example:** "In 2 years, I generated 40M+ impressions for my clients (Yomi Denzel, Eliott Meunier...)."

## F. "Day 1" (Credibility)

**Principle:** A specific date anchors the narrative in reality.

**Example:** "January 1st, 2025, everything changed for my agency."

## Key Principles

✅ **Radical Specificity** - Use exact numbers, dates, and context ✅ **Tension Creation** - Hide the methodology; show the result ✅ **Reality Anchor** - Ground abstract concepts in concrete details ✅ **Emotional Trigger** - Activate curiosity, surprise, or recognition ✅ **Lead with Value** - The hook immediately signals why someone should read on
