mcpField
S
sequence-load

sequence-load

github.com/scientiacapitalマーケティング・グロース2835 回インストール3 週間前に更新
リポジトリ

sequence-load について

prospect-refresh の新規見込み客を選別し、Apollo のアウトバウンドシーケンスに登録する営業運用スキルです。BDR ワークフロー向けに重複、電話番号、除外条件、抑制期間を確認し、Apollo 登録と HubSpot 同期の結果を報告します。

主な機能

  1. 01見込み客データの読み込みと検証
  2. 02HubSpot と Apollo の重複確認
  3. 03除外条件と電話番号の確認
  4. 04業種別のシーケンス選択
  5. 05一括登録と登録状況の確認
  6. 06HubSpot 連絡先の作成と報告

活用シーン

  1. 01prospect-refresh の新規リード処理
  2. 02シーケンスへの重複登録の防止
  3. 03新しい Apollo 連絡先の HubSpot 同期

MCP 対応

HubSpot と Apollo の MCP ツールを使い、連絡先の検索・管理、シーケンス検索、一括登録を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scientiacapital/skills --skill sequence-load

インストール後、Claude Code で/sequence-loadを入力して読み込まれたか確認します。

同梱ファイルconfig.json

詳細

シーケンス読み込みスキル

prospect-refresh から新規見込み客を Apollo のアウトリーチシーケンスに自動的に読み込みます。ゴールデンルールを検証し、電話番号が存在することを確認し、重複登録をチェックし、シーケンスへの一括追加を実行します。見込み客ごとのシーケンス割り当てと、HubSpot 同期用のコンタクト ID を含む登録レポートを出力します。

<quick_start> トリガー: 月曜日 7:15 AM ET(6:30 AM の prospect-refresh の後に実行) 手動トリガー: 「見込み客をシーケンスに読み込む」または「新規リードを登録する」 依存関係: Apollo クレジット、prospect-refresh の出力、HubSpot ポータル 21530819 が必要 出力: 見込み客ごとの登録確認、シーケンス割り当て、HubSpot 作成用のコンタクト ID </quick_start>

<success_criteria>

  • prospect-refresh の出力を読み取る(Gmail 下書き + HTML レポートからの新規見込み客 30 件)
  • HubSpot にクエリして、見込み客がすでにいずれかのシーケンスに登録されていないことを確認する
  • 電話番号が存在することを検証する(prospect-enrich または Apollo から)
  • ゴールデンルールを適用する(顧客、チャネル、デバイス所有者をスキップ、NEVER ATL)
  • ICP 業種別にターゲットの Apollo シーケンスを検索する
  • メールアカウント ID([email protected] またはプライマリ)を取得する
  • 見込み客をシーケンスに一括追加する(1 リクエストあたり最大 100 件)
  • 登録を確認する(Apollo の contact.sequence_id をチェック)
  • 存在しない場合は HubSpot コンタクトを作成する(HubSpot 同期用のコンタクト ID を取得)
  • レポート: 登録総数、シーケンス別の内訳、失敗があればその内容 </success_criteria>

ステージ 1: Prospect Refresh の出力を読み取る

入力ソース: prospect-refresh の HTML レポート + Gmail 下書き

HTML レポートから抽出:

  • 見込み客の名前、メール、役職、会社、業種、ATL/BTL 階層
  • Apollo の person_id、organization_id、電話番号
  • 会社の売上、従業員数、資金調達

検証:

  • メール形式が有効である
  • 電話番号が存在する(エンリッチメントから)
  • 業種が次のいずれかである: Higher Ed、Courts、Gov、Corporate AV、Healthcare、HoW、K-12

出力: 30 件(フィルタリングが適用された場合はそれ以下)の見込み客の構造化リスト


ステージ 2: HubSpot + Apollo に対する重複排除

ステップ A: HubSpot で既存のコンタクトを確認する

MCP ツール: search_crm_objects(HubSpot)

objectType: "contacts"
filterGroups: [{
  filters: [
    { propertyName: "email", operator: "EQ", value: prospect.email }
  ]
}]
properties: ["email", "phone", "hs_lead_status"]

判定ロジック:

  • コンタクトが存在する + 「Sequenced」または「Active Sequence」ステータスでない → コンタクトを再利用する(コンタクト ID を取得)
  • コンタクトが存在する + シーケンス内にいる → スキップする(再登録を避ける)
  • コンタクトが存在しない → ステージ 3 へ進む(新規作成)

ステップ B: Apollo で重複登録を確認する

MCP ツール: apollo_contacts_search

q_keywords: prospect.email
per_page: 10

