Skip to content
Marketing
Skill

/linkedin-message-writer

Research LinkedIn profiles and write personalized messages for any LinkedIn message type — connection requests, InMails, DMs, message requests, post comments, and comment replies. Takes LinkedIn URLs as input, researches each person (profile data + recent posts via Apify), and

From plugin
goose-skills
1.2k200 skills
Install
$ npx -y skills add gooseworks-ai/goose-skills --skill linkedin-message-writer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/linkedin-message-writer

Context preview

The summary Claude sees to decide when to auto-load this skill.

Research LinkedIn profiles and write personalized messages for any LinkedIn message type — connection requests, InMails, DMs, message requests, post comments, and comment replies. Takes LinkedIn URLs as input, researches each person (profile data + recent posts via Apify), and

SKILL.md

linkedin-message-writer.SKILL.md
name: linkedin-message-writer
description: >
  Research LinkedIn profiles and write personalized messages for any LinkedIn message type —
  connection requests, InMails, DMs, message requests, post comments, and comment replies.
  Takes LinkedIn URLs as input, researches each person (profile data + recent posts via Apify),
  and generates messages tailored to each lead's background, interests, and recent activity.
  Exports tool-ready CSVs for Dripify, Expandi, Botdog, PhantomBuster, or generic format.
  No LinkedIn cookies or login required.
tags: [outreach, social]

LinkedIn Message Writer

Research LinkedIn leads and write personalized messages for any LinkedIn message type. Takes LinkedIn URLs, researches each person using Apify (profile + recent posts), and writes messages based on what it finds.

No LinkedIn cookies. No database setup. Just LinkedIn URLs in, personalized messages out.

When to Auto-Load

Load this skill when:

  • User says "write LinkedIn messages", "LinkedIn outreach", "connect with these leads on LinkedIn", "send LinkedIn messages"
  • User has a list of LinkedIn URLs and wants to reach out
  • User wants to write personalized connection requests, InMails, DMs, or comments

Prerequisites

Apify API Token

Required for researching LinkedIn profiles and posts. Set in `.env`:

APIFY_API_TOKEN=your_token_here

No LinkedIn cookies, login, or session tokens needed. Apify handles scraping without any LinkedIn credentials.

That's it. One env var. Nothing else.

---

LinkedIn Message Types Reference

This skill writes any text-based LinkedIn message type. Each type has different constraints.

| Message Type | Who Can Receive | Character Limit | When to Use | |-------------|----------------|-----------------|-------------| | **Connection request** | 2nd/3rd degree connections | 200 (free) / 300 (premium) | First touch. Must earn the accept. No selling. | | **InMail** | Anyone (requires premium credits) | Subject: 200, Body: 1,900 | Standalone pitch to people who won't accept cold connections. Senior execs, busy people. | | **DM** | 1st-degree connections only | 8,000 | Follow-ups after connection accepted. Conversational, not broadcast. | | **Message request** | Group members, event attendees, #OpenToWork | 8,000 | Warm context — you share a group or event. Reference the shared context. | | **Post comment** | Anyone (public posts) | 1,250 | Warm-up before connecting. Show you engaged with their content. Not a pitch. | | **Comment reply** | Anyone (in a thread) | 1,250 | Engage in a conversation they started. Add value, don't pitch. |

Key Rules Per Type

**Connection request (200/300 chars):**

  • This is the gatekeeper. If they don't accept, nothing else happens.
  • Lead with the signal — what they did/said/posted that caught your attention.
  • One sentence of relevance. No pitch, no CTA, no "I'd love to..."
  • MUST be under the character limit. Count every character. If over, rewrite — never truncate.
  • Free accounts: 200 chars. Premium/Sales Navigator: 300 chars. Ask the user which they have.

**InMail (subject 200 + body 1,900 chars):**

  • Must work standalone — they haven't accepted your connection.
  • Subject: curiosity-driven, not salesy. Not "Quick question" or "Partnership opportunity."
  • Body: include context for why you're reaching out (the signal). Be specific.
  • Higher commitment ask is OK here — you're using a premium credit.

**DM (8,000 chars):**

  • Conversational. These read like DMs, not emails.
  • Shorter is almost always better. A 2-sentence message outperforms a 5-sentence one.
  • Good for follow-up sequences after connection accepted.
  • Sequence structure: Day 0 connection → Day 3 value-first → Day 7 social proof → Day 14 breakup.

**Message request (8,000 chars):**

  • Always reference the shared context (group name, event name, OpenToWork status).
  • More casual than InMail since you have something in common.

**Post comment (1,250 chars):**

  • Add genuine value. Share an insight, ask a smart question, build on their point.
  • NOT "Great post!" or "Love this!" — that's noise.
  • This is a warm-up move, not a pitch. The goal is to get noticed before connecting.

**Comment reply (1,250 chars):**

  • Continue the conversation. Reference what they said specifically.
  • Shorter than a standalone comment. 2-3 sentences max.

---

Workflow

Phase 0: Intake

Ask the user these questions. Skip any already answered.

**Leads:** 1. Where are your leads? (CSV file, paste LinkedIn URLs, database, CRM — whatever they have) 2. How many leads? (affects cost estimate and whether to use post scraper)

**Message type:** 3. What kind of LinkedIn message do you want to write? (connection request, InMail, DM, message request, post comment, comment reply, or a sequence of multiple types) 4. If connection request: do you have a free or premium LinkedIn account? (affects character limit: 200 vs 300)

**Goal:** 5. What's the objective? (book meetings, drive demo requests, get replies, build relationships, promote content, warm up before outreach) 6. What's the angle or hook? (pain-based, hiring signal, competitor displacement, event-based, content engagement, mutual connection, cold)

**Tone:** 7. Which tone? Present options:

  • **Casual Professional** — Friendly, human, slightly informal. Like messaging a peer. (default)
  • **Thought Leader** — Lead with insight or a contrarian take. Position sender as expert.
  • **Provocative** — Challenge assumptions, pattern-interrupt. Higher risk, higher reward.
  • **Enterprise Formal** — Polished, structured. For regulated industries or C-suite targets.
  • **Custom** — User pastes reference messages that have worked, or describes the vibe.

8. Any reference messages that have worked well? (these override tone presets)

**Context:** 9. What does your company/product do? (one-liner for the AI to work with) 10. Any proof points? (customer names, metrics, case studies to reference)

**Output:** 11. Which LinkedIn

Read more
Ships withgoose-skills

Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.

Get the whole plugin

Other skills on goose-skills.