LinkedIn 私信:个性化触达自动化 - Openclaw Skills
作者:互联网
2026-03-26
什么是 LinkedIn 私信自动化?
此技能使用户能够在不牺牲个性化触感的情况下扩大 LinkedIn 触达规模。通过利用 Openclaw Skills,智能体分析发送者与接收者之间的关系——识别共同点,如共同的工作单位、校友网络或行业交集——以撰写独特的开场白。随后,它会跟进预先批准且一致的推介内容,确保大规模专业且高效的沟通。
该技能旨在通过将触达分为两个独立的消息(个性化开场白和清晰的价值主张)来模拟人类行为。这种由 Openclaw Skills 驱动的方法在通过内置防检测协议维护发送者账户安全的同时,提高了互动率。
下载入口:https://github.com/openclaw/skills/tree/main/skills/10madh/linkedin-dm
安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install linkedin-dm
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 linkedin-dm。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
LinkedIn 私信自动化 应用场景
- 通过个性化的产品更新和新闻培育一度潜在客户。
- 在行业活动或网络会议后跟进专业联系人。
- 为职业机会或研究重新联系前同事或校友。
- 使用 Openclaw Skills 向精选的联系人列表宣布新项目或产品发布。
- 通过自动化私信流程中的重复部分来扩大对外合作伙伴关系的努力。
- 智能体解析提供的联系人列表 (CSV/TSV) 并读取发送者自己的 LinkedIn 个人资料,以建立关系钩子的基准。
- 用户提供核心产品推介或消息目标,智能体对其进行润色以确保清晰和一致。
- 智能体分析每个接收者的个人资料,选择优先级最高的关系钩子,例如共同的教育背景或重叠的职业历史。
- 所有生成的推介消息将以表格形式显示,供用户审批和手动编辑。
- 通过 Openclaw Skills 使用浏览器自动化,智能体在 LinkedIn 信息流中导航以保持自然的活动轨迹。
- 智能体搜索每个联系人,打开他们的个人资料,并按两部分序列发送触达消息。
- 每次成功的触达都会实时记录到 Google 表格或本地 JSON 文件中,以便无缝的 CRM 跟踪。
LinkedIn 私信自动化 配置指南
确保您已准备好包含姓名和公司的 CSV 或 TSV 格式的联系人列表。验证您的 Google 账号以启用 CRM 跟踪功能:
gog auth list
使用 Chrome 浏览器中继或 OpenClaw 隔离浏览器配置您的浏览器环境。环境准备就绪后,Openclaw Skills 智能体将在启动自动化循环前,引导您完成发送者资料读取和推介确认步骤。
LinkedIn 私信自动化 数据架构与分类体系
该技能维护所有触达活动的结构化日志,以防止重复发送消息并支持后续跟进。
| 字段 | 描述 |
|---|---|
| 发送日期 | 消息会话的 ISO 格式日期。 |
| 联系人姓名 | 发送消息的联系人全名。 |
| 关系钩子 | 用于个性化的具体逻辑(例如:同公司、BITS 校友)。 |
| 消息状态 | 跟踪值,如已发送、已发送过或未找到个人资料。 |
| CRM 集成 | 同步到 Google 表格的数据,包括开场白文本和推介文本。 |
name: linkedin-dm
description: Send personalized LinkedIn direct messages to a list of existing 1st-degree connections via browser automation. Use when the user wants to message LinkedIn connections with AI-personalized outreach — e.g. nurturing leads, following up after events, reconnecting with contacts, or announcing something. Takes a data file (CSV/TSV) or plain list with connection names and companies, asks for outreach context/goal, generates a tailored message per person, and sends each one via browser automation. Handles message compose flow, character limits, and incremental status tracking.
LinkedIn DM
Sends personalized LinkedIn messages to existing 1st-degree connections. Each message has:
- A personalized opening unique to each person (based on their profile + relationship to the sender)
- A consistent product/pitch section confirmed once by the user and reused for all messages
?? Pre-flight Checklist — Confirm Before Starting
1. Connection List
Ask the user for their data file or list. Must include (or be added):
- Person Name — full name
- Company/Role — their current company or role
- LinkedIn URL — optional but helpful
- Message Status — column for tracking (add if missing)
If only a plain list is provided, offer to convert to TSV.
2. Read Sender's LinkedIn Profile (mandatory)
Before writing any messages, navigate to /in/me/ and read the sender's profile:
- Name and current role/company
- Career history — companies, roles, years
- Education — college, degree, batch years
- Location
Store these facts. They are used to identify relationship hooks with each connection.
3. Confirm the Pitch (once, upfront)
Ask the user:
"What's your pitch / product message? This will be the consistent part of every message. Describe it in 1–2 sentences."
Then draft a polished pitch section (2–4 sentences max, punchy and clear). Show it to the user and get explicit approval. Do not start sending until the pitch is confirmed.
Example prompt: "Here's the pitch I'll use for everyone — confirm or edit:
'I'm building an AI calling agent — you give it a phone number + context, and it handles the call end-to-end. Think customer follow-ups, research calls, vendor coordination — anything phone-based that eats into your day. Happy to show you a demo if this sounds useful.'"
4. Browser Setup
- Option A — Chrome Browser Relay (
profile="chrome"): extension attached to LinkedIn tab (badge ON) — recommended for flagged accounts - Option B — OpenClaw Isolated Browser (
profile="openclaw"): openclaw-managed Chrome, LinkedIn logged in
5. CRM Sheet
Ask the user for a Google Sheet ID/URL to log outreach results. If they don't have one, offer to set one up (create tab + write headers). Confirm gog is authenticated (gog auth list).
If the user skips this, fall back to local linkedin_dm_progress.json but remind them the follow-up skill needs the sheet.
6. Ready Check
Only proceed once:
- ? List is ready
- ? Sender profile has been read
- ? Pitch is confirmed by user
- ? Browser is open with LinkedIn logged in
- ? Sheet ID confirmed (or sidecar fallback acknowledged)
Relationship Analysis (per person)
Before writing a message, compare the connection's profile against the sender's profile to find the strongest hook. Use this hierarchy — pick the highest that applies:
| Priority | Hook | Example opener |
|---|---|---|
| 1 | Same company (current or past) | "You and I both spent time at CRED…" |
| 2 | Same college + overlapping years | "Fellow BITS Goa 2018 batch here…" |
| 3 | Same college (different years) | "BITS connect here — saw your journey from…" |
| 4 | Same industry/function | "Both been in fintech/product for a while…" |
| 5 | Mutual connection | "We're both connected to [Name]…" |
| 6 | Their work context (no personal hook) | "Seen what you've built at [Company]…" |
Combine the hook with a line about their current work to show you know what they do.
Message Structure
Send as two separate messages per person, back to back:
Message 1 — Personalized opener (unique per person)
[Relationship hook — 1 sentence]
[Acknowledgement of their work/role — 1 sentence]
Target: 100–180 chars. Feels like a genuine reach-out from someone who knows them.
Message 2 — Pitch (identical for everyone, confirmed upfront)
[Product description — 1–2 sentences]
[Relevant use case for their role — 1 sentence]
[Soft CTA — 1 sentence]
Target: 150–250 chars. Clear, punchy, no filler.
Why two messages?
- Opener lands first — they see it before the pitch, feels more personal
- Pitch is clearly a separate thought, not buried at the end
- Mirrors how a human would actually message a connection
Fallback: If sending two messages is technically difficult (e.g. bubble re-focusing issues), use Shift+Enter twice between the opener and pitch to create a paragraph break within a single message.
Do not:
- Open with "I hope you're well" or "I came across your profile"
- Use the same opening for multiple people
- Change the pitch section per person
Batch Preview Before Sending
Generate messages for the entire list first. Present them in a table:
| Name | Company | Relationship Hook Used | Message Preview |
|---|---|---|---|
| Shorya Saini | Razorpay | Same BITS batch | Hey Shorya, BITS Goa 2018 batch… |
Get user approval on the full batch before opening the browser. Allow edits per row.
Sending Flow (Per Person)
- Navigate to
/feed/— mandatory, no exceptions, no skipping - Wait 3–5 seconds
- Search connections at
linkedin.com/mynetwork/invite-connect/connections/— type name in "Search by name" - Handle results:
- 1 match → confirm name + headline → click to open profile
- Multiple matches → show user, ask which one
- 0 matches → mark
Not a Connection, skip
- Read their profile if not already done (for personalisation)
- Click Message button on their profile
- Send Message 1 — personalized opener only, send it
- Send Message 2 — pitch only, send it immediately after
- Confirm both delivered
- Log to CRM sheet — append row via
gog sheets appendwith all fields (see CRM Tracking section)
See references/browser-workflow.md for exact browser automation steps.
Status Values
| Status | Meaning |
|---|---|
Sent |
Message delivered this session |
Already Messaged |
Recent conversation exists — skip |
Not a Connection |
No Message button or not in connections search |
Profile Not Found |
Could not identify the right person |
Skipped |
User chose to skip |
Failed |
Browser error — retry next session |
Anti-Detection Rules
/feed/before every single profile — non-negotiable- 3–5 second wait after feed loads
- Max 15–20 messages per session
- Stop immediately if LinkedIn warns about messaging rate — tell the user
CRM Tracking — Google Sheet
After each message is sent, append a row to a Google Sheet. This sheet is the source of truth for all outreach — current session and future follow-up.
Sheet Setup
Ask the user for a Google Sheet ID or URL at the start of the session (or offer to create a new one). The sheet should have a tab named Outreach with these columns:
| Col | Field | Notes |
|---|---|---|
| A | Date Sent | ISO date, e.g. 2026-02-13 |
| B | Person Name | Full name |
| C | Role / Title | Their current headline from LinkedIn |
| D | Company | Current company |
| E | LinkedIn URL | Profile URL |
| F | Relationship Hook | What hook was used (e.g. "Same batch BITS Goa 2018", "Both at CRED 2022–23") |
| G | Opener Sent | Exact text of Message 1 |
| H | Pitch Sent | Exact text of Message 2 |
| I | Campaign | Short label for this batch (e.g. "AI Calling - Feb 2026") |
| J | Status | Always Sent when first logged — updated by follow-up skill |
| K | Notes | Anything notable (prior conversation, context, mutual connection used) |
| L | Last Updated | Timestamp of last status change |
Column I (Status) lifecycle — only Sent is written by this skill. The follow-up skill will update to: Replied · Call Scheduled · Demo Done · Follow Up Sent · No Response · Closed Won · Closed Lost
Appending a Row
After each message pair is sent, run:
gog sheets append "Outreach!A:L" r
--values-json '[["","","","","","","","","","Sent","",""]]' r
--insert INSERT_ROWS
First-Time Setup
If no sheet exists yet, tell the user:
"I'll need a Google Sheet to track outreach. Share an existing sheet ID/URL, or I can create one with the right columns."
To create a new sheet, use Drive (or ask user to create one and share the ID). Then write the header row:
gog sheets update "Outreach!A1:L1" r
--values-json '[["Date Sent","Person Name","Role / Title","Company","LinkedIn URL","Relationship Hook","Opener Sent","Pitch Sent","Campaign","Status","Notes","Last Updated"]]' r
--input USER_ENTERED
Local Sidecar (fallback)
If Google Sheets is not set up, fall back to a local linkedin_dm_progress.json:
{
"campaign": "AI Calling - Feb 2026",
"pitch": "confirmed pitch text",
"rows": [
{
"date": "2026-02-13",
"name": "Shorya Saini",
"role": "Senior Analytics Specialist",
"company": "Razorpay",
"url": "https://linkedin.com/in/shorya-saini",
"hook": "Same batch BITS Goa 2018",
"opener": "Hey Shorya...",
"pitch": "I'm building...",
"status": "Sent",
"notes": ""
}
]
}
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
每日语音名言:AI 驱动的励志与数字人视频 - Openclaw Skills
Zoho Bookings API 集成:管理预约与员工 - Openclaw Skills
工程经理操作系统:技术领导力与团队扩展 - Openclaw Skills
Markdown 报告生成器:专业文档制作 - Openclaw Skills
Business Claw:ERPNext MCP 自动化与工作流 - Openclaw 技能
Context Engineer:Openclaw 技能的 Token 优化专家
韩国发票:自动化估价单与税务发票 - Openclaw Skills
小红书文案教练:爆款笔记生成器 - Openclaw Skills
慕尼黑 MVG & S-Bahn 实时追踪命令行工具 - Openclaw Skills
Reddit 研究技能:自动化社群洞察 - Openclaw Skills
AI精选
