mcpField
E
email

email

github.com/kiluazen生产力165 次安装4 周前更新
代码仓库

关于 email

通过 `autark mail` 命令行收发和阅读 AgentMail 邮件的技能,涵盖草稿检查、邮件格式选择及外联记录与潜在客户关联。

主要功能

  1. 01通过命令行发送和回复
  2. 02读取邮件线程与附件
  3. 03检查邮件草稿
  4. 04将外联记录关联到潜在客户
  5. 05选择 HTML 或纯文本

适用场景

  1. 01发送关联潜在客户的外联邮件
  2. 02在现有邮件线程中回复
  3. 03查看收件箱邮件和附件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kiluazen/kstack --skill email

安装后在 Claude Code 中输入/email确认已加载。

附带文件agents/openai.yaml

详细介绍

电子邮件

每位 autark 用户在完成入职设置时,都会获得一个专属的 AgentMail 收件箱。所有邮件操作——发送、回复、读取收件箱——都通过 autark mail CLI 完成,该 CLI 已通过 ~/.autark/credentials.json 完成身份验证。不要直接调用 api.agentmail.to。不要使用 agentmail npm CLI。

身份验证

每次调用时,autark mail 都会从 ~/.autark/credentials.json 读取收件箱令牌和地址。无需设置环境变量或传入身份验证标志。如果命令报错 missing agentmail_token,说明用户尚未完成设置——运行一次 autark mail setup --prefix <name>。

如果设置了以下环境变量,AGENTMAIL_API_KEY / AGENTMAIL_EMAIL / AGENTMAIL_INBOX_ID 会作为覆盖值生效——仅在使用非默认收件箱时有用。

纯文本与 HTML——选择合适的标志

CLI 同时接受 --text 和 --html,遵循 AgentMail / Mailgun / SendGrid / Resend / Postmark 的惯例。

  • --text @file — 以 text/plain 格式发送。收件人会原样看到字节内容。任何 HTML 标签(<div>、<p>、<br>、<a> 等)都会以纯文本形式显示在收件人的收件箱中。
  • --html @file — 以 text/html 格式发送。收件人的电子邮件客户端会将其呈现为带样式的邮件,并显示实际的锚点、段落分隔等。

外联邮件签名规则:如果在邮件签名或页脚中放入链接,链接必须嵌入文字中(例如,名称「kushal」本身就是可点击链接),绝不能单独占一行、直接显示 URL。autark 发送的签名不应采用裸 URL 的形式。

要使用嵌入链接的签名,必须使用 --html——--text 会让 Gmail / Outlook 将 <a href> 标记作为纯文本显示。这就是 2026-05-28 出现问题的原因:6 封冷邮件通过 --text 发送了 <a href="https://autark.sh">kushal</a>,所有收件人都在 Gmail 中看到了原始标记。事后分析请参阅 autark/docs/email-html-in-text-incident.md。

如果发送的邮件没有签名链接(注册验证、测试 ping、系统消息),使用纯文本 --text 即可。

发送前检查每封草稿

在执行 autark mail send 前,先对每封草稿(包括发送邮件和回复)运行 autark mail lint:

autark mail lint --body @draft.txt

退出码为 0 = 无问题。退出码为 1 = 以 JSON 格式打印违规项,每项包含 rule、detail 和 why。请把输出视为反馈,而不是硬性门槛。这些规则用于捕捉常见的 AI 痕迹;有时也会误判实际没问题的草稿。阅读每条 why,判断规则是否适用于你的具体邮件,修复确实适用的问题,对不适用的问题则忽略。标准不是“lint 退出码为 0”,而是“这封邮件读起来像真人写的,能否打动收件人?”

Lint 只检查内容质量——AI 痕迹、模棱两可的措辞、长度、签名格式。它不检查标记语法(这由上文的约定和你自己的判断负责)。检查即将发送的正文:如果发送 --html,就检查 HTML 文件;如果发送 --text,就检查文本文件。Lint 无论哪种格式都会读取正文。

