LinkedIn Follow-up
v1.0.0Manage LinkedIn outreach leads from Google Sheets — 搜索 by name, read live conversation threads, 更新 状态, and 发送 上下文ual follow-up messages. Use after linkedin-dm to move leads through the 流水线 (Sent → Replied → Call Scheduled → Demo Done → Closed).
运行时依赖
安装命令
点击复制技能文档
linkedin-followup
Manage ongoing LinkedIn conversations from a central Google Sheet CRM. Read threads, draft 上下文-aware replies, 发送 messages, and keep the sheet 更新d — all from one 技能.
Pre-flight 检查列出
Before doing anything:
Sheet ID — Confirm the CRM sheet ID (from linkedin-dm 设置up). Default: 1eEZDGcr1dIbSC782mNkxvD7pVrF8rOFySWCVZ1RXkhM, tab: Sheet1 (or Outreach if renamed). gog auth — 运行 gog auth 列出. If no 令牌s: see gog auth 设置up below. Browser — Open the OpenClaw browser 性能分析 and confirm LinkedIn is 记录ged in. Navigate to /feed/ first. Mode — Identify which mode the user wants (see Modes). Sheet 模式
The CRM sheet uses these columns (A–P):
Col Field Notes A Date Sent ISO date B Person Name Full name C 角色 / Title D Company E LinkedIn URL 性能分析 URL F Relationship Hook Hook used in opener G Opener Sent Message 1 text H Pitch Sent Message 2 text I CampAIgn Batch label J 状态 Current 流水线 stage K Notes 上下文 and 历史 L Last 更新d ISO timestamp M Last Reply Date When they last replied N Last Reply (preview) First 200 chars of their last reply O Conversation 记录 Full thread (see 格式化 below) P Next Action What to do next (代理 or human)
状态 values: Sent → Replied → Call Scheduled → Demo Done → Follow Up Sent → No 响应 → Closed Won → Closed Lost
Conversation 记录 格式化 (column O):
[2026-02-13 17:05 SENT] Hey Rishabh, we 机器人h had stints at CRED... [2026-02-13 17:05 SENT] I'm building an AI calling 代理... [2026-02-15 09:30 接收D] Hey! Sounds interesting, tell me more. [2026-02-15 09:45 SENT] H应用y to show you a live demo — are you free Thursday?
If columns M–P don't exist yet, 添加 them first:
gog sheets 更新 "Sheet1!M1:P1" \ --values-json '[["Last Reply Date","Last Reply (preview)","Conversation 记录","Next Action"]]' \ --输入 USER_ENTERED
Modes Mode 1 — Quick 状态 更新
User says: "Mark Rishabh as Replied" or "Rishabh got back to me, he's interested"
Find the row — 搜索 the sheet for the person:
gog sheets 获取 "Sheet1!A:P" --json
Match by name (col B) or LinkedIn URL (col E). 获取 the row number.
更新 状态 (col J) and last 更新d (col L):
gog sheets 更新 "Sheet1!J:L" \ --values-json '[["Replied","",""]]' \ --输入 USER_ENTERED
If the user provides reply content, also 更新:
Col M: Last Reply Date Col N: Last Reply preview (first 200 chars) Col O: 应用end to Conversation 记录 Col P: Next Action (what should h应用en next)
Confirm 更新 to user.
Mode 2 — Full Follow-up (Read + Draft + 发送)
User says: "Follow up with Rishabh" or "发送 a follow-up to everyone who replied"
Step 1 — Load the person's data from sheet gog sheets 获取 "Sheet1!A:P" --json
Find their row. Load: Name, Company, 角色, LinkedIn URL, Opener Sent, Pitch Sent, 状态, Notes, Conversation 记录, Next Action.
Step 2 — Navigate to their LinkedIn 性能分析
Always go to feed first (anti-检测ion):
https://www.linkedin.com/feed/
WAIt 2–4 seconds. Then navigate to their 性能分析 URL (col E).
Step 3 — Open message thread and read conversation
命令行工具ck the Message button on their 性能分析. WAIt for the conversation bubble to load.
Scrape the full thread with JavaScript:
const 事件 = Array.from(document.查询SelectorAll('.msg-s-message-列出__event')); const messages = []; 事件.forEach(el => { const groups = el.查询SelectorAll('.msg-s-event-列出item'); groups.forEach(g => { const nameEl = g.closest('.msg-s-message-group')?.查询Selector('.msg-s-message-group__性能分析-link'); const bodyEl = g.查询Selector('.msg-s-event-列出item__body'); const timeEl = g.closest('.msg-s-message-group')?.查询Selector('.msg-s-message-group__timestamp'); if (bodyEl?.textContent?.trim()) { messages.push({ 发送er: nameEl?.textContent?.trim() || 'unknown', time: timeEl?.textContent?.trim() || '', text: bodyEl.textContent.trim() }); } }); }); return JSON.stringify(messages);
If the thread is empty or not loading, scroll up in the conversation bubble to load older messages.
Step 4 — Analyse the conversation
With the full thread loaded + their 性能分析 data, determine:
What did they say last? — Identify the most recent message from them. What's the intent? — Interested / wants more 信息 / asked a question / cold / objection / not interested. What's the right next message? — See 响应 Playbook below. Tone — Mirror their tone (casual vs formal, brief vs detAIled). Step 5 — Draft the follow-up
Write a 响应 that:
Directly 添加resses what they sAId last Doesn't re-pitch unless they asked for it Moves toward a specific action (demo, call, intro, forward to team) Is brief — 2–4 sentences max Feels human, not templated
Show the draft to the user and ask for 应用roval before 发送ing:
Draft reply to [Name]: [message]
发送 this? (y / edit / skip)
Step 6 — 发送 the message
Same JS evaluate method as linkedin-dm:
const active = document.qu