• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLKnowledge Workproductivity

follow-up

プラグイン
HubSpot Sales
ソース
GitHub で見る ↗
説明

HubSpotの取引情報(営業案件に関する詳細)、最近のメモ、メール履歴に基づいて、特定の連絡先に向けた個別対応のフォローアップメールまたは営業メールを作成します。HubSpotを開いてメール本文を事前入力した状態で表示するため、営業担当者は内容を確認してから送信できます。送信したメールは自動で記録されます。取引に関連している場合は、次のステップや取引ステージも適切に更新します。 **次のような場合に使用:** ユーザーが特定の連絡先に向けた外部への連絡を書きたい、または送りたいと言っている場合。具体的には以下のような指示に対応します: 「X さんにフォローアップする」「X さんへのメールを作成する」「X さんに何か送る」「X さんに連絡する」「X さんに確認する」「X さんにメッセージを送る」「[取引]のフォローアップメールを作成する」「X さんに返信する」など 連絡先や取引に関連した外部への連絡作成依頼であれば、どのような表現であってもこのスキルを使用してください。

原文を表示

Drafts a personalised follow-up or outreach email for a named contact, grounded in HubSpot deal context, recent notes, and email history. Opens HubSpot with the email pre-populated so the rep can review and send with full tracking. If deal-related, updates the next step or deal stage as applicable. ALWAYS use this skill when the user wants to write or send outbound communication to a specific contact — "follow up with X", "draft an email to X", "send something to X", "check in with X", "reach out to X", "ping X", "touch base with X", "I need to reply to X", "draft a follow-up for [deal]", "write to X". Trigger on any request to compose outbound communication tied to a contact or deal.

ユースケース
  • 特定の連絡先へのフォローアップメールを作成する
  • 営業メールを作成して送信する
  • 取引に関連したメールを作成する
  • 顧客への確認や返信メールを作成する
  • メール送信後に取引情報を更新する
本文(日本語訳)

フォローアップメール

以下のツール名 はHubSpot MCPコネクタ(外部連携の仕組み)の標準的な名称です。ツールが見当たらない場合は、スキルの更新やHubSpoitツールセットの代替オプションがないか確認してください。ツールは変更される可能性があります

フェーズ1 — 連絡先の特定

以下を並行実行:

  • get_organization_details → portalId, uiDomain を保存
  • search_crm_objects: メッセージから名前を検索、連絡先に対して姓名・メールアドレス・職種・リード状態・ライフサイクルステージ・関連会社ID・最終接触日時・最終メール送信日時を取得

複数件該当 → 曖昧性排除リスト(名前・職種・会社名)を提示し、確認を待つ。

以下を保存: contactId、contactEmail、firstName、companyId。関連するディール(営業案件)を関連付けで絞り込んで検索し、dealId、dealStage(ステージ)、dealPipeline(パイプライン)、dealName、currentNextStep を保存。


フェーズ2 — 情報収集(並行処理)

A. CRMコンテキスト

get_crm_objects で連絡先を取得、関連ディール・メモ・タスクを含める。以下を抽出:

  • 進行中のディール: ステージ、パイプライン、金額、クローズ日、ディール名、次のステップ
  • 最近のメモ: タイムスタンプ降順で最新5件
  • 進行中のタスク: ステータスが「未開始」または「進行中」のもの

B. メール履歴(メール連携が利用可能な場合)

連絡先のメール履歴を最新3~5件検索。最後の返信方向・トーン・未回答の質問・件名コンテキストを確認。


フェーズ3 — メールの目的を決定

以下を順番に確認し、目的が明確になった段階で進める:

1. CRM履歴から推定(最も信頼度が高い情報源)

最近のメモ・通話ログ・メール履歴全体を見て、明示的な約束・未解決の質問・次のステップとして述べられた内容を探す。例: 「来週価格表を送ります」「セキュリティレビューを求められた」「法務署名待ち」。解決すべき具体的なアクションや未回答の質問があれば、それが目的。

**2. ディールステージから推定(履歴に明確な信号がない場合)

