关于 pp-resend
pp-resend 是面向 Agent 的 Resend 命令行技能,用于查询和管理账户。它将 API 操作与基于本地同步数据的跨资源查询和分析结合起来。
主要功能
- 01收件人邮件历史与事件时间线
- 02受众及联系人归属查询
- 03广播与送达率分析
- 04域名验证和 API 密钥审计
- 05通过命令行管理 Resend 资源
适用场景
- 01调查单个收件人的邮件送达问题
- 02活动前检查受众互动情况
- 03跟踪退信率和投诉率
- 04安全审查时查找过期 API 密钥
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-resend安装后在 Claude Code 中输入/pp-resend确认已加载。
详细介绍
Resend — Printing Press CLI
前置条件:安装 CLI
此技能使用 resend-pp-cli 二进制文件。**调用此技能中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 使用 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install resend --cli-only - 验证:
resend-pp-cli --version - 确保报告的安装目录位于将调用此技能的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、离线等),请改用直接通过 Go 安装的方式(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/productivity/resend/cmd/resend-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法访问 $PATH 中的二进制文件目录。在验证成功之前,请勿继续执行技能命令。
何时使用此 CLI
当 Agent 需要回答有关 Resend 账户的跨资源问题,而控制面板或 SDK 无法通过一次调用回答时,请使用此 CLI — 例如,向特定收件人发送了什么、某个联系人属于哪些受众、广播表现随时间的变化趋势如何、7 天退信率是多少。对于单次事务性发送,请使用 npx resend send;对于模板,请使用 React Email。此 CLI 是面向 Agent 的配套工具,并非替代品。
独特功能
这些功能在此 API 的其他任何工具中都不可用。
基于本地状态的跨资源查询
-
emails to— 向单个收件人地址发送的所有邮件,包含投递状态和时间戳,并按时间从新到旧排序。当 Agent 需要还原单个用户收到的邮件时使用 — 例如处理支持工单、GDPR 数据导出或争议调查。
resend-pp-cli emails to <your-email> --json --select id,subject,status,sent_at -
emails timeline— 单封邮件的精简事件链:已发送 → 已投递 → 已打开 → 已点击 → 已退信,并显示在一个有序表格中。在排查“为什么没有收到邮件?”时使用 — 一条命令即可显示邮件是否已发送、投递、打开或退信,以及发生时间。
resend-pp-cli emails timeline 4ef9a417-d4ff-4ec5-9af2-c80a4d5d2c1f --json -
audiences inventory— 按受众汇总:联系人数量、退订数量、上次广播时间戳和近期打开率。规划活动前使用 — 快速查看哪些受众状态良好且近期有互动。
resend-pp-cli audiences inventory --json -
contacts where— 一次查询即可找到联系人(按电子邮件地址或姓名搜索)所属的所有受众、细分和主题。在处理退订请求、GDPR 删除请求或“为什么 bob 会收到这封邮件?”等问题时使用。
resend-pp-cli contacts where <contact-email> --json --select audience_name,subscribed
基于本地存储的汇总分析
-
broadcasts performance— 所有广播的打开率、点击率和退信率,支持排序;不限于单个广播或 30 天时间窗口。用于比较账户生命周期内各活动的表现。
resend-pp-cli broadcasts performance --json --select broadcasts,count,status -
domains health— 在一个表格中显示每个域名的验证状态以及 DKIM/SPF/DMARC 状态,并标记缺失或未经验证的记录。在呼叫事件或投递问题发生时使用,确认所有发信域名均已完成验证。
resend-pp-cli domains health --json -
deliverability summary— 根据本地事件数据,计算滚动时间窗口(默认 7d)内的退信率、投诉率和抑制数量。每周使用,监控 IP/域名信誉趋势,防止其导致投递问题。
resend-pp-cli deliverability summary --window 7d --json
运维规范
-
api-keys rotation— 按密钥使用时长和上次使用时间戳排序(从日志中联接得出),并标记超过 N 天未使用的旧密钥。在季度安全审查期间使用,找出应轮换或撤销的未使用密钥。
resend-pp-cli api-keys rotation --older-than 90d --json
命令参考
api-keys — 通过 Resend API 创建和管理 API Keys。
resend-pp-cli api-keys create— 创建新的 API 密钥resend-pp-cli api-keys delete— 移除现有 API 密钥resend-pp-cli api-keys list— 获取 API 密钥列表
audiences — 已弃用:请改用 Segments。通过 Resend API 创建和管理 Audiences。
resend-pp-cli audiences create— 已弃用:请改用 Segments。这些端点仍可使用,但未来将被移除。resend-pp-cli audiences delete— 已弃用:请改用 Segments。这些端点仍可使用,但未来将被移除。resend-pp-cli audiences get— 已弃用:请改用 Segments。这些端点仍可使用,但未来将被移除。resend-pp-cli audiences list— 已弃用:请改用 Segments。这些端点仍可使用,但未来将被移除。
automations — 通过 Resend API 创建和管理 Automations。
resend-pp-cli automations create— 创建自动化resend-pp-cli automations delete— 删除自动化resend-pp-cli automations get— 检索单个自动化resend-pp-cli automations list— 检索自动化列表resend-pp-cli automations update— 更新自动化
broadcasts — 通过 Resend API 创建和管理 Broadcasts。
resend-pp-cli broadcasts create— 创建广播resend-pp-cli broadcasts delete— 移除处于草稿状态的现有广播resend-pp-cli broadcasts get— 检索单个广播resend-pp-cli broadcasts list— 检索广播列表resend-pp-cli broadcasts update— 更新现有广播
contact-properties — 通过 Resend API 创建和管理 Contact Properties。
resend-pp-cli contact-properties create— 创建新的联系人属性resend-pp-cli contact-properties delete— 移除现有联系人属性resend-pp-cli contact-properties get— 检索单个联系人属性resend-pp-cli contact-properties list— 检索联系人属性列表resend-pp-cli contact-properties update— 更新现有联系人属性
contacts — 通过 Resend API 创建和管理 Contacts。
resend-pp-cli contacts create— 创建新联系人resend-pp-cli contacts delete— 按 ID 或电子邮件地址移除现有联系人resend-pp-cli contacts get— 按 ID 或电子邮件地址检索单个联系人resend-pp-cli contacts list— 检索联系人列表resend-pp-cli contacts update— 按 ID 或电子邮件地址更新单个联系人
domains — 通过 Resend API 创建和管理域名。
resend-pp-cli domains create— 创建新域名resend-pp-cli domains delete— 移除现有域名resend-pp-cli domains get— 检索单个域名resend-pp-cli domains list— 检索域名列表resend-pp-cli domains update— 更新现有域名
emails — 通过 Resend API 开始发送电子邮件。
resend-pp-cli emails create— 发送电子邮件resend-pp-cli emails create-batch— 一次触发最多 100 封批量电子邮件。resend-pp-cli emails get— 检索单封电子邮件resend-pp-cli emails get-receiving— 检索单封收到的电子邮件resend-pp-cli emails get-receiving-2— 检索收到的电子邮件的附件列表resend-pp-cli emails get-receiving-3— 检索收到的电子邮件的单个附件resend-pp-cli emails list— 检索电子邮件列表resend-pp-cli emails list-receiving— 检索收到的电子邮件列表resend-pp-cli emails update— 更新单封电子邮件
events — 通过 Resend API 创建和管理 Events。
resend-pp-cli events create— 创建事件resend-pp-cli events create-send— 发送事件resend-pp-cli events delete— 删除事件resend-pp-cli events get— 检索单个事件resend-pp-cli events list— 检索事件列表resend-pp-cli events update— 更新事件
logs — 通过 Resend API 检索 API 请求日志。
resend-pp-cli logs get— 检索单条日志resend-pp-cli logs list— 检索日志列表
segments — 通过 Resend API 创建和管理 Segments。
resend-pp-cli segments create— 创建一个新分组resend-pp-cli segments delete— 删除现有分组resend-pp-cli segments get— 获取单个分组resend-pp-cli segments list— 获取分组列表
templates — 通过 Resend API 创建和管理模板。
resend-pp-cli templates create— 创建模板resend-pp-cli templates delete— 删除现有模板resend-pp-cli templates get— 获取单个模板resend-pp-cli templates list— 获取模板列表resend-pp-cli templates update— 更新现有模板
topics — 通过 Resend API 创建和管理主题。
resend-pp-cli topics create— 创建一个新主题resend-pp-cli topics delete— 删除现有主题resend-pp-cli topics get— 获取单个主题resend-pp-cli topics list— 获取主题列表resend-pp-cli topics update— 更新现有主题
webhooks — 通过 Resend API 创建和管理 Webhook。
resend-pp-cli webhooks create— 创建一个新 Webhookresend-pp-cli webhooks delete— 删除现有 Webhookresend-pp-cli webhooks get— 获取单个 Webhookresend-pp-cli webhooks list— 获取 Webhook 列表resend-pp-cli webhooks update— 更新现有 Webhook
查找合适的命令
知道要做什么,但不知道该用哪个命令时,可以直接询问 CLI:
resend-pp-cli which "<capability in your own words>"
which 会根据自然语言功能查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可信的匹配项 — 此时请改用 --help 或使用更具体的查询。
示例
重建用户收到的邮件记录
resend-pp-cli emails to [email protected] --json --select id,subject,status,sent_at,opened_at --limit 50
适用于支持工单和 GDPR 导出 — 列出发送给某位收件人的每封邮件及其投递状态。
活动前受众检查
resend-pp-cli audiences inventory --json --select name,contact_count,unsubscribed_count,last_broadcast_at
安排广播邮件前运行 — 找出退订率较高或互动数据过时的受众。
每周投递能力审查
resend-pp-cli deliverability summary --window 7d --agent --select bounce_rate,complaint_rate,suppression_count
获取 IP/域名信誉趋势快照;通过 jq 管道处理,以便在超出阈值时发出警报。
审计过期的 API 密钥
resend-pp-cli api-keys rotation --older-than 90d --json --select name,created_at,last_used_at
在每季度安全审查期间找出未使用的密钥。
搜索所有已发送邮件中的短语
resend-pp-cli search 'password reset' --json --select id,subject,to,sent_at
基于 FTS5;请先运行 sync --full。
身份验证设置
运行 resend-pp-cli auth setup 获取用于申请令牌的 URL 和步骤(添加 --launch 可打开 URL)。然后保存令牌:
resend-pp-cli auth set-token YOUR_TOKEN_HERE
或者将 RESEND_API_KEY 设置为环境变量。
运行 resend-pp-cli doctor 验证设置。
Agent 模式
为任意命令添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。
-
支持管道处理 — JSON 输出到 stdout,错误输出到 stderr
-
支持筛选 —
--select保留部分字段。点分路径可访问嵌套结构;数组会逐项遍历。对于内容冗长的 API,这对控制上下文大小至关重要:resend-pp-cli api-keys list --agent --select id,name,status -
支持预览 —
--dry-run显示请求,但不会发送 -
适合离线使用 — 有本地 SQLite 存储时,sync/search 命令可使用该存储
-
非交互式 — 不会提示输入,所有输入都通过标志提供
-
显式重试 — 仅当已存在的创建操作应视为成功时才使用
--idempotent;仅当目标不存在的删除操作应视为成功时才使用--ignore-missing
响应封装
从本地存储或 API 读取数据的命令,会将输出封装在一个来源信息对象中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并查看 .meta.source 以判断数据来自实时 API 还是本地存储。只有当 stdout 连接到终端时,才会将易读的 N results (live) 摘要打印到 stderr — 通过管道处理或由 Agent 使用时,stdout 只会输出纯 JSON。
Agent 反馈
当你(或 Agent)发现此 CLI 有不对劲的地方时,请记录下来:
resend-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
resend-pp-cli feedback --stdin < notes.txt
resend-pp-cli feedback list --json --limit 10
条目会本地存储在 ~/.resend-pp-cli/feedback.jsonl 中。除非设置了 RESEND_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 RESEND_FEEDBACK_AUTO_SEND=true,否则绝不会通过 POST 发送。默认仅存储在本地。
记录让你感到意外的事情,而不是提交错误报告。简短、具体、一行即可:这才是日积月累产生价值的部分。
输出传递
每个命令都接受 --deliver <sink>。除了(或取代)stdout 外,输出还会发送到指定的目标,因此 Agent 无需通过管道手动传递命令结果。支持三种目标:
| 目标 | 效果 |
|---|---|
stdout | 默认;仅写入 stdout |
file:<path> | 将输出原子写入 <path>(临时文件 + 重命名) |
webhook:<url> | 将输出正文 POST 到该 URL(使用 --compact 时为 application/json 或 application/x-ndjson) |
对于未知方案,会拒绝请求并返回结构化错误,指出支持的方案。Webhook 请求失败时会返回非零退出码,并在 stderr 中记录 URL 和 HTTP 状态码。
命名配置
配置文件是保存的一组标志值,可在多次调用中重复使用。适用于定时运行的 Agent 每次都以相同配置调用同一命令的场景——HeyGen 的“Beacon”模式。
resend-pp-cli profile save briefing --json
resend-pp-cli --profile briefing api-keys list
resend-pp-cli profile list --json
resend-pp-cli profile show briefing
resend-pp-cli profile delete briefing --yes
显式标志始终优先于配置文件中的值;配置文件中的值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置文件,以便能够自省的 Agent 在运行时发现它们。
退出码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 触发速率限制(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示resend-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的前置条件 - 其他任何内容 → 直接使用(通过 CLI 命令并带上
--agent执行)
安装 MCP 服务
从此 CLI 发布的公共库条目或预构建版本安装 MCP 二进制文件,然后进行注册:
claude mcp add resend-pp-mcp -- resend-pp-mcp
验证:claude mcp list
直接使用
- 检查是否已安装:
which resend-pp-cli如果未找到,则提供安装选项(参见本技能开头的前置条件)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:resend-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,则查看子命令帮助:
resend-pp-cli <command> --help。