mcpField
F
find-leads

find-leads

github.com/psquared-developmentマーケティング・グロース039 回インストール5 日前に更新
リポジトリ

find-leads について

find-leadsは、InboxMate向けにドイツ企業の見込み客を調査・選定し、条件を満たす候補をCRMに登録するスキルです。CHATBOT、INBOX、混合の区分を行い、ウェブサイトや公開連絡先、関連性、重複を確認します。

主な機能

  1. 01ドイツ企業の見込み客を検索
  2. 02CHATBOTとINBOXに分類
  3. 03ウェブサイトと公開連絡先を確認
  4. 04適格条件に沿って企業を選別
  5. 05CRMの重複確認と除外記録

活用シーン

  1. 01チャットボットのデモ対象企業探し
  2. 02メール自動化の見込み客探し
  3. 03連絡先と企業サイトの適格性確認
  4. 04登録済みや除外済み候補の再登録防止

インストール

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

$npx skills add https://github.com/psquared-development/psquared-skills --skill find-leads

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

詳細

InboxMate 向け新規リードの検索

パラメーター

/find-leads [N] [track] — track は省略可能です。

  • inbox — メールのみのモード:メール業務の比重が高い業種を検索します(下記の「メール量のシグナル」を参照。1 回の検索ごとに 2~3 業種を入れ替え、1 つの業界に固執しないでください)。条件を満たしたリードのメモにはすべて Track: INBOX を記載します。サイトにチャットボットがある場合も、ここでは好材料であり、対象から除外しません。このモードのデモは /inboxmate-inbox-demo で実行します。
  • chatbot — チャットボットのみのモード:従来の動作どおり、すでにチャットボットを導入している企業は対象から除外し、すべてのリードに Track: CHATBOT を記載します。
  • 省略 — 混合モード:リードごとにトラックを決定します(ステップ 2b を参照)。

アナウンス:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
リード検索を開始しました。
目標:[N] 件の新規リード · トラック:[INBOX / CHATBOT / mixed]
環境を確認しています...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

自律性 — 質問せずに実行

このスキルは、可能な限り自律的に実行してください。 ユーザーが質問に答えられるとは限りません。リードごとに確認を求めてはいけません。1 件ずつ処理してください。

  • 検索 → 検証 → 対象外にするか追加する → 次へ。途中で止まりません。
  • 確認結果が曖昧な場合(例:メールアドレスが個人用かどうか不明な場合)は、対象外にする方を選び、スキップリストに追加してください。質問してはいけません。
  • 重大なエラー(CRM トークンが無効、ネットワークが停止など)が発生した場合に限り、処理を停止してください。
  • 結果は処理の途中ではなく、最後に報告してください。

法的背景 — 最初に必ず読むこと

ドイツおよびオーストリアにおける B2B のコールドメールは、法的にグレーゾーンです。UWG §7(ドイツ)および TKG §174(オーストリア)を厳格に解釈すると、事前の同意が必要です。しかし、一般的な実務上の解釈では、一定の条件を満たせば、個別の B2B 営業メールを送ることが認められています(何千もの企業が日々実践しています)。

当社の方針: 当社は、各社向けに作成した真に価値のあるメールを送信します(その企業向けに構築した、実際に動作するデモ付き)。これはスパムではありません。ただし、各リードが営業対象として適格である理由を必ず記録しなければなりません。

すべてのリードは、以下の 8 項目すべてを満たさなければなりません。

7 つの適格性基準
#基準確認事項重要な理由
1ドイツ企業であることドメインが .de であること、Impressum にドイツ国内(DE)の住所が記載されていること、企業がドイツで登記されていることオーストリアの法律(TKG §174)はより厳格で、B2B のコールドメールに対する例外はありません。ドイツ(UWG)では、関連性のある個別の B2B 営業メールに対して、より実務的な許容度があります。
2B2B のみであること相手が個人ではなく企業であること消費者保護の規制はより厳格です
3客観的に関連性があること企業がチャットボットまたはメール自動化によって真に利益を得られること(顧客向けの事業で、問い合わせや予約が目に見えて多いこと)UWG では、提案が受信者の事業に関連していることが求められます
4メールアドレスが公開されていること公開ウェブサイト(お問い合わせページ、Impressum、チームページ)でメールアドレスが見つかること。LinkedIn からのスクレイピング、購入リスト、流出データベースから取得したものは不可データソースは GDPR に準拠している必要があります(企業自身が公開した情報であること)
5特定の担当者であること意思決定権を持つ氏名のある人物(創業者、CEO、マーケティング責任者、営業責任者)宛てのメールであること。info@、office@ などの一般アドレスは不可一括送信ではなく、個別のアプローチであることを示します
6真に価値のある提案であること相手のために特別に作成したもの(デモ)があること。一般的な売り込みは不可スパムと区別できます
7CRM に未登録であること企業が当社の CRM にすでに登録されていないこと重複した営業連絡を防ぎます
8ウェブサイトが有効であることウェブサイトが読み込めて、実際のコンテンツがあり、更新されていること(著作権表示が 2 年以上前のものではないこと)廃業した企業を除外します

8 項目のうち 1 つでも満たさない場合 → リードを対象外にしてください。skip-list.json に追加してください。CRM には追加しないでください。


スキップリスト — 継続的に管理される除外済みリード

現在の作業ディレクトリにある skip-list.json ファイルには、すでに調査して除外した企業が記録されています。企業を調査する前に、必ずこのリストを確認してください。 ドメインがリストにある場合は、すぐにスキップしてください。再度ウェブサイトを取得する必要はありません。

初回実行時: skip-list.json が存在しない場合は、[] を入力して作成してください。

形式:

[
  { "domain": "example.de", "reason": "has chatbot", "date": "2026-03-19" },
  { "domain": "other.at", "reason": "no personal email", "date": "2026-03-19" }
]

企業がいずれかのチェックに失敗した場合: ドメインと短い理由(最大5語)を skip-list.json に追加してください。

ウェブサイトを確認する前に: skip-list.json を読み込み、ドメインがすでに記載されているか確認してください。記載されている場合は、取得せずにスキップしてください。

短い理由の例:

  • "has chatbot, no email volume" — チャットウィジェットがあり、メール自動化の可能性がない(チャットボット単独では除外されなくなりました。INBOX トラックに振り分けられます)
  • "no personal email" — info@/office@ のみ見つかった
  • "dead website" — サイトがダウンしている、またはドメインパーキングされている
  • "outdated site" — 著作権表示が2年以上前
  • "too small" — 個人事業主で、実質的なウェブ上の存在感がない
  • "not B2B-facing" — 卸売または社内向けのみ
  • "already in CRM" — 重複
  • "no email on site" — 連絡先情報が見つからない
  • "generic only" — kontakt@/info@ のみ利用可能

STEP 0 — 環境を確認する

Read ツールを使って、現在の作業ディレクトリにある .env を読み込んでください。次のトークンを抽出してください。

変数用途使用目的
PSQUARED_CRM_TOKENTwenty CRM GraphQL API重複の確認、企業/人物/メモの作成

.env ファイルは作業ディレクトリのルート(claude-overlord-folder)にあります。存在しない場合は停止して、ユーザーに伝えてください。

skip-list.json を読み込んでください(存在しない場合は [] として作成してください)。

確認後: Environment OK. Skip list: [N] entries. Starting lead search...


ステップ 1 — 見込み客を検索する

WebSearch を使って、ウェブサイトに AI チャットボットを導入するとメリットがあるドイツとオーストリアの企業を検索します。

検索方法(以下をローテーションします。ドイツのみ、.de ドメイン):

  • "[業界] Unternehmen" site:.de
  • "[業界] GmbH" Kontakt Email site:.de
  • "Geschäftsführer" "[業界]" site:.de
  • "Immobilienmakler" OR "Versicherungsmakler" OR "Steuerberater" OR "Rechtsanwalt" site:.de
  • 業界別:不動産仲介会社、保険ブローカー、IT コンサルティング会社、マーケティング会社、SaaS 企業、E コマースショップ、歯科医院、法律事務所、会計事務所

