LinkedIn智能私信助手Skill linkedin-dm

LinkedIn智能私信助手是一款基于浏览器自动化的AI个性化触达工具,专为LinkedIn一度联系人设计。通过分析发送者与联系人的关系(如同公司、同学校、同行业等),自动生成个性化开场白,并结合用户确认的统一产品推介,批量发送精准营销消息。支持CSV/TSV数据导入、Google Sheets CRM集成、反检测机制和状态跟踪,适用于潜在客户培育、活动跟进、人脉重联等场景。关键词:LinkedIn自动化、AI个性化消息、浏览器自动化、CRM集成、批量触达、人脉营销、销售外联、智能跟进。

社群运营 0 次安装 5 次浏览 更新于 2/24/2026

name: linkedin-dm description: 通过浏览器自动化向现有一度联系人列表发送个性化的LinkedIn私信。当用户希望通过AI个性化触达来联系LinkedIn联系人时使用——例如培育潜在客户、活动后跟进、重新联系联系人或宣布某事。接收数据文件(CSV/TSV)或包含联系人姓名和公司的纯文本列表,询问触达背景/目标,为每个人生成定制消息,并通过浏览器自动化发送每条消息。处理消息撰写流程、字符限制和增量状态跟踪。

LinkedIn私信

向现有一度联系人发送个性化的LinkedIn消息。每条消息包含:

  • 针对每个人的个性化开场白(基于其个人资料+与发送者的关系)
  • 由用户确认一次并用于所有消息的一致产品/推介部分

⚠️ 起飞前检查清单 — 开始前确认

1. 联系人列表

向用户索取数据文件或列表。必须包含(或添加):

  • 人员姓名 — 全名
  • 公司/职位 — 其当前公司或职位
  • LinkedIn URL — 可选但有用
  • 消息状态 — 用于跟踪的列(如缺失则添加)

如果仅提供纯文本列表,则提供转换为TSV的选项。

2. 阅读发送者的LinkedIn个人资料(强制)

在撰写任何消息之前,导航到/in/me/并阅读发送者的个人资料:

  • 姓名当前职位/公司
  • 职业经历 — 公司、职位、年份
  • 教育背景 — 大学、学位、入学年份
  • 地点

存储这些事实。它们用于识别与每个联系人的关系钩子。

3. 确认推介(一次,预先)

询问用户:

“您的推介/产品信息是什么?这将是每条消息的一致部分。用1-2句话描述。”

然后起草一个精炼的推介部分(最多2-4句话,简洁明了)。向用户展示并获得明确批准。在推介确认之前不要开始发送。

示例提示:“这是我将为每个人使用的推介 — 确认或编辑:

‘我正在构建一个AI通话助手 — 您给它一个电话号码+上下文,它就能端到端处理通话。想象一下客户跟进、调研电话、供应商协调 — 任何占用您时间的基于电话的工作。如果这听起来有用,我很乐意为您展示演示。’”

4. 浏览器设置

  • 选项A — Chrome浏览器中继profile="chrome"):附加到LinkedIn标签页的扩展(徽章开启) — 推荐用于标记账户
  • 选项B — OpenClaw隔离浏览器profile="openclaw"):openclaw管理的Chrome,已登录LinkedIn

5. CRM表格

向用户询问Google表格ID/URL以记录触达结果。如果他们没有,则提供设置一个的选项(创建标签页+写入标题)。确认gog已认证(gog auth list)。

如果用户跳过此步骤,则回退到本地linkedin_dm_progress.json,但提醒他们后续跟进技能需要该表格。

6. 就绪检查

仅当以下条件满足时才继续:

  • ✅ 列表已就绪
  • ✅ 发送者个人资料已读取
  • ✅ 推介已获用户确认
  • ✅ 浏览器已打开并登录LinkedIn
  • ✅ 表格ID已确认(或已确认侧车回退)

关系分析(每人)

在撰写消息之前,将联系人的个人资料与发送者的个人资料进行比较,以找到最强的钩子。使用此层次结构 — 选择适用的最高优先级:

优先级 钩子 示例开场白
1 同一公司(当前或过去) “你和我都曾在CRED度过时光…”
2 同一大学+重叠年份 “同为BITS Goa 2018届…”
3 同一大学(不同年份) “BITS校友在此 — 看到你从…的历程”
4 同一行业/职能 “都在金融科技/产品领域工作了一段时间…”
5 共同联系人 “我们都与[姓名]有联系…”
6 他们的工作背景(无个人钩子) “看到你在[公司]的成就…”

将钩子与关于他们当前工作的一行结合,以表明您了解他们的工作。


消息结构

每人发送两条独立消息,连续发送:

消息1 — 个性化开场白(每人唯一)

[关系钩子 — 1句话]
[对其工作/职位的认可 — 1句话]

目标:100–180字符。感觉像是来自了解他们的人的真诚触达。

