linkedin-poster
Drafts and publishes high-quality LinkedIn posts that sound like the user, not like an AI summary. Reads a reusable per-user profile (intere
Open source Open in the app JSON README (API)
About
Drafts and publishes high-quality LinkedIn posts that sound like the user, not like an AI summary. Reads a reusable per-user profile (interests, audience, voice samples, archetypes, forbidden phrases) and runs a per-post loop: pick an archetype (news reaction, lesson, milestone, provocative question, story), source content, draft 2-3 variants, surface for explicit approval, publish. In Cowork it can auto-fetch voice samples from a LinkedIn profile URL, surface drafts in Dispatch for approval, and auto-type the approved post into LinkedIn at 35-68 WPM. In Claude.ai or the API it works from manually pasted samples and hands the user a copy/paste-ready draft. Anti-mimic guardrail when modeling another writer's style; never clicks Post (the human stays the publisher).
Details
- Kind
- Plugins
- Topic
- Social & content
- Publisher
- cnfcnf
- Origin
- marketplace
- Category
- ferramentas
- Last push
- 2026-05-09T22:17:15Z
- Repository state
- ativo
- License
- NOASSERTION
- Added
- 2026-08-30 01:48:58
- Updated
- 2026-08-30 01:48:58
- Origin id
cnfcnf/linkedin-poster/linkedin-poster
README
# 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`](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](https://github.com/anthropics/skills), 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](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.