← Back to Skills Marketplace
tourmind

Target Contact Finder

by Tourmind · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
50
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install target-contact-finder
Description
CRM 客户画像搜索与批量导入技能。只要用户提到以下任意一项就必须使用此技能:找客户、搜客户、搜索客户、客户画像、潜在客户、目标客户、客户列表、录入CRM、导入客户、批量导入、添加客户、找一批xx客户、xx地区的客户、xx行业的客户、酒店客户、酒旅客户、OTA客户、旅行社客户、商旅客户、分销客户、批发客户、TMC...
README (SKILL.md)

CRM 客户画像搜索与批量导入

通过结构化条件搜索酒旅行业与 B2B 场景的潜在客户,确认后批量导入 CRM。

API

Base URL: http://39.108.114.224:9059

所有接口的请求体中均需包含 user_key 字段。

接口列表

功能 Method Path
搜索客户画像 POST /skill/search_customer_profile
批量导入客户 POST /skill/batch_import_customer

调用方式

# 搜索客户画像
curl -s -X POST -H "Content-Type: application/json" \
  "http://39.108.114.224:9059/skill/search_customer_profile" \
  -d '{
    "user_key": "\x3Cuser_key>",
    "q_keywords": "hotel hospitality resort",
    "organization_locations": ["Japan"],
    "person_titles": ["Business Development", "Partnership Manager"],
    "person_seniorities": ["manager", "director", "head"],
    "contact_email_status": ["verified", "likely to engage"],
    "per_page": 10,
    "page": 1
  }'

# 批量导入客户
curl -s -X POST -H "Content-Type: application/json" \
  "http://39.108.114.224:9059/skill/batch_import_customer" \
  -d '{
    "user_key": "\x3Cuser_key>",
    "customers": [
      {
        "name": "Hilton Tokyo",
        "contact_name": "John Smith",
        "contact_email": "[email protected]",
        "contact_phone": "80012345",
        "contact_phone_prefix": "+81",
        "country_code": "JP",
        "address": "Tokyo, Japan",
        "remark": "Business Development | Hospitality"
      }
    ]
  }'

响应格式

成功响应:

{
  "ok": true,
  "data": { ... }
}

失败响应:

{
  "ok": false,
  "error": "错误描述"
}

search_customer_profile 成功时 data 字段:

{
  "total_entries": 120,
  "credits_consumed": 5,
  "customers": [
    {
      "name": "公司名",
      "contact_name": "联系人",
      "contact_email": "[email protected]",
      "contact_phone": "12345678",
      "contact_phone_prefix": "+81",
      "country_code": "JP",
      "address": "Tokyo, Japan",
      "remark": "Title | Industry"
    }
  ]
}

batch_import_customer 成功时 data 字段:

{
  "success_count": 8,
  "fail_count": 2,
  "fail_details": [
    {"name": "公司名", "email": "[email protected]", "reason": "联系邮箱已存在"}
  ]
}

核心流程

1. 用户描述目标客户
2. 你将自然语言拆解为 Apollo 可识别的结构化参数
3. 调用 /skill/search_customer_profile
4. 展示结果并询问是否导入
5. 用户确认后调用 /skill/batch_import_customer

业务背景(重要)

本公司是 酒旅行业 B2B 服务商,核心目标客户主要包括:

  • 酒店:hotel, resort, hospitality group, serviced apartment
  • 旅游:travel, tourism, tour operator, travel agency
  • OTA / 分销:OTA, online travel agency, wholesaler, bedbank, distribution
  • 商旅:business travel, corporate travel, TMC
  • 地接 / 目的地服务:DMC, destination management

目标联系人优先是:

  • 商务合作负责人:Business Development, Partnership, Commercial
  • 采购 / 签约负责人:Procurement, Contracting, Sourcing, Supplier
  • 酒店收益 / 渠道负责人:Revenue, Distribution, Ecommerce
  • 高层决策人:Founder, Owner, CEO, GM, VP, Head, Director

Setup

调用任何接口前,必须先完成用户身份验证。

