mcpField
L
linkedin-message-writer

linkedin-message-writer

github.com/gooseworks-ai营销与增长1.3k47 次安装3 天前更新
代码仓库

关于 linkedin-message-writer

用于调研 LinkedIn 潜在客户并撰写个性化消息的技能,支持多种消息类型。它通过 Apify 获取个人资料及可选的近期帖子数据,再将审核通过的文案导出为通用或外联工具适用的 CSV。

主要功能

  1. 01使用 Apify 调研 LinkedIn 资料
  2. 02可选获取近期帖子
  3. 03撰写多种 LinkedIn 消息
  4. 04遵守消息字符数限制
  5. 05将外联消息导出为 CSV

适用场景

  1. 01根据潜在客户资料定制连接请求
  2. 02撰写 InMail 或后续消息
  3. 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:信息收集

向用户询问以下问题。已回答的问题可以跳过。

潜在客户:

  1. 潜在客户信息在哪里?(CSV 文件、粘贴 LinkedIn URL、数据库、CRM,或其他任何来源)
  2. 有多少位潜在客户?(会影响成本估算,以及是否使用帖子抓取工具)

消息类型: 3. 想撰写哪种 LinkedIn 消息?(连接请求、InMail、私信、消息请求、帖子评论、评论回复,或多种类型组成的序列) 4. 如果是连接请求:使用的是免费版还是高级版 LinkedIn 账号?(会影响字符数限制:200 或 300)

目标: 5. 目标是什么?(预约会议、促成演示请求、获得回复、建立关系、推广内容、外联前预热) 6. 切入点或吸引点是什么?(围绕痛点、招聘信号、替换竞争对手、基于活动、内容互动、共同联系人、冷启动)

语气: 7. 想要哪种语气?提供以下选项:

  • Casual Professional — 友好、自然,略带随意。像给同行发消息。(默认)
  • Thought Leader — 以洞见或反常识观点开篇,将发件人塑造成专家。
  • Provocative — 挑战固有假设,打破常规。风险更高,回报也更高。
  • Enterprise Formal — 精炼、严谨。适用于受监管行业或 C 级高管目标对象。
  • Custom — 用户粘贴曾经奏效的参考消息,或描述想要的风格。
  1. 有没有效果不错的参考消息?(这些会覆盖预设语气)

背景信息: 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:撰写消息

根据研究结果,为每位潜在客户生成个性化消息。

个性化优先级

针对每位潜在客户,使用可获取的最佳信号。按强度排序:

  1. 近期帖子内容 — 引用对方撰写的某篇具体帖子。这是最强的信号。
  2. 工作经历详情 — 引用个人资料中的具体成就(例如,“将 GMV 从 0 提升至 800 万美元”比“你是联合创始人”更好)。
  3. 创作者话题/话题标签 — 提及对方经常发布的内容。
  4. 当前职位 + 公司 — 提及对方当前的职位,以及公司的业务。
  5. 教育/背景 — 共同就读的学校、相似的背景。个性化程度最低,但仍具个人针对性。

如果用户提供了效果不错的参考消息,请分析其语气、长度、结构和用词。将其作为模板,不要用默认设置取代。

撰写流程
  1. 先生成示例。 为 3–5 位信号丰富程度不同的潜在客户撰写消息,并展示给用户。
  2. 迭代。 用户审阅并提供反馈。调整语气/方式。最多进行 3 轮。
  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 篇帖子此人没有公开发布帖子。个性化时仅使用个人资料数据。

评论

支持 Markdown