smartlead-campaign-upload-public
smartlead-campaign-upload-public について
`leads.csv` と `variants.yaml` から Smartlead の下書きキャンペーンを作成するスキルです。設定とアップロードを行い、Smartlead の画面で人が確認して手動で開始する運用です。
主な機能
- 01リードCSVの列を検証
- 02キャンペーン変数YAMLを解析
- 03タグ付き受信箱を送信数順に割り当て
- 04リードを分割してアップロード
- 05キャンペーンの設定とスケジュール
- 06手動確認用の下書き状態を維持
活用シーン
- 01準備済みリストからSmartleadの下書きを作成
- 02A/B/Cバリアントを含むシーケンスを登録
- 03開始前に受信箱の割り当てを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ growthenginenowoslawski/ coldoutboundskills --skill smartlead-campaign-upload-publicインストール後、Claude Code で/smartlead-campaign-upload-publicを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/leads-csv-schema.mdvariants-schema.yamlscripts/upload.ts詳細
Smartlead キャンペーンのアップロード
variants.yaml(/campaign-copywriting が作成)と、leads.csv(リスト作成スキルが作成)を受け取り、Smartlead に下書きキャンペーンを作成します。Smartlead の UI で結果を確認し、手動で Start を押してください。
このスキルはメール文面を一切提供しません。 文面は /campaign-copywriting から取得します。このスキルは機械的なアップロードレイヤーであり、API 呼び出しのみを行います。
下書きのみで作成する理由
コールドメールの配信をスクリプトから開始してはいけません。以下を確認してから、Smartlead の UI で Start を押してください。
- 件名と本文のプレビュー
- 受信トレイの割り当て(タグは正しいか?件数は正しいか?)
- リード数と、ランダムに選んだ数件のリード行
- スケジュール(タイムゾーン、時間帯、送信速度)
スクリプトはこれらすべてを下書きとして設定するため、レビューは簡単です。確認して Start をクリックしてください。
入力
leads.csv
必須列:
emailfirst_namelast_namecompany_name
任意の列(カスタムフィールドとして Smartlead に渡されます):
company_domaintitlelinkedin_urlsituation_line(リードごとに AI が生成するコンテキスト)value_line(AI が生成する価値の訴求)cta_line(AI が生成する CTA の切り口)
/campaign-copywriting または /personalization-subagent-pattern が生成する追加の AI 変数列(名前付きフィールドのみ)。スクリプトは任意の列を受け付けません。これは意図的な仕様です。フィールドを追加する必要がある場合は、このスキルを更新してください。
variants.yaml
/campaign-copywriting が生成します。スキーマは references/variants-schema.yaml にあります。
最低限必要な項目:name、schedule、inbox_selection、1 つ以上のステップを含む sequences。
使用方法
export SMARTLEAD_API_KEY=xxx
npx tsx scripts/upload.ts \
--leads=profiles/<slug>/campaigns/<campaign-slug>/leads.csv \
--variants=profiles/<slug>/campaigns/<campaign-slug>/variants.yaml
出力:
✓ Campaign created: #12345678
✓ Sequence saved (3 steps, 3 variants on step 1)
✓ 20 inboxes attached (tag=active, LRU by daily_sent_count)
✓ 1,847 leads uploaded (20 batches)
✓ Schedule set (M-F 08:00-17:00 EST, 30/day/inbox)
Campaign is in DRAFT. Review + Start:
→ https://app.smartlead.ai/app/email-campaign/12345678
スクリプトの処理フロー
- 環境変数を読み込みます(
SMARTLEAD_API_KEYが必須です) leads.csvを解析します。必須列を検証し、行数を数えますvariants.yamlを解析します(組み込みの最小限のパーサーを使用。約 30 行、外部依存なし)POST /campaigns/create→ campaignId を取得しますPOST /campaigns/{id}/sequencesで A/B/C の全バリアントを登録します/email-accounts?limit=100を照会し、tagでフィルタリングしてdaily_sent_countの昇順(LRU)で並べ替え、上位 N 件を割り当てます- CSV の標準カスタムフィールドをマッピングして、リードをバッチアップロードします(1 バッチ 100 件)
POST /campaigns/{id}/settings(トラッキングはオフ、返信があれば停止)- YAML の値を使用して
POST /campaigns/{id}/scheduleを呼び出します - キャンペーン URL を出力します。有効化してはいけません。
注意点
- タグは事前に作成し、受信トレイに適用しておく必要があります。 このアップロードを実行する前に、
/smartlead-inbox-managerを使って受信トレイにactiveタグを付けてください。 - 受信トレイ数。
inbox_selection.countがタグ付け済みの受信トレイ数を超える場合、スクリプトは利用可能なすべてを割り当て、警告を表示します。 - Leads CSV のサイズ。 最大 10K 行までテスト済みです。それを超えると API のレート制限に達する可能性があります。スクリプトには指数バックオフによる再試行機能が組み込まれています。
- Variants.yaml の不一致。
/campaign-copywritingが正確なスキーマを生成しなかった場合、スクリプトは問題のあるフィールドを明示するエラーを出して、すぐに終了します。 - メールの重複。 Smartlead はサーバー側でキャンペーンごとに重複を排除します。それでも、事前に
/list-quality-scorecardを使って CSV の重複を排除してください。
次の手順
最後に出力された Smartlead の URL を開き、キャンペーンを確認してください。問題がなければ Start を押してください。 スクリプトは意図的に自動有効化を行いません。
Start を押した後:
- 21 日待ってから、キャンペーンに対して
/positive-reply-scoringを実行し、効果を測定します。 - 毎週月曜日:
/email-deliverability-audit --days=7を実行します(/cold-email-weekly-rhythmを参照)。
または、待機してください: ベストプラクティスのチェックで問題が見つかった場合は、アップロード前に /campaign-copywriting に戻って修正してください。
関連スキル
/campaign-copywriting—variants.yamlを生成します/smartlead-inbox-manager— 必須の事前準備:アップロード前に受信トレイへactiveタグを付ける必要があります/list-quality-scorecard— アップロード前にleads.csvの重複を排除し、リードを検証します/positive-reply-scoring— 配信開始から 21 日後に実行して効果を測定します/cold-email-weekly-rhythm— 配信開始後の運用サイクル
ファイル
scripts/upload.ts— アップロードスクリプトreferences/variants-schema.yaml— 空のスキーマリファレンス(文面の例は含まれません)references/leads-csv-schema.md— 列の仕様