spark-recipe-unsubscribe-audit について
Spark向けに、メール量とエンゲージメントを基にニュースレターを監査するスキルレシピです。ユーザーの承認後にのみ配信停止し、フィッシングや重複配信も識別します。
主な機能
- 01受信トレイ、アーカイブ、GateKeeperを確認
- 02量と反応に基づき送信者を分類
- 03重複する購読を照合
- 04承認済み送信者の配信を停止
- 05不要な連絡先やドメインをブロック
- 06要約とメールのグループ化を設定
活用シーン
- 01未読率の高いニュースレターを特定
- 02フィッシングの疑いがあるメールを確認
- 03ニュースレターの重複配信を解決
- 04大量送信者からのメールを減らす
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ readdle/ spark-cli-skills --skill spark-recipe-unsubscribe-auditインストール後、Claude Code で/spark-recipe-unsubscribe-auditを入力して読み込まれたか確認します。
詳細
レシピ:ニュースレターの購読解除監査
すべてのニュースレタープールを監査し、エンゲージメントデータに基づいて購読解除候補を提示します。実行するのは、ユーザーがリストを承認してからにします。Spark がデータ(送信者、件数、既読フラグ、本文)を提供し、分類、重複の確認、実行はエージェントが担当します。
前提条件: コマンドのリファレンスとフィルター構文について、use-spark の基本スキルを読んでください。
必要なアクセスレベル: triage。
手順
ステップ 1:3 つのプールをすべてスキャンする
受信トレイだけのスキャンでは、件数の大半を見落とします。3 つすべてを確認してください。
# 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 通以上届いても、購読が 2 つあるとは限りません。
spark thread <id>で各コピーのTo:ヘッダーを比較します。アドレスが異なる場合は、実際に別々の購読です。解除するコピーに含まれるリンクを使って、不要な方を解除してください(トークンは購読ごとに異なります)。- Substack:
https://substack.com/redirect/2/<base64url-JSON>の購読解除リンクをデコードし、ペイロードのuフィールドを確認します。両方のコピーでuが同じ場合は、1 つの購読が 2 回配信されています(エイリアス/転送)。購読解除すると完全に停止するため、実行せずに報告してください。 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'
その後、ブラウザーで各リンクを完了します(エージェントによるブラウザー自動化を使うか、リストをユーザーに渡してください)。ブラウザーでのルール:ワンクリックで完了する確認が一般的です。設定センターでは「すべてのマーケティングメールの購読を解除」を選び、保存する必要があります。個人情報は入力しないでください(メールアドレス欄にあらかじめ入力されている場合は問題ありません)。ログインが必要なページ、CAPTCHA、エラーが発生した場合は、ブロックされたものとして記録し、次に進んでください。フッターは言語や 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通のメール、すべて未読」は「マーケティングメールのように見える」より効果的です。
grepが失敗するとシェルループは中断されます。まずページを一時ファイルに保存してから解析し、|| trueを追加してください。- クリック追跡用のリダイレクトリンク(SendGrid、Braze、e.zoom.us、klclick、webengage)で問題ありません。ブラウザーが実際の配信停止ページに移動します。
- Sendy のフッターには
/l/...(追跡用)と/unsubscribe/...の両方のリンクが含まれています。後者を選んでください。 - メーリングリスト独自の仕組みで
unsubscribeするほうが、ブロックするより適切です。配信停止を無視する送信者に対してのみ、blockContact/blockDomainを使用してください。 - この手順は四半期ごとに実行してください。購読はまた増えていきます。