LinkedIn销售跟进管理Skill linkedin-followup

这是一个用于自动化管理 LinkedIn 销售外联和客户跟进的技能工具。它通过集成 Google Sheets 作为 CRM,实现自动读取对话历史、智能分析客户意图、起草上下文相关的回复消息、批量跟进状态管理以及反检测安全操作。适用于销售自动化、客户关系管理、营销增长和 LinkedIn 社交销售场景。

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

name: linkedin-followup description: 从Google Sheets管理LinkedIn潜在客户——按姓名搜索、读取实时对话线程、更新状态、发送上下文相关的跟进消息。在linkedin-dm之后使用,将潜在客户推进销售管道(已发送→已回复→已安排通话→已完成演示→已关闭)。 metadata: { “openclaw”: { “emoji”: “🔁”, “requires”: { “bins”: [“gog”] }, “skills”: [“gog”], “tags”: [“linkedin”, “crm”, “outreach”, “sales”, “follow-up”] } }

linkedin-followup

从一个集中的Google Sheets CRM管理持续的LinkedIn对话。读取对话线程、起草有上下文意识的回复、发送消息、并保持表格更新——全部通过一个技能完成。


执行前检查清单

在执行任何操作之前:

  1. 表格ID — 确认CRM表格ID(来自linkedin-dm设置)。默认:1eEZDGcr1dIbSC782mNkxvD7pVrF8rOFySWCVZ1RXkhM,标签页:Sheet1(如果重命名了,则为Outreach)。
  2. gog 认证 — 运行 gog auth list。如果没有令牌:请参阅下面的 gog 认证设置
  3. 浏览器 — 打开openclaw浏览器配置文件,并确认已登录LinkedIn。首先导航到 /feed/
  4. 模式 — 确定用户想要哪种模式(参见 模式)。

表格结构

CRM表格使用以下列(A–P):

字段 备注
A 发送日期 ISO 日期
B 人员姓名 全名
C 职位/头衔
D 公司
E LinkedIn URL 个人资料URL
F 关系切入点 开场白中使用的切入点
G 已发送的开场白 消息1文本
H 已发送的推介 消息2文本
I 活动批次 批次标签
J 状态 当前管道阶段
K 备注 上下文和历史记录
L 最后更新时间 ISO 时间戳
M 最后回复日期 他们上次回复的时间
N 最后回复(预览) 他们最后回复的前200个字符
O 对话日志 完整对话线程(见下方格式)
P 下一步行动 下一步做什么(由代理或人工执行)

状态值: 已发送已回复已安排通话已完成演示已发送跟进无回复已关闭(赢单)已关闭(输单)

对话日志格式(O列):

[2026-02-13 17:05 已发送] 嘿 Rishabh,我们都在CRED工作过...
[2026-02-13 17:05 已发送] 我正在构建一个AI呼叫代理...
[2026-02-15 09:30 已接收] 嘿!听起来很有趣,告诉我更多。
[2026-02-15 09:45 已发送] 很乐意向您展示一个实时演示——您周四有空吗?

如果M–P列尚不存在,请先添加它们:

gog sheets update <表格ID> "Sheet1!M1:P1" \
  --values-json '[["最后回复日期","最后回复(预览)","对话日志","下一步行动"]]' \
  --input USER_ENTERED

模式

模式 1 — 快速状态更新

用户说:“将Rishabh标记为已回复”“Rishabh回复我了,他感兴趣”

  1. 找到行 — 在表格中搜索该人员:
gog sheets get <表格ID> "Sheet1!A:P" --json

按姓名(B列)或LinkedIn URL(E列)匹配。获取行号。

  1. 更新状态(J列)和最后更新时间(L列):
gog sheets update <表格ID> "Sheet1!J<行号>:L<行号>" \
  --values-json '[["已回复","","<ISO_时间戳>"]]' \
  --input USER_ENTERED
  1. 如果用户提供了回复内容,也更新:
  • M列:最后回复日期
  • N列:最后回复预览(前200个字符)
  • O列:追加到对话日志
  • P列:下一步行动(接下来应该发生什么)
  1. 向用户确认更新。

模式 2 — 完整跟进(读取 + 起草 + 发送)

用户说:“跟进Rishabh”“向所有已回复的人发送跟进消息”

步骤 1 — 从表格加载人员数据

gog sheets get <表格ID> "Sheet1!A:P" --json

找到他们的行。加载:姓名、公司、职位、LinkedIn URL、已发送的开场白、已发送的推介、状态、备注、对话日志、下一步行动。

步骤 2 — 导航到他们的LinkedIn个人资料

始终先转到动态页面(反检测):

https://www.linkedin.com/feed/

等待2–4秒。然后导航到他们的个人资料URL(E列)。

步骤 3 — 打开消息线程并读取对话

点击他们个人资料上的消息按钮。等待对话气泡加载。

使用JavaScript抓取完整线程:

const events = Array.from(document.querySelectorAll('.msg-s-message-list__event'));
const messages = [];
events.forEach(el => {
  const groups = el.querySelectorAll('.msg-s-event-listitem');
  groups.forEach(g => {
    const nameEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__profile-link');
    const bodyEl = g.querySelector('.msg-s-event-listitem__body');
    const timeEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__timestamp');
    if (bodyEl?.textContent?.trim()) {
      messages.push({
        sender: nameEl?.textContent?.trim() || 'unknown',
        time: timeEl?.textContent?.trim() || '',
        text: bodyEl.textContent.trim()
      });
    }
  });
});
return JSON.stringify(messages);

如果线程为空或未加载,请在对话气泡中向上滚动以加载更早的消息。

步骤 4 — 分析对话

加载完整线程 + 他们的个人资料数据后,确定:

  • 他们最后说了什么? — 识别他们最近的消息。
  • 意图是什么? — 感兴趣 / 想要更多信息 / 提问 / 冷淡 / 异议 / 不感兴趣。
  • 正确的下一条消息是什么? — 参见下面的 回复策略手册
  • 语气 — 镜像他们的语气(随意 vs 正式,简短 vs 详细)。

步骤 5 — 起草跟进消息

撰写一个回复,该回复:

  • 直接回应 他们最后说的话
  • 除非他们要求,否则不再重复推介
  • 推动一个具体的行动(演示、通话、介绍、转给团队)
  • 简洁 — 最多2–4句话
  • 感觉像人写的,而不是模板化的

将草稿展示给用户,并在发送前请求批准:

给 [姓名] 的回复草稿: [消息]

发送这个吗?(y / 编辑 / 跳过)

步骤 6 — 发送消息

与linkedin-dm相同的JS评估方法:

const active = document.querySelector('.msg-overlay-conversation-bubble--is-active .msg-form__contenteditable');
if (active) { active.focus(); document.execCommand('insertText', false, '<消息>'); }

然后找到并点击发送。

步骤 7 — 更新表格

发送后:

gog sheets update <表格ID> "Sheet1!J<行号>:P<行号>" \
  --values-json '[["<新状态>","<最后回复日期>","<最后回复预览>","<更新后的对话日志>","<下一步行动>","<ISO_时间戳>"]]' \
  --input USER_ENTERED

模式 3 — 批量审查

用户说:“谁需要跟进?”“检查我的外联情况”

  1. 从表格加载所有行。
  2. 按状态和时间筛选:
  • 已发送 超过3天 → 候选标记为“无回复”或温和跟进
  • 已回复 → 需要回复
  • 已发送跟进 超过5天 → 考虑标记为“无回复”
  • 已安排通话 → 检查通话是否发生,更新状态
  1. 呈现候选者表格:
姓名             状态      最后更新时间     建议行动
Rishabh Nayan   已回复    2026-02-14      回复他们的消息
Shorya Saini    已发送    2026-02-10      跟进提醒(4天)
Shantam Mohata  已发送    2026-02-13      太快(今天)
  1. 用户选择要处理的人,然后为每个人进入模式2。

回复策略手册

使用这些作为指南——始终根据实际对话进行调整:

他们说 意图 你的行动
“听起来很有趣,告诉我更多” 好奇 简短解释 + 提供一个具体的演示时间段
“它是如何工作的?” 探索 2行描述 + 邀请参加15分钟通话
“我们已经在使用 [X]” 异议 承认,解释差异化,提供演示
“给我发更多细节” 软兴趣 分享一个Loom/文档/链接 + 2天后跟进
“目前不相关” 软拒绝 尊重,留有余地:“没问题,我几个月后再联系您”
“还有谁在使用它?” 建立信任 分享一个相关的用例,提供用户介绍
[4天无回复] 沉默 轻推:“嘿 [姓名],只是想确认一下——有什么想法吗?”
[8天无回复] 冷淡 最后一条消息,然后标记为无回复

反检测规则

与linkedin-dm相同的规则:

  • 在导航到个人资料之前,始终先转到 /feed/
  • 加载动态页面后等待2–4秒
  • 每个会话最多 15–20条消息(跟进中发送的总和)
  • 间隔跟进:不要连续快速联系多个人
  • 打字和发送之间有自然延迟(1–2秒)

gog 认证设置

如果 gog auth list 返回空,用户需要设置Google OAuth凭据:

  1. 转到 console.cloud.google.com
  2. 创建一个项目(或选择现有项目)
  3. 启用 Google Sheets API(API和服务 → 库)
  4. 创建OAuth凭据:API和服务 → 凭据 → 创建 → OAuth客户端ID → 桌面应用
  5. 下载 client_secret_<id>.json
  6. 运行:
gog auth credentials set /path/to/client_secret.json
gog auth add your@gmail.com --services sheets
  1. 将打开一个浏览器窗口——登录并授予访问权限
  2. 验证:gog auth list

备用方案(无gog): 所有表格读写都可以通过浏览器手动完成——在openclaw浏览器中打开表格并直接更新单元格。自动化程度较低但功能正常。


会话限制

  • 每个会话最多15–20条跟进消息
  • 立即将每次发送记录到表格(不要批量)
  • 如果gog不可用,记录到本地 linkedin_followup_log.json 并在下一个会话同步到表格