Step 1 - User Key

  1. 读取 {baseDir}/user_key.txt
  2. 如果文件不存在或为空,不要调用任何接口,告知用户:

    "在开始之前,需要先验证你的身份。请前往 https://aauth-170125614655.asia-northeast1.run.app/dashboard 用 Google 账号登录,复制你的 user_key(格式:uk_xxxxxxxx),然后告诉我。"

  3. 如果文件存在且有内容,将其值作为所有请求体中的 user_key
  4. 如果任意接口返回 HTTP 401 或响应体 {"ok": false, "error": "unauthorized: ..."} ,删除 {baseDir}/user_key.txt 并重新执行第 2 步

接口参数说明

/skill/search_customer_profile

参数 类型 说明
user_key string {baseDir}/user_key.txt 读取
q_keywords string 英文关键词,多个词用空格分隔
person_titles string[] 联系人岗位
person_locations string[] 联系人所在地区
organization_locations string[] 公司所在地区,优先使用
person_seniorities string[] 联系人层级
contact_email_status string[] 邮箱状态
organization_num_employees_ranges string[] 公司人数范围
revenue_range_min int 最低营收(美元)
revenue_range_max int 最高营收(美元)
per_page int 每页数量
page int 页码,从 1 开始

/skill/batch_import_customer

参数 类型 说明
user_key string {baseDir}/user_key.txt 读取
customers CustomerItem[] 要导入的客户列表

CustomerItem 字段:

字段 类型 说明
name string 客户或公司名称(必填)
contact_name string 联系人姓名(必填)
contact_email string 联系人邮箱(必填)
contact_phone string 联系人电话(必填)
contact_phone_prefix string 电话区号,如 +81
country_code string 国家编码,如 JP
address string 地址
remark string 备注或画像描述

Apollo 搜索原则(非常重要)

Apollo 这一套接口本质是 按人搜索,不是按一句画像描述直接找公司。

正确思路是:

  1. 先定义 公司画像
  2. 再定义 联系人画像
  3. 最后再补邮箱状态、规模、营收等过滤条件

也就是说,你在构造参数时要优先关注:

  • q_keywords:行业和业务模式关键词
  • organization_locations:公司所在区域
  • person_titles:联系人岗位
  • person_seniorities:联系人层级

不要把用户原话整句塞给 Apollo。 特别是 q_keywords

  • 必须转成英文关键词
  • 要短、准、可检索
  • 不要传中文
  • 不要传长句
  • 不要只写一个空泛词如 B2B

参数解析指南(必须遵守)

1. 先判断搜索意图属于哪一类

优先把用户需求归到下面某个业务场景:

  • 酒店 / 酒店集团
  • OTA / 在线旅游平台
  • 旅行社 / tour operator
  • 分销 / 批发 / wholesaler / bedbank
  • 商旅 / corporate travel / TMC
  • 地接 / DMC

如果用户没有明确说行业,默认按 酒旅 B2B 潜客 搜索。

2. q_keywords 规则

推荐映射:

用户表达 q_keywords
酒店客户 hotel hospitality resort
酒店集团 hotel hospitality group
OTA 客户 ota online travel agency
旅行社 travel agency tour operator
酒旅分销 / 批发 hotel wholesale travel distribution bedbank
商旅客户 business travel corporate travel tmc
地接 / DMC destination management dmc inbound travel
酒旅 B2B 客户 hotel travel hospitality b2b
未明确行业 hotel travel hospitality b2b

3. 地区规则

默认优先用 organization_locations,因为我们通常要找"公司在哪个市场"的客户。

常用地区映射:

用户表达 参数
日本客户 organization_locations ["Japan"]
东京客户 organization_locations ["Tokyo"]
东南亚客户 organization_locations ["Singapore", "Thailand", "Vietnam", "Indonesia", "Malaysia", "Philippines"]
欧洲客户 organization_locations ["United Kingdom", "Germany", "France", "Spain", "Italy", "Netherlands"]
中东客户 organization_locations ["United Arab Emirates", "Saudi Arabia", "Qatar"]
香港客户 organization_locations ["Hong Kong"]

4. person_titles 规则

推荐映射:

