mcpField
S
spark-recipe-unsubscribe-audit

spark-recipe-unsubscribe-audit

github.com/readdle生产力154305 次安装6 天前更新
代码仓库

关于 spark-recipe-unsubscribe-audit

这是用于 Spark 的技能配方,通过邮件数量和互动数据审查订阅,并仅在用户批准后取消订阅。它还会识别钓鱼邮件、重复投递和应保留的高频发件人。

主要功能

  1. 01扫描收件箱、归档和 GateKeeper
  2. 02按数量与互动情况分类发件人
  3. 03核对重复订阅副本
  4. 04取消用户批准的订阅
  5. 05屏蔽不需要的联系人或域名
  6. 06设置摘要和邮件分组

适用场景

  1. 01查找未读率高的新闻邮件
  2. 02安全审查疑似钓鱼邮件
  3. 03处理重复投递的新闻邮件
  4. 04减少高频发件人的邮件

安装

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

$npx skills add https://github.com/readdle/spark-cli-skills --skill spark-recipe-unsubscribe-audit

安装后在 Claude Code 中输入/spark-recipe-unsubscribe-audit确认已加载。

详细介绍

操作指南:退订审计

审计所有新闻邮件池,根据互动数据推荐退订对象,并且只有在用户批准列表后才执行。Spark 提供数据(发件人、数量、已读标记、正文);Agent 负责分类、重复项核实和执行。

前置条件: 阅读 use-spark 基础技能,了解命令参考和筛选语法。

所需访问级别: triage。

步骤

步骤 1:扫描全部三个邮件池

只扫描收件箱会漏掉大部分邮件量。请检查全部三个邮件池:

# Unified inbox, all accounts (paginate to get everything)
spark emails Inbox --filter "category:newsletter newer_than:30d" --page-size 100

# Auto-archived mail — Gmail filters/automations often skip the inbox
# entirely; repeat per Gmail-backed account. This pool can be the largest.
spark emails "[email protected]:Archive" --filter "category:newsletter newer_than:14d" --page-size 100

# GateKeeper queue — new senders held outside the inbox view
spark emails Inbox --new-senders --page-size 50
步骤 2:汇总并分类

按发件人统计:每 30 天的邮件数和未读率(根据 Flags 列)。分为以下等级:

等级信号操作
退订纯营销/滴灌邮件,约 100% 未读建议移除
考虑邮件量大,有部分互动由用户决定;建议使用摘要或自动总结
保留大多已读不做处理
事务性邮件发票、PIN、订单/安全通知不纳入审计
网络钓鱼见下文标记为垃圾邮件——绝不退订
应用提醒Instagram/LinkedIn 风格的通知邮件在应用的通知设置中调整

网络钓鱼警示: 显示名称中有品牌名,但发件人域名无关(例如,发件人是 [email protected],显示名称却是 “SpotifyUS”),或主题涉及紧急账单/安全事项。点击任何内容——包括退订链接——都会确认该地址有效。请醒目标记,并建议标记为垃圾邮件,而不是退订。垃圾邮件文件夹中的所有邮件也适用同样规则:绝不要从中退订。

展示分类结果,并在操作前等待用户确认或修改列表。用户可能会要求保留几个发件人。

步骤 3:操作前核实重复副本

同一份新闻邮件收到 2 份或更多时,不要假设用户订阅了两次:

  1. 通过 spark thread <id> 比较副本的 To: 标头。地址不同 → 确实是不同的订阅;使用对应副本中的链接退订不需要的那份(令牌按订阅分别生成)。
  2. Substack:解码 https://substack.com/redirect/2/<base64url-JSON> 退订链接;载荷的 u 字段是订阅 ID。两份副本的 u 相同 → 只有一个订阅,但邮件被投递了两次(别名/转发)。退订会彻底取消该订阅——请报告情况,不要操作。
  3. To: 相同,且属于同一账户(例如 Patreon)→ 同样情况;跳过并报告。
步骤 4:退订已批准的发件人

对于每个已批准的发件人,先尝试使用 Spark 内置机制:

spark action unsubscribe <id>

如果已安装的 CLI 版本不支持该命令,或者发件人没有 List-Unsubscribe 机制,则改用页脚链接提取:

spark thread <id> > /tmp/unsub/<id>.txt
grep -i -o 'https://[^][ )(>"<]*' /tmp/unsub/<id>.txt | grep -i 'unsub\|optout\|opt-out\|preference\|darse de baja'

然后在浏览器中打开并完成每个链接(使用 Agent 驱动的浏览器自动化,或将列表交给用户)。浏览器操作规则:常见情况是点击一次即可确认;偏好设置中心需要选择“退订所有营销邮件”并保存;绝不输入个人数据(已预填的电子邮件字段除外);遇到登录墙、验证码或错误时,记录为受阻并继续处理其他项。页脚因语言和 ESP 而异——如果模式匹配不到,请查看正文最后约 25 行,并选择实际的退订链接,不要点相邻的跟踪链接。

对于应完全屏蔽的发件人(陌生推销、疑似垃圾邮件):

spark contact-action blockContact [email protected]
spark contact-action blockDomain example.com
步骤 5:妥善处理保留的发件人

对于用户决定保留但邮件量较大的发件人:

spark contact-action enableAutosummaryForContact [email protected]
spark contact-action groupEmailsFromContact [email protected]
步骤 6:汇报

总结:已移除的发件人、每月减少的邮件数、受阻项目及后续手动操作、需要在应用内调整的应用提醒发件人、已标记为垃圾邮件的网络钓鱼邮件,以及需要在账户层面修复的重复项(例如 Substack 账户设置、转发规则)。

提示

  • 互动数据让建议更可信:“每月 30 封邮件,100% 未读”胜过“看起来像营销邮件”。
  • Shell 循环遇到失败的 grep 会中止——先将页面转储到临时文件,再进行解析,并追加 || true。
  • 点击跟踪器重定向链接(SendGrid、Braze、e.zoom.us、klclick、webengage)没问题——浏览器会跟随它们跳转到真正的退订页面。
  • Sendy 页脚同时包含 /l/...(跟踪)和 /unsubscribe/... 链接——选择后者。
  • 通过邮件列表自身的机制 unsubscribe 比屏蔽更妥当;blockContact/blockDomain 留给无视退订请求的发件人。
  • 每季度运行一次此流程;订阅会卷土重来。

评论

支持 Markdown