判定ロジック:

  • Apollo コンタクトが存在する + すでにシーケンス内にいる → スキップする
  • Apollo コンタクトが存在する + シーケンスがない → 進む(再登録)
  • Apollo コンタクトが存在しない → ステージ 3 へ進む(新規作成)

重複排除の出力: 一意の見込み客のリスト(通常、重複排除後の入力の 60〜70%)


ステージ 3: ゴールデンルール + 電話番号の存在を検証する

ゴールデンルール(ハード除外):

次の場合にスキップ:

  • メールドメインが既知の顧客ドメインと一致する(crm_customers とクロスチェック)
  • HubSpot でコンタクトに「Channel Partner」タグが付いている
  • HubSpot でコンタクトに「Device Owner」タグが付いている
  • 会社が「Product Page Engagers」タグに含まれている
  • 役職が NEVER ATL リストに含まれている: Warehouse Manager、Network Manager、Systems Admin、AV Technician、Graphic Design Instructor、Program Administrator、Web Designer、Classroom Support、Lab Coordinator、Maintenance、Building Engineer、Multimedia Services Manager、Video Production Specialist、Streaming Crew

電話番号の検証:

  • 電話番号が null でないこと(Apollo エンリッチメントまたは prospect-enrich から)
  • 形式: +1-XXX-XXX-XXXX(米国)または +1-XXX-XXX-XXXX(カナダ)
  • 電話番号が欠落している場合 → 「Phone Missing」としてログに記録するが、登録はしない(Apollo コンプライアンスのために電話番号が必要)

出力: 検証済みの見込み客リスト(通常、電話番号検証後の 80〜90%)


ステージ S — 抑制ゲート

シーケンス登録の前に、抑制されたコンタクトを除外します:

  • bdr_suppression_until が設定されており、かつ bdr_suppression_until > TODAY の場合は 除外
  • bdr_suppression_until が設定されていない場合(一度も抑制されていない)は 含める
  • bdr_suppression_until < TODAY の場合(クーリング期間が経過)は 含める

HubSpot フィルター:propertyName: "bdr_suppression_until", operator: "NOT_HAS_PROPERTY" または operator: "LT", value: TODAY_ISO 参照:lead-suppression-spec(bdr_suppressed、bdr_suppression_reason、bdr_suppression_until)


ステージ 4:見込み客をターゲットシーケンスにマッピングする

MCP ツール: apollo_emailer_campaigns_search

業種 + テンプレートでシーケンスを検索します:

業種シーケンス名パターンターゲットシーケンス ID
高等教育BDR_HigherEd_OutboundX[名前で検索]
裁判所BDR_Courts_OutboundX[名前で検索]
政府BDR_Government_OutboundX[名前で検索]
法人向け AVBDR_CorporateAV_OutboundX[名前で検索]
ヘルスケアBDR_Healthcare_OutboundX[名前で検索]
礼拝施設BDR_HoW_OutboundX[名前で検索]
K-12BDR_K12_OutboundX[名前で検索]

クエリロジック:

per_page: 100
# Search returns: id, name, status, num_contacts, num_enrolled

シーケンス選択ルール:

  • prospect.vertical を sequence_name_pattern にマッピングします
  • 現在の登録数が最も少ないシーケンスを選択します(負荷分散)
  • フォールバック:業種固有のシーケンスが見つからない場合は、デフォルトの「BDR_Outbound_General」を使用します

出力: 見込み客 + sequence_id のマッピング


ステージ 5:Apollo コンタクトを作成する(新規の場合)

MCP ツール: apollo_contacts_search

新規の見込み客(ステージ 2 で見つからなかった場合)に対して:

per_page: 10
q_keywords: prospect.email

見つからない場合は、次の方法でコンタクトを作成します:

MCP ツール: apollo_contacts_create

email: prospect.email
first_name: prospect.first_name
last_name: prospect.last_name
title: prospect.title
organization_name: prospect.company
phone: prospect.phone (if available)
label_names: [prospect.vertical, "BDR_Prospect", "2026_Q1"]

出力: 新しい Apollo コンタクト ID(apollo_contact_id)


ステージ 6:メールアカウント ID を取得する

MCP ツール: apollo_email_accounts_index

リンクされたすべてのメールアカウントをクエリします:

# Returns: [{ id, email, status, daily_send_limit, ... }]

選択ロジック:

  • 「epiphan」または「tkipper」を含むメールを探します
  • 複数ある場合はプライマリメールアカウントを使用します
  • 見つからない場合 → エラー(メールアカウントなしでは続行できません)

出力: email_account_id(例:「6633baaece5fbd01c791d7ca」)


ステージ 7:シーケンスに一括追加する

MCP ツール: apollo_emailer_campaigns_add_contact_ids

各シーケンスに対して(sequence_id で見込み客をグループ化):

id: sequence_id (from Stage 4 mapping)
emailer_campaign_id: sequence_id (same as id)
send_email_from_email_account_id: email_account_id (from Stage 6)
contact_ids: [contact_id_1, contact_id_2, ..., contact_id_N] (max 100 per batch)
sequence_active_in_other_campaigns: true (allow multi-sequence enrollment)
sequence_unverified_email: false (require verified emails)
status: "active" (start sequence immediately)

一括処理ロジック:

  • ターゲットシーケンスで見込み客をグループ化します
  • API 呼び出しごとに最大 100 件のコンタクトを送信します
  • レート制限がかかった場合は再試行します

想定成功率: 95% 以上(失敗のほとんどはメール検証が原因です)


ステージ 8:登録を確認する

MCP ツール: apollo_contacts_search

登録された各コンタクトについて、登録を検証します:

q_keywords: contact.email
per_page: 1

レスポンスを確認します:

  • contact.sequences(ステージ 7 の sequence_id が含まれているはずです)
  • contact.last_sequence_enrollment_date(「today」であるはずです)
  • contact.status(「active」であるはずです)

登録をログに記録します:

✓ [email protected] → BDR_HigherEd_Outbound (sequence_id: abc123)
✗ [email protected] → Phone validation failed
✗ [email protected] → Already enrolled in BDR_Corporate_AV

ステージ 9:HubSpot コンタクトを作成する(同期)

新しく作成された Apollo コンタクトに対して、HubSpot の対応するコンタクトを作成します:

MCP ツール: manage_crm_objects(HubSpot createRequest)

objectType: "contacts"
properties: {
  firstname: prospect.first_name,
  lastname: prospect.last_name,
  email: prospect.email,
  phone: prospect.phone,
  jobtitle: prospect.title,
  company: prospect.company_name,
  lifecyclestage: "subscriber",
  hs_lead_status: "open",
  custom_apollo_contact_id: apollo_contact_id,
  custom_apollo_sequence: sequence_name,
  custom_atl_btl_tier: prospect.atl_btl_tier,
  custom_prospect_vertical: prospect.vertical,
  custom_prospect_icp_score: prospect.icp_score
}
associations: [
  {
    targetObjectId: company_id, # Find or create company in HubSpot
    targetObjectType: "companies"
  }
]

会社の関連付けロジック:

  • ドメインで HubSpot の会社を検索します
  • 見つかった場合:既存レコードの company_id を使用します
  • 見つからない場合:manage_crm_objects で会社を作成します

出力: 作成されたコンタクト ID(Gmail の下書きをリンクするため)


ステージ 10: 登録レポートの出力

形式: Markdown テーブル + サマリー統計

登録テーブル:

見込み客メール電話業種シーケンスApollo IDHubSpot IDステータス
Jane Smith[email protected]+1-555-0123高等教育BDR_HigherEd_1apollo-123hs-456✓ 登録済み
Bob Jones[email protected]null裁判所---✗ 電話番号なし
Carol White[email protected]+1-555-0124法人 AVBDR_CorporateAV_1apollo-789hs-012✓ 登録済み

サマリー統計:

  • 処理された見込み客の合計: X
  • 正常に登録された件数: Y (X の Y%)
  • 電話番号検証の失敗: Z
  • 重複/登録済み: W
  • HubSpot 同期済み: Y (新規コンタクト)
  • シーケンス別の内訳:
    • BDR_HigherEd_1: 5 件登録
    • BDR_Courts_1: 4 件登録
    • BDR_CorporateAV_1: 5 件登録
    • など

次のステップ: 見込み客は Apollo シーケンスに登録されました。Gmail の下書き (prospect-refresh から) は手動レビュー + 下書きからの送信ワークフローに備えて準備完了です。


成果サイドカーの出力

最終ステップとして、~/.claude/skill-analytics/last-outcome-sequence-load.json に書き込みます:

{"ts":"[UTC ISO8601]","skill":"sequence-load","version":"1.0.0","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"contacts_loaded":[n],"sequences_updated":[n],"duplicates_skipped":[n],"phone_validation_failures":[n]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

一部のステージが失敗しても結果が生成された場合は、ステータスに「partial」を使用してください。出力がまったく生成されなかった場合にのみ、「error」を使用してください。


スキルメタデータ

バージョン: 1.0 最終更新: 2026-03-19 作成者: Tim Kipper ステータス: 本番 統合: Apollo + HubSpot (ポータル 21530819) ティア: P1 (コア BDR 自動化) トリガー: スケジュール (月曜日 7:15 AM) + 手動 (「Load sequences」) 依存関係: prospect-refresh (6:30 AM) → sequence-load (7:15 AM) → morning-brief (7:30 AM)

コメント