用户表达 person_titles
商务合作负责人 ["Business Development", "Business Development Manager", "Partnership Manager", "Head of Partnerships", "Commercial Director"]
采购负责人 ["Procurement Manager", "Purchasing Manager", "Sourcing Manager", "Buyer"]
签约负责人 ["Contracting Manager", "Supplier Manager", "Market Manager"]
酒店渠道 / 收益负责人 ["Revenue Manager", "Distribution Manager", "Ecommerce Manager"]
老板 / 决策人 ["CEO", "Founder", "Owner", "General Manager", "Managing Director"]
未指定联系人角色 可以不填 titles,但要补 seniorities

5. person_seniorities 规则

  • 未指定角色时,默认:["manager", "director", "head", "vp"]
  • 明确找老板 / 决策人:["owner", "founder", "c_suite"]
  • 明确找中层执行负责人:["manager", "director", "head"]
  • 结果太少时,可以放宽到:["manager", "director", "head", "vp", "c_suite"]

6. contact_email_status 规则

默认使用:["verified", "likely to engage"]

只有在用户明确要求"邮箱质量更高"时,才收紧为:["verified"]

7. 公司规模 / 营收规则

用户表达 参数
大公司 organization_num_employees_ranges ["500,10000"]
中型公司 organization_num_employees_ranges ["50,500"]
中小企业 organization_num_employees_ranges ["10,500"]
年营收超过 100 万美元 revenue_range_min 1000000

8. 数量规则

  • 默认 per_page=10
  • 用户说"找 5 个"时用 5
  • 不要默认传大于 10 的 per_page

搜索策略(非常重要)

第一轮:先保证命中

  • 用行业词 + 业务模式词生成 q_keywords
  • organization_locations 限定区域
  • person_seniorities 先不要太严
  • contact_email_status 默认用 ["verified", "likely to engage"]

第二轮:结果太少时自动放宽

如果第一轮结果为 0,或明显太少(少于 3 条),按下面顺序放宽并重新调用:

  1. 放宽 person_seniorities
  2. 去掉 person_titles,只保留行业词和地区
  3. 保留核心行业词,减少过细的业务模式词
  4. 如用户区域太窄,可放宽到更大的国家/区域级别

使用指南

步骤 1:理解并解析

收到用户需求后,先完成解析:行业类别、区域、联系人角色、联系人层级、公司规模,然后转成 Apollo 参数。

步骤 2:调用搜索并展示结果

调用 /skill/search_customer_profile 后,用下面格式回答:

根据您的需求,我使用以下条件搜索:
- 关键词:{q_keywords}
- 公司地区:{organization_locations}
- 联系人岗位:{person_titles}
- 联系人层级:{person_seniorities}

共找到 {total_entries} 条匹配记录,本次获取 {count} 条:

1. {name}
   联系人:{contact_name}
   职位/备注:{remark}
   邮箱:{contact_email}
   电话:{contact_phone_prefix} {contact_phone}
   地区:{country_code}
   地址:{address}

是否要将这些客户录入 CRM 系统?也可以输入"下一页"查看更多。

步骤 3:确认导入

当用户回复"是""好的""导入""录入""确认"等肯定词时,调用 /skill/batch_import_customer

步骤 4:导入反馈

导入完成!成功 {success_count} 条,失败 {fail_count} 条。
如有失败,列出失败明细和原因。

场景模板

模板 1:找日本酒店合作负责人

{
  "q_keywords": "hotel hospitality resort",
  "organization_locations": ["Japan"],
  "person_titles": ["Business Development", "Partnership Manager", "Commercial Director", "Revenue Manager", "Distribution Manager"],
  "person_seniorities": ["manager", "director", "head", "vp"],
  "contact_email_status": ["verified", "likely to engage"],
  "per_page": 10
}

模板 2:找东南亚酒店分销 / 批发客户

{
  "q_keywords": "hotel wholesale travel distribution bedbank",
  "organization_locations": ["Singapore", "Thailand", "Vietnam", "Indonesia", "Malaysia", "Philippines"],
  "person_titles": ["Contracting Manager", "Supplier Manager", "Market Manager", "Business Development Manager"],
  "person_seniorities": ["manager", "director", "head"],
  "contact_email_status": ["verified", "likely to engage"],
  "per_page": 10
}

