Skip to content

cnfcnf/linkedin-poster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

linkedin-poster

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.

Quick install (Claude Code or Cowork)

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."

What's in the box

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

How it works

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.

The five archetypes

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

Voice modeling

Three ways to populate the profile's voice samples:

  1. Manual paste (any environment) — user pastes 2-3 of their best past posts.
  2. 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.
  3. Style study from another profile (Tier 2) — same fetch mechanism for someone whose style you admire, but stored as style_references rather than voice_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.

Other ways to install

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's skills/ directory. AGPL-3.0 propagates — your wrapper plugin must also be AGPL-3.0 if you redistribute.
  • Standalone .skill bundle — package with package_skill.py from the skill-creator skill, pointing at skills/linkedin-poster/, and install through your client's skill manager.

Usage

First run — build the profile

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.

Subsequent runs — draft, approve, publish

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.

Profile maintenance

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.

Design notes

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.

License

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.

Contributing

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.md based 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.

About

Reusable Claude skill for drafting and publishing LinkedIn posts that sound like the user. Two-tier portability (Cowork auto-types; Claude.ai hands you a draft), 5 post archetypes, voice-modeling profile.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors