{
  "markdown": "# linkedin-poster\n\nA Claude skill for drafting and publishing LinkedIn posts that sound like the person posting them — not like an AI summary.\n\nIt 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.\n\n## Quick install (Claude Code or Cowork)\n\nThis repo is both a plugin and a one-plugin marketplace. Install with two commands inside Claude:\n\n```\n/plugin marketplace add cnfcnf/linkedin-poster\n/plugin install linkedin-poster@cnfcnf-marketplace\n```\n\nAfter 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.\"\n\n## What's in the box\n\n```\nlinkedin-poster/\n├── .claude-plugin/\n│   ├── plugin.json                       # plugin manifest\n│   └── marketplace.json                  # marketplace manifest (this repo can be added as a marketplace)\n└── skills/\n    └── linkedin-poster/\n        ├── SKILL.md                      # main skill instructions (~240 lines)\n        ├── assets/\n        │   └── linkedin-profile-template.md   # template the user fills out once\n        └── references/\n            ├── post-archetypes.md        # 5 archetypes with hooks, structure, examples\n            └── linkedin-navigation.md    # Dispatch + LinkedIn computer-use steps + Phase C voice fetch\n```\n\n## How it works\n\nThe skill runs in two tiers depending on what tools the host environment exposes:\n\n**Tier 2 — Cowork or any environment with browser control (`mcp__Claude_in_Chrome__*` + `mcp__computer-use__*`)**\nAuto-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.\n\n**Tier 1 — Claude.ai, the API, mobile, Claude Code without browser MCPs**\nVoice samples come from manual paste. After approval, the skill hands the user a copy/paste-ready post in a fenced code block.\n\nThe skill announces which tier it's running in at the start of each session.\n\n## The five archetypes\n\nEach 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).\n\n| Archetype | When to use |\n|---|---|\n| **News reaction** | A specific external event the user wants to weigh in on |\n| **Lesson** | The user learned something the hard way and wants to share the takeaway |\n| **Milestone** | Launch, raise, hire, anniversary, customer win |\n| **Provocative question** | The user wants to start a conversation rather than broadcast |\n| **Story** | A short narrative — a moment, a meeting, a turning point — with a payoff line |\n\n## Voice modeling\n\nThree ways to populate the profile's voice samples:\n\n1. **Manual paste** (any environment) — user pastes 2-3 of their best past posts.\n2. **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.\n3. **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`.\n\n`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.\n\n## Other ways to install\n\nThe marketplace flow above is the easy path. For specific situations:\n\n- **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.\n- **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.\n- **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.\n\n## Usage\n\n### First run — build the profile\n\nThe 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.\n\n### Subsequent runs — draft, approve, publish\n\n```\nYou: write me a LinkedIn post about [topic / news / milestone]\nSkill: [picks archetype, drafts 2-3 variants, shows in chat]\nYou: B but shorter\nSkill: [revises, shows again]\nYou: A\nSkill: [Tier 2: surfaces in Dispatch] / [Tier 1: shows in code block in chat]\nYou: approved\nSkill: [Tier 2: types into LinkedIn at 35-68 WPM, stops before clicking Post] /\n       [Tier 1: hands you the post for copy/paste]\n```\n\nApproval is gated on explicit language (\"approved\", \"post it\", \"ship it\"). Ambiguous reactions don't pass.\n\n### Profile maintenance\n\nAfter 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.\n\n## Design notes\n\nA few choices worth understanding if you're forking or extending:\n\n- **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.\n- **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.\n- **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.\n- **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.\n\n## License\n\nGNU Affero General Public License v3.0 (AGPL-3.0) — see [LICENSE](LICENSE).\n\nThis 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.\n\nPractical implication: forks and improvements stay open. Closed-source SaaS wrappers around this skill are not permitted.\n\n## Contributing\n\nIssues and PRs welcome. The most useful contributions are likely:\n\n- Additional archetypes (e.g. case study, listicle, hot take) with examples.\n- Refinements to the typing-cadence recipe in `references/linkedin-navigation.md` based on real testing.\n- Selectors / page-shape updates in the LinkedIn navigation reference if the platform UI shifts.\n\nIf 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.\n",
  "bytes": 7842,
  "sha": "5026b6b708c67d9ed6561dfcf7d65f9ebd3987c152a846c6b8bf340e0e2a2447",
  "repo_slug": "cnfcnf/linkedin-poster",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_cnfcnf_linkedin_poster_linkedin_poster_2fe41ba6/readme"
}