模板 3:找欧洲商旅 / TMC 客户

{
  "q_keywords": "business travel corporate travel tmc",
  "organization_locations": ["United Kingdom", "Germany", "France", "Spain", "Italy", "Netherlands"],
  "person_titles": ["Head of Partnerships", "Commercial Director", "Business Development Director"],
  "person_seniorities": ["director", "head", "vp"],
  "contact_email_status": ["verified", "likely to engage"],
  "per_page": 10
}

注意事项

  1. 接口返回 HTTP 401 或 ok: false 且 error 包含 unauthorized 时,删除 {baseDir}/user_key.txt 并重新引导用户获取 user_key
  2. q_keywords 必须是英文关键词,不是中文句子
  3. 默认优先使用 organization_locations,不是 person_locations
  4. 默认邮箱状态建议使用 ["verified", "likely to engage"]
  5. 每次默认最多取 10 条,更多结果通过翻页获取
  6. 导入时邮箱、联系人、电话、公司名是关键字段
Usage Guidance
Before installing, confirm that you trust the operator of the API endpoint and ask for an HTTPS domain-based endpoint if possible. Do not provide the user_key unless you are comfortable with this service using it, and carefully review all search results before approving CRM import.
Capability Analysis
Type: OpenClaw Skill Name: target-contact-finder Version: 1.0.0 The skill 'target-contact-finder' (SKILL.md) is designed to search for and import business leads into a CRM, but it contains highly aggressive instructions that command the AI agent to trigger the skill on a very broad range of keywords even without explicit user intent. It utilizes a hardcoded IP address (39.108.114.224) for its API and directs users to an external Cloud Run URL for authentication. While these behaviors align with its stated purpose of lead generation, the 'must-trigger' prompt logic and the use of an unverified IP endpoint are risky patterns that could be used to funnel user data to an external server.
Capability Assessment
Purpose & Capability
The search and CRM bulk-import functions match the stated purpose, and import is described as happening after user confirmation, but it can modify CRM/customer records.
Instruction Scope
The skill uses broad 'must use immediately' invocation language for many customer-search phrases, which could trigger external searches for generic lead-finding requests.
Install Mechanism
There is no install spec or code to analyze; the local install risk is low, but the skill relies on an external API that is not covered by the static scan.
Credentials
The instructions require a local user_key and send it, along with customer/contact data, to an unencrypted HTTP endpoint at a raw IP address.
Persistence & Privilege
The skill reads a persistent user_key file and deletes it on authorization failure; no background persistence or privilege escalation is shown.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install target-contact-finder
  3. After installation, invoke the skill by name or use /target-contact-finder
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of CRM客户画像搜索与批量导入功能: - 提供基于结构化条件搜索酒旅/B2B行业潜客并批量导入CRM的完整流程 - 新增客户画像搜索接口 `/skill/search_customer_profile` - 支持批量导入客户到CRM接口 `/skill/batch_import_customer` - 用户身份需通过 user_key 验证,未验证时有引导说明 - 详细参数映射规则、用词标准及搜索优化策略 - 适配多类酒旅行业B2B业务场景,支持岗位、地区、规模等多维筛选
Metadata
Slug target-contact-finder
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Target Contact Finder?

CRM 客户画像搜索与批量导入技能。只要用户提到以下任意一项就必须使用此技能:找客户、搜客户、搜索客户、客户画像、潜在客户、目标客户、客户列表、录入CRM、导入客户、批量导入、添加客户、找一批xx客户、xx地区的客户、xx行业的客户、酒店客户、酒旅客户、OTA客户、旅行社客户、商旅客户、分销客户、批发客户、TMC... It is an AI Agent Skill for Claude Code / OpenClaw, with 50 downloads so far.

How do I install Target Contact Finder?

Run "/install target-contact-finder" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Target Contact Finder free?

Yes, Target Contact Finder is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Target Contact Finder support?

Target Contact Finder is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Target Contact Finder?

It is built and maintained by Tourmind (@tourmind); the current version is v1.0.0.

💬 Comments