{"id":"35e9aa40-71b1-41da-a457-c961df223b35","entityType":"agent","slug":"clawhub-upkuajing-linkedin-person-alumni","name":"Identifies alumni connections from LinkedIn datasets using school-ID and personnel-IDinputs. It maps out alumni-related ties linked to individuals and educationalinstitutions. Recruiters, sales teams and B2B lead-generation specialists explore alumninetwo","canonicalUrl":"https://www.xpersona.co/agent/clawhub-upkuajing-linkedin-person-alumni","canonicalPath":"/agent/clawhub-upkuajing-linkedin-person-alumni","generatedAt":"2026-10-14T15:30:56.827Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:33:56.978Z","emptyReason":null},"description":"Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list. Trigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 996 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:linkedin-person-alumni","sourceUrl":"https://clawhub.ai/upkuajing/linkedin-person-alumni","homepage":"https://clawhub.ai/upkuajing/skills/linkedin-person-alumni","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/upkuajing/linkedin-person-alumni","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/upkuajing/skills/linkedin-person-alumni","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Identifies alumni connections from LinkedIn datasets using school-ID and personnel-IDinputs. It maps out alumni-related ties linked to individuals and education"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:33:56.978Z","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-11T20:33:56.978Z","emptyReason":null},"stars":null,"forks":null,"downloads":996,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.5","tractionLabel":"996 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:33:56.965Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T20:33:56.978Z","lastCrawledAt":"2026-10-11T20:33:56.965Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T20:33:56.965Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.5","createdAt":"2026-08-24T09:28:20.772Z","changelog":"updated","fileCount":11,"zipByteSize":18457},{"version":"1.0.4","createdAt":"2026-07-16T08:10:18.040Z","changelog":"updated","fileCount":9,"zipByteSize":15617},{"version":"1.0.1","createdAt":"2026-07-16T08:08:25.838Z","changelog":"updated","fileCount":9,"zipByteSize":15598},{"version":"1.0.0","createdAt":"2026-07-13T07:24:24.436Z","changelog":"updated","fileCount":9,"zipByteSize":15523}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:linkedin-person-alumni","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:linkedin-person-alumni` 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/linkedin-person-alumni 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-linkedin-person-alumni/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/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-14T15:30:56.826Z"}},"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-linkedin-person-alumni/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-alumni/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-11T20:33:56.978Z","emptyReason":null},"readme":"Skill: Identifies alumni connections from LinkedIn datasets using school-ID and personnel-IDinputs. It maps out alumni-related ties linked to individuals and educationalinstitutions. Recruiters, sales teams and B2B lead-generation specialists explore alumninetworks, track educational-background connections and build expanded contact databases.This tool works well for talent sourcing, institutional-network research and B2Blead-generation workflows.\n\nOwner: upkuajing\n\nSummary: Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list. Trigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis\n\nTags: B2B:1.0.5, alumni:1.0.5, former-employee:1.0.5, latest:1.0.5, linkedin:1.0.5, network:1.0.5, people-enrichment:1.0.5, prospecting:1.0.5\n\nVersion history:\n\nv1.0.5 | 2026-08-24T09:28:20.772Z | user\n\nupdated\n\nv1.0.4 | 2026-07-16T08:10:18.040Z | user\n\nupdated\n\nv1.0.1 | 2026-07-16T08:08:25.838Z | user\n\nupdated\n\nv1.0.0 | 2026-07-13T07:24:24.436Z | user\n\nupdated\n\nArchive index:\n\nArchive v1.0.5: 11 files, 18457 bytes\n\nFiles: references/linkedin-person-alumni-list-api.md (1134b), references/skill-error-report-api.md (2070b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/error_report.py (1845b), scripts/linkedin_person_alumni_list.py (1981b), scripts/version_check.py (4933b), skill-card.md (2615b), SKILL.md (8326b), _meta.json (141b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkedin-person-alumni\ndescription: \"Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list.\\n\\nTrigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis\"\nmetadata: {\"version\":\"1.0.5\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Alumni Query\n\nQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to alumni information from UpKuaJing's LinkedIn data. Given a person ID (hid) and a school ID (sid), it returns the list of alumni with their person IDs and school IDs.\n\n- The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n- The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\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/linkedin_person_alumni_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_alumni_list.py`\n\n### Alumni List Query (`linkedin_person_alumni_list.py`)\n- **Return granularity**: Each alumni as one record\n- **Use cases**: Find alumni of a specific person from a specific school\n- **Examples**:\n  - \"Find alumni of person H_67890 from school S_001\"\n  - \"Get more alumni using the next page cursor\"\n- **Parameters**: See [Alumni List API](references/linkedin-person-alumni-list-api.md)\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/linkedin/person/alumni/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"LinkedIn alumni list query 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### Query Billing Rules\n\nBilled by **number of calls**, each call returns one page of alumni records:\n- Each API call incurs a fee\n- Use `--cursor` to get additional pages (each page is a separate call)\n- **Before execution:**\n  1. Inform user that this query will incur a fee\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## Workflow\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find alumni of person H_67890 from school S_001\" | Alumni List Query |\n\n## Usage Examples\n\n### Query Alumni List\n\n**User request**: \"Find alumni of person H_67890 from school S_001\"\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'\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- Alumni List: Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n- Error Report: Check [references/skill-error-report-api.md](references/skill-error-report-api.md)\n\n## Best Practices\n\n1. **Check API documentation**:\n   - **Before executing queries, must first check the corresponding API reference documentation**\n   - Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n2. **Pagination**:\n   - When the response returns a non-empty `cursor`, more data is available\n   - Pass the `cursor` value to get the next page\n   - An empty `cursor` means there is no more data\n\n3. **Cross-skill usage**:\n   - The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\n   - The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n\n## Notes\n- Alumni records use `hid` as the person unique identifier; `sid` is the school identifier\n- File paths use forward slashes on all platforms\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 LinkedIn data\n- linkedin-person-education — Query education history list from LinkedIn data\n- linkedin-company-search — Search companies from LinkedIn data\n- global-company-person-alumni — Query alumni list from the global company database\n- linkedin-person-colleague — Query colleague list from LinkedIn data\n- global-company-person-search — Search people from the global company database\n- upkuajing-global-company-people-search — Unified company and people search across all sources\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- upkuajing-email-tool — Email verification and sending tool\n- upkuajing-sms-tool — SMS tool\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-alumni\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1787563700772\n}\n\nFile v1.0.5:references/linkedin-person-alumni-list-api.md\n\n# 领英校友列表 API 参考\n\n> 根据人物ID和学校ID获取某人的校友信息，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/alumni/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--sid`：学校ID（必填），如 `S_001`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| sid | string | 是 | 学校ID |\n| cursor | string | 否 | 分页游标，首次请求传空串，翻页时传入上一次响应返回的cursor |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：响应码，0 表示成功\n- msg（string）：响应消息\n- data：校友列表数据（见下）\n- fee：计费信息（apiCost 本次扣费、accountBalance 账户余额、uuid 调用标识）\n\n### data 字段\n\n- cursor（string）：下一页游标，为空表示无更多数据\n- list（array）：校友列表\n\n### list 校友字段\n\n- sid（string）：学校ID\n- hid（string）：人物ID\n\nFile v1.0.5: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.5:skill-card.md\n\n## Description:\n\nFind alumni connections from LinkedIn data using a school ID and person ID to support alumni network research, talent sourcing, and B2B contact enrichment.\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\nRecruiters, sales teams, B2B lead-generation specialists, and agents acting for them use this skill to query alumni ties between a person and an educational institution, then page through returned alumni records for sourcing or relationship research.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill stores and reads an UpKuaJing API key from a home-directory environment file, and the security evidence warns against exposing that file.\n\nMitigation: Use a scoped secret mechanism for UPKUAJING_API_KEY, do not print the local environment file, and rotate the key if it is exposed.\n\nRisk: The skill uses paid UpKuaJing API calls and can initiate account top-up flows.\n\nMitigation: Confirm each paid query or top-up action explicitly before execution, and check current pricing through the documented pricing flow.\n\nRisk: The skill sends LinkedIn-related person and school identifiers, and optional error-report context, to a third-party service.\n\nMitigation: Share only the identifiers and diagnostic context needed for the request, and confirm error reporting before sending troubleshooting data.\n\n## Reference(s):\n\n- [LinkedIn Person Alumni List API](references/linkedin-person-alumni-list-api.md)\n- [Skill Error Report API](references/skill-error-report-api.md)\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/linkedin-person-alumni)\n- [UpKuaJing homepage](https://www.upkuajing.com)\n- [UpKuaJing developer platform](https://developer.upkuajing.com/)\n- [UpKuaJing API pricing](https://www.upkuajing.com/web/openapi/price.html)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, JSON]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires an UPKUAJING_API_KEY; alumni queries are paid API calls and may use cursor-based pagination.]\n\n## Skill Version(s):\n\n1.0.5 (source: server evidence and frontmatter)\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.5:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.4: 9 files, 15617 bytes\n\nFiles: references/linkedin-person-alumni-list-api.md (1134b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/linkedin_person_alumni_list.py (1778b), scripts/version_check.py (4933b), skill-card.md (2591b), SKILL.md (7229b), _meta.json (141b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkedin-person-alumni\ndescription: \"Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list.\\n\\nTrigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis\"\nmetadata: {\"version\":\"1.0.4\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Alumni Query\n\nQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to alumni information from UpKuaJing's LinkedIn data. Given a person ID (hid) and a school ID (sid), it returns the list of alumni with their person IDs and school IDs.\n\n- The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n- The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\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/linkedin_person_alumni_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_alumni_list.py`\n\n### Alumni List Query (`linkedin_person_alumni_list.py`)\n- **Return granularity**: Each alumni as one record\n- **Use cases**: Find alumni of a specific person from a specific school\n- **Examples**:\n  - \"Find alumni of person H_67890 from school S_001\"\n  - \"Get more alumni using the next page cursor\"\n- **Parameters**: See [Alumni List API](references/linkedin-person-alumni-list-api.md)\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### Query Billing Rules\n\nBilled by **number of calls**, each call returns one page of alumni records:\n- Each API call incurs a fee\n- Use `--cursor` to get additional pages (each page is a separate call)\n- **Before execution:**\n  1. Inform user that this query will incur a fee\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## Workflow\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find alumni of person H_67890 from school S_001\" | Alumni List Query |\n\n## Usage Examples\n\n### Query Alumni List\n\n**User request**: \"Find alumni of person H_67890 from school S_001\"\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'\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### API Documentation Reference\n\n- Alumni List: Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n\n## Best Practices\n\n1. **Check API documentation**:\n   - **Before executing queries, must first check the corresponding API reference documentation**\n   - Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n2. **Pagination**:\n   - When the response returns a non-empty `cursor`, more data is available\n   - Pass the `cursor` value to get the next page\n   - An empty `cursor` means there is no more data\n\n3. **Cross-skill usage**:\n   - The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\n   - The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n\n## Notes\n- Alumni records use `hid` as the person unique identifier; `sid` is the school identifier\n- File paths use forward slashes on all platforms\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 LinkedIn data\n- linkedin-person-education — Query education history list from LinkedIn data\n- linkedin-company-search — Search companies from LinkedIn data\n- global-company-person-alumni — Query alumni list from the global company database\n- linkedin-person-colleague — Query colleague list from LinkedIn data\n- global-company-person-search — Search people from the global company database\n- upkuajing-global-company-people-search — Unified company and people search across all sources\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- upkuajing-email-tool — Email verification and sending tool\n- upkuajing-sms-tool — SMS tool\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-alumni\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1784189418040\n}\n\nFile v1.0.4:references/linkedin-person-alumni-list-api.md\n\n# 领英校友列表 API 参考\n\n> 根据人物ID和学校ID获取某人的校友信息，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/alumni/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--sid`：学校ID（必填），如 `S_001`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| sid | string | 是 | 学校ID |\n| cursor | string | 否 | 分页游标，首次请求传空串，翻页时传入上一次响应返回的cursor |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：响应码，0 表示成功\n- msg（string）：响应消息\n- data：校友列表数据（见下）\n- fee：计费信息（apiCost 本次扣费、accountBalance 账户余额、uuid 调用标识）\n\n### data 字段\n\n- cursor（string）：下一页游标，为空表示无更多数据\n- list（array）：校友列表\n\n### list 校友字段\n\n- sid（string）：学校ID\n- hid（string）：人物ID\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nFind alumni connections in LinkedIn data from a person ID and school ID for talent sourcing and B2B contact enrichment. <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 recruiters, sales teams, and B2B lead-generation specialists use this skill to identify alumni ties between a person and school in LinkedIn-derived data. It supports talent sourcing, institutional-network research, and contact-database expansion. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uses a paid UpKuaJing API and each alumni-list page can incur a fee. <br>\nMitigation: Confirm pricing and get explicit user approval before running fee-incurring API calls; use the pricing command or pricing page for current costs. <br>\nRisk: The API key may be stored in a plaintext ~/.upkuajing/.env file. <br>\nMitigation: Protect local credential files, avoid sharing the key, and remove or rotate the key if the environment is no longer trusted. <br>\nRisk: Alumni lookup results may contain personal or contact-related data. <br>\nMitigation: Use the data only with a lawful and policy-compliant basis for recruiting, sales, or research workflows. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/linkedin-person-alumni) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing Open Platform](https://developer.upkuajing.com/) <br>\n- [UpKuaJing pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [LinkedIn person alumni list API reference](references/linkedin-person-alumni-list-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API Calls, JSON, Shell commands, Guidance] <br>\n**Output Format:** [JSON responses with alumni records, pagination cursor, and fee information, plus concise guidance when credentials, balance, or parameters need attention.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Python, httpx, and UPKUAJING_API_KEY; calls may incur per-page UpKuaJing API fees.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: evidence.release.version and SKILL.md 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.4:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.1: 9 files, 15598 bytes\n\nFiles: references/linkedin-person-alumni-list-api.md (1134b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/linkedin_person_alumni_list.py (1778b), scripts/version_check.py (4933b), skill-card.md (2620b), SKILL.md (7229b), _meta.json (141b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: linkedin-person-alumni\ndescription: \"Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list.\\n\\nTrigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis\"\nmetadata: {\"version\":\"1.0.1\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Alumni Query\n\nQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to alumni information from UpKuaJing's LinkedIn data. Given a person ID (hid) and a school ID (sid), it returns the list of alumni with their person IDs and school IDs.\n\n- The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n- The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\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/linkedin_person_alumni_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_alumni_list.py`\n\n### Alumni List Query (`linkedin_person_alumni_list.py`)\n- **Return granularity**: Each alumni as one record\n- **Use cases**: Find alumni of a specific person from a specific school\n- **Examples**:\n  - \"Find alumni of person H_67890 from school S_001\"\n  - \"Get more alumni using the next page cursor\"\n- **Parameters**: See [Alumni List API](references/linkedin-person-alumni-list-api.md)\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### Query Billing Rules\n\nBilled by **number of calls**, each call returns one page of alumni records:\n- Each API call incurs a fee\n- Use `--cursor` to get additional pages (each page is a separate call)\n- **Before execution:**\n  1. Inform user that this query will incur a fee\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## Workflow\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find alumni of person H_67890 from school S_001\" | Alumni List Query |\n\n## Usage Examples\n\n### Query Alumni List\n\n**User request**: \"Find alumni of person H_67890 from school S_001\"\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'\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### API Documentation Reference\n\n- Alumni List: Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n\n## Best Practices\n\n1. **Check API documentation**:\n   - **Before executing queries, must first check the corresponding API reference documentation**\n   - Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n2. **Pagination**:\n   - When the response returns a non-empty `cursor`, more data is available\n   - Pass the `cursor` value to get the next page\n   - An empty `cursor` means there is no more data\n\n3. **Cross-skill usage**:\n   - The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\n   - The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n\n## Notes\n- Alumni records use `hid` as the person unique identifier; `sid` is the school identifier\n- File paths use forward slashes on all platforms\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 LinkedIn data\n- linkedin-person-education — Query education history list from LinkedIn data\n- linkedin-company-search — Search companies from LinkedIn data\n- global-company-person-alumni — Query alumni list from the global company database\n- linkedin-person-colleague — Query colleague list from LinkedIn data\n- global-company-person-search — Search people from the global company database\n- upkuajing-global-company-people-search — Unified company and people search across all sources\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- upkuajing-email-tool — Email verification and sending tool\n- upkuajing-sms-tool — SMS tool\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-alumni\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1784189305838\n}\n\nFile v1.0.1:references/linkedin-person-alumni-list-api.md\n\n# 领英校友列表 API 参考\n\n> 根据人物ID和学校ID获取某人的校友信息，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/alumni/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--sid`：学校ID（必填），如 `S_001`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| sid | string | 是 | 学校ID |\n| cursor | string | 否 | 分页游标，首次请求传空串，翻页时传入上一次响应返回的cursor |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：响应码，0 表示成功\n- msg（string）：响应消息\n- data：校友列表数据（见下）\n- fee：计费信息（apiCost 本次扣费、accountBalance 账户余额、uuid 调用标识）\n\n### data 字段\n\n- cursor（string）：下一页游标，为空表示无更多数据\n- list（array）：校友列表\n\n### list 校友字段\n\n- sid（string）：学校ID\n- hid（string）：人物ID\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nFinds alumni connections from LinkedIn data using school and person identifiers, helping users trace education-based relationships for sourcing, research, and lead-generation workflows. <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>\nRecruiters, sales teams, B2B lead-generation specialists, and institutional researchers use this skill to query alumni relationships for a specific person and school. It supports talent sourcing, educational-network research, and contact-database enrichment when users have the required UpKuaJing API access. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends LinkedIn-related person and school identifiers to a paid third-party data provider. <br>\nMitigation: Use only with data you are permitted to process, and confirm that UpKuaJing is an acceptable provider for the workflow before running queries. <br>\nRisk: Alumni lookup calls and top-up actions can incur fees. <br>\nMitigation: Require explicit user confirmation before paid queries or top-up-related actions, and review current pricing before execution. <br>\nRisk: The API key may be read from or saved to a local plaintext file. <br>\nMitigation: Store the key only in an approved environment, restrict filesystem access, and rotate the key if it may have been exposed. <br>\n\n\n## Reference(s): <br>\n- [Alumni List API reference](references/linkedin-person-alumni-list-api.md) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing developer portal](https://developer.upkuajing.com/) <br>\n- [UpKuaJing pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/linkedin-person-alumni) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, JSON, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with command examples and JSON API responses] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Python and UPKUAJING_API_KEY; alumni queries use paginated paid API calls.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (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.1:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.0: 9 files, 15523 bytes\n\nFiles: references/linkedin-person-alumni-list-api.md (1134b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/linkedin_person_alumni_list.py (1778b), scripts/version_check.py (4933b), skill-card.md (2573b), SKILL.md (6910b), _meta.json (141b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: linkedin-person-alumni\ndescription: Official skill for upkuajing (跨境魔方). Query alumni list (校友列表) from LinkedIn data. Get alumni information including person IDs and school IDs, with cursor-based pagination.\nmetadata: {\"version\":\"1.0.0\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Alumni Query\n\nQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to alumni information from UpKuaJing's LinkedIn data. Given a person ID (hid) and a school ID (sid), it returns the list of alumni with their person IDs and school IDs.\n\n- The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n- The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\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/linkedin_person_alumni_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_alumni_list.py`\n\n### Alumni List Query (`linkedin_person_alumni_list.py`)\n- **Return granularity**: Each alumni as one record\n- **Use cases**: Find alumni of a specific person from a specific school\n- **Examples**:\n  - \"Find alumni of person H_67890 from school S_001\"\n  - \"Get more alumni using the next page cursor\"\n- **Parameters**: See [Alumni List API](references/linkedin-person-alumni-list-api.md)\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### Query Billing Rules\n\nBilled by **number of calls**, each call returns one page of alumni records:\n- Each API call incurs a fee\n- Use `--cursor` to get additional pages (each page is a separate call)\n- **Before execution:**\n  1. Inform user that this query will incur a fee\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## Workflow\n\n### Decision Guide\n\n| User Intent | Use API |\n|-------------|---------|\n| \"Find alumni of person H_67890 from school S_001\" | Alumni List Query |\n\n## Usage Examples\n\n### Query Alumni List\n\n**User request**: \"Find alumni of person H_67890 from school S_001\"\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'\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### API Documentation Reference\n\n- Alumni List: Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n\n## Best Practices\n\n1. **Check API documentation**:\n   - **Before executing queries, must first check the corresponding API reference documentation**\n   - Check [references/linkedin-person-alumni-list-api.md](references/linkedin-person-alumni-list-api.md)\n   - Do not guess parameter names, get accurate parameter names and formats from documentation\n\n2. **Pagination**:\n   - When the response returns a non-empty `cursor`, more data is available\n   - Pass the `cursor` value to get the next page\n   - An empty `cursor` means there is no more data\n\n3. **Cross-skill usage**:\n   - The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\n   - The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n\n## Notes\n- Alumni records use `hid` as the person unique identifier; `sid` is the school identifier\n- File paths use forward slashes on all platforms\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 LinkedIn data\n- linkedin-person-education — Query education history list from LinkedIn data\n- linkedin-company-search — Search companies from LinkedIn data\n- global-company-person-alumni — Query alumni list from the global company database\n- linkedin-person-colleague — Query colleague list from LinkedIn data\n- global-company-person-search — Search people from the global company database\n- upkuajing-global-company-people-search — Unified company and people search across all sources\n- upkuajing-contact-info-validity-check — Check contact info validity\n- upkuajing-email-tool — Email verification and sending tool\n- upkuajing-sms-tool — SMS tool\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-alumni\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1783927464436\n}\n\nFile v1.0.0:references/linkedin-person-alumni-list-api.md\n\n# 领英校友列表 API 参考\n\n> 根据人物ID和学校ID获取某人的校友信息，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/alumni/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--sid`：学校ID（必填），如 `S_001`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| sid | string | 是 | 学校ID |\n| cursor | string | 否 | 分页游标，首次请求传空串，翻页时传入上一次响应返回的cursor |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：响应码，0 表示成功\n- msg（string）：响应消息\n- data：校友列表数据（见下）\n- fee：计费信息（apiCost 本次扣费、accountBalance 账户余额、uuid 调用标识）\n\n### data 字段\n\n- cursor（string）：下一页游标，为空表示无更多数据\n- list（array）：校友列表\n\n### list 校友字段\n\n- sid（string）：学校ID\n- hid（string）：人物ID\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nQueries UpKuaJing LinkedIn alumni data for alumni associated with a given person ID and school ID, returning person and school identifiers with cursor-based pagination. <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>\nRecruiters, sales teams, and B2B lead builders use this skill to discover alumni connections for talent sourcing, school network research, and lead generation from UpKuaJing LinkedIn data. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill manages an external UpKuaJing service account and can store an API key locally. <br>\nMitigation: Install only if local credential storage is acceptable, keep the API key secret, and review or remove ~/.upkuajing/.env when it is no longer needed. <br>\nRisk: Alumni queries and top-up workflows can create billable activity. <br>\nMitigation: Check current pricing before use and require explicit user confirmation before paid queries, creating recharge orders, or opening payment flows. <br>\nRisk: Detailed API logging can write request and response data to local files when enabled. <br>\nMitigation: Leave detailed logging disabled unless needed, and review or delete ~/.upkuajing/logs if sensitive query or response data may have been recorded. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/upkuajing/skills/linkedin-person-alumni) <br>\n- [Alumni List API Reference](references/linkedin-person-alumni-list-api.md) <br>\n- [UpKuaJing Homepage](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\n\n## Skill Output: <br>\n**Output Type(s):** [text, json, shell commands, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY; query calls may incur fees and can return paginated results through a cursor.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata 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.0:requirements.txt\n\nhttpx>=0.23.0","readmeExcerpt":"Skill: Identifies alumni connections from LinkedIn datasets using school-ID and personnel-IDinputs. It maps out alumni-related ties linked to individuals and educationalinstitutions. Recruiters, sales teams and B2B lead-generation specialists explore alumninetworks, track educational-background connections and build expanded contact databases.This tool works well for talent sourcing, institutional-network research an","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/linkedin/person/alumni/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"LinkedIn alumni list query failed with a server error\"}'"},{"language":"bash","snippet":"python scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001"},{"language":"bash","snippet":"python scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'"},{"language":"bash","snippet":"cat ~/.upkuajing/.env"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkedin-person-alumni\ndescription: \"Find alumni connections via school ID and personnel ID from LinkedIn. Trace educational‑based networks to source talents and grow your B2B contact list.\\n\\nTrigger: LinkedIn alumni discovery, educational‑network mapping, alumni‑connection research, talent sourcing, B2B contact enrichment, institutional relationship analysis\"\nmetadata: {\"version\":\"1.0.5\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Alumni Query\n\nQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to alumni information from UpKuaJing's LinkedIn data. Given a person ID (hid) and a school ID (sid), it returns the list of alumni with their person IDs and school IDs.\n\n- The `hid` (person ID) can be obtained from **linkedin-person-search** (person search) results\n- The `sid` (school ID) can be obtained from **linkedin-person-education** (education history query) results\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/linkedin_person_alumni_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_alumni_list.py`\n\n### Alumni List Query (`linkedin_person_alumni_list.py`)\n- **Return granularity**: Each alumni as one record\n- **Use cases**: Find alumni of a specific person from a specific school\n- **Examples**:\n  - \"Find alumni of person H_67890 from school S_001\"\n  - \"Get more alumni using the next page cursor\"\n- **Parameters**: See [Alumni List API](references/linkedin-person-alumni-list-api.md)\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 ["},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-alumni\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1787563700772\n}"},{"path":"references/linkedin-person-alumni-list-api.md","content":"# 领英校友列表 API 参考\n\n> 根据人物ID和学校ID获取某人的校友信息，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/alumni/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--sid`：学校ID（必填），如 `S_001`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| sid | string | 是 | 学校ID |\n| cursor | string | 否 | 分页游标，首次请求传空串，翻页时传入上一次响应返回的cursor |\n\n## 响应数据\n\n### 外层结构\n\n- code（integer）：响应码，0 表示成功\n- msg（string）：响应消息\n- data：校友列表数据（见下）\n- fee：计费信息（apiCost 本次扣费、accountBalance 账户余额、uuid 调用标识）\n\n### data 字段\n\n- cursor（string）：下一页游标，为空表示无更多数据\n- list（array）：校友列表\n\n### list 校友字段\n\n- sid（string）：学校ID\n- hid（string）：人物ID"},{"path":"references/skill-error-report-api.md","content":"# 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 |"},{"path":"skill-card.md","content":"## Description:\n\nFind alumni connections from LinkedIn data using a school ID and person ID to support alumni network research, talent sourcing, and B2B contact enrichment.\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\nRecruiters, sales teams, B2B lead-generation specialists, and agents acting for them use this skill to query alumni ties between a person and an educational institution, then page through returned alumni records for sourcing or relationship research.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill stores and reads an UpKuaJing API key from a home-directory environment file, and the security evidence warns against exposing that file.\n\nMitigation: Use a scoped secret mechanism for UPKUAJING_API_KEY, do not print the local environment file, and rotate the key if it is exposed.\n\nRisk: The skill uses paid UpKuaJing API calls and can initiate account top-up flows.\n\nMitigation: Confirm each paid query or top-up action explicitly before execution, and check current pricing through the documented pricing flow.\n\nRisk: The skill sends LinkedIn-related person and school identifiers, and optional error-report context, to a third-party service.\n\nMitigation: Share only the identifiers and diagnostic context needed for the request, and confirm error reporting before sending troubleshooting data.\n\n## Reference(s):\n\n- [LinkedIn Person Alumni List API](references/linkedin-person-alumni-list-api.md)\n- [Skill Error Report API](references/skill-error-report-api.md)\n- [ClawHub skill page](https://clawhub.ai/upkuajing/skills/linkedin-person-alumni)\n- [UpKuaJing homepage](https://www.upkuajing.com)\n- [UpKuaJing developer platform](https://developer.upkuajing.com/)\n- [UpKuaJing API pricing](https://www.upkuajing.com/web/openapi/price.html)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, JSON]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires an UPKUAJING_API_KEY; alumni queries are paid API calls and may use cursor-based pagination.]\n\n## Skill Version(s):\n\n1.0.5 (source: server evidence and frontmatter)\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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1620,"uniquenessScore":36,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T20:33:56.978Z","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-11T20:33:56.978Z","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-14T15:30:56.827Z","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"}]}}}