パイプラインのメタデータを取得し、該当ディールのパイプラインに絞り込む:

  • get_properties: ディール、propertyNames: ["dealstage", "pipeline"] — すべてのパイプライン全体のステージ選択肢とパイプラインのメタデータを返す
  • dealstage オプションを dealPipeline に属するもの(パイプラインIDで照合)のみに絞り込む。ポータルは異なるステージセットを持つ複数のパイプラインを持つことが多いため、他のパイプラインのステージは使用しない
  • 絞り込んだステージリストを displayOrder でソートし、現在のステージの位置と次のステージのラベルを特定
  • 次のステージラベルを目的の信号として使用(例: 次のステージが「契約書送付済」→ 目的は契約書を送ること)
  • ディールの hs_next_step も参照(値がある場合)
  • 固定マッピングを使わない。実際のステージラベルとパイプライン内の位置から理由付けする

**3. ユーザーに確認(目的がまだ不明確な場合)

CRM履歴もディールステージも明確な目的を示さない場合、ドラフト作成前に質問:

「このメールの目的は何ですか? [firstName]さんにどうしてほしいのですか?」

回答を待ってから進める。


フェーズ3b — メールのドラフト作成

  • 冒頭: 「フォローアップしたかったのですが」「念のため確認です」「お疲れさまです」で始めない。最近のメール件名・メモ・会社に関する情報・事前の約束など、具体的な参照で開始
  • トーン: 連絡先の最新メールの形式度(カジュアル~フォーマル)に合わせる。メール履歴がない場合は、プロフェッショナルながらカジュアルをデフォルトに — 明確で直接的だが堅くはない
  • 構成: 3~5つの短い段落、最後に1つの明確な依頼、フェーズ3で決めた目的に直結

フィールド: to(名前+メールアドレス)、subject(具体的で文脈を反映 — 例:「Following up」ではなく「Re: エンタープライズ試験パイロットの範囲」)、body(営業担当者の名前で署名 — get_user_details で取得)。


フェーズ4 — ドラフト表示と配信オプション提供

show_widget でドラフトをインラインで表示 — HubSpotスタイルのメール作成UIを持つ白いカード。件名と本文は編集可能フィールドとしてレンダリング:

  • 件名: 単一行テキスト入力、ドラフト件名で事前入力。ユーザーはクリックして直接編集可能
  • 本文: 複数行テキストエリア、ドラフト本文で事前入力。ユーザーはクリックして直接編集可能

どちらかのフィールドが編集されたら、ディープリンクURL(詳細リンク)をリアルタイムで更新し、HubSpotで開く ボタンが常に現在の件名と本文を反映するようにする。

編集可能フィールドの下に以下をレンダリング:

  1. HubSpotで開く(主要なCTA(呼びかけ)ボタン) — 現在の件名と本文を事前入力したディープリンク(フェーズ5のURL構成参照)

CTA下に、小さく控えめなテキストで以下を表示:

「HubSpotから送信すると、メール開封とリンククリックを追跡できます。」

ウィジェットCSSガイドライン

フォントサイズ: 作成ウィジェットはUIクロム要素(画面枠部分)であり、本文ではないため、チャットインターフェースの周辺と一貫性を持つようコンパクトに保つ:

  • フィールドラベル(To、Subject): 12px、color: var(--text-secondary)
  • 件名入力と本文テキストエリア: 12px
  • 受信者行: 12px
  • ボタン下のマイクロコピー: 11px、color: var(--text-muted)

CTAボタン: HubSpotのMCPアプリデザインシステムに従い、プライマリブリッジボタンはソリッドブラック。CSSの変数ではなくハードコードされた16進数値を使用し、ライトモード・ダークモード両方で確実に黒くする。アクセント色用のCSS変数(例: var(--fill-accent))はホストテーマのブルーに解決されるため、使用しないこと。

background: #000;
color: #fff;
border: none;
border-radius: 6px;
padding: 8px 16px;
font-size: 13px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 6px;

フェーズ5 — HubSpotディープリンクの構築

HubSpotが連絡先レコードを開き、メール作成パネルが事前入力された状態で表示されるようにURLを構築。

URL形式:

https://[uiDomain]/contacts/[portalId]/contact/[contactId]?interaction=email&initialEmailSubject=[encoded_subject]&initialEmailBody=[encoded_body]

エンコーディングルール:

  • メール本文をHTMLに変換: 各段落を <p>...</p> で囲む。改行は <br> に
  • 件名と本文を標準的なパーセントエンコーディング(encodeURIComponent と同等)でエンコード: スペースは %20、その他の特殊文字もパーセントエンコード(例: < → %3C、> → %3E、, → %2C、@ → %40)。フォームスタイルのエンコーディングは使用しない — スペースの代わりに + は使用しない
  • 件名例: 「お疲れさまです、ブライアン」 → %E3%81%8A%E7%96%B2%E3%82%8C%E3%81%95%E3%81%BE%E3%81%A7%E3%81%99%E3%80%81%E3%83%96%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3 (日本語の場合)
  • 本文冒頭例: <p>Hi Brian,</p> → %3Cp%3EHi%20Brian%2C%3C%2Fp%3E

