关于 linkedin-message-writer
用于调研 LinkedIn 潜在客户并撰写个性化消息的技能,支持多种消息类型。它通过 Apify 获取个人资料及可选的近期帖子数据,再将审核通过的文案导出为通用或外联工具适用的 CSV。
主要功能
- 01使用 Apify 调研 LinkedIn 资料
- 02可选获取近期帖子
- 03撰写多种 LinkedIn 消息
- 04遵守消息字符数限制
- 05将外联消息导出为 CSV
适用场景
- 01根据潜在客户资料定制连接请求
- 02撰写 InMail 或后续消息
- 03准备导入外联工具的消息
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gooseworks-ai/ goose-skills --skill linkedin-message-writer安装后在 Claude Code 中输入/linkedin-message-writer确认已加载。
附带文件skill.meta.json
详细介绍
LinkedIn 消息撰写工具
研究 LinkedIn 潜在客户,并为任何类型的 LinkedIn 消息撰写个性化内容。输入 LinkedIn URL 后,工具会通过 Apify 研究每个人(个人资料和近期帖子),并根据研究结果撰写消息。
无需 LinkedIn Cookie。无需设置数据库。只需输入 LinkedIn URL,即可获得个性化消息。
自动加载时机
在以下情况下加载此技能:
- 用户说“撰写 LinkedIn 消息”“LinkedIn 外联”“在 LinkedIn 上联系这些潜在客户”或“发送 LinkedIn 消息”
- 用户有一份 LinkedIn URL 列表,并想主动联系这些人
- 用户想撰写个性化的好友申请、InMail、私信或评论
前提条件
Apify API 令牌
研究 LinkedIn 个人资料和帖子时必需。在 .env 中设置:
APIFY_API_TOKEN=your_token_here
无需 LinkedIn Cookie、登录信息或会话令牌。Apify 无需任何 LinkedIn 凭据即可处理抓取。
就这些。只需一个环境变量,无需其他设置。
LinkedIn 消息类型参考
此技能可撰写任何基于文本的 LinkedIn 消息类型。每种类型都有不同的限制。
| 消息类型 | 可接收对象 | 字符数限制 | 使用时机 |
|---|---|---|---|
| 好友申请 | 二度/三度联系人 | 200(免费)/ 300(高级) | 初次联系。需要让对方愿意接受。不要推销。 |
| InMail | 任何人(需要高级版点数) | 主题:200,正文:1,900 | 向不会接受陌生好友申请的人单独推介。适用于高级管理人员和繁忙人士。 |
| 私信 | 仅限一度联系人 | 8,000 | 好友申请获批后的跟进。应像对话,而非群发。 |
| 消息请求 | 群组成员、活动参与者、#OpenToWork 用户 | 8,000 | 利用共同背景建立联系——你们属于同一群组或参加了同一活动。提及共同背景。 |
| 帖子评论 | 任何人(公开帖子) | 1,250 | 添加好友前先互动。让对方看到你关注了他们的内容。不要推销。 |
| 评论回复 | 任何人(讨论串中) | 1,250 | 参与对方发起的对话。提供价值,不要推销。 |
各类型的关键规则
好友申请(200/300 个字符):
- 这是关键关口。如果对方不接受,后续就无从谈起。
- 以引起你关注的信号开场——对方做了、说了或发布了什么。
- 用一句话说明相关性。不要推销、不要加入行动号召,也不要说“我很希望……”
- 必须少于字符数限制。逐个字符计数。如果超出,重新撰写——绝不要截断。
- 免费账户:200 个字符。高级版/Sales Navigator:300 个字符。询问用户使用的是哪种账户。
InMail(主题 200 个字符 + 正文 1,900 个字符):
- 必须能独立成立——对方尚未接受你的好友申请。
- 主题应引发好奇,而非带有推销意味。不要写“有个小问题”或“合作机会”。
- 正文应说明联系对方的背景(触发信号),并提供具体信息。
- 此处可以提出承诺度更高的请求——毕竟你使用了高级版点数。
私信(8,000 个字符):
- 要像日常对话。读起来应像私信,而非电子邮件。
- 越简短通常越好。两句话的消息效果往往胜过五句话的消息。
- 适合在好友申请获批后进行后续跟进。
- 跟进序列结构:第 0 天发送好友申请 → 第 3 天提供价值 → 第 7 天提供社会认同 → 第 14 天结束联系。
消息请求(8,000 个字符):
- 务必提及共同背景(群组名称、活动名称或 OpenToWork 状态)。
- 由于你们有共同点,语气可以比 InMail 更随意。
帖子评论(1,250 个字符):
- 提供真正的价值。分享见解、提出有深度的问题,或补充对方的观点。
- 不要只说“很棒的帖子!”或“喜欢这篇!”——这类评论毫无价值。
- 这是预热互动,不是推销。目的是在添加好友前引起对方注意。
评论回复(1,250 个字符):
- 延续对话,具体回应对方说过的内容。
- 应比单独发表的评论更短,最多 2–3 句话。
工作流
阶段 0:信息收集
向用户询问以下问题。已回答的问题可以跳过。
潜在客户:
- 潜在客户信息在哪里?(CSV 文件、粘贴 LinkedIn URL、数据库、CRM,或其他任何来源)
- 有多少位潜在客户?(会影响成本估算,以及是否使用帖子抓取工具)
消息类型: 3. 想撰写哪种 LinkedIn 消息?(连接请求、InMail、私信、消息请求、帖子评论、评论回复,或多种类型组成的序列) 4. 如果是连接请求:使用的是免费版还是高级版 LinkedIn 账号?(会影响字符数限制:200 或 300)
目标: 5. 目标是什么?(预约会议、促成演示请求、获得回复、建立关系、推广内容、外联前预热) 6. 切入点或吸引点是什么?(围绕痛点、招聘信号、替换竞争对手、基于活动、内容互动、共同联系人、冷启动)
语气: 7. 想要哪种语气?提供以下选项:
- Casual Professional — 友好、自然,略带随意。像给同行发消息。(默认)
- Thought Leader — 以洞见或反常识观点开篇,将发件人塑造成专家。
- Provocative — 挑战固有假设,打破常规。风险更高,回报也更高。
- Enterprise Formal — 精炼、严谨。适用于受监管行业或 C 级高管目标对象。
- Custom — 用户粘贴曾经奏效的参考消息,或描述想要的风格。
- 有没有效果不错的参考消息?(这些会覆盖预设语气)
背景信息: 9. 你的公司/产品是做什么的?(提供一句话介绍,供 AI 撰写时参考) 10. 有没有证明材料?(可供引用的客户名称、指标、案例研究)
输出: 11. 使用哪种 LinkedIn 外联工具?(Dripify / Expandi / Botdog / PhantomBuster / 直接给我 CSV)
阶段 1:导入潜在客户
接受用户提供的任何来源的潜在客户信息:
- **CSV 文件:**读取 CSV。查找包含 LinkedIn URL 的列(常见名称:
linkedin_url、LinkedIn URL、LinkedIn、profile_url、url)。如果列名不明确,询问用户要使用哪一列。 - **粘贴的 URL:**用户直接粘贴 LinkedIn URL。解析这些 URL。
- **粘贴的列表:**用户粘贴姓名和公司等数据。提取可用信息。
- **数据库/CRM:**询问用户如何访问。使用用户提供的任何工具或导出数据。
**最低要求:**每位潜在客户至少提供一个 LinkedIn URL。
向用户告知潜在客户数量,并在继续调研前征求确认。
阶段 2:调研
使用两个 Apify actor 调研每位潜在客户。两者仅需 APIFY_API_TOKEN,无需 LinkedIn Cookie。
步骤 1:个人资料数据
使用 harvestapi/linkedin-profile-scraper 获取所有潜在客户的个人资料数据。
API 调用:
curl -X POST "https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/runs?token=$APIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": [
{"url": "https://www.linkedin.com/in/PROFILE_1/"},
{"url": "https://www.linkedin.com/in/PROFILE_2/"}
]
}'
**成本:**每份个人资料 $0.003。100 位潜在客户 = $0.30。
每位潜在客户返回的数据:
- 名字、姓氏、标题
- 职位名称、公司名称、公司规模、公司行业
- 完整工作经历(包含职位、公司、描述、任职时长的数组)
- 教育经历(学校、学位)
- 技能(含背书数量)
- 地点、关注者数量、人脉数量
- isCreator、isPremium、isVerified 标记
轮询结果:
# Check run status
curl "https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/runs/{RUN_ID}?token=$APIFY_API_TOKEN"
# When status is SUCCEEDED, fetch results
curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?token=$APIFY_API_TOKEN"
步骤 2:近期帖子(可选)
使用 harvestapi/linkedin-profile-posts 获取近期帖子。在以下情况下运行:
- 用户要求深度个性化
- 潜在客户数量较少(少于 50),且预算允许
- 用户明确希望引用潜在客户发布的内容
在以下情况下跳过:
- 潜在客户数量较多(100+),且用户更看重速度而非深度
- 用户表示基础个性化即可
API 调用:
curl -X POST "https://api.apify.com/v2/acts/harvestapi~linkedin-profile-posts/runs?token=$APIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"profileUrls": [
"https://www.linkedin.com/in/PROFILE_1/",
"https://www.linkedin.com/in/PROFILE_2/"
]
}'
**成本:**每篇帖子 $0.002。每份个人资料约 20 篇帖子 = 每位潜在客户约 $0.04。50 位潜在客户 = $2.00。
每篇帖子返回的数据:
- 内容(完整帖子文本)
- 互动情况(点赞、评论、分享、反应类型细分)
- postedAt(时间戳)
- postImages(如有)
- 作者信息(姓名、标题)
**轮询:**与步骤 1 的方式相同。
步骤 3:展示研究摘要
研究完成后,展示摘要表格:
Leads researched: {count}
Profile data: {count} profiles retrieved
Posts scraped: {count} posts from {count} leads (or "skipped")
Research cost: ~${total}
Sample leads:
| Name | Title | Company | Recent Post Topic | Personalization Angle |
|------|-------|---------|-------------------|----------------------|
| Jane Smith | VP Sales | Acme Corp | Posted about AI in sales | Reference her AI post |
| ... | ... | ... | ... | ... |
如果用户要求筛选/审核潜在客户,请根据个人资料数据(职位、公司、行业等)进行筛选,并展示入选的潜在客户。
阶段 3:撰写消息
根据研究结果,为每位潜在客户生成个性化消息。
个性化优先级
针对每位潜在客户,使用可获取的最佳信号。按强度排序:
- 近期帖子内容 — 引用对方撰写的某篇具体帖子。这是最强的信号。
- 工作经历详情 — 引用个人资料中的具体成就(例如,“将 GMV 从 0 提升至 800 万美元”比“你是联合创始人”更好)。
- 创作者话题/话题标签 — 提及对方经常发布的内容。
- 当前职位 + 公司 — 提及对方当前的职位,以及公司的业务。
- 教育/背景 — 共同就读的学校、相似的背景。个性化程度最低,但仍具个人针对性。
如果用户提供了效果不错的参考消息,请分析其语气、长度、结构和用词。将其作为模板,不要用默认设置取代。
撰写流程
- 先生成示例。 为 3–5 位信号丰富程度不同的潜在客户撰写消息,并展示给用户。
- 迭代。 用户审阅并提供反馈。调整语气/方式。最多进行 3 轮。
- 批量生成。 获得批准后,为所有剩余的潜在客户撰写消息。
字符数限制
生成每条消息后,统计字符数。如果超出限制:
- 从头重写。不要截断。
- 截断后的消息显得残缺且不专业。
- 对于连接请求(200/300 个字符),每个字符都很重要。务必精简。
阶段 4:导出
通用 CSV 格式
使用以下列生成 CSV:
linkedin_url, first_name, last_name, company, title, message_type, message_subject, message_body
对于基于序列的营销活动(连接 + 后续跟进),请使用:
linkedin_url, first_name, last_name, company, title, connection_request, followup_1, followup_2, followup_3, inmail_subject, inmail_body
特定工具的格式
Dripify:
- 列:
Profile URL、Note、Message 1、Message 2、Message 3 - 每位潜在客户占一行,所有消息分别放在不同的列中
Expandi:
- 列:
LinkedIn URL、Connection message、Follow-up #1、Follow-up #2、Follow-up #3、InMail subject、InMail message
Botdog:
- 列:
linkedin_profile_url、connection_note、message_1、message_2、message_3
PhantomBuster:
- 列:
profileUrl、message - PhantomBuster 通常一次处理一个操作,可能需要为连接和后续跟进分别准备 CSV 文件
通用 CSV/其他:
- 使用通用格式
- 询问用户所用工具需要什么格式,并根据需要进行调整
保存文件
保存到当前工作目录:
{campaign-name}-{YYYY-MM-DD}.csv
阶段 5:审阅并交付
展示最终摘要:
Campaign: {name}
Message type: {type}
Leads: {count}
Tool: {dripify/expandi/etc.}
Personalization: {profile-only / profile+posts}
Research cost: ~${amount}
Export file: {file_path}
从导出内容中展示 3–5 条消息示例,供用户最终审阅。
未经用户明确确认,不要标记为已完成。 询问:“消息看起来可以吗?导入前还需要调整什么吗?”
确认后:
- 提供文件路径
- 提供针对所用工具的导入说明
- 提醒用户导入后检查前几条消息
成本估算
| 潜在客户数 | 仅个人资料 | 个人资料 + 帖子 |
|---|---|---|
| 10 | ~$0.03 | ~$0.43 |
| 50 | ~$0.15 | ~$2.15 |
| 100 | ~$0.30 | ~$4.30 |
| 500 | ~$1.50 | ~$21.50 |
个人资料抓取器:$0.003/份个人资料。帖子抓取器:约 $0.04/位潜在客户(20 篇帖子 × $0.002)。
错误处理
| 错误 | 解决方法 |
|---|---|
未设置 APIFY_API_TOKEN | 请用户将其添加到 .env |
| Apify 运行失败或超时 | 重试一次。如果仍然失败,则跳过该潜在客户并说明情况。 |
| LinkedIn URL 无效或未找到个人资料 | 跳过该潜在客户,并向用户说明 |
| 返回 0 份个人资料 | 检查 URL 格式 — 必须是包含 https:// 的完整 LinkedIn URL |
| 帖子抓取器返回 0 篇帖子 | 此人没有公开发布帖子。个性化时仅使用个人资料数据。 |