Lint 检查项:

  • structure-word — 正文中的 AI 痕迹词汇(structurally、fundamentally、specifically、essentially、the key insight、that's exactly 等)。写冷邮件的真人不会用这些词。直接描述事物。
  • em-dash — 任何 — 字符。在外联邮件中,这是明显的 AI 痕迹。请使用逗号、句号或换行。(如果收件人的写作中也使用破折号,且你是在模仿其语气,则可以忽略。)
  • body-url — 不在 Markdown [name](url) 或 HTML <a href> 锚点中的任何 URL。产品链接应放在签名锚点中;在正文中直接放 URL,会像是在测试 A/B 版本。
  • too-many-questions — 多于一个 ?。选出能让你获得最多信息的那个问题。(如果是在回复中回答多个直接提问,可以忽略。)
  • compound-question — “are you X or Y...?” 这类句式。去掉 or,选更具体的一项。
  • too-long — 签名前超过 400 个字符(约 4–6 行短句)。超过这个长度,你就是在解释,而不是在提问。
  • no-anchor-sig — 签名中没有可点击的姓名链接。如果签名里没有 <a href> / [name](url),收件人就无法快速了解你的身份。

如果大多数违规项都确实适用,而你重写 2 次后仍写不出合格草稿,问题可能出在正则表达式之外。请重新阅读 ~/.claude/skills/outreach/SKILL.md,并考虑是否应该发送。

发送消息 — 冷外联(HTML,签名中嵌入链接)

autark mail send \
  --to [email protected] \
  --subject "Subject" \
  --html @./body.html \
  --lead-id $LEAD_ID

body.html:

<p>Hi Karl,</p>
<p>one sentence quoting them.</p>
<p>one sentence on what you built.</p>
<p>one specific question?</p>
<p>best,<br><a href="https://autark.sh">kushal</a></p>

收件人会看到一封带样式的邮件,其中的 “kushal” 是指向 autark.sh 的可点击链接。这是发送任何冷外联邮件的默认格式。

外联邮件始终传入 --lead-id。 一个命令会原子性地完成三件事:发送邮件、在潜在客户记录上添加一次 touch(方向为 out,thread_ref = AgentMail 线程),并将潜在客户状态从 ready 更新为 contacted。发送邮件本身就会完成记录工作,无需另行执行状态更新或日志记录命令。随后,工作线程会轮询该线程(针对状态为 contacted 和 replied 的潜在客户),并自动记录收到的回复。可通过 autark lead list <slug> / autark lead show <id> 获取潜在客户 ID,也可在仪表板中获取(点击任意潜在客户行即可复制其 ID;带有 ?lead=<id> 的链接也包含该 ID)。

--run-id 仍然可用,但它属于旧版 v1 操作日志——不会更新潜在客户表,仪表板会将这些行视为历史记录。不要用它来针对表格中的潜在客户进行外联。

其他标志:--cc、--bcc、--reply-to、--label、--attachment(每个标志都可重复使用或用逗号分隔),以及用于打印负载但不发送的 --dry-run。

响应为 JSON,包含 message_id、thread_id,以及(传入 --lead-id 时)touch / 潜在客户记录。请保存此响应。

发送消息 — 非外联(纯文本,无链接)

对于注册验证、测试通知、系统消息,或任何无需担心签名链接的发送:

autark mail send \
  --to [email protected] \
  --subject "Subject" \
  --text @./body.txt

此处使用纯 --text 即可。无需传入 --lead-id,因为没有对应的潜在客户,不会有记录写入表格。

在线程中回复

autark mail reply \
  --message-id "$MESSAGE_ID" \
  --html @./reply.html \
  --lead-id $LEAD_ID

同样遵循格式规则:如果回复包含签名链接,请使用 --html。如果是用一句话回复一句话,且不含签名链接,则可以使用 --text。

$MESSAGE_ID 是你要回复的邮件 ID(收到的邮件,或你自己之前发送的邮件)。这是 mail send / mail message / mail thread 返回的 ID。

**对方尚未回复时跟进:**普通回复会发给目标邮件的发件人,也就是你自己,因此邮件会发到你自己的收件箱。跟进自己发出的最后一封邮件时,请显式传入 --to [email protected]。

使用 autark mail reply-all 回复所有收件人;使用 autark mail forward --message-id <id> --to <addr> [--html @body.html] 转发邮件。

查看收件箱

autark mail threads [--limit 30]               # list threads
autark mail thread <thread_id>                 # one thread + all messages
autark mail messages [--limit 30]              # flat message list
autark mail message <message_id>               # single message
autark mail raw <message_id>                   # full raw payload
autark mail attachment --message-id <id> --attachment-id <id> [--out file]

所有输出均为 JSON。无需传入身份验证标志——凭据会从磁盘读取。

应急方案

如果 AgentMail 发布了 autark mail 尚未封装的新端点:

autark mail request GET /inboxes/$EMAIL/some/new/endpoint
autark mail request POST /inboxes/$EMAIL/foo --body @payload.json

复用同一经过身份验证的会话。仅在没有适用的封装命令时使用。

规则

  • 任何签名中包含链接的邮件发送,都请使用 --html,以便将链接嵌入姓名中。仅包含裸 URL 的签名不是 autark 的发送格式。
  • 不含签名链接的邮件发送(注册验证、系统提示、测试邮件)可以使用纯文本 --text。
  • 对每份草稿(发送和回复)都进行 lint 检查。将输出视为反馈,并忽略不适用的规则。
  • 每次发送或回复触达潜在客户时,都传入 --lead-id,以便记录到潜在客户表中,并让回复扫描跟踪该邮件线程。
  • 不要根据姓名和域名猜测邮箱地址组合。首次联系前请使用 email-finder 技能,并通过具体来源(Apollo、GitHub 提交记录等)验证地址。
  • 如果联系人价值较高,或来源不可靠,请用第二条线索交叉验证。
  • 如果邮件地址硬退信,请将其列入抑制名单并继续处理。不要尝试相近的地址。
  • 如果需要通过浏览器进行注册、验证链接操作或 Apollo 调研,请使用 chrome-relay 技能。
  • 潜在客户的触达记录是权威记录——autark lead show <id> 会按顺序列出每次发送和回复。mail send 的响应(message_id + thread_id)可用于之后在正确的邮件线程中回复。

评论

支持 Markdown