A Claude skill for drafting and publishing LinkedIn posts that sound like the person posting them — not like an AI summary.
It is built around a one-time per-user profile (interests, audience, voice samples, archetypes, forbidden phrases) and a per-post loop that picks an archetype, drafts variants, gets explicit approval, and publishes — auto-typing into LinkedIn at human cadence in environments that support browser control, or handing the user a copy/paste-ready draft elsewhere.
This repo is both a plugin and a one-plugin marketplace. Install with two commands inside Claude:
/plugin marketplace add cnfcnf/linkedin-poster
/plugin install linkedin-poster@cnfcnf-marketplace
After install, the skill triggers automatically on phrases like "write me a LinkedIn post," "draft something for LinkedIn," "build my LinkedIn voice profile," or "react to [news] on LinkedIn."
linkedin-poster/
├── .claude-plugin/
│ ├── plugin.json # plugin manifest
│ └── marketplace.json # marketplace manifest (this repo can be added as a marketplace)
└── skills/
└── linkedin-poster/
├── SKILL.md # main skill instructions (~240 lines)
├── assets/
│ └── linkedin-profile-template.md # template the user fills out once
└── references/
├── post-archetypes.md # 5 archetypes with hooks, structure, examples
└── linkedin-navigation.md # Dispatch + LinkedIn computer-use steps + Phase C voice fetch
The skill runs in two tiers depending on what tools the host environment exposes:
Tier 2 — Cowork or any environment with browser control (mcp__Claude_in_Chrome__* + mcp__computer-use__*)
Auto-fetches voice samples from a LinkedIn profile URL, surfaces drafts in the user's Dispatch queue for approval, and auto-types approved posts into LinkedIn at 35-68 WPM with sentence- and paragraph-boundary pauses.
Tier 1 — Claude.ai, the API, mobile, Claude Code without browser MCPs Voice samples come from manual paste. After approval, the skill hands the user a copy/paste-ready post in a fenced code block.
The skill announces which tier it's running in at the start of each session.
Each archetype has its own hook patterns, structural skeleton, and length sweet spot. Detailed templates and worked examples are in references/post-archetypes.md.
| Archetype | When to use |
|---|---|
| News reaction | A specific external event the user wants to weigh in on |
| Lesson | The user learned something the hard way and wants to share the takeaway |
| Milestone | Launch, raise, hire, anniversary, customer win |
| Provocative question | The user wants to start a conversation rather than broadcast |
| Story | A short narrative — a moment, a meeting, a turning point — with a payoff line |
Three ways to populate the profile's voice samples:
- Manual paste (any environment) — user pastes 2-3 of their best past posts.
- Auto-fetch from your own LinkedIn (Tier 2) — give the skill your profile URL; it pulls your recent activity, surfaces ~10 posts for curation, you pick 2-3.
- Style study from another profile (Tier 2) — same fetch mechanism for someone whose style you admire, but stored as
style_referencesrather thanvoice_samples.
style_references are studied at the pattern level only (rhythm, hook density, paragraph structure). Before any draft is approved, a substring-overlap check rewrites any sentence that shares more than ~6 consecutive words with a style reference. The skill will not ghostwrite as someone else (publishing on their account) — that's a separate use case requiring explicit consent from the account holder.
The marketplace flow above is the easy path. For specific situations:
- Drop into a personal skills folder — copy
skills/linkedin-poster/into~/.claude/skills/(or your client's equivalent). No plugin manifest needed; the SKILL.md inside is self-contained. - Vendor inside another plugin you maintain — copy
skills/linkedin-poster/into that plugin'sskills/directory. AGPL-3.0 propagates — your wrapper plugin must also be AGPL-3.0 if you redistribute. - Standalone
.skillbundle — package withpackage_skill.pyfrom the skill-creator skill, pointing atskills/linkedin-poster/, and install through your client's skill manager.
The skill copies assets/linkedin-profile-template.md to your working folder as linkedin-profile.md and walks you through it. The most important field is voice samples — paste 2-3 of your best past posts, or in Tier 2 ask the skill to fetch them from your LinkedIn URL and you curate the keepers.
You: write me a LinkedIn post about [topic / news / milestone]
Skill: [picks archetype, drafts 2-3 variants, shows in chat]
You: B but shorter
Skill: [revises, shows again]
You: A
Skill: [Tier 2: surfaces in Dispatch] / [Tier 1: shows in code block in chat]
You: approved
Skill: [Tier 2: types into LinkedIn at 35-68 WPM, stops before clicking Post] /
[Tier 1: hands you the post for copy/paste]
Approval is gated on explicit language ("approved", "post it", "ship it"). Ambiguous reactions don't pass.
After a post lands well or doesn't, update the profile — add the published post to voice samples if you liked the voice match, add to forbidden phrases anything that felt off. The profile is meant to evolve with your voice.
A few choices worth understanding if you're forking or extending:
- The skill never clicks Post. Even in Tier 2, the publish action stays human. It's the cheapest possible last safety check, and it keeps you as the actor of record on your own feed.
- The skill never invents personal facts. No fake studies, no fictional kid in a story, no specific numbers about your business unless you provided them. If a detail isn't in the profile or the conversation, the skill asks.
- Drafts produce 2-3 variants by default, with deliberately different hooks. Showing one variant tends to anchor users into accepting it; showing variants makes it easier to articulate what's working and what isn't.
- Whitespace matters more than length. LinkedIn's mobile feed punishes walls of text more than it rewards depth. The archetypes lean toward 1-3 sentences per paragraph with blank lines between.
GNU Affero General Public License v3.0 (AGPL-3.0) — see LICENSE.
This is a strong copyleft license: any modifications or derivative works must be released under AGPL-3.0, and crucially, if you run a modified version of this skill as part of a network-accessible service, you must make the modified source available to the users of that service. The AGPL closes the "SaaS loophole" that exists in plain GPL.
Practical implication: forks and improvements stay open. Closed-source SaaS wrappers around this skill are not permitted.
Issues and PRs welcome. The most useful contributions are likely:
- Additional archetypes (e.g. case study, listicle, hot take) with examples.
- Refinements to the typing-cadence recipe in
references/linkedin-navigation.mdbased on real testing. - Selectors / page-shape updates in the LinkedIn navigation reference if the platform UI shifts.
If you build a meaningfully different fork (different archetype set, a domain-specific version like recruiter-poster or vc-poster), open a discussion — happy to link it from this README.