InboxMate の有望なターゲット業界:

  • 不動産(Immobilien)— 問い合わせが多く、FAQ が多い
  • 保険/金融 — 顧客からの質問、見込み客の選別
  • IT サービス/MSP — サポート依頼、製品に関する質問
  • マーケティング/デジタルエージェンシー — 顧客とのコミュニケーション、オンボーディング
  • SaaS/ソフトウェア企業 — 顧客サポート、機能に関する質問
  • 専門サービス(法律、税務、コンサルティング)— 初回相談
  • E コマース — 商品に関する質問、注文サポート
  • 医療(歯科、理学療法)— 予約、FAQ

メール量のシグナル(有料メール製品の INBOX トラックに適合): InboxMate のメール製品は、問い合わせに回答するだけではありません。業務メールを分類、振り分け、返信し、アクションを実行します。業務が受信トレイを通じて行われているドイツの B2B 企業であれば、どの企業でもターゲットにできます。各ウェーブで 2〜3 業界を選んでローテーションし、特定の業界(例:Thermen のみ)に固執しないでください。

  • 注文/予約が多い業界:ホテル、イベント会場、ツアー運営会社、レジャー施設(Thermen/公園)、団体利用のあるレストラン、Werkstätten/Autohäuser(予約問い合わせ)
  • 業務メールが多い業界:卸売業者/販売代理店(メールでの注文)、不動産管理会社(入居者からの問い合わせ、業者との調整)、物流/運送会社(輸送に関する問い合わせ)、Handwerksbetriebe(見積もり依頼)、人材サービス会社(応募の受付)
  • 書類が多い業界:請求書の受領/仕入先とのやり取りが見て取れる企業 — InboxMate は請求書を検知して経理に振り分けます
  • 汎用的なシグナル:info@/office@ が主要な連絡窓口として表示されている、フォームの送信先がメールのみ、チケットシステムがない、ウェブサイトにギフト券/キャンセル/見積もり依頼の案内がある
  • デモ受信トレイ(/inboxmate-inbox-demo)で解決策を実証します。用意するスレッドは、実際の業務メールを反映させてください。適切であれば、請求書や応募書類が自動で振り分けられるものも含めます

対象外のターゲット(除外):

  • ウェブサイトのない、非常に小規模な個人事業主
  • 政府機関/公的機関
  • 非営利団体(大規模な場合を除く)
  • チャットボットの導入意義もメール量もない企業(例:重工業、農業)

ステップ 2 — 各見込み客を検証する

見つけた各見込み客候補について、以下を行います。

2a — まず除外リストを確認する

企業 URL からドメインを抽出します。skip-list.json に登録されているか確認します。登録されていた場合は、すぐに除外して次の見込み客に進みます。ウェブサイトを取得する必要はありません。

2b — ウェブサイトを確認する(WebFetch)

ウェブサイトにアクセスして、以下を確認します。

  • ウェブサイトが読み込まれ、稼働している
  • Impressum にドイツ国内の住所が記載されている(オーストリア/スイスではなく、ドイツ国内の都市)— これにより基準 #1 を満たすことを確認します
  • コンテンツが最新である(著作権表示の年、最新のブログ投稿、ニュースを確認)
  • 顧客向けの事業を行っている(一般公開されておらず、B2B 卸売のみの企業ではない)
  • すでにサイトにチャットボットがあるか確認します(HTML ソース内の Intercom、Drift、Zendesk、HubSpot、Tidio、Crisp、LiveChat などのチャットウィジェット)。チャットボットがあることを理由に除外する必要はなくなりました。チャットボットの有無でトラックを決めます。
    • チャットボットなし+顧客向けサイト → CHATBOT トラック(/inboxmate-demo)
    • チャットボットあり(またはチャットボットとの適合性が低い)+明確なメール量のシグナルあり → INBOX トラック(/inboxmate-inbox-demo)— 既存のチャットボットがあることは、自動化に投資している証拠でもあります
    • チャットボットあり+メール量のシグナルなし → "has chatbot, no email volume" を理由に除外します