消息2 — 推介(对所有人相同,预先确认)

[产品描述 — 1-2句话]
[与其职位相关的用例 — 1句话]
[软性行动号召 — 1句话]

目标:150–250字符。清晰、简洁、无填充。

为什么是两条消息?

  • 开场白首先到达 — 他们在看到推介之前看到它,感觉更个性化
  • 推介显然是独立的思考,不会埋没在末尾
  • 模仿人类实际联系联系人的方式

回退方案: 如果发送两条消息在技术上困难(例如气泡重新聚焦问题),则在开场白和推介之间使用Shift+Enter两次以在单条消息内创建段落分隔。

请勿:

  • 以“我希望你一切安好”或“我看到了你的个人资料”开头
  • 对多个人使用相同的开场白
  • 为每个人更改推介部分

发送前批量预览

首先为整个列表生成消息。以表格形式呈现:

姓名 公司 使用的关系钩子 消息预览
Shorya Saini Razorpay 同一BITS届 嘿Shorya,BITS Goa 2018届…

在打开浏览器之前获得用户对整个批次的批准。允许每行编辑。


发送流程(每人)

  1. 导航到/feed/ — 强制,无例外,不可跳过
  2. 等待3-5秒
  3. linkedin.com/mynetwork/invite-connect/connections/搜索联系人 — 在“按姓名搜索”中输入姓名
  4. 处理结果:
    • 1个匹配项 → 确认姓名+标题 → 点击打开个人资料
    • 多个匹配项 → 向用户展示,询问是哪一个
    • 0个匹配项 → 标记为非联系人,跳过
  5. 阅读他们的个人资料(如果尚未完成,用于个性化)
  6. 在其个人资料上点击消息按钮
  7. 发送消息1 — 仅个性化开场白,发送
  8. 发送消息2 — 仅推介,立即发送
  9. 确认两者已送达
  10. 记录到CRM表格 — 通过gog sheets append附加行,包含所有字段(参见CRM跟踪部分)

有关确切的浏览器自动化步骤,请参见references/browser-workflow.md


状态值

状态 含义
已发送 本次会话已送达消息
已发过消息 存在最近对话 — 跳过
非联系人 无消息按钮或不在联系人搜索结果中
个人资料未找到 无法识别正确人员
已跳过 用户选择跳过
失败 浏览器错误 — 下次会话重试

反检测规则

  • 每次访问个人资料前先到/feed/ — 非协商
  • 动态加载后等待3-5秒
  • 每次会话最多15-20条消息
  • 如果LinkedIn警告消息发送速率,立即停止 — 告知用户

CRM跟踪 — Google表格

每条消息发送后,向Google表格附加一行。此表格是所有触达的真相来源 — 当前会话和未来跟进。

表格设置

在会话开始时向用户询问Google表格ID或URL(或提供创建新表格的选项)。表格应有一个名为Outreach的标签页,包含以下列:

字段 备注
A 发送日期 ISO日期,例如2026-02-13
B 人员姓名 全名
C 职位/标题 来自LinkedIn的当前标题
D 公司 当前公司
E LinkedIn URL 个人资料URL
F 关系钩子 使用的钩子(例如“同一届BITS Goa 2018”、“同在CRED 2022–23”)
G 发送的开场白 消息1的准确文本
H 发送的推介 消息2的准确文本
I 活动 此批次的简短标签(例如“AI通话 — 2026年2月”)
J 状态 首次记录时始终为已发送 — 由跟进技能更新
K 备注 任何值得注意的事项(先前对话、背景、使用的共同联系人)
L 最后更新 上次状态更改的时间戳

列J(状态)生命周期 — 仅此技能写入已发送。跟进技能将更新为: 已回复 · 通话已安排 · 演示已完成 · 跟进已发送 · 无回复 · 已成交 · 已丢失

附加行

每对消息发送后,运行:

gog sheets append <SHEET_ID> "Outreach!A:L" \
  --values-json '[["<date>","<name>","<role>","<company>","<url>","<hook>","<opener>","<pitch>","<campaign>","Sent","<notes>","<timestamp>"]]' \
  --insert INSERT_ROWS

首次设置

如果尚不存在表格,告知用户:

“我需要一个Google表格来跟踪触达。分享现有表格ID/URL,或者我可以创建一个包含正确列的新表格。”

要创建新表格,使用Drive(或要求用户创建一个并分享ID)。然后写入标题行:

gog sheets update <SHEET_ID> "Outreach!A1:L1" \
  --values-json '[["Date Sent","Person Name","Role / Title","Company","LinkedIn URL","Relationship Hook","Opener Sent","Pitch Sent","Campaign","Status","Notes","Last Updated"]]' \
  --input USER_ENTERED

本地侧车(回退)

如果未设置Google表格,则回退到本地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": ""
    }
  ]
}