UniProfit Trade Search
Use this skill to query UniProfit trade data from the OpenClaw runtime.
Quick Start
Required environment variables:
Credential format:
CODEBLOCK0
Read only what you need:
- - Read
references/api.md for request and response formats. - Read
references/query-patterns.md when the user's search intent is vague. - Read
references/error-handling.md when an API call fails or returns no data.
Protocol Contract
For runtime execution, follow this protocol exactly.
Use only these runtime endpoints:
Execution checklist:
- - send authentication with INLINECODE7
- send search requests as INLINECODE8
- send search requests with a JSON body
- keep
source, filters, page, and page_size in the request body
Do not replace this skill with generic supplier-search or buyer-search endpoints.
Canonical runtime pattern:
- 1. validate the credential if needed with INLINECODE13
- build a query plan
- execute search with INLINECODE14
- summarize the current result window
Run scripts/check_credential.py if the credential may be missing or invalid.
Use This Skill When
- - the user wants overseas buyer or importer leads
- the user wants exhibition lead records
- the user wants procurement or sourcing requirement records
- the user wants structured trade search against UniProfit-owned datasets
Do not use this skill for:
- - sending emails
- generating email drafts
- general web research outside UniProfit data
Planning Rules
Prefer structured filters over broad searches.
Use a two-step workflow:
- 1. build an internal query plan
- execute the query only if the plan is reliable enough
Do not turn every natural-language request directly into an API call.
Choose one source first:
- -
importers for importers or buyers - INLINECODE17 for exhibition leads
- INLINECODE18 for procurement demand
Use only supported filters for the chosen source:
- -
importers: company_name, country_code, hs_code, hs_codes, date_period, INLINECODE25 - INLINECODE26 :
fair_name, state, company_name, procurement_category, INLINECODE31 - INLINECODE32 :
country, purchase_title, purchasing_unit, keyword, min_amount, max_amount, INLINECODE39
Important:
- -
importers does not support INLINECODE41 - product keyword search should usually use INLINECODE42
- if the user wants buyer search by product on
importers, prefer HS code first
Language strategy:
- - first query with the user's original wording
- if the first query returns no result, allow one language-aware fallback that better matches the likely storage language of the chosen source
- do not immediately translate everything into English by default
- do not chain many multilingual retries
Do not send unsupported filters. The backend rejects them with 400.
If the user does not specify a source, choose the best fit and state it briefly.
Before calling the API, decide these four items internally:
- - recommended source
- recommended filters
- confidence level
- whether one critical field is still missing
If confidence is low, ask the user one short clarifying question instead of querying immediately.
If confidence is medium or high, query once with the best structured plan.
For product-style requests:
- - product keyword + buyer intent: prefer
requirements first unless the user already has HS code - product keyword + explicit HS code: use INLINECODE46
- company lookup: use INLINECODE47
- fair or exhibitor lookup: use INLINECODE48
Execution Flow
- 1. Read the user request and infer buyer search, exhibition search, or demand search intent.
- Build a query plan:
- source
- filters
- confidence
- missing critical field, if any
- 3. If one critical field is missing and the plan is weak, ask one short question.
- Otherwise run
scripts/search_trade.py, or make the same protocol call to POST /openclaw/search/query with X-UniProfit-Key and a JSON body. - If the first query returns no result, allow one fallback retry using the same source with a closer language match for that source.
- Summarize the search source, filters, current window size, whether more results may exist, and the best leads.
- If there are still no results, suggest one narrower or broader retry based on the same plan.
Planning Heuristics
Prefer these planning rules:
- - If the user says buyer / importer / customer and gives company-like terms, choose
importers. - If the user gives a fair name, exhibitor context, or exhibition lead request, choose
exhibition. - If the user gives product words without HS code, especially for demand discovery, choose
requirements. - If the user asks for buyers by product but only gives a plain product phrase, do not send
keyword to importers. - If the user asks for buyers by product and also gives HS code, use
importers with hs_code or hs_codes. - If the user gives only country + generic product phrase and no HS code, prefer one short clarifying question over a blind
importers query. - For
requirements, keep the user's original country and product wording on the first attempt when the database is likely to store those fields in the same language. - Use at most one language fallback after a zero-result first attempt. Example: keep
哈萨克斯坦 + 家居用品 first, then try one closer storage-language fallback such as household if needed.
Output Style
Start with:
- - source searched
- filters applied
- current window result count
- whether more results may exist
Then present the most actionable rows. Prioritize company name, geography, contact clues, and product relevance.
For requirements results, prefer showing:
- - INLINECODE65
- INLINECODE66
- INLINECODE67 when present
- INLINECODE68
- INLINECODE69
- INLINECODE70 and
currency when present
Describe results as a current query window rather than a complete database count. If the runtime response includes has_more, explain that more matching results may exist and guide the user to narrow the filters for a more focused next step.
Preferred wording pattern:
- - INLINECODE73
- if
has_more = true: INLINECODE75 - if
query_hint exists: restate it as the next best search refinement suggestion
Do not dump raw JSON unless the user asks for it.
UniProfit 交易搜索
使用此技能从 OpenClaw 运行时查询 UniProfit 交易数据。
快速开始
所需环境变量:
- - UNIPROFITAPIBASEURL
- UNIPROFITTRADESEARCHKEY
凭证格式:
http
X-UniProfit-Key: {UNIPROFITTRADESEARCH_KEY}
仅阅读所需内容:
- - 阅读 references/api.md 了解请求和响应格式。
- 当用户的搜索意图模糊时,阅读 references/query-patterns.md。
- 当 API 调用失败或未返回数据时,阅读 references/error-handling.md。
协议约定
对于运行时执行,请严格遵循此协议。
仅使用以下运行时端点:
- - GET {UNIPROFITAPIBASEURL}/openclaw/credential/me
- POST {UNIPROFITAPIBASEURL}/openclaw/search/query
执行清单:
- - 使用 X-UniProfit-Key 发送身份验证
- 以 POST 方式发送搜索请求
- 以 JSON 主体发送搜索请求
- 在请求主体中保留 source、filters、page 和 page_size
不要用通用的供应商搜索或买家搜索端点替换此技能。
标准运行时模式:
- 1. 如有需要,使用 GET /openclaw/credential/me 验证凭证
- 构建查询计划
- 使用 POST /openclaw/search/query 执行搜索
- 总结当前结果窗口
如果凭证可能缺失或无效,运行 scripts/check_credential.py。
何时使用此技能
- - 用户需要海外买家或进口商线索
- 用户需要展会线索记录
- 用户需要采购或寻源需求记录
- 用户需要对 UniProfit 自有数据集进行结构化交易搜索
不要将此技能用于:
- - 发送电子邮件
- 生成邮件草稿
- 在 UniProfit 数据之外进行一般性网络研究
规划规则
优先使用结构化筛选条件而非宽泛搜索。
采用两步工作流程:
- 1. 构建内部查询计划
- 仅在计划足够可靠时执行查询
不要将每个自然语言请求直接转换为 API 调用。
首先选择一个来源:
- - importers 用于进口商或买家
- exhibition 用于展会线索
- requirements 用于采购需求
仅使用所选来源支持的筛选条件:
- - importers:companyname、countrycode、hscode、hscodes、dateperiod、isverified
- exhibition:fairname、state、companyname、procurementcategory、contactperson
- requirements:country、purchasetitle、purchasingunit、keyword、minamount、maxamount、currency
重要提示:
- - importers 不支持 keyword
- 产品关键词搜索通常应使用 requirements
- 如果用户想在 importers 上按产品搜索买家,优先使用 HS 编码
语言策略:
- - 首次查询使用用户的原始措辞
- 如果首次查询无结果,允许一次语言感知的回退,以更好地匹配所选来源可能的存储语言
- 不要默认将所有内容立即翻译成英文
- 不要链式使用多种语言重试
不要发送不支持的筛选条件。后端会以 400 拒绝。
如果用户未指定来源,选择最合适的来源并简要说明。
在调用 API 之前,内部确定以下四项:
- - 推荐来源
- 推荐筛选条件
- 置信度
- 是否仍缺少一个关键字段
如果置信度低,向用户提出一个简短澄清问题,而不是立即查询。
如果置信度为中等或高,使用最佳结构化计划查询一次。
对于产品类请求:
- - 产品关键词 + 买家意图:除非用户已有 HS 编码,否则优先使用 requirements
- 产品关键词 + 明确 HS 编码:使用 importers
- 公司查询:使用 importers
- 展会或参展商查询:使用 exhibition
执行流程
- 1. 读取用户请求,推断买家搜索、展会搜索或需求搜索意图。
- 构建查询计划:
- 来源
- 筛选条件
- 置信度
- 缺失的关键字段(如有)
- 3. 如果缺少一个关键字段且计划较弱,提出一个简短问题。
- 否则运行 scripts/search_trade.py,或使用 X-UniProfit-Key 和 JSON 主体对 POST /openclaw/search/query 进行相同的协议调用。
- 如果首次查询无结果,允许一次回退重试,使用相同来源并采用与该来源更匹配的语言。
- 总结搜索来源、筛选条件、当前窗口大小、是否可能存在更多结果以及最佳线索。
- 如果仍无结果,基于相同计划建议一次更窄或更宽的重试。
规划启发式规则
优先采用以下规划规则:
- - 如果用户提到买家/进口商/客户并给出类似公司的术语,选择 importers。
- 如果用户给出展会名称、参展商背景或展会线索请求,选择 exhibition。
- 如果用户给出无 HS 编码的产品词汇,特别是用于需求发现,选择 requirements。
- 如果用户按产品搜索买家但仅给出普通产品短语,不要向 importers 发送 keyword。
- 如果用户按产品搜索买家并同时给出 HS 编码,使用带有 hscode 或 hscodes 的 importers。
- 如果用户仅给出国家 + 通用产品短语且无 HS 编码,优先提出一个简短澄清问题,而不是盲目进行 importers 查询。
- 对于 requirements,当数据库可能以相同语言存储这些字段时,首次尝试保留用户的原始国家和产品措辞。
- 在首次尝试无结果后,最多使用一次语言回退。例如:先保留 哈萨克斯坦 + 家居用品,然后如有需要,尝试一次更接近存储语言的回退,如 household。
输出风格
以以下内容开头:
- - 搜索的来源
- 应用的筛选条件
- 当前窗口结果数量
- 是否可能存在更多结果
然后呈现最具可操作性的行。优先考虑公司名称、地理位置、联系线索和产品相关性。
对于 requirements 结果,优先显示:
- - purchasetitle
- purchasingunit
- email(如有)
- country
- deadline
- amount 和 currency(如有)
将结果描述为当前查询窗口,而非完整数据库计数。如果运行时响应包含 has_more,说明可能存在更多匹配结果,并引导用户缩小筛选条件以进行更聚焦的下一步。
首选措辞模式:
- - 此查询从 {source} 返回了 {returnedcount} 条结果。
- 如果 hasmore = true:当前窗口之外可能还有更多匹配结果。请缩小筛选条件以继续进行更聚焦的搜索。
- 如果存在 query_hint:将其作为下一个最佳搜索优化建议重新表述。
除非用户要求,否则不要转储原始 JSON。