**次の場合は除外します:**ウェブサイトが停止中、ドメインパーキング中、古い、またはドイツ企業ではない。理由を添えて skip-list.json に追加します。

2c — メールアドレス付きの連絡担当者を探す

次の場所で連絡先情報を探します。

  1. /kontakt または /contact ページ
  2. /impressum または /imprint ページ
  3. /team または /ueber-uns ページ
  4. ホームページのフッター

必要な情報:

  • 提案内容を理解できる最適な連絡担当者。技術系またはプロダクト系の担当者が望ましいです
  • 理想的な役職(優先順):CTO、Head of IT、Head of Product、Head of Digital、Technical Lead、技術に詳しい Marketing-Leiter
  • 代替の役職:Geschäftsführer、CEO、Head of Sales。ただし、技術系の連絡担当者が見つからない場合に限ります
  • メールアドレス。会社の公開ウェブサイト上で確認できる必要があります
  • 役職・肩書き

メールアドレスのルール:

  • 個人用のメールアドレスである必要があります([email protected] または [email protected])
  • 会社のウェブサイト上で見つかったものである必要があります(該当ページのスクリーンショットを撮る、またはページを記録してください)
  • 購入したリスト、LinkedIn のスクレイピング、その他の第三者ソースから取得してはいけません
  • 一般的なアドレス(info@、office@、hello@、kontakt@)は避けてください。適切な担当者に届かないことがよくあります
  • 個人用のメールアドレスがなく、かつサイト上で特定の連絡担当者の名前も確認できた場合に限り、最終手段として一般的なアドレスを使用できます
  • 使用可能なメールアドレスが見つからない場合 → 理由を記載して skip-list.json に追加し、次に進んでください
2d — 関連性を判断する

InboxMate がこの会社にとって有用である理由を、1~2 文で説明します。具体的な情報を挙げてください。

  • 「FAQ セクションがあり、自動化できるアクセス数の多い不動産物件掲載サイト」
  • 「サービス内容が多岐にわたる IT コンサルティング会社。チャットボットで見込み顧客を事前に選別できます」
  • 「複数のサービスページがあるマーケティングエージェンシー。訪問者が適切なサービスを見つけるための案内が必要です」
2e — CRM で重複を確認する

まずドメインで確認し(最も確実です)、次に会社名で検索します。

ステップ 1 — ドメインで検索:

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"{ companies(filter: { domainName: { primaryLinkUrl: { like: \\\"%[domain]%\\\" } } }, first: 1) { totalCount } }\"}"

ステップ 2 — ドメインで見つからない場合は、名前でも検索します(ドメインなしで登録された会社を検出します)。

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"{ companies(filter: { name: { like: \\\"%[Company Name]%\\\" } }, first: 1) { totalCount } }\"}"

いずれかのクエリで totalCount > 0 が返された場合 → スキップします。理由を "already in CRM" として skip-list.json に追加してください。


ステップ 3 — 条件を満たした見込み顧客を CRM に追加する

7 つの条件をすべて満たした見込み顧客ごとに、次の操作を行います。

3a — 会社を作成する

必ず outreachFor: [INBOX_MATE] を設定し、後続の InboxMate スキルがこの会社を取得できるようにします(デモ、キャンペーン、メールの下書きはこのフィールドで絞り込みます)。ここでは PERSONAL_ONLY または INBOX_MATE_MUSEUM を設定しないでください。PERSONAL_ONLY は Martin が手動で追加する会社用で、自動化による操作は厳禁です。INBOX_MATE_MUSEUM は厳選された美術館リスト(2026-05-08 にインポート)用で、このスキルの対象外です。

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"mutation { createCompany(data: { name: \\\"[Company Name]\\\", domainName: { primaryLinkUrl: \\\"https://[domain]\\\" }, outreachFor: [INBOX_MATE] }) { id name outreachFor } }\"}"
3b — 担当者(連絡先)を作成する
curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"mutation { createPerson(data: { name: { firstName: \\\"[First]\\\", lastName: \\\"[Last]\\\" }, emails: { primaryEmail: \\\"[email]\\\" }, companyId: \\\"[companyId]\\\", jobTitle: \\\"[Role/Title]\\\" }) { id } }\"}"
3c — 理由を記載したメモを作成する

