LinkedIn Copywriter

A Claude Code skill that ghostwrites LinkedIn posts, comments, and DMs in the user's voice, without AI tells

Getting started

The linkedin-copywriter skill is part of the gtm-skills bundle, a Claude Code skill catalog for GTM workflows, listed on the skills.sh registry. It’s a focused instruction set that loads on demand when an agent is asked to draft LinkedIn content: it uses the gtm-tools LinkedIn tools for voice ingestion and context fetching, then drafts and scrubs against an anti-AI pattern list built from the top LinkedIn-ghostwriter skills on the market.

The skill calls the gtm-tools HTTP API over curl, so it works in Claude Code and any Agent Skills-compatible client with no MCP wiring. Drafting needs only an API key; the two sending modes (invitation, dm) also need a LinkedIn session in the pool.

Installation

Install just the LinkedIn Copywriter skill:

$npx skills add arnaudjnn/gtm-skills --skill linkedin-copywriter

Add --yes to skip the confirmation prompts (for CI or a scripted setup), and --global to install at user level instead of into the current project:

$npx skills add arnaudjnn/gtm-skills --skill linkedin-copywriter --yes --global

Or install the whole gtm-skills catalog (outbound-sales, linkedin-copywriter, reddit-community-manager):

$npx skills add arnaudjnn/gtm-skills

Both work because arnaudjnn/gtm-skills follows the anthropics/skills layout: each skill lives at skills/<name>/SKILL.md and is addressable by name.

Claude Code plugin marketplace

The repo also ships a .claude-plugin/marketplace.json, so you can install it as a plugin instead:

/plugin marketplace add arnaudjnn/gtm-skills
/plugin install gtm-skills@gtm-skills

Manual installation

Skills are plain markdown. Clone the repo and drop the directory where your client looks for skills:

$git clone https://github.com/arnaudjnn/gtm-skills.git
$cp -R gtm-skills/skills/linkedin-copywriter ~/.claude/skills/linkedin-copywriter

Configuration

Environment variable

Set the API key once. Every tool call in the skill reads it:

$export GTM_TOOLS_API_KEY="<your-api-key>"

Where the skill installs

npx skills add writes the real files under .agents/skills/<name>/ and symlinks them into each agent directory it detects, including .claude/skills/<name> for Claude Code. Pass --copy if you’d rather have real files in both places than symlinks, and --global to install into your home directory instead of the project.

Get an API key with get_api_key (see Getting Your API Key) or run gtm-tools admin login, which stores it in ~/.gtm-tools/config.json.

Features

When the linkedin-copywriter skill loads, it teaches the agent:

Four modes

post / comment / invitation / dm, each with its own char budget, structure, and tool fan-out. The skill picks the mode from the request and asks rather than guessing when it’s ambiguous.

Voice ingestion

Pulls the user’s last 15 to 30 posts via list_user_posts to learn their register before drafting: sentence length, opener patterns, content pillars, formatting habits. It captures rhythm, never copies phrases.

The Reaction-Mode Gate

For comments, it extracts the original poster’s claims verbatim and confirms which one to react to before drafting. This catches misreadings before they become public, downvotable comments.

Anti-AI scrub

A mandatory pass against roughly 55 banned corporate tells (leverage, utilize, robust, paradigm, synergy, streamline, comprehensive, pivotal, transformative, cutting-edge, ecosystem, holistic, plus intensifiers like deeply, truly, fundamentally), an em-dash ban, a rule-of-three ban, a sycophancy ban, and a hedge-stacking ban. Each failure means a rewrite.

Char-limit guards

3,000 hard / 1,800 to 2,800 sweet spot for posts; 1,250 hard / 200 to 350 for comments; 300 hard for invitations; ~800 target for DMs.

Draft-then-paste by default

Posts and comments come back as copy-paste-ready text, because LinkedIn’s write API is gated to approved partners. Invitations and DMs send via send_linkedin_invitation / send_linkedin_message only after explicit approval (“ship it”, not “looks good”).

Five bundled sub-skills

profiles, companies, posts, jobs, and messaging ship alongside the main skill, each a focused tool reference the agent loads when a draft needs that kind of lookup.

Example usage

Ask in natural language. The skill loads on its own, with no slash command:

  • “Write a LinkedIn post about what we learned migrating off Segment.”
  • “Draft a comment on this post: <url>.”
  • “Ghostwrite this in my voice, I’ll paste it myself.”
  • “Write a connection request to the VP of Sales at acme.com.”
  • “Repurpose this blog post into a LinkedIn post.”

It won’t take over pure prospecting (use the LinkedIn tools directly, or the outbound-sales skill) or non-LinkedIn channels.

Resources