{"id":"53dc69aa-1611-4961-a5db-1483f8b2f61a","entityType":"agent","slug":"clawhub-upkuajing-upkuajing-global-company-people-search","name":"Comprehensive overseas corporate data and business intelligence lookup built exclusively for global B2B practitioners. Run worldwide company and contact searchqueries tailored to cross-border exporters.Locate international enterprises and validate full bu","canonicalUrl":"https://www.xpersona.co/agent/clawhub-upkuajing-upkuajing-global-company-people-search","canonicalPath":"/agent/clawhub-upkuajing-upkuajing-global-company-people-search","generatedAt":"2026-10-10T06:30:06.205Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":null},"description":"Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting. Trigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:upkuajing-global-company-people-search","sourceUrl":"https://clawhub.ai/upkuajing/upkuajing-global-company-people-search","homepage":"https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/upkuajing/upkuajing-global-company-people-search","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Comprehensive overseas corporate data and business intelligence lookup built exclusively for global B2B practitioners. Run worldwide company and contact searchq"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":null},"stars":null,"forks":null,"downloads":1830,"packageName":null,"latestVersion":"1.0.10","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T00:38:20.565Z","lastCrawledAt":"2026-10-10T00:38:20.565Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T00:38:20.565Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.10","createdAt":"2026-08-24T09:06:07.413Z","changelog":"updated","fileCount":19,"zipByteSize":31842},{"version":"1.0.9","createdAt":"2026-07-16T08:55:04.136Z","changelog":"updated","fileCount":17,"zipByteSize":28876},{"version":"1.0.8","createdAt":"2026-07-16T03:40:02.258Z","changelog":"updated","fileCount":17,"zipByteSize":28867},{"version":"1.0.7","createdAt":"2026-07-03T11:52:53.496Z","changelog":"updated","fileCount":17,"zipByteSize":28679},{"version":"1.0.6","createdAt":"2026-04-17T11:39:35.562Z","changelog":"updated","fileCount":17,"zipByteSize":28577},{"version":"1.0.5","createdAt":"2026-04-10T02:58:02.908Z","changelog":"Initial release","fileCount":15,"zipByteSize":24772}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:upkuajing-global-company-people-search","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:upkuajing-global-company-people-search` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/upkuajing/upkuajing-global-company-people-search before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T06:30:06.201Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-upkuajing-global-company-people-search/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":null},"readme":"Skill: Comprehensive overseas corporate data and business intelligence lookup built exclusively for global B2B practitioners. Run worldwide company and contact searchqueries tailored to cross-border exporters.Locate international enterprises and validate full business credentials: corporate emails, business phone lines andemployee job titles. Filter high-intent export sales leads and qualified prospects for global trade teams. Spot purchasing decision-makers, source reliablesuppliers and accelerate client acquisition for exporters, trading firms, sourcing agents and internal sales teams. All core features are accessible through oneunified search query.Optimized for B2B global prospecting, supplier development and export-focused sales lead generation workflows.\n\nOwner: upkuajing\n\nSummary: Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting. Trigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search\n\nTags: B2B-prospecting:1.0.10, b2b-leads:1.0.10, business:1.0.10, business-intelligence:1.0.10, company-search:1.0.10, corporate-data-lookup:1.0.10, export-sales-leads:1.0.10, latest:1.0.10, people-search:1.0.10, prospecting:1.0.10, purchasing-decision-makers:1.0.10, sourcing-agents:1.0.10, verify:1.0.10, whatsapp:1.0.10\n\nVersion history:\n\nv1.0.10 | 2026-08-24T09:06:07.413Z | user\n\nupdated\n\nv1.0.9 | 2026-07-16T08:55:04.136Z | user\n\nupdated\n\nv1.0.8 | 2026-07-16T03:40:02.258Z | user\n\nupdated\n\nv1.0.7 | 2026-07-03T11:52:53.496Z | user\n\nupdated\n\nv1.0.6 | 2026-04-17T11:39:35.562Z | user\n\nupdated\n\nv1.0.5 | 2026-04-10T02:58:02.908Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.10: 19 files, 31842 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), references/skill-error-report-api.md (2070b), requirements.txt (14b), scripts/auth.py (5849b), scripts/common.py (14546b), scripts/company_details.py (1568b), scripts/company_list_search.py (6247b), scripts/error_report.py (1845b), scripts/get_contact.py (1949b), scripts/human_details.py (1567b), scripts/human_list_search.py (6250b), scripts/version_check.py (4933b), skill-card.md (2928b), SKILL.md (12470b), _meta.json (158b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: upkuajing-global-company-people-search\ndescription: \"Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting.\\n\\nTrigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search\"\nmetadata: {\"version\":\"1.0.10\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# UpKuaJing Company and People Search\n\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\n\n## Overview\n\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\nAPI key generation and top-up are provided through the `auth.py` script.\n\n## Running Scripts\n\n### Environment Setup\n\n1. **Check Python**: `python --version`\n2. **Install dependencies**: `pip install -r requirements.txt`\n\nScript directory: `scripts/*.py`\nRun example: `python scripts/*.py`\n\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\n\n### Two Search Methods\n\n**Company List Search** (`company_list_search.py`)\n- **Return granularity**: Each company as one record\n- **Use cases**: Focus on \"which companies exist\"\n- **Examples**:\n   - \"Find manufacturers producing LED lights\"\n   - \"Find tech companies with 100-500 employees\"\n- **Parameters**: See [Company List](references/company-list-api.md)\n\n**People List Search** (`human_list_search.py`)\n- **Return granularity**: Each person as one record\n- **Use cases**: Focus on \"which people exist\"\n- **Examples**:\n  - \"Find CTOs at XXXX\"\n  - \"Find Sales Directors in China for XXX\"\n- **Parameters**: See [People List](references/human-list-api.md)\n\n### Three Enhancement Interfaces\n\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\n\n**Company Details** (`company_details.py --pids *`)\n- Get company business registration information (excluding contact information)\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\n\n**People Details** (`human_details.py --hids *`)\n- Get detailed person information (education, work experience, etc.)\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\n\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\n- Get contact information (email, phone, WhatsApp, social media, website)\n- **Parameters**:\n  - `--bus_type`: 1=company, 2=person\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\n\n## API Key and Top-up\n\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\n```bash\ncat ~/.upkuajing/.env\n```\n**Example file content**:\n```\nUPKUAJING_API_KEY=your_api_key_here\n```\n### **API Key Not Set**\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\nWait for user selection;\n\n### **Account Top-up**\nWhen API response indicates insufficient balance, explain and guide user to top up:\n1. Create top-up order (`auth.py --new_rec_order`)\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\n\n### **Get Account Information**\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\n\n## API Key and UpKuaJing Account\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\n\n### **Report Skill Call Errors**\nWhen an API call fails or returns abnormal data (server error, timeout, malformed response, etc.), explain the anomaly to the user in natural language and ask whether to report it to the platform for troubleshooting. Only run the report after user confirmation:\n```bash\npython scripts/error_report.py --params '{\"requestPath\":\"/agent/search/company/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"Company/people search failed with a server error\"}'\n```\n- Do not report normal business conditions (insufficient balance, invalid API key, parameter errors) — handle them via their own flows\n- Error reporting does not incur query fees\n- **Parameters**: See [Error Report API](references/skill-error-report-api.md)\n\n## Fees\n\n**All API calls incur fees**, different interfaces have different billing methods.\n\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\n\n### List Search Billing Rules\n\nBilled by **number of calls**, each call returns up to 20 records:\n- Number of calls: `ceil(query_count / 20)` times\n- **Whenever query_count > 20, must before execution:**\n  1. Inform user of expected number of calls\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Enhancement Interface Billing Rules\n\nBilled by **number of IDs passed**, max 20 IDs per call:\n- Pass 1 ID = billed 1 time\n- Pass 20 IDs = billed 20 times (single call limit)\n- **Before batch retrieval must:**\n  1. Inform user of number of IDs passed and corresponding fee count\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Fee Confirmation Principle\n\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\n\n\n## Workflow\n\nChoose the appropriate API based on user intent.\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find companies producing XXX\" | Company list |\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\n| \"Find CEO/CTO of XX company\" | People list |\n| \"Find customers purchasing XXX\" | Company list |\n| \"Get person resume\" | People details |\n| \"Get company contact information\" | Contact information bus_type=1 |\n\n## Usage Examples\n\n### Scenario 1: Small Query — Search Companies\n\n**User request**: \"Find Chinese manufacturers producing LED lights\"\n```bash\npython scripts/company_list_search.py \\\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\n  --query_count 20\n```\n\n### Scenario 2: Search People\n\n**User request**: \"Find CTOs at XXXX\"\n```bash\npython scripts/human_list_search.py \\\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\n  --query_count 20\n```\n\n### Scenario 3: Large Query — Multiple Script Calls Required\n\n**User request**: \"Find 1000 US electronics importers with email addresses\"\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\n```bash\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\n```\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\n```bash\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\n```\n\n## Error Handling\n\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\n- **Insufficient balance**: Guide user to top up\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\n- **Skill call errors / abnormal responses**: Explain to the user and, with user confirmation, report to the platform via `python scripts/error_report.py` (see [Report Skill Call Errors](#report-skill-call-errors))\n\n### API Documentation Reference\n\n- Error Report: Check [references/skill-error-report-api.md](references/skill-error-report-api.md)\n\n## Best Practices\n\n### Choosing the Right Method\n\n1. **Understand user intent**:\n   - Find companies? → Use **company list search**\n   - Find people? → Use **people list search**\n\n2. **Check API documentation**:\n   - **Before executing list queries, must first check the corresponding API reference documentation**\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n3. **Optimize query parameters**:\n   - Use `products` parameter for precise product filtering, translate to English\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\n   - Use `countryCodes` to limit country scope\n\n### Handling Results\n\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\n   - If user only needs a few companies, don't get details for all companies\n\n## Notes\n- Use hids for people search, pids for company search, be careful to distinguish\n- All timestamps are in milliseconds\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\n- File paths use forward slashes on all platforms\n- Product names and industry names must be in **English**\n- Search quantity affects API response time, recommend setting timeout:120\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\n\n## Related Skills\n\nOther UpKuaJing skills you might find useful:\n\n- linkedin-person-search — Search people from the LinkedIn source\n- global-company-person-search — Search people from the global company database\n- linkedin-company-search — Search companies from the LinkedIn source\n- global-company-search — Search companies from the global company database\n- global-company-shareholder — Query shareholder list from the global company database\n- global-company-employee — Query employee list from the global company database\n- global-company-person-colleague — Query colleague list from the global company database\n- global-company-person-alumni — Query alumni list from the global company database\n- global-company-person-experience — Query work experience list from the global company database\n- global-company-person-education — Query education history list from the global company database\n- global-company-person-school-detail — Query school detail from the global company database\n- upkuajing-customs-trade-company-search — Search customs trade companies\n- upkuajing-email-tool — Send emails and manage email tasks\n- upkuajing-map-merchants-search — Map-based merchant search\n- upkuajing-sms-tool — Send SMS and manage SMS tasks\n- upkuajing-contact-info-validity-check — Check contact info validity\n- phone-validity-check — Check phone number validity\n- email-validity-check — Check email address validity\n- domain-validity-check — Check domain validity and security\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787562367413\n}\n\nFile v1.0.10:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.10:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.10:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.10:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.10:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.10:references/skill-error-report-api.md\n\n# Agent调用Skill异常上报 API 参考\n\n> 上报 Agent 调用 Skill 异常，用于平台侧问题追踪与优化。异常上报不产生查询费用。\n> 接口路径：`POST /agent/skill/error/report`\n> 鉴权：需要 Bearer 令牌（UPKUAJING_API_KEY）\n\n## python脚本参数\n\n- `--params`：JSON格式的上报参数（必填）\n- 未传 `skillId`/`skillVersion` 时，脚本会自动从当前 Skill 目录名与 SKILL.md 读取并填充\n- 必填参数：`skillId`、`skillVersion`、`requestId`、`requestPath`、`context`；其中 `requestId` 从出问题的请求响应（ApiResp.requestId）中获取\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| skillId | string | 是 | Skill 标识（最大128字符），如\"customs-analysis-area\" |\n| skillVersion | string | 是 | Skill 版本（最大32字符） |\n| agentName | string | 否 | Agent 名称（最大128字符） |\n| modelName | string | 否 | 模型名称（最大128字符） |\n| requestPath | string | 是 | 出问题的站内接口路径，以 / 开头（最大255字符），如\"/agent/customs/analysis/area\" |\n| requestId | string | 是 | 全请求唯一关联号（最大128字符），取失败请求响应中的 requestId |\n| requestTime | long | 否 | 请求发起时间戳（毫秒，≥0） |\n| requestParams | object | 否 | 请求参数（原始入参，敏感字段会自动脱敏；序列化后≤64KB） |\n| responseData | object | 否 | 响应数据（异常发生时的返回内容，敏感字段会自动脱敏；序列化后≤64KB） |\n| durationMs | long | 否 | 本次调用耗时（毫秒，≥0） |\n| context | string | 是 | 异常上下文（堆栈/错误信息，用于定位根因，最大2000字符） |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：状态码，0 表示成功\n- msg（string）：提示信息\n- requestId（string）：全请求唯一关联号（32位无横线，与 MDC traceId 同值）\n\n### data 字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| reportId | long | 上报记录 ID |\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nSearch global companies and professional contacts for cross-border B2B lead generation, supplier prospecting, business verification, and export-focused sales workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[upkuajing](https://clawhub.ai/user/upkuajing)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal global B2B practitioners, exporters, sourcing agents, trading firms, and sales teams use this skill to find companies and professional contacts, enrich selected records, and verify business or contact details through the UpKuaJing Open Platform API.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can retrieve personal professional contact details from a third-party B2B data service.\n\nMitigation: Use the data only for appropriate business purposes, limit result scope to the user's request, and avoid sending raw contact data or sensitive query results in error reports.\n\nRisk: Search, enrichment, account, and contact operations may incur paid API usage.\n\nMitigation: Confirm costs before bulk searches or enrichment and use the documented pricing page or price information command before high-volume use.\n\nRisk: The API key may be stored in a plaintext local file.\n\nMitigation: Prefer an environment variable or secret manager; if using ~/.upkuajing/.env, restrict file permissions and avoid printing or pasting the key.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search)\n- [Publisher Profile](https://clawhub.ai/user/upkuajing)\n- [UpKuaJing Homepage](https://www.upkuajing.com)\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/)\n- [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\n- [Company List API Reference](references/company-list-api.md)\n- [People List API Reference](references/human-list-api.md)\n- [Company Detail API Reference](references/company-detail-api.md)\n- [People Detail API Reference](references/human-detail-api.md)\n- [Contact API Reference](references/contact-api.md)\n- [Skill Error Report API Reference](references/skill-error-report-api.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Files, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands; script responses are JSON and large search results are JSONL files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY; paid API calls may return personal professional contact data.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release evidence and SKILL.md metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.10:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.9: 17 files, 28876 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), requirements.txt (14b), scripts/auth.py (5849b), scripts/common.py (14546b), scripts/company_details.py (1365b), scripts/company_list_search.py (6066b), scripts/get_contact.py (1746b), scripts/human_details.py (1364b), scripts/human_list_search.py (6069b), scripts/version_check.py (4933b), skill-card.md (3034b), SKILL.md (11358b), _meta.json (157b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: upkuajing-global-company-people-search\ndescription: \"Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting.\\n\\nTrigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search\"\nmetadata: {\"version\":\"1.0.9\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# UpKuaJing Company and People Search\n\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\n\n## Overview\n\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\nAPI key generation and top-up are provided through the `auth.py` script.\n\n## Running Scripts\n\n### Environment Setup\n\n1. **Check Python**: `python --version`\n2. **Install dependencies**: `pip install -r requirements.txt`\n\nScript directory: `scripts/*.py`\nRun example: `python scripts/*.py`\n\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\n\n### Two Search Methods\n\n**Company List Search** (`company_list_search.py`)\n- **Return granularity**: Each company as one record\n- **Use cases**: Focus on \"which companies exist\"\n- **Examples**:\n   - \"Find manufacturers producing LED lights\"\n   - \"Find tech companies with 100-500 employees\"\n- **Parameters**: See [Company List](references/company-list-api.md)\n\n**People List Search** (`human_list_search.py`)\n- **Return granularity**: Each person as one record\n- **Use cases**: Focus on \"which people exist\"\n- **Examples**:\n  - \"Find CTOs at XXXX\"\n  - \"Find Sales Directors in China for XXX\"\n- **Parameters**: See [People List](references/human-list-api.md)\n\n### Three Enhancement Interfaces\n\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\n\n**Company Details** (`company_details.py --pids *`)\n- Get company business registration information (excluding contact information)\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\n\n**People Details** (`human_details.py --hids *`)\n- Get detailed person information (education, work experience, etc.)\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\n\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\n- Get contact information (email, phone, WhatsApp, social media, website)\n- **Parameters**:\n  - `--bus_type`: 1=company, 2=person\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\n\n## API Key and Top-up\n\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\n```bash\ncat ~/.upkuajing/.env\n```\n**Example file content**:\n```\nUPKUAJING_API_KEY=your_api_key_here\n```\n### **API Key Not Set**\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\nWait for user selection;\n\n### **Account Top-up**\nWhen API response indicates insufficient balance, explain and guide user to top up:\n1. Create top-up order (`auth.py --new_rec_order`)\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\n\n### **Get Account Information**\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\n\n## API Key and UpKuaJing Account\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\n\n## Fees\n\n**All API calls incur fees**, different interfaces have different billing methods.\n\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\n\n### List Search Billing Rules\n\nBilled by **number of calls**, each call returns up to 20 records:\n- Number of calls: `ceil(query_count / 20)` times\n- **Whenever query_count > 20, must before execution:**\n  1. Inform user of expected number of calls\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Enhancement Interface Billing Rules\n\nBilled by **number of IDs passed**, max 20 IDs per call:\n- Pass 1 ID = billed 1 time\n- Pass 20 IDs = billed 20 times (single call limit)\n- **Before batch retrieval must:**\n  1. Inform user of number of IDs passed and corresponding fee count\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Fee Confirmation Principle\n\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\n\n\n## Workflow\n\nChoose the appropriate API based on user intent.\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find companies producing XXX\" | Company list |\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\n| \"Find CEO/CTO of XX company\" | People list |\n| \"Find customers purchasing XXX\" | Company list |\n| \"Get person resume\" | People details |\n| \"Get company contact information\" | Contact information bus_type=1 |\n\n## Usage Examples\n\n### Scenario 1: Small Query — Search Companies\n\n**User request**: \"Find Chinese manufacturers producing LED lights\"\n```bash\npython scripts/company_list_search.py \\\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\n  --query_count 20\n```\n\n### Scenario 2: Search People\n\n**User request**: \"Find CTOs at XXXX\"\n```bash\npython scripts/human_list_search.py \\\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\n  --query_count 20\n```\n\n### Scenario 3: Large Query — Multiple Script Calls Required\n\n**User request**: \"Find 1000 US electronics importers with email addresses\"\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\n```bash\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\n```\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\n```bash\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\n```\n\n## Error Handling\n\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\n- **Insufficient balance**: Guide user to top up\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\n\n## Best Practices\n\n### Choosing the Right Method\n\n1. **Understand user intent**:\n   - Find companies? → Use **company list search**\n   - Find people? → Use **people list search**\n\n2. **Check API documentation**:\n   - **Before executing list queries, must first check the corresponding API reference documentation**\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n3. **Optimize query parameters**:\n   - Use `products` parameter for precise product filtering, translate to English\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\n   - Use `countryCodes` to limit country scope\n\n### Handling Results\n\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\n   - If user only needs a few companies, don't get details for all companies\n\n## Notes\n- Use hids for people search, pids for company search, be careful to distinguish\n- All timestamps are in milliseconds\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\n- File paths use forward slashes on all platforms\n- Product names and industry names must be in **English**\n- Search quantity affects API response time, recommend setting timeout:120\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\n\n## Related Skills\n\nOther UpKuaJing skills you might find useful:\n\n- linkedin-person-search — Search people from the LinkedIn source\n- global-company-person-search — Search people from the global company database\n- linkedin-company-search — Search companies from the LinkedIn source\n- global-company-search — Search companies from the global company database\n- global-company-shareholder — Query shareholder list from the global company database\n- global-company-employee — Query employee list from the global company database\n- global-company-person-colleague — Query colleague list from the global company database\n- global-company-person-alumni — Query alumni list from the global company database\n- global-company-person-experience — Query work experience list from the global company database\n- global-company-person-education — Query education history list from the global company database\n- global-company-person-school-detail — Query school detail from the global company database\n- upkuajing-customs-trade-company-search — Search customs trade companies\n- upkuajing-email-tool — Send emails and manage email tasks\n- upkuajing-map-merchants-search — Map-based merchant search\n- upkuajing-sms-tool — Send SMS and manage SMS tasks\n- upkuajing-contact-info-validity-check — Check contact info validity\n- phone-validity-check — Check phone number validity\n- email-validity-check — Check email address validity\n- domain-validity-check — Check domain validity and security\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1784192104136\n}\n\nFile v1.0.9:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.9:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.9:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.9:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.9:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nSearch global companies and professional contacts for cross-border B2B lead generation, including company intelligence, business registration records, and verified contact details. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[upkuajing](https://clawhub.ai/user/upkuajing) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal B2B sales, export, sourcing, and trade teams use this skill to search international companies and professional contacts, identify potential buyers or suppliers, and enrich selected entities with business details and contact information. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill retrieves paid business and personal contact data, which can create privacy, compliance, and misuse risk. <br>\nMitigation: Use it only for a lawful business purpose, scope searches narrowly, and avoid broad contact harvesting. <br>\nRisk: The UpKuaJing API key may be stored locally in ~/.upkuajing/.env. <br>\nMitigation: Use a dedicated API key, restrict local file permissions, and rotate or revoke the key if it may have been exposed. <br>\nRisk: Search and enrichment results may be stored locally under task_data. <br>\nMitigation: Delete result files when they are no longer needed and avoid storing regulated or unnecessary personal data. <br>\nRisk: List searches and enrichment interfaces can incur paid API charges. <br>\nMitigation: Confirm expected API call counts and fee impact before running large searches or batch enrichment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/) <br>\n- [UpKuaJing OpenAPI pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [Company list API reference](references/company-list-api.md) <br>\n- [People list API reference](references/human-list-api.md) <br>\n- [Company detail API reference](references/company-detail-api.md) <br>\n- [Human detail API reference](references/human-detail-api.md) <br>\n- [Contact API reference](references/contact-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Shell commands, JSON, Files, Guidance] <br>\n**Output Format:** [Markdown guidance with Python command examples, JSON API responses, and local result files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY; list searches and enrichment calls can incur fees and may write task_data results.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: skill metadata and ClawHub release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.9:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.8: 17 files, 28867 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), requirements.txt (14b), scripts/auth.py (5849b), scripts/common.py (14546b), scripts/company_details.py (1365b), scripts/company_list_search.py (6066b), scripts/get_contact.py (1746b), scripts/human_details.py (1364b), scripts/human_list_search.py (6069b), scripts/version_check.py (4933b), skill-card.md (2968b), SKILL.md (11358b), _meta.json (157b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: upkuajing-global-company-people-search\ndescription: \"Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting.\\n\\nTrigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search\"\nmetadata: {\"version\":\"1.0.8\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# UpKuaJing Company and People Search\n\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\n\n## Overview\n\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\nAPI key generation and top-up are provided through the `auth.py` script.\n\n## Running Scripts\n\n### Environment Setup\n\n1. **Check Python**: `python --version`\n2. **Install dependencies**: `pip install -r requirements.txt`\n\nScript directory: `scripts/*.py`\nRun example: `python scripts/*.py`\n\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\n\n### Two Search Methods\n\n**Company List Search** (`company_list_search.py`)\n- **Return granularity**: Each company as one record\n- **Use cases**: Focus on \"which companies exist\"\n- **Examples**:\n   - \"Find manufacturers producing LED lights\"\n   - \"Find tech companies with 100-500 employees\"\n- **Parameters**: See [Company List](references/company-list-api.md)\n\n**People List Search** (`human_list_search.py`)\n- **Return granularity**: Each person as one record\n- **Use cases**: Focus on \"which people exist\"\n- **Examples**:\n  - \"Find CTOs at XXXX\"\n  - \"Find Sales Directors in China for XXX\"\n- **Parameters**: See [People List](references/human-list-api.md)\n\n### Three Enhancement Interfaces\n\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\n\n**Company Details** (`company_details.py --pids *`)\n- Get company business registration information (excluding contact information)\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\n\n**People Details** (`human_details.py --hids *`)\n- Get detailed person information (education, work experience, etc.)\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\n\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\n- Get contact information (email, phone, WhatsApp, social media, website)\n- **Parameters**:\n  - `--bus_type`: 1=company, 2=person\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\n\n## API Key and Top-up\n\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\n```bash\ncat ~/.upkuajing/.env\n```\n**Example file content**:\n```\nUPKUAJING_API_KEY=your_api_key_here\n```\n### **API Key Not Set**\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\nWait for user selection;\n\n### **Account Top-up**\nWhen API response indicates insufficient balance, explain and guide user to top up:\n1. Create top-up order (`auth.py --new_rec_order`)\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\n\n### **Get Account Information**\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\n\n## API Key and UpKuaJing Account\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\n\n## Fees\n\n**All API calls incur fees**, different interfaces have different billing methods.\n\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\n\n### List Search Billing Rules\n\nBilled by **number of calls**, each call returns up to 20 records:\n- Number of calls: `ceil(query_count / 20)` times\n- **Whenever query_count > 20, must before execution:**\n  1. Inform user of expected number of calls\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Enhancement Interface Billing Rules\n\nBilled by **number of IDs passed**, max 20 IDs per call:\n- Pass 1 ID = billed 1 time\n- Pass 20 IDs = billed 20 times (single call limit)\n- **Before batch retrieval must:**\n  1. Inform user of number of IDs passed and corresponding fee count\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Fee Confirmation Principle\n\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\n\n\n## Workflow\n\nChoose the appropriate API based on user intent.\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find companies producing XXX\" | Company list |\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\n| \"Find CEO/CTO of XX company\" | People list |\n| \"Find customers purchasing XXX\" | Company list |\n| \"Get person resume\" | People details |\n| \"Get company contact information\" | Contact information bus_type=1 |\n\n## Usage Examples\n\n### Scenario 1: Small Query — Search Companies\n\n**User request**: \"Find Chinese manufacturers producing LED lights\"\n```bash\npython scripts/company_list_search.py \\\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\n  --query_count 20\n```\n\n### Scenario 2: Search People\n\n**User request**: \"Find CTOs at XXXX\"\n```bash\npython scripts/human_list_search.py \\\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\n  --query_count 20\n```\n\n### Scenario 3: Large Query — Multiple Script Calls Required\n\n**User request**: \"Find 1000 US electronics importers with email addresses\"\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\n```bash\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\n```\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\n```bash\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\n```\n\n## Error Handling\n\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\n- **Insufficient balance**: Guide user to top up\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\n\n## Best Practices\n\n### Choosing the Right Method\n\n1. **Understand user intent**:\n   - Find companies? → Use **company list search**\n   - Find people? → Use **people list search**\n\n2. **Check API documentation**:\n   - **Before executing list queries, must first check the corresponding API reference documentation**\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n3. **Optimize query parameters**:\n   - Use `products` parameter for precise product filtering, translate to English\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\n   - Use `countryCodes` to limit country scope\n\n### Handling Results\n\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\n   - If user only needs a few companies, don't get details for all companies\n\n## Notes\n- Use hids for people search, pids for company search, be careful to distinguish\n- All timestamps are in milliseconds\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\n- File paths use forward slashes on all platforms\n- Product names and industry names must be in **English**\n- Search quantity affects API response time, recommend setting timeout:120\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\n\n## Related Skills\n\nOther UpKuaJing skills you might find useful:\n\n- linkedin-person-search — Search people from the LinkedIn source\n- global-company-person-search — Search people from the global company database\n- linkedin-company-search — Search companies from the LinkedIn source\n- global-company-search — Search companies from the global company database\n- global-company-shareholder — Query shareholder list from the global company database\n- global-company-employee — Query employee list from the global company database\n- global-company-person-colleague — Query colleague list from the global company database\n- global-company-person-alumni — Query alumni list from the global company database\n- global-company-person-experience — Query work experience list from the global company database\n- global-company-person-education — Query education history list from the global company database\n- global-company-person-school-detail — Query school detail from the global company database\n- upkuajing-customs-trade-company-search — Search customs trade companies\n- upkuajing-email-tool — Send emails and manage email tasks\n- upkuajing-map-merchants-search — Map-based merchant search\n- upkuajing-sms-tool — Send SMS and manage SMS tasks\n- upkuajing-contact-info-validity-check — Check contact info validity\n- phone-validity-check — Check phone number validity\n- email-validity-check — Check email address validity\n- domain-validity-check — Check domain validity and security\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1784173202258\n}\n\nFile v1.0.8:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.8:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.8:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.8:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.8:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nSearches UpKuaJing company and professional-contact data for global B2B prospecting, supplier discovery, contact lookup, and business verification. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[upkuajing](https://clawhub.ai/user/upkuajing) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, exporters, sourcing agents, and sales teams use this skill to search for companies and professional contacts, enrich records with business and contact details, and identify qualified B2B leads. It is also useful for agents that need guided API calls for company lookup, people search, and contact retrieval. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends company and person identifiers to UpKuaJing and can return personal contact data. <br>\nMitigation: Use it only where the user's privacy, marketing, and data-protection obligations permit the lookup and use of that data. <br>\nRisk: The skill stores a paid-account API key locally in ~/.upkuajing/.env. <br>\nMitigation: Treat the API key as a secret, restrict local file access, avoid sharing it in chat, and monitor account usage. <br>\nRisk: List searches and enrichment calls can incur fees. <br>\nMitigation: Follow the skill's confirmation flow before paid or batch operations and check current pricing before execution. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/) <br>\n- [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [Company List API reference](artifact/references/company-list-api.md) <br>\n- [People List API reference](artifact/references/human-list-api.md) <br>\n- [Contact Information API reference](artifact/references/contact-api.md) <br>\n- [Company Details API reference](artifact/references/company-detail-api.md) <br>\n- [People Details API reference](artifact/references/human-detail-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, JSON, Files] <br>\n**Output Format:** [Markdown guidance with Python command examples; scripts return JSON and may write result files for larger searches.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires an UPKUAJING_API_KEY. Paid API calls and batch enrichment should be confirmed by the user before execution.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: release evidence and skill metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.8:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.7: 17 files, 28679 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), requirements.txt (14b), scripts/auth.py (5849b), scripts/common.py (14546b), scripts/company_details.py (1365b), scripts/company_list_search.py (6066b), scripts/get_contact.py (1746b), scripts/human_details.py (1364b), scripts/human_list_search.py (6069b), scripts/version_check.py (4933b), skill-card.md (3171b), SKILL.md (9846b), _meta.json (157b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: upkuajing-global-company-people-search\ndescription: Official skill for upkuajing (跨境魔方). Find companies (找公司) and global people (找人) data. Get business registration, background info, and contact details (Email, Phone, WhatsApp). Ideal for customer development, background checks, and talent search.\nmetadata: {\"version\":\"1.0.7\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# UpKuaJing Company and People Search\n\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\n\n## Overview\n\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\nAPI key generation and top-up are provided through the `auth.py` script.\n\n## Running Scripts\n\n### Environment Setup\n\n1. **Check Python**: `python --version`\n2. **Install dependencies**: `pip install -r requirements.txt`\n\nScript directory: `scripts/*.py`\nRun example: `python scripts/*.py`\n\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\n\n### Two Search Methods\n\n**Company List Search** (`company_list_search.py`)\n- **Return granularity**: Each company as one record\n- **Use cases**: Focus on \"which companies exist\"\n- **Examples**:\n   - \"Find manufacturers producing LED lights\"\n   - \"Find tech companies with 100-500 employees\"\n- **Parameters**: See [Company List](references/company-list-api.md)\n\n**People List Search** (`human_list_search.py`)\n- **Return granularity**: Each person as one record\n- **Use cases**: Focus on \"which people exist\"\n- **Examples**:\n  - \"Find CTOs at XXXX\"\n  - \"Find Sales Directors in China for XXX\"\n- **Parameters**: See [People List](references/human-list-api.md)\n\n### Three Enhancement Interfaces\n\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\n\n**Company Details** (`company_details.py --pids *`)\n- Get company business registration information (excluding contact information)\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\n\n**People Details** (`human_details.py --hids *`)\n- Get detailed person information (education, work experience, etc.)\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\n\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\n- Get contact information (email, phone, WhatsApp, social media, website)\n- **Parameters**:\n  - `--bus_type`: 1=company, 2=person\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\n\n## API Key and Top-up\n\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\n```bash\ncat ~/.upkuajing/.env\n```\n**Example file content**:\n```\nUPKUAJING_API_KEY=your_api_key_here\n```\n### **API Key Not Set**\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\nWait for user selection;\n\n### **Account Top-up**\nWhen API response indicates insufficient balance, explain and guide user to top up:\n1. Create top-up order (`auth.py --new_rec_order`)\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\n\n### **Get Account Information**\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\n\n## API Key and UpKuaJing Account\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\n\n## Fees\n\n**All API calls incur fees**, different interfaces have different billing methods.\n\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\n\n### List Search Billing Rules\n\nBilled by **number of calls**, each call returns up to 20 records:\n- Number of calls: `ceil(query_count / 20)` times\n- **Whenever query_count > 20, must before execution:**\n  1. Inform user of expected number of calls\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Enhancement Interface Billing Rules\n\nBilled by **number of IDs passed**, max 20 IDs per call:\n- Pass 1 ID = billed 1 time\n- Pass 20 IDs = billed 20 times (single call limit)\n- **Before batch retrieval must:**\n  1. Inform user of number of IDs passed and corresponding fee count\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\n\n### Fee Confirmation Principle\n\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\n\n\n## Workflow\n\nChoose the appropriate API based on user intent.\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find companies producing XXX\" | Company list |\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\n| \"Find CEO/CTO of XX company\" | People list |\n| \"Find customers purchasing XXX\" | Company list |\n| \"Get person resume\" | People details |\n| \"Get company contact information\" | Contact information bus_type=1 |\n\n## Usage Examples\n\n### Scenario 1: Small Query — Search Companies\n\n**User request**: \"Find Chinese manufacturers producing LED lights\"\n```bash\npython scripts/company_list_search.py \\\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\n  --query_count 20\n```\n\n### Scenario 2: Search People\n\n**User request**: \"Find CTOs at XXXX\"\n```bash\npython scripts/human_list_search.py \\\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\n  --query_count 20\n```\n\n### Scenario 3: Large Query — Multiple Script Calls Required\n\n**User request**: \"Find 1000 US electronics importers with email addresses\"\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\n```bash\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\n```\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\n```bash\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\n```\n\n## Error Handling\n\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\n- **Insufficient balance**: Guide user to top up\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\n\n## Best Practices\n\n### Choosing the Right Method\n\n1. **Understand user intent**:\n   - Find companies? → Use **company list search**\n   - Find people? → Use **people list search**\n\n2. **Check API documentation**:\n   - **Before executing list queries, must first check the corresponding API reference documentation**\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n3. **Optimize query parameters**:\n   - Use `products` parameter for precise product filtering, translate to English\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\n   - Use `countryCodes` to limit country scope\n\n### Handling Results\n\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\n   - If user only needs a few companies, don't get details for all companies\n\n## Notes\n- Use hids for people search, pids for company search, be careful to distinguish\n- All timestamps are in milliseconds\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\n- File paths use forward slashes on all platforms\n- Product names and industry names must be in **English**\n- Search quantity affects API response time, recommend setting timeout:120\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\n\n## Related Skills\n\nOther UpKuaJing skills you might find useful:\n\n- upkuajing-customs-trade-company-search — Search customs trade companies\n- upkuajing-email-tool — Send emails and manage email tasks\n- upkuajing-map-merchants-search — Map-based merchant search\n- upkuajing-sms-tool — Send SMS and manage SMS tasks\n- upkuajing-contact-info-validity-check — Check contact info validity\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1783079573496\n}\n\nFile v1.0.7:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.7:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.7:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.7:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.7:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nOfficial skill for upkuajing (跨境魔方). Find companies (找公司) and global people (找人) data. Get business registration, background info, and contact details (Email, Phone, WhatsApp). Ideal for customer development, background checks, and talent search. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[upkuajing](https://clawhub.ai/user/upkuajing) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal sales, sourcing, export, and lead generation teams use this skill to search global companies and people, enrich selected entities with business and contact details, and prepare B2B prospecting workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles personal contact data for people search and lead generation. <br>\nMitigation: Use it only with a lawful basis for processing contact data, avoid bulk harvesting and unsolicited outreach, and apply the user organization's privacy and retention policies. <br>\nRisk: The skill can store result data locally under task_data. <br>\nMitigation: Limit searches to necessary records and periodically delete local outputs that are no longer needed. <br>\nRisk: The API key may be persisted in plaintext in ~/.upkuajing/.env. <br>\nMitigation: Prefer providing UPKUAJING_API_KEY through a secure environment secret and avoid sharing or committing local credential files. <br>\nRisk: Normal API calls also trigger a same-provider version-check request. <br>\nMitigation: Review network behavior before installation in restricted environments and account for this additional provider call. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/upkuajing-global-company-people-search) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/) <br>\n- [UpKuaJing OpenAPI pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [Company list API reference](references/company-list-api.md) <br>\n- [People list API reference](references/human-list-api.md) <br>\n- [Company detail API reference](references/company-detail-api.md) <br>\n- [People detail API reference](references/human-detail-api.md) <br>\n- [Contact API reference](references/contact-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, code, shell commands, configuration, guidance, files] <br>\n**Output Format:** [Markdown guidance with shell commands; script outputs are JSON summaries and JSONL result files.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires python and UPKUAJING_API_KEY; list searches can write task_data result files and detail/contact calls return fee information.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server evidence and skill metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.7:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.6: 17 files, 28577 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), requirements.txt (14b), scripts/auth.py (6021b), scripts/common.py (14546b), scripts/company_details.py (1359b), scripts/company_list_search.py (6060b), scripts/get_contact.py (1740b), scripts/human_details.py (1358b), scripts/human_list_search.py (6063b), scripts/version_check.py (4927b), skill-card.md (2868b), SKILL.md (10066b), _meta.json (157b)\n\nFile v1.0.6:SKILL.md\n\n---\r\nname: upkuajing-global-company-people-search\r\ndescription: Official skill for upkuajing (跨境魔方). Find companies (找公司) and global people (找人) data. Get business registration, background info, and contact details (Email, Phone, WhatsApp). Ideal for customer development, background checks, and talent search.\r\nmetadata: {\"version\":\"1.0.6\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\r\n---\r\n\r\n# UpKuaJing Company and People Search\r\n\r\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\r\n\r\n## Overview\r\n\r\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\r\nAPI key generation and top-up are provided through the `auth.py` script.\r\n\r\n## Running Scripts\r\n\r\n### Environment Setup\r\n\r\n1. **Check Python**: `python --version`\r\n2. **Install dependencies**: `pip install -r requirements.txt`\r\n\r\nScript directory: `scripts/*.py`\r\nRun example: `python scripts/*.py`\r\n\r\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\r\n\r\n### Two Search Methods\r\n\r\n**Company List Search** (`company_list_search.py`)\r\n- **Return granularity**: Each company as one record\r\n- **Use cases**: Focus on \"which companies exist\"\r\n- **Examples**:\r\n   - \"Find manufacturers producing LED lights\"\r\n   - \"Find tech companies with 100-500 employees\"\r\n- **Parameters**: See [Company List](references/company-list-api.md)\r\n\r\n**People List Search** (`human_list_search.py`)\r\n- **Return granularity**: Each person as one record\r\n- **Use cases**: Focus on \"which people exist\"\r\n- **Examples**:\r\n  - \"Find CTOs at XXXX\"\r\n  - \"Find Sales Directors in China for XXX\"\r\n- **Parameters**: See [People List](references/human-list-api.md)\r\n\r\n### Three Enhancement Interfaces\r\n\r\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\r\n\r\n**Company Details** (`company_details.py --pids *`)\r\n- Get company business registration information (excluding contact information)\r\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n**People Details** (`human_details.py --hids *`)\r\n- Get detailed person information (education, work experience, etc.)\r\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\r\n- Get contact information (email, phone, WhatsApp, social media, website)\r\n- **Parameters**:\r\n  - `--bus_type`: 1=company, 2=person\r\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n## API Key and Top-up\r\n\r\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\r\n```bash\r\ncat ~/.upkuajing/.env\r\n```\r\n**Example file content**:\r\n```\r\nUPKUAJING_API_KEY=your_api_key_here\r\n```\r\n### **API Key Not Set**\r\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\r\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\r\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\r\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\r\nWait for user selection;\r\n\r\n### **Account Top-up**\r\nWhen API response indicates insufficient balance, explain and guide user to top up:\r\n1. Create top-up order (`auth.py --new_rec_order`)\r\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\r\n\r\n### **Get Account Information**\r\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\r\n\r\n## API Key and UpKuaJing Account\r\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\r\n\r\n## Fees\r\n\r\n**All API calls incur fees**, different interfaces have different billing methods.\r\n\r\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\r\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\r\n\r\n### List Search Billing Rules\r\n\r\nBilled by **number of calls**, each call returns up to 20 records:\r\n- Number of calls: `ceil(query_count / 20)` times\r\n- **Whenever query_count > 20, must before execution:**\r\n  1. Inform user of expected number of calls\r\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\r\n\r\n### Enhancement Interface Billing Rules\r\n\r\nBilled by **number of IDs passed**, max 20 IDs per call:\r\n- Pass 1 ID = billed 1 time\r\n- Pass 20 IDs = billed 20 times (single call limit)\r\n- **Before batch retrieval must:**\r\n  1. Inform user of number of IDs passed and corresponding fee count\r\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\r\n\r\n### Fee Confirmation Principle\r\n\r\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\r\n\r\n\r\n## Workflow\r\n\r\nChoose the appropriate API based on user intent.\r\n\r\n### Decision Guide\r\n\r\n| User Intent | Use API |\r\n|-------------|---------|\r\n| \"Find companies producing XXX\" | Company list |\r\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\r\n| \"Find CEO/CTO of XX company\" | People list |\r\n| \"Find customers purchasing XXX\" | Company list |\r\n| \"Get person resume\" | People details |\r\n| \"Get company contact information\" | Contact information bus_type=1 |\r\n\r\n## Usage Examples\r\n\r\n### Scenario 1: Small Query — Search Companies\r\n\r\n**User request**: \"Find Chinese manufacturers producing LED lights\"\r\n```bash\r\npython scripts/company_list_search.py \\\r\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\r\n  --query_count 20\r\n```\r\n\r\n### Scenario 2: Search People\r\n\r\n**User request**: \"Find CTOs at XXXX\"\r\n```bash\r\npython scripts/human_list_search.py \\\r\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\r\n  --query_count 20\r\n```\r\n\r\n### Scenario 3: Large Query — Multiple Script Calls Required\r\n\r\n**User request**: \"Find 1000 US electronics importers with email addresses\"\r\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\r\n```bash\r\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\r\n```\r\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\r\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\r\n```bash\r\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\r\n```\r\n\r\n## Error Handling\r\n\r\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\r\n- **Insufficient balance**: Guide user to top up\r\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\r\n\r\n## Best Practices\r\n\r\n### Choosing the Right Method\r\n\r\n1. **Understand user intent**:\r\n   - Find companies? → Use **company list search**\r\n   - Find people? → Use **people list search**\r\n\r\n2. **Check API documentation**:\r\n   - **Before executing list queries, must first check the corresponding API reference documentation**\r\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\r\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\r\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\r\n\r\n3. **Optimize query parameters**:\r\n   - Use `products` parameter for precise product filtering, translate to English\r\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\r\n   - Use `countryCodes` to limit country scope\r\n\r\n### Handling Results\r\n\r\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\r\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\r\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\r\n   - If user only needs a few companies, don't get details for all companies\r\n\r\n## Notes\r\n- Use hids for people search, pids for company search, be careful to distinguish\r\n- All timestamps are in milliseconds\r\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\r\n- File paths use forward slashes on all platforms\r\n- Product names and industry names must be in **English**\r\n- Search quantity affects API response time, recommend setting timeout:120\r\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\r\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\r\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\r\n\r\n## Related Skills\r\n\r\nOther UpKuaJing skills you might find useful:\r\n\r\n- upkuajing-customs-trade-company-search — Search customs trade companies\r\n- upkuajing-email-tool — Send emails and manage email tasks\r\n- upkuajing-map-merchants-search — Map-based merchant search\r\n- upkuajing-sms-tool — Send SMS and manage SMS tasks\r\n- upkuajing-contact-info-validity-check — Check contact info validity\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1776425975562\n}\n\nFile v1.0.6:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.6:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.6:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.6:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.6:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\nOfficial skill for upkuajing (跨境魔方). Find companies (找公司) and global people (找人) data. Get business registration, background info, and contact details (Email, Phone, WhatsApp). Ideal for customer development, background checks, and talent search. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[upkuajing](https://clawhub.ai/user/upkuajing) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExporters, sourcing agents, sales teams, and business-development users use this skill to search global companies and people, enrich records, retrieve contact details, and prepare B2B lead-development workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires a sensitive UpKuaJing API key and stores it for local script use. <br>\nMitigation: Set UPKUAJING_API_KEY through an environment secret or secret manager, and avoid printing or sharing local credential files. <br>\nRisk: Searches and enrichment requests can incur UpKuaJing API charges. <br>\nMitigation: Confirm the expected number of paid calls and receive explicit user approval before running fee-incurring searches or batch enrichment. <br>\nRisk: Company, people, and contact searches can create local result or task data containing business contact information. <br>\nMitigation: Use the data only for the approved contact-data use case and delete local task data or logs when they are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [UpKuaJing Website](https://www.upkuajing.com) <br>\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/) <br>\n- [UpKuaJing API Pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [Company List API Reference](references/company-list-api.md) <br>\n- [People List API Reference](references/human-list-api.md) <br>\n- [Company Detail API Reference](references/company-detail-api.md) <br>\n- [People Detail API Reference](references/human-detail-api.md) <br>\n- [Contact API Reference](references/contact-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, JSON, files] <br>\n**Output Format:** [Markdown guidance with shell commands, configuration notes, JSON API responses, and local result files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY and may perform paid API calls after explicit user confirmation.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (source: server evidence release version and skill metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.6:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.5: 15 files, 24772 bytes\n\nFiles: references/company-detail-api.md (1291b), references/company-list-api.md (3762b), references/contact-api.md (1400b), references/human-detail-api.md (1299b), references/human-list-api.md (4027b), requirements.txt (14b), scripts/auth.py (5951b), scripts/common.py (14449b), scripts/company_details.py (1359b), scripts/company_list_search.py (6060b), scripts/get_contact.py (1740b), scripts/human_details.py (1358b), scripts/human_list_search.py (6063b), SKILL.md (9470b), _meta.json (157b)\n\nFile v1.0.5:SKILL.md\n\n---\r\nname: upkuajing-global-company-people-search\r\ndescription: Official skill for upkuajing (跨境魔方). Find companies (找公司) and global people (找人) data. Get business registration, background info, and contact details (Email, Phone, WhatsApp). Ideal for customer development, background checks, and talent search.\r\nmetadata: {\"version\":\"1.0.5\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\r\n---\r\n\r\n# UpKuaJing Company and People Search\r\n\r\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\r\n\r\n## Overview\r\n\r\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\r\nAPI key generation and top-up are provided through the `auth.py` script.\r\n\r\n## Running Scripts\r\n\r\n### Environment Setup\r\n\r\n1. **Check Python**: `python --version`\r\n2. **Install dependencies**: `pip install -r requirements.txt`\r\n\r\nScript directory: `scripts/*.py`\r\nRun example: `python scripts/*.py`\r\n\r\n### Two Search Methods\r\n\r\n**Company List Search** (`company_list_search.py`)\r\n- **Return granularity**: Each company as one record\r\n- **Use cases**: Focus on \"which companies exist\"\r\n- **Examples**:\r\n   - \"Find manufacturers producing LED lights\"\r\n   - \"Find tech companies with 100-500 employees\"\r\n- **Parameters**: See [Company List](references/company-list-api.md)\r\n\r\n**People List Search** (`human_list_search.py`)\r\n- **Return granularity**: Each person as one record\r\n- **Use cases**: Focus on \"which people exist\"\r\n- **Examples**:\r\n  - \"Find CTOs at XXXX\"\r\n  - \"Find Sales Directors in China for XXX\"\r\n- **Parameters**: See [People List](references/human-list-api.md)\r\n\r\n### Three Enhancement Interfaces\r\n\r\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\r\n\r\n**Company Details** (`company_details.py --pids *`)\r\n- Get company business registration information (excluding contact information)\r\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n**People Details** (`human_details.py --hids *`)\r\n- Get detailed person information (education, work experience, etc.)\r\n- **Parameters**: `--hids` List of people IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n**Contact Information** (`get_contact.py --bus_type * --bus_ids *`)\r\n- Get contact information (email, phone, WhatsApp, social media, website)\r\n- **Parameters**:\r\n  - `--bus_type`: 1=company, 2=person\r\n  - `--bus_ids`: List of company IDs or people IDs (space-separated, obtained from list search), max 20 at a time\r\n\r\n## API Key and Top-up\r\n\r\nThis skill requires an API key. The API key is stored in the `~/.upkuajing/.env` file:\r\n```bash\r\ncat ~/.upkuajing/.env\r\n```\r\n**Example file content**:\r\n```\r\nUPKUAJING_API_KEY=your_api_key_here\r\n```\r\n### **API Key Not Set**\r\nFirst check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;\r\nIf UPKUAJING_API_KEY is not set, prompt the user to choose:\r\n1. User has one: User provides it (manually add to ~/.upkuajing/.env file)\r\n2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env\r\nWait for user selection;\r\n\r\n### **Account Top-up**\r\nWhen API response indicates insufficient balance, explain and guide user to top up:\r\n1. Create top-up order (`auth.py --new_rec_order`)\r\n2. Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;\r\n\r\n### **Get Account Information**\r\nUse this script to get account information for UPKUAJING_API_KEY: `auth.py --account_info`\r\n\r\n## API Key and UpKuaJing Account\r\n- Newly applied API key: Register and login at [UpKuaJing Open Platform](https://developer.upkuajing.com/), then bind account\r\n\r\n## Fees\r\n\r\n**All API calls incur fees**, different interfaces have different billing methods.\r\n\r\n**Latest pricing**: Users can visit [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\r\nOr use: `python scripts/auth.py --price_info` (returns complete pricing for all interfaces)\r\n\r\n### List Search Billing Rules\r\n\r\nBilled by **number of calls**, each call returns up to 20 records:\r\n- Number of calls: `ceil(query_count / 20)` times\r\n- **Whenever query_count > 20, must before execution:**\r\n  1. Inform user of expected number of calls\r\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\r\n\r\n### Enhancement Interface Billing Rules\r\n\r\nBilled by **number of IDs passed**, max 20 IDs per call:\r\n- Pass 1 ID = billed 1 time\r\n- Pass 20 IDs = billed 20 times (single call limit)\r\n- **Before batch retrieval must:**\r\n  1. Inform user of number of IDs passed and corresponding fee count\r\n  2. Stop, wait for explicit user confirmation in a separate message, then execute script\r\n\r\n### Fee Confirmation Principle\r\n\r\n**Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.**\r\n\r\n\r\n## Workflow\r\n\r\nChoose the appropriate API based on user intent.\r\n\r\n### Decision Guide\r\n\r\n| User Intent | Use API |\r\n|-------------|---------|\r\n| \"Find companies producing XXX\" | Company list |\r\n| \"Find companies with email/phone\" | Company list existEmail=1/existPhone=1 |\r\n| \"Find CEO/CTO of XX company\" | People list |\r\n| \"Find customers purchasing XXX\" | Company list |\r\n| \"Get person resume\" | People details |\r\n| \"Get company contact information\" | Contact information bus_type=1 |\r\n\r\n## Usage Examples\r\n\r\n### Scenario 1: Small Query — Search Companies\r\n\r\n**User request**: \"Find Chinese manufacturers producing LED lights\"\r\n```bash\r\npython scripts/company_list_search.py \\\r\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\r\n  --query_count 20\r\n```\r\n\r\n### Scenario 2: Search People\r\n\r\n**User request**: \"Find CTOs at XXXX\"\r\n```bash\r\npython scripts/human_list_search.py \\\r\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\r\n  --query_count 20\r\n```\r\n\r\n### Scenario 3: Large Query — Multiple Script Calls Required\r\n\r\n**User request**: \"Find 1000 US electronics importers with email addresses\"\r\n**Before execution** inform user: ceil(1000/20) = 50 API calls, confirm before executing.\r\n```bash\r\npython scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000\r\n```\r\n**After execution**: Script responds {\"task_id\":\"a1b2-c3d4\", \"file_url\": \"xxxxx\", ……}\r\n**Continue execution, append data**: Specify task_id, script continues query from last cursor and appends to file\r\n```bash\r\npython scripts/company_list_search.py --task_id 'task-id-here' --query_count 2000\r\n```\r\n\r\n## Error Handling\r\n\r\n- **API key invalid/non-existent**: Check `UPKUAJING_API_KEY` in `~/.upkuajing/.env` file\r\n- **Insufficient balance**: Guide user to top up\r\n- **Invalid parameters**: **Must first check the corresponding API documentation in references/ directory**, get correct parameter names and formats from documentation, do not guess\r\n\r\n## Best Practices\r\n\r\n### Choosing the Right Method\r\n\r\n1. **Understand user intent**:\r\n   - Find companies? → Use **company list search**\r\n   - Find people? → Use **people list search**\r\n\r\n2. **Check API documentation**:\r\n   - **Before executing list queries, must first check the corresponding API reference documentation**\r\n   - Company list: Check [references/company-list-api.md](references/company-list-api.md)\r\n   - People list: Check [references/human-list-api.md](references/human-list-api.md)\r\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\r\n\r\n3. **Optimize query parameters**:\r\n   - Use `products` parameter for precise product filtering, translate to English\r\n   - Use `existEmail=1` or `existPhone=1` to filter entities with contact information\r\n   - Use `countryCodes` to limit country scope\r\n\r\n### Handling Results\r\n\r\n3. **Handle jsonl files carefully**: For large data queries, pay attention to file size\r\n4. **Gradually enrich information**: Only call details/contact interfaces when needed\r\n   - Company IDs returned by both list interfaces can be used for both detail interfaces\r\n   - If user only needs a few companies, don't get details for all companies\r\n\r\n## Notes\r\n- Use hids for people search, pids for company search, be careful to distinguish\r\n- All timestamps are in milliseconds\r\n- Country codes use ISO 3166-1 alpha-2 format (e.g., CN, US, JP)\r\n- File paths use forward slashes on all platforms\r\n- Product names and industry names must be in **English**\r\n- Search quantity affects API response time, recommend setting timeout:120\r\n- **Prohibit outputting technical parameter format**: Do not display code-style parameters in responses, convert to natural language\r\n- **Do not estimate or guess per-call fees** — use `python scripts/auth.py --price_info` to get accurate pricing information\r\n- **Do not** guess parameter names, get accurate parameter names and formats from documentation\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1775789882908\n}\n\nFile v1.0.5:references/company-detail-api.md\n\n# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表\n\nFile v1.0.5:references/company-list-api.md\n\n# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.5:references/contact-api.md\n\n# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\nFile v1.0.5:references/human-detail-api.md\n\n# 人物详情 API 参考\n\n## python脚本参数\n- `--hids`：人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 人物标识\n- hid：人物ID\n- human_name：人物名称\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n- profiles：人物简介\n\n### 头像信息\n- logo_info：头像相关信息\n  - logo_url：原始链接\n  - logo_url_local：对象存储地址\n\n### 个人属性\n- languages_info：语言相关信息\n- certifications_info：证书相关信息\n\n### 教育经历\n- education_info：教育经历列表\n  - sid：学校ID\n  - school_name：学校名称\n  - start_date：开始日期（秒级时间戳）\n  - end_date：结束日期（秒级时间戳）\n  - degrees：学业程度列表\n  - majors：专业列表\n  - minors：辅修科目列表\n\n### 地址信息\n- addresses_info：地址相关信息列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型\n  - start_date：地址使用开始时间（秒级时间戳）\n  - end_date：地址使用结束时间（秒级时间戳）\n  - country_code：地址所属国家代码\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\nFile v1.0.5:references/human-list-api.md\n\n# 人物列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### ID筛选\n- hids（数组）：人物ID列表\n- pids（数组）：公司ID列表\n- sids（数组）：学校ID列表\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及人名、公司名、行业、简介、职位、角色等）\n- humanNames（数组）：人物名关键词列表\n- humanNamesFilter（数组）：人物名不包含的关键词\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- profiles（数组）：个人简介关键词列表\n\n### 行业筛选\n- humanIndustries（数组）：人物行业列表\n- humanIndustriesFilter（数组）：不包含的人物行业列表\n- companyIndustries（数组）：公司行业列表\n- companyIndustriesFilter（数组）：不包含的公司行业列表\n\n### 职位参数\n- titleNames（数组）：职位名称关键词列表\n- titleNamesFilter（数组）：不包含的职位名称关键词列表\n- titleRoles（数组）：职位角色关键词列表\n- titleSubRoles（数组）：职位子角色关键词列表\n- titleLevels（数组）：职位级别关键词列表\n- jobStartDate（整数）：当前职位开始时间（秒级时间戳）\n- jobEndDate（整数）：当前职位结束时间（秒级时间戳）\n- minExperienceNum（整数）：最小工作经历次数（包含当前值）\n- maxExperienceNum（整数）：最大工作经历次数（不包含当前值）\n- experienceDesc（字符串）：经历总结描述\n\n### 公司与学校\n- schoolNames（数组）：学校名称列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType（整数）：0=未检测，1=个人，2=公司，3=不确定\n- interests（数组）：兴趣爱好列表\n- skills（数组）：技能列表\n- languages（数组）：语言列表\n- certifications（数组）：证书列表\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 链接筛选\n- humanUrls（数组）：人物链接（官网、领英）列表\n- companyUrls（数组）：公司链接（官网、领英）列表\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n\n### 其他参数\n- sourceNames（数组）：数据来源（depth_company=全球企业库，linkedin=领英）\n- sort（整数）：0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 人物标识\n- hid：人物唯一标识\n- pid：公司唯一标识\n- human_name：人物名称\n- company_name：公司名称\n- country_code：人物所属国家ISO代码\n\n### 职位信息\n- title_names：职位名称列表\n- title_levels：职位级别列表\n- employee：公司员工人数范围\n- experience_num：工作经历次数\n\n### 行业信息\n- human_industries：人物行业描述列表\n- company_industries：公司行业描述列表\n\n### 个人信息\n- gender：F=女性，M=男性\n- humanType：1=个人，2=公司，3=不确定\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n- exist_company_website：1=存在，2=不存在\n\n### 其他\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）\n\nFile v1.0.5:requirements.txt\n\nhttpx>=0.23.0","readmeExcerpt":"Skill: Comprehensive overseas corporate data and business intelligence lookup built exclusively for global B2B practitioners. Run worldwide company and contact searchqueries tailored to cross-border exporters.Locate international enterprises and validate full business credentials: corporate emails, business phone lines andemployee job titles. Filter high-intent export sales leads and qualified prospects for global tr","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"cat ~/.upkuajing/.env"},{"language":"text","snippet":"UPKUAJING_API_KEY=your_api_key_here"},{"language":"bash","snippet":"python scripts/error_report.py --params '{\"requestPath\":\"/agent/search/company/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"Company/people search failed with a server error\"}'"},{"language":"bash","snippet":"python scripts/company_list_search.py \\\n  --params '{\"products\": [\"LED lights\"], \"countryCodes\": [\"CN\"], \"existEmail\": 1}' \\\n  --query_count 20"},{"language":"bash","snippet":"python scripts/human_list_search.py \\\n  --params '{\"companyNames\": [\"XXXX\"], \"titleRoles\": [\"CTO\"]}' \\\n  --query_count 20"},{"language":"bash","snippet":"python scripts/company_list_search.py --params '{\"products\": [\"electronics\"], \"countryCodes\": [\"US\"], \"existEmail\": 1}' --query_count 1000"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: upkuajing-global-company-people-search\ndescription: \"Search global companies and professional contacts for cross‑border B2B lead generation. Help exporters, sourcing agents and sales teams identify purchasing decision‑makers, source qualified suppliers and speed‑up international customer acquisition. Access business registration records, company intelligence and verified contact details including Emails, Phone numbers and WhatsApp profiles. Optimized for export‑oriented client development, company background verification and global supplier prospecting.\\n\\nTrigger: find companies, find people, export sales leads, B2B leads, verify a contact, get verified business emails, global supplier search\"\nmetadata: {\"version\":\"1.0.10\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🏢\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# UpKuaJing Company and People Search\n\nQuery corporate business information and people data using the UpKuaJing Open Platform API. This skill uses an **entity-driven approach**: finding target entities directly through company attributes (product, industry, size) and people attributes (position, school, experience).\n\n## Overview\n\nThis skill provides access to UpKuaJing's global company database and people data through five scripts: two list searches (companies, people) and three enhancement interfaces (company details, people details, contact information).\nAPI key generation and top-up are provided through the `auth.py` script.\n\n## Running Scripts\n\n### Environment Setup\n\n1. **Check Python**: `python --version`\n2. **Install dependencies**: `pip install -r requirements.txt`\n\nScript directory: `scripts/*.py`\nRun example: `python scripts/*.py`\n\n**Important**: Always use direct script invocation like `python scripts/company_list_search.py`. **Do NOT use** shell compound commands like `cd scripts && python company_list_search.py`.\n\n### Two Search Methods\n\n**Company List Search** (`company_list_search.py`)\n- **Return granularity**: Each company as one record\n- **Use cases**: Focus on \"which companies exist\"\n- **Examples**:\n   - \"Find manufacturers producing LED lights\"\n   - \"Find tech companies with 100-500 employees\"\n- **Parameters**: See [Company List](references/company-list-api.md)\n\n**People List Search** (`human_list_search.py`)\n- **Return granularity**: Each person as one record\n- **Use cases**: Focus on \"which people exist\"\n- **Examples**:\n  - \"Find CTOs at XXXX\"\n  - \"Find Sales Directors in China for XXX\"\n- **Parameters**: See [People List](references/human-list-api.md)\n\n### Three Enhancement Interfaces\n\nAfter obtaining company or people lists, use these interfaces to enrich information when necessary:\n\n**Company Details** (`company_details.py --pids *`)\n- Get company business registration information (excluding contact information)\n- **Parameters**: `--pids` List of company IDs (space-separated, obtained from list search), max 20 at a time\n\n**People Detai"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"upkuajing-global-company-people-search\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787562367413\n}"},{"path":"references/company-detail-api.md","content":"# 公司详情 API 参考\n\n## python脚本参数\n- `--pids`：公司ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家ISO代码\n\n### 公司规模\n- employee：员工人数范围\n- employee_num：员工人数\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间（秒级时间戳）\n- revenue_usd：营收（千美元）\n- status：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表\n  - address：详细地址\n  - postal_code：邮政编码\n  - address_type_id：地址类型（0=未知，1=注册，2=服务，3=邮寄，4=发票，5=贸易，6=家庭，7=工作，8=主要，9=其他）\n  - start_date：地址开始时间（秒级时间戳）\n  - end_date：地址结束时间（秒级时间戳）\n  - country_code：国家ISO2\n  - province_id：省份ID\n  - city_id：城市ID\n  - country_en：国家名称\n  - province_en：省份名称\n  - city_en：城市名称\n  - street：街道\n\n### 其他\n- stock_codes：股票代码列表\n- logos：公司logo信息\n- products：公司产品列表"},{"path":"references/company-list-api.md","content":"# 公司列表搜索 API 参考\n\n## python脚本参数\n- `--params`: API业务参数（JSON字符串）\n- `--task_id`：任务ID；用于继续之前的任务或断点续传\n- `--query_count`：期望获取的总记录数；默认20；范围20~1000\n- params、task_id 必须指定其一，不能同时指定\n\n## params API业务参数\n\n### 必需参数\n- sort（整数）：排序类型；0=匹配度排序，1=综合排序\n- isExact（布尔值）：true=精确匹配，false=模糊匹配\n\n### 关键词搜索\n- keywords（数组）：关键词列表（涉及公司名、行业、简介、经营范围、产品、标签）\n- companyNames（数组）：公司名称关键词列表\n- companyNamesFilter（数组）：公司名称不包含的关键词\n- products（数组）：产品关键词列表\n- productsFilter（数组）：不包含的产品关键词\n\n### 行业与规模\n- industries（数组）：行业列表\n- industriesFilter（数组）：不包含的行业列表\n- companySizes（数组）：公司规模（0-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+）\n\n### 地理筛选\n- countryCodes（数组）：国家代码列表（ISO 3166-1 alpha-2）\n- countryCodesFilter（数组）：不包含的国家代码\n\n### 营收与成立时间\n- minRevenue（数字）：最低营收（千美元，包含当前值）\n- maxRevenue（数字）：最高营收（千美元，不包含当前值）\n- minCompanyFounded（整数）：最早成立年（包含当前值）\n- maxCompanyFounded（整数）：最近成立年（不包含当前值）\n\n### 公司类型与状态\n- companyTypeIds（数组）：公司类型ID列表\n- companyStatusIds（数组）：公司状态（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 联系方式筛选\n- existPhone：0=全部，1=存在，2=不存在\n- existEmail：0=全部，1=存在，2=不存在\n- existWhatsApp：0=全部，1=存在，2=不存在\n- existWebsite：0=全部，1=存在，2=不存在\n- existSocial：0=全部，1=存在，2=不存在\n- existValidPhone：0=全部，1=存在，2=不存在\n- existValildEmail：0=全部，1=存在，2=不存在\n- existValildWebsite：0=全部，1=存在，2=不存在\n- existPersonContact：0=全部，1=存在，2=不存在\n\n### 其他筛选\n- pids（数组）：公司ID列表\n- companyUrls（数组）：公司链接列表\n- sourceNames（数组）：数据来源（apollo=阿波罗，customs=海关，depth_company=全球企业库，linkedin=领英）\n- cursor（字符串）：查询游标；首次请求不传\n\n## 响应数据\n\n### 公司标识\n- pid：公司ID\n- company_name：公司名称\n- company_names：公司曾用名列表\n- country_code：国家二字码\n\n### 公司规模\n- employee：员工范围\n- employee_num：员工数量\n- entity_type：公司实体类型\n\n### 财务与状态\n- incorp_date：公司成立时间戳（秒级）\n- revenue_usd：营收（千美元）\n- status：公司状态ID（1=在业，2=注销，3=吊销，4=迁出，5=经营异常）\n\n### 行业与地址\n- industries：行业描述列表\n- addresses：公司地址列表（含邮编、国家、省、市、街道）\n- stock_codes：股票代码列表\n\n### 产品与标签\n- products：产品名称列表\n- tags：公司标签\n- product_alias：产品近似词列表\n- product_downstream：产品下游词列表\n- product_superordinate：产品上游词列表\n\n### 联系方式数量\n- phone_num：电话数量\n- email_num：邮箱数量\n- website_num：网址数量\n- social_num：社媒数量\n- ws_num：WhatsApp数量\n\n### 其他\n- logos：公司logo信息\n- person_contact_show：一条存在的员工联系方式\n- source_name：数据来源\n- rate：数据评分\n- es_score：es匹配评分\n- cursor：查询游标（用于下一页）"},{"path":"references/contact-api.md","content":"# 获取联系方式 API 参考\n\n## python脚本参数\n- `--bus_type`：业务类型（必需）；1=公司，2=人物\n- `--bus_ids`：公司ID或人物ID列表（空格分隔，必需，最多20个）\n\n## 响应数据\n\n### 邮箱列表 emails\n- val：邮箱地址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 电话列表 phones\n- val：电话\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_ws：是否WhatsApp（0=未检测，1=是，2=否，3=不确定）\n- phone_type：号码类型（0=未检测，1=固定电话，2=移动电话，3=已检测但未知）\n- country_code：电话所属国家二字码\n- dialing_code：电话所属国际冠码\n- area_code：电话所属地区码\n- international_number：国际格式号码\n- telephone：号码（去除冠码与区码）\n- national_number：号码属国格式\n\n### 社交媒体列表 socials\n- val：社媒完整链接\n- social_url：社媒链接路径\n- social_type：社媒类型（linkedin, facebook, twitter, youtube, instagram, pinterest, github, tiktok）\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- reason：原因\n\n### 网站列表 websites\n- val：网址\n- is_valid：是否有效（0=未检测，1=是，2=否，3=不确定）\n- is_sensitive：是否敏感（0=未检测，1=是，2=否，3=不确定）\n- reason：原因"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1412,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:38:20.565Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:30:06.205Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}