2 段階の手順です。 まずタイトルだけでメモを作成し、その後、本文全体を追加して更新します。こうすることで、1 回のミューテーションで長い内容を扱う際の問題を回避できます。

ステップ 1 — メモを作成する:

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"mutation { createNote(data: { title: \\\"Lead Qualification: [Company Name] — [date]\\\" }) { id } }\"}"

ステップ 2 — メモを更新して内容全体を追加する:

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"mutation { updateNote(id: \\\"[noteId]\\\", data: { body: \\\"Email source: [URL where email was found]\\\\nContact: [Name], [Role]\\\\nRelevance: [1-2 sentence justification]\\\\n\\\\nTrack: [CHATBOT | INBOX]\\\\nDemo approach: [suggest best angle — CHATBOT e.g. 'FAQ automation for property listings'; INBOX e.g. 'Demo-Postfach: Gutschein-Anfragen, Gruppenbuchungen, Storno-Mails vorsortiert + beantwortet']\\\\n\\\\nChecks: German company ✓, B2B ✓, Relevant ✓, Public email ✓, Named contact ✓, Value offer ✓, Not in CRM ✓, Active website ✓\\\" }) { id } }\"}"

ステップ 3 — メモを会社に紐付ける:

curl -s -X POST https://crm.psquared.dev/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PSQUARED_CRM_TOKEN" \
  -d "{\"query\":\"mutation { createNoteTarget(data: { noteId: \\\"[noteId]\\\", companyId: \\\"[companyId]\\\" }) { id } }\"}"

「デモのアプローチ」フィールドには、ウェブサイトで確認した情報に基づき、InboxMate のデモに最適な切り口を提案します。例:

  • 不動産:「物件掲載向け FAQ ボット — 内見の申し込みや価格に関する問い合わせを自動化」
  • IT サービス:「見込み顧客の選別チャットボット — 訪問者が適切なサービスパッケージを見つけられるよう支援」
  • エージェンシー:「ポートフォリオナビゲーター — 見込み顧客を関連する導入事例やサービスに案内」
  • E コマース:「商品アドバイザー — 顧客が適切な商品を選べるよう支援し、サポートの負荷を軽減」

追加するたびに報告します: Added: [Company Name] — [contact email] — [1-line reason]


ステップ 4 — 報告する

報告:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Lead Finder の処理が完了しました。

追加:[N]
  - [Company A] — [email] — [reason]
  - [Company B] — [email] — [reason]

スキップ:[M]
  - [Company C] — CRM に登録済み
  - [Company D] — 個人用メールアドレスが見つからない
  - [Company E] — すでにチャットボットを導入済み

次のステップ:/create-demo-for-crm-lead を実行してデモを作成する
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

重要な注意事項

  • 量より質を重視します。 条件を十分に満たす見込み顧客5社は、判断が難しい会社50社よりも価値があります。
  • すべて記録します。 各会社に関するメモは、法的な証拠記録になります。
  • 公開されているメールアドレスのみを使用します。 ウェブサイトでメールアドレスが見つからない場合は、その見込み顧客を除外します。
  • 業界を入れ替えます。 不動産会社を10社続けて探すのではなく、業界を分散させます。
  • チャットボットの有無を確認します。 すでにIntercom/Drift/Zendesk/HubSpotのチャットを導入している場合は、すでに対応済みなので除外します。
  • ドイツ国内に限定します。 .deドメインのみを対象にします。オーストリアの法律(TKG)はより厳しく、B2Bの例外はありません。Impressumにドイツの住所が記載されていることを確認します。

コメント