明確にラベル付けされたボタンとして提示: 「HubSpotで開く →」

メモを保存しない。ドラフト本文をHubSpotに保存しない。


フェーズ6 — ディール更新(ディールが存在する場合)

ユーザーがHubSpotでメールを開いた後、ディールフィールドを更新すべきか確認。文脈に基づいて先制的に実施 — 曖昧な場合のみ質問。

次のステップ/タスク: メールが明確な次のアクションを示唆している場合(例: 「木曜日に提案書を送ります」「週末までに連絡ください」)、以下を更新または作成:

  • manage_crm_objects でディールの hs_next_step を更新
  • フォローアップタスクを作成: manage_crm_objects でタスク作成リクエスト — hs_task_subject: 「[firstName]さんに返信がない場合はフォローアップ」、hs_task_type: EMAIL、hs_task_status: NOT_STARTED、hs_timestamp: [期限日]、associations: 連絡先 + ディール

ディールステージ: メールがステージ変更を示唆している場合(例: 提案書送付 → 購入可能、契約書送付 → 契約書送付済)、更新前に質問:

「このメールはディールを [ステージ名] に移すことを示唆しているようです — その更新も実行しますか?」

ディールステージ変更の実行前に確認。

ディールがない: このフェーズをスキップ。デフォルトのメール目的: 関係を前に進める。


エラーハンドリング

  • 連絡先が見つからない: 明確にするよう質問。contactId を確認なしに進まない
  • 複数件該当: 曖昧性排除リストを提示。確認を待つ
  • ディールがない: フェーズ6をスキップ。デフォルトメール目的: 関係を前に進める
  • メール履歴がない: CRMメモのみに基づいてドラフト作成
原文(English)を表示

Follow Up

Tool names below are expected names for the HubSpot MCP connector. If a named tool isn't available, check for updates to the skill and/or alternates in the HubSpot toolset as available tools may change

Phase 1 — Identify the contact

Run simultaneously:

  • get_organization_details → store portalId, uiDomain
  • search_crm_objects: objectType: contacts, query: name from message, properties: firstname, lastname, email, jobtitle, hs_lead_status, lifecyclestage, associatedcompanyid, notes_last_contacted, hs_email_last_send_date

Multiple matches → disambiguation list (name, title, company), wait for confirmation.

Store: contactId, contactEmail, firstName, companyId. Search deals filtered by associations.contact = contactId — store dealId, dealStage, dealPipeline, dealName, currentNextStep.


Phase 2 — Research (parallel)

A. CRM context

get_crm_objects contacts, objectId: contactId, associations: deals, notes, tasks. Retrieve:

  • Open deal: stage, pipeline, amount, close date, deal name, hs_next_step
  • Recent notes: last 5 by hs_timestamp descending
  • Open tasks: status NOT_STARTED or IN_PROGRESS

B. Email history (if email connector available)

Search threads for contact's email, last 3–5. Note: last reply direction, tone, unanswered questions, subject context.


Phase 3 — Determine email goal

Work through these in order, stopping as soon as the goal is clear:

1. Infer from CRM history (highest signal) Look across recent notes, call logs, and email threads for explicit commitments, open questions, or stated next steps — e.g. "I'll send pricing next week", "They asked for a security review", "Waiting on legal sign-off". If a clear outstanding action or unanswered question exists, that is the goal.

2. Infer from deal stage (if no clear signal from history) Fetch pipeline metadata and filter to the deal's specific pipeline:

  • get_properties: objectType: deals, propertyNames: ["dealstage", "pipeline"] — returns all stage options across all pipelines, plus pipeline metadata.
  • Filter dealstage options to only those belonging to dealPipeline (matched by pipeline ID). Portals commonly have multiple pipelines with different stage sets — do not use stages from other pipelines.
  • Within the filtered stage list, sort by displayOrder and identify the current stage's position and the label of the next stage.
  • Use the next stage label as the goal signal (e.g. next stage is "Contract Sent" → goal is to get the contract out).
  • Also consider hs_next_step on the deal if populated.
  • Do not use a fixed mapping. Reason from the actual stage labels and position in the pipeline.

3. Ask the user (if goal is still unclear) If neither CRM history nor deal stage gives a confident goal, ask before drafting:

"What's the goal of this email — what do you want [firstName] to do?"

Wait for the answer before proceeding.


Phase 3b — Draft the email

  • Opening: Never open with "I wanted to follow up", "Just checking in", or "Hope you're well." Open with a specific reference — recent email subject, note, company signal, or prior commitment.
  • Tone: Match formality of contact's most recent emails. If no email history, default to professional-casual — clear and direct without being stiff.
  • Structure: 3–5 short paragraphs, one clear ask at the end, directly tied to the goal determined in Phase 3.

Fields: to (name + email), subject (specific and contextual — e.g. "Re: Enterprise pilot scope" not "Following up"), body (signed with rep's name via get_user_details).


Phase 4 — Show draft and offer delivery

Show the draft inline via show_widget — white card with a HubSpot-style email compose UI. The subject and body must be rendered as editable fields:

  • Subject: single-line text input, pre-filled with the drafted subject. User can click and edit directly.
  • Body: multi-line text area, pre-filled with the drafted body. User can click and edit directly.

When either field is edited, update the deep link URL in real time so the Open in HubSpot button always reflects the current subject and body.

Below the editable fields render:

  1. Open in HubSpot (primary CTA button) — deep link with the current subject and body pre-populated (see Phase 5 for URL construction)

Below the CTA, show this microcopy in small muted text:

"Sending via HubSpot lets you track email opens and link clicks."

Widget CSS guidelines

Font sizes: The compose widget is a UI chrome element, not body text — keep it compact so it feels consistent with the surrounding chat interface:

  • Field labels (To, Subject): 12px, color: var(--text-secondary)
  • Subject input and body textarea: 12px
  • Recipient line: 12px
  • Microcopy below the button: 11px, color: var(--text-muted)

CTA button: Per HubSpot's MCP Apps design system, the primary bridge button is solid black. Use hardcoded hex values — not CSS variables — so the button is reliably black in both light and dark mode. CSS variable-based accent colors (e.g. var(--fill-accent)) resolve to the host theme's blue and must not be used here.

background: #000;
color: #fff;
border: none;
border-radius: 6px;
padding: 8px 16px;
font-size: 13px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 6px;

Phase 5 — Build the HubSpot deep link

Construct the URL so that HubSpot opens the contact record with the email compose panel pre-filled.

URL format:

https://[uiDomain]/contacts/[portalId]/contact/[contactId]?interaction=email&initialEmailSubject=[encoded_subject]&initialEmailBody=[encoded_body]

Encoding rules:

  • Convert the email body to HTML: wrap each paragraph in <p>...</p>, line breaks become <br>.
  • Encode both subject and body using standard percent-encoding (equivalent to encodeURIComponent): spaces become %20, all other special characters percent-encoded (e.g. < → %3C, > → %3E, , → %2C, @ → %40). Do not use form-style encoding — + must not be used to represent spaces.
  • Example subject: "Thanks for your time, Brian" → Thanks%20for%20your%20time%2C%20Brian
  • Example body opening: <p>Hi Brian,</p> → %3Cp%3EHi%20Brian%2C%3C%2Fp%3E

Present as a clearly labelled button: "Open in HubSpot →"

Do not save a note. Do not store the draft body in HubSpot.


Phase 6 — Deal updates (if deal exists)

After the user opens the email in HubSpot, check whether deal fields should be updated. Do this proactively based on context — don't ask unless it's ambiguous.

Next step / task: If the email implies a clear next action (e.g. "I'll send the proposal Thursday", "Let me know by EOW"), update or create accordingly:

  • Update hs_next_step on the deal via manage_crm_objects deals, updateRequest
  • Create a follow-up task: manage_crm_objects tasks, createRequest — hs_task_subject: "Follow up with [firstName] if no reply", hs_task_type: EMAIL, hs_task_status: NOT_STARTED, hs_timestamp: [due date], associations: contact + deal

Deal stage: If the email signals a stage change (e.g. sending a proposal → qualifiedtobuy, contract sent → contractsent), ask before updating:

"This looks like it moves the deal to [stage] — want me to update that too?"

Confirm before executing any deal stage change.

No deal: Skip this phase entirely.


Error handling

  • Contact not found: Ask to clarify. Do not proceed without a confirmed contactId.
  • Multiple matches: Disambiguation list. Wait for confirmation.
  • No deal: Skip Phase 6. Default email goal: move the relationship forward.
  • No email history: Base draft on CRM notes only.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。