К основному содержанию
скилл CX Codex

spark-recipe-unsubscribe-audit — скилл для Claude Code

Скилл находит рассылки во входящих, архиве и очереди GateKeeper Spark, оценивает вовлечённость и отписывает от ненужных после одобрения.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add readdle/spark-cli-skills --skill spark-recipe-unsubscribe-audit -a claude-code
npx skills add readdle/spark-cli-skills --skill recipe-unsubscribe-audit -a claude-code
Открыть на GitHub

Что делает spark-recipe-unsubscribe-audit

Скилл пошагово разбирает подписки в почтовом клиенте Spark. Сначала агент проверяет три источника: общие входящие, архив писем и очередь GateKeeper. По каждому отправителю алгоритм считает объём писем за 30 дней и долю непрочитанных, распределяя рассылки по категориям от явного маркетинга до транзакционных уведомлений.

Перед отпиской сценарий сверяет дубликаты через заголовки To: и идентификаторы Substack, чтобы не удалить нужную рассылку из-за пересылки или алиаса. Подозрительные письма с признаками фишинга скилл предлагает сразу отправить в спам: клик по ссылке отписки в них подтвердит живость адреса.

Для работы рецепта обязательно требуется базовый скилл use-spark и уровень доступа triage. Отписка выполняется через встроенную команду spark action unsubscribe либо через поиск ссылок отписки в теле письма с переходом в браузере.

Какие задачи решает

  • найти забытые рассылки в архиве и очереди GateKeeper Spark
  • отфильтровать фишинговые письма от реальных подписок
  • проверить дубликаты подписок перед удалением
  • массово отписаться от спама и нечитаемых маркетинговых писем

Примеры запросов агенту

  • Просканируй почту через Spark и составь список рассылок, которые я не читаю
  • Проверь рассылки за последние 30 дней и отпишись от утверждённых отправителей
  • Найди дубликаты рассылок и фишинговые письма в моих входящих

Как установить spark-recipe-unsubscribe-audit

1Через Skills CLI (Vercel)

npx skills add readdle/spark-cli-skills --skill spark-recipe-unsubscribe-audit -a claude-code
npx skills add readdle/spark-cli-skills --skill recipe-unsubscribe-audit -a claude-code

2Вручную: положить файлы

~/.claude/skills/recipe-unsubscribe-audit/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/recipe-unsubscribe-audit/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о spark-recipe-unsubscribe-audit

Как установить spark-recipe-unsubscribe-audit в Claude Code?

Выполните команду npx skills add readdle/spark-cli-skills --skill spark-recipe-unsubscribe-audit -a claude-code. Также файл скилла можно сохранить по пути ~/.claude/skills/recipe-unsubscribe-audit/SKILL.md.

Что делает скилл spark-recipe-unsubscribe-audit?

Он автоматизирует аудит рассылок в Spark CLI: сканирует три пула писем, считает частоту отправки и процент прочтения, выявляет фишинг и отписывает пользователя от выбранных рассылок.

Что нужно для запуска рецепта аудита отписок?

Для выполнения команд требуется установленный CLI-клиент Spark, базовый скилл use-spark и уровень доступа triage.

Исходный текст

SKILL.md · MIT
---
name: spark-recipe-unsubscribe-audit
description: >-
  Full unsubscribe audit: scan inbox, archive, and GateKeeper for newsletter
  senders, classify by volume and engagement, detect phishing and duplicate
  subscriptions, then unsubscribe via spark action or extracted footer links.
metadata:
  version: 1.0.0
  requires:
    skills:
      - use-spark
    accessLevel: triage
---

# Recipe: Unsubscribe Audit

Audit every newsletter pool, recommend unsubscribe candidates backed by engagement data, and execute only after the user approves the list. Spark supplies the data (senders, volumes, read flags, bodies); the agent owns classification, duplicate verification, and execution.

**Prerequisite:** Read the `use-spark` base skill for command reference and filter syntax.

**Access level required:** triage.

## Steps

### Step 1: Scan all three pools

An inbox-only scan misses most of the volume. Check all three:

```bash
# 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
```

### Step 2: Aggregate and classify

Count per sender: emails per 30 days and unread rate (from the Flags column). Classify into tiers:

| Tier | Signal | Action |
|---|---|---|
| Unsubscribe | Pure marketing/drip, ~100% unread | Recommend removal |
| Consider | High volume, partial engagement | User's call; suggest digest or auto-summary |
| Keep | Mostly read | Leave alone |
| Transactional | Invoices, PINs, order/security notices | Exclude from the audit |
| Phishing | See below | Mark as spam — NEVER unsubscribe |
| App-nag | Instagram/LinkedIn-style notification mail | Fix in the app's notification settings |

**Phishing tripwire:** brand name in the display name but an unrelated sender domain (e.g. "SpotifyUS" from `[email protected]`), urgent billing/security subjects. Clicking anything — including unsubscribe — confirms the address is live. Flag prominently; recommend mark-as-spam instead. The same applies to everything already in the Spam folder: never unsubscribe there.

Present the classification and **wait for the user to confirm or amend the list** before acting. Expect them to rescue a few senders.

### Step 3: Verify duplicate copies before acting

When the same newsletter arrives 2+ times, do NOT assume two subscriptions:

1. Compare `To:` headers of the copies via `spark thread <id>`. Different addresses → genuinely separate subscriptions; unsubscribe the unwanted copy using the link **from that specific copy** (tokens are per-subscription).
2. Substack: decode the `https://substack.com/redirect/2/<base64url-JSON>` unsubscribe link; the payload's `u` field is the subscription ID. Same `u` in both copies → one subscription delivered twice (alias/forward). Unsubscribing kills it entirely — report instead of acting.
3. Same `To:`, same account (e.g. Patreon) → same situation; skip and report.

### Step 4: Unsubscribe approved senders

For each approved sender, try Spark's built-in mechanism first:

```bash
spark action unsubscribe <id>
```

If the command is unavailable in the installed CLI version or the sender has no `List-Unsubscribe` mechanism, fall back to footer-link extraction:

```bash
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'
```

Then complete each link in a browser (agent-driven browser automation or hand the list to the user). Browser rules: one-click confirmations are common; preference centers need "unsubscribe from all marketing" + save; never type personal data (pre-filled email fields are fine); login walls, captchas, and errors → record as blocked and move on. Footers vary by language and ESP — if the pattern misses, read the last ~25 lines of the body and pick the actual unsubscribe link, not adjacent tracking links.

For senders that should be blocked entirely (cold outreach, spam-adjacent):

```bash
spark contact-action blockContact [email protected]
spark contact-action blockDomain example.com
```

### Step 5: Tame the keepers

For high-volume senders the user keeps:

```bash
spark contact-action enableAutosummaryForContact [email protected]
spark contact-action groupEmailsFromContact [email protected]
```

### Step 6: Report

Summarize: senders removed, emails/month saved, blocked items with manual next steps, app-nag senders to fix in-app, phishing marked as spam, and duplicates that need account-level fixes (e.g. Substack account settings, forwarding rules).

## Tips

- Engagement data makes recommendations credible: "30 emails/month, 100% unread" beats "looks like marketing".
- Shell loops abort on a failing `grep` — dump pages to temp files first, parse second, and append `|| true`.
- Click-tracker redirect links (SendGrid, Braze, e.zoom.us, klclick, webengage) are fine — the browser follows them to the real unsubscribe page.
- Sendy footers contain both `/l/...` (tracking) and `/unsubscribe/...` links — pick the latter.
- `unsubscribe` via the mailing list's own mechanism is cleaner than blocking; reserve `blockContact`/`blockDomain` for senders that ignore unsubscribes.
- Run this recipe quarterly; subscriptions regrow.

© readdle · MIT · readdle/spark-cli-skills

Похожие скиллы

Все скиллы по теме «Заметки, задачи и проекты» →
recipe-create-gmail-filter официальный googleworkspace Скилл, который через CLI создаёт фильтры Gmail: навешивает метки, ставит звёздочки и раскладывает входящие по категориям. CX Codex +1 31 300установок recipe-save-email-attachments официальный googleworkspace Скилл находит письма с вложениями в Gmail и сохраняет эти файлы в выбранную папку на Google Drive. CX Codex +1 31 100установок extension-email-marketing caffeinelabs Добавляет в приложение на Caffeine AI маркетинговые письма по темам: подписчики, токены отписки и страница /unsubscribe на своём фронтенде. CX Codex +1 28 100установок newsletter-monetization-planner aaron-he-zhu Считает, как рассылка или список автора зарабатывают: платные тарифы, реклама и спонсорство, реферальные петли. Пригодится перед продажей инвентаря. CX Codex +1 1 000установок google-cloud-solution-agentic-analytics-spark-knowledge-catalog официальный google Скилл помогает спроектировать управляемую аналитику в Google Cloud для данных из разных облаков и систем. Подойдёт, если нужно согласовать требования, архитектуру и проверку решения. CX Codex 5 000установок spark-engineer https://github.com/Jeffallan Пишет PySpark-джобы и разбирает их тормоза: DataFrame, Spark SQL, перекос ключей, стриминг. Пригодится, когда джоб упирается в шуфл или падает по памяти. CX Codex +1 3 800установок

Из того же набора34

spark-recipe-meeting-followup Разбирает транскрипт встречи, вытаскивает задачи и готовит черновик письма участникам. Пригодится, когда после созвона нужно быстро разослать итоги. CX Codex +1 314установок spark-persona-meeting-manager Персона менеджера встреч для Spark: готовит к звонкам, разбирает транскрипты, пишет follow-up и ищет свободные слоты. CX Codex +1 314установок spark-recipe-delegate-and-track Помогает распределять входящие письма коллегам через Spark CLI, указывать сроки и контекст, а затем контролировать исполнение. CX Codex +1 313установок spark-persona-project-manager Настраивает агента как проектного менеджера в Spark. Скилл отслеживает ветки писем, готовит отчёты стейкхолдерам, находит дедлайны и ставит задачи команде. CX Codex +1 311установок spark-recipe-shared-inbox-triage Пошаговый сценарий разбора общей почты в Spark: поиск нераспределённых писем, назначение ответственных, ответы и закрытие цепочек. CX Codex +1 310установок spark-persona-support-agent Персона агента поддержки для Spark: разбирает общие ящики, назначает исполнителей, готовит ответы по шаблонам и эскалирует. CX Codex +1 307установок spark-persona-sales-rep Персона менеджера по продажам для Spark: следит за перепиской с клиентами, находит зависшие письма и готовит контекст к звонку. CX Codex +1 301установок spark-persona-team-lead Настраивает агента как тимлида в Spark: помогает разбирать общий ящик, распределять письма по сотрудникам, следить за нагрузкой команды и готовиться к дейли. CX Codex +1 300установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой