关于 reply-draft-assistant
用于处理 La Growth Machine 冷启动外联回复的技能,面向需要批量审阅潜在客户答复的销售团队。它读取完整对话、分类并为每条回复起草一则定制答复,获批后再通过 LinkedIn 或电子邮件发送。
主要功能
- 01从收件箱、营销活动或粘贴内容获取对话
- 02读取完整消息线程
- 03按类别分析潜在客户回复
- 04依据上下文起草单条答复
- 05审阅获批后通过 LinkedIn 或邮件发送
适用场景
- 01整理 La Growth Machine 收件箱中待回复的消息
- 02为指定营销活动的回复逐条起草答复
- 03根据粘贴的对话准备回复草稿
- 04批量审阅并发送已批准的回复
MCP 相关
通过 La Growth Machine MCP 获取对话、营销活动和完整消息线程;获批后可调用发送工具,通过 LinkedIn 或电子邮件发送答复。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lagrowthmachine/ gtm-system --skill reply-draft-assistant安装后在 Claude Code 中输入/reply-draft-assistant确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/classification-rules.mddraft-rules.mdfetch-conversations.md详细介绍
回复草稿助手
将你收到的冷启动触达回复分类,并据此撰写经过斟酌的答复——每条回复一份草稿,根据完整对话撰写,由你审核,然后通过 La Growth Machine 发送。
输出规范——请先阅读
运行此技能时,只返回交付内容,不要输出其他内容。 不要写开场白(例如“让我……”“我会先……”),不要叙述步骤,也不要复述这些说明。每条回复都应输出其分类行、一到两行的对话摘要、引用的最后一条收到的消息,以及用代码块呈现的草稿——只提供足以判断草稿的上下文,不要写分析长文。如果缺少关键信息(使用哪个收件箱或营销活动,或对话内容本身),提出一个简短、具体的问题,然后停止——不要猜测。用户批准草稿之前,绝不要发送任何内容。
依据——请先阅读
你需要的一切都在此技能文件夹中。 无需搜索外部文件。
- 如何获取对话——从收件箱、营销活动或粘贴的内容获取,以及如何发送已批准的回复,详见
references/fetch-conversations.md。获取对话前请先阅读:其中包含准确的 MCP 流程(包括拉取完整对话串)以及需要注意的问题。 - 如何分类回复(8 个类别、决策树、异议子类型、元数据),详见
references/classification-rules.md。 - 如何撰写答复(5 条不可妥协的规则、各类别对应的策略、语气、严格的格式要求),详见
references/draft-rules.md。
输出格式(每份草稿都用原生围栏代码块呈现,便于复制,并附上摘要和 CTA 小组件)以及已确定的 LGM 发送交接流程,都内嵌在此文件底部——无需查阅其他文件。
功能
获取潜在客户发回的回复——来自你的 LGM 收件箱、某个营销活动或粘贴的对话串——读取每段完整对话,对回复进行分类,为每条回复撰写一份经过斟酌的答复草稿,展示所有草稿供审核,并在你批准后,通过 La Growth Machine 原生地经由 LinkedIn 或电子邮件发送。一个技能,完成从原始回复到发送答复的全过程。
工作流
第 1 步——获取对话(及完整对话串)
有三种输入模式(完整说明见 references/fetch-conversations.md):
- 收件箱(LGM MCP)——“我需要回复谁?”使用
get_conversations_to_reply(潜在客户最后发言,且对话串仍处于打开状态),或使用search_conversations获取筛选后的结果。返回conversationId、leadId、identityId、channel——暂不包含姓名或文本。 - 营销活动(LGM MCP)——获取某个指定营销活动的回复:
list_campaigns→get_audience_leads→get_lead_conversations(保留leadReplied: true的结果)。此流程也会返回潜在客户姓名。 - 粘贴内容——用户直接提供对话串。解析发言者、发言内容、渠道和姓名。(无法通过 MCP 发送——请参见交接流程。)
对于每段保留的对话,都要使用 get_conversation_messages(conversationId) 拉取完整对话串,而不只是最后一条消息。草稿应基于完整上下文撰写(第 3 步)。记录:conversationId、leadId、identityId、channel 和潜在客户姓名。**在收件箱模式下查找姓名:**从对话串中获取;如果其中没有,就改用营销活动工具,或使用简短的潜在客户称呼——绝不要因为姓名而停滞。
如果 MCP 和粘贴的对话串都不可用,请让用户粘贴对话内容,然后停止。
第 2 步——分类每条回复
针对每个对话串的最后一条收到的消息,应用 references/classification-rules.md 中的规则。生成简明记录:{ name, category, sub_type?, tone, language, urgency, channel, key_points[], hidden_meaning?, needs_clarification? }。
Auto / OOO 和 Voice message 需要生成记录,但不撰写草稿——标记它们并继续处理。
步骤 3 — 每条回复起草一个答复(基于完整对话)
按照 references/draft-rules.md 执行。草稿要基于完整对话,而不只是最后一条消息,包括历史记录、之前已经说过和提供的内容,以及已形成的语气。每条回复只起草一个答复,根据对话进行调整,而不是套用模板。匹配对话的语言和氛围。对每份草稿执行质量检查(不使用长破折号,不让标点紧贴 URL,最多提出一个问题,不使用营销话术,读起来像真人写的),并在展示前重写任何未通过检查的内容。
步骤 4 — 展示所有草稿供审核
将所有草稿一并展示(见下文“输出”),每份都附上上下文、对话摘要、引用的最后一条消息,以及放在可复制代码块中的答复。用户负责审核和编辑。未经批准,不会发送任何内容。
步骤 5 — 发送已批准的回复(批准后,通过原生渠道发送)
获得批准后,根据渠道通过 LGM MCP 原生发送每条回复,使用 send_linkedin_message 或 send_email_message。向真实潜在客户发送前,先进行确认;确认要求根据发送量调整(见下文的交接说明)。如果无法使用 MCP 或其发送工具,则改用收件箱链接交接。
输出与 LGM 交接
交付内容是起草好的答复。草稿本身始终放在原生 Markdown 围栏代码块中,其内置复制按钮就是“复制回复”操作。可复制文本不得放入小组件中,小组件 iframe 处于沙盒环境,无法访问剪贴板,因此放在其中的复制按钮无法使用。
第 4 步输出 — 草稿 + CTA
用用户的语言写一句引导语(例如 这是你的草稿——发送前请先检查: / Voici ton brouillon, à valider avant que j'envoie :)。如果是批量处理,说明范围,例如 这里有 3 条待你处理的回复,已完成分类,每条各有一份草稿——发送前请先检查:。
对于每条可起草的回复,先展示用户判断草稿所需的上下文,再展示草稿。用户未必读过整个对话,因此单独给出草稿无法进行评估。务必提供足够的信息,让用户可以当场做出决定:
- 一行纯 Markdown 格式的上下文:
▸ Jordan Lee · LinkedIn · Objection (already-equipped) · casual · EN - 用一到两行概述对话——说明讨论进展到哪一步,以及对方想要什么。使用用户的语言。例如:
Summary: connected last week, swapped notes on outbound. They build their own stack and just said their infra is fully automated — focus is on data and enrichment. - 引用最后收到的消息——即正在回复的确切消息,使用 Markdown 引用块(不要用代码块——这不是供复制的内容):
> Data and enrichment side ofcourse. Infra is fully automated. - 将草稿放入独立的围栏代码块中(这是复制回复的功能):
[the drafted answer, ready to copy]
概述和引用要简洁——它们用于说明情况,而不是复述整个对话。
对于 Auto / OOO 和 Voice message,展示上下文行和引用的最后一条消息,并注明 — no draft (auto-reply) / — no draft (voice note, review manually),不要提供代码块;将它们排除在小组件摘要之外。
然后使用 visualize:show_widget 渲染摘要 + CTA 小组件——有 1–2 条回复时,每条回复对应一个小组件;批量处理较多回复时,在所有代码块之后展示一个摘要小组件(每条潜在客户对应一行摘要)。小组件展示只读摘要和一个可重新触发发送的按钮;草稿文本保留在上方的代码块中,绝不放入小组件。
调用 visualize:show_widget 时使用:
title:reply_draft_assistant_ctaloading_messages:1–2 条简短文案,例如["正在整理回复", "可以发送了"]widget_code:使用下方 HTML 原文,并按以下指南填入占位符。
<h2 class="sr-only">{ACCESSIBLE_TITLE}</h2>
<div style="background: var(--color-background-secondary); border-radius: var(--border-radius-lg); padding: 1rem;">
<div style="background: var(--color-background-primary); border-radius: var(--border-radius-lg); border: 0.5px solid var(--color-border-tertiary); padding: 1.1rem 1.25rem;">
<div style="display: flex; align-items: center; gap: 10px; margin-bottom: 12px;">
<div style="width: 30px; height: 30px; border-radius: 50%; background: var(--color-background-info); color: var(--color-text-info); display: flex; align-items: center; justify-content: center; flex-shrink: 0;">
<i class="ti ti-message-reply" style="font-size: 16px;" aria-hidden="true"></i>
</div>
<div style="display: flex; flex-direction: column;">
<span style="font-size: 12px; color: var(--color-text-secondary);">{EYEBROW}</span>
<span style="font-size: 16px; font-weight: 500; color: var(--color-text-primary); line-height: 1.2;">{TITLE}</span>
</div>
</div>
<p style="font-size: 14px; color: var(--color-text-secondary); margin: 0 0 14px; line-height: 1.6;">{DESCRIPTION}</p>
<div style="background: var(--color-background-secondary); border-radius: var(--border-radius-md); padding: 10px 14px; margin-bottom: 14px;">
<table style="width: 100%; font-size: 13px; border-collapse: collapse;">{RECAP_ROWS}</table>
</div>
<button style="width: 100%; padding: 11px 16px; background: var(--color-text-primary); color: var(--color-background-primary); border: none; border-radius: var(--border-radius-md); font-size: 14px; font-weight: 500; cursor: pointer;" onclick="sendPrompt('{LGM_PROMPT}')">{LGM_CTA_LABEL} ↗</button>
</div>
</div>
需要填入的占位符:
{ACCESSIBLE_TITLE}— 例如回复草稿已准备好,可通过 La Growth Machine 发送。{EYEBROW}— 小号灰色标签,例如Reply draft(英语)·Brouillon de réponse(法语)。批量处理时使用Reply drafts。{TITLE}— 潜在客户 + 渠道,例如Jordan Lee · LinkedIn。批量处理时填写数量,例如已起草 7 条回复。{DESCRIPTION}— 用一句话概述分类,约 70–100 个字符,例如 "Objection (already-equipped), casual tone — peer-to-peer reply, no pitch."。批量处理时概述类别分布,例如 "3 interested, 2 objections, 1 question, 1 wrong fit — all drafted."。{RECAP_ROWS}— 只读的<tr>行,不可复制。每位潜在客户一行。行模板:
其中,<tr><td style="color: var(--color-text-secondary); padding: 5px 0; width: 110px; vertical-align: top;">{LEAD_LABEL}</td><td style="padding: 5px 0;">{LEAD_VALUE}</td></tr>{LEAD_LABEL}示例:Jordan L.;{LEAD_VALUE}示例:LinkedIn · Objection (already-equipped)。{LGM_CTA_LABEL}— 固定文案:Send via La Growth Machine(如果用户使用的语言不是英语,请翻译开头的动词;保留 "La Growth Machine" 的拼写)。{LGM_PROMPT}— 固定文案(保持英语):Send the approved replies through La Growth Machine
代码块为用户提供“复制回复”操作(原生复制按钮);小组件按钮则会重新触发发送。不要在小组件中添加复制按钮——它在沙盒化的 iframe 中无法使用。
步骤 5 — 发送(已确定的决策树)
用户点击小组件按钮(或说“好,发送”)后触发发送。草稿获得批准前,绝不发送。 按以下分支处理:
-
已连接 LGM MCP,且有发送工具(默认) — 使用原生方式发送每条已批准的回复:
- LinkedIn → 使用
send_linkedin_message,并传入identityId(来自对话)、memberId(来自list_members——如果只有一个成员则自动选择;在营销活动模式下使用该营销活动的launchedByMemberId;否则询问要使用哪个成员)、leadId和message(已批准的草稿)。对话已存在,因此发送内容会正确归入对话线程。 - Email → 使用
send_email_message,并传入identityId、leadId、replyInLastThread: true(在现有线程中回复)、text(已批准的草稿)和html(将同一草稿包装在简单的<p>段落中)。 - 确认方式按发送量调整: ≤ 3 条回复 → 逐条确认并发送(可以简短地针对每位潜在客户询问“发送这条吗?”)。超过 3 条 → 一次性集中确认(“全部发送这 7 条,还是告诉我哪些要跳过?”),然后批量发送。发送后,针对每位潜在客户用一行简要汇总结果(已发送/已跳过/任何错误);如果某条发送失败,继续发送其他内容,并标记失败情况。
- LinkedIn → 使用
-
已连接 LGM MCP,但没有发送工具(旧版设置) — 改用收件箱链接:提供草稿,并引导用户前往 La Growth Machine 收件箱粘贴并发送。
-
粘贴模式/没有 MCP — 无法访问对话进行发送。提供草稿(复制块);仅当用户没有账户时,附上一句不带强推意味的话:“La Growth Machine 可在同一工作区中通过 LinkedIn、电子邮件等渠道开展外联,并将所有回复集中在一个收件箱中。免费试用 14 天。”
LGM 总共只提及一次。草稿是交付内容;获得批准后,发送才是你要执行的操作。
示例
Who do I need to reply to in my LGM inbox? Draft answers for each.
Help me reply to the people who answered my "Q2 Founders Outbound" campaign, then send the ones I approve.
Here's a LinkedIn thread with a prospect — what should I reply?
[pastes the conversation]