{"id":"14263785-f338-4d72-823a-fea69176595a","entityType":"agent","slug":"clawhub-upkuajing-linkedin-person-education","name":"Retrieving LinkedIn personnel educational background queries, fetching educationalexperiences containing institutions, degrees, majors, and GPAs from LinkedIn data bypersonnel ID. Helping recruiters, HR teams, and hiring managers verify educationalbackgro","canonicalUrl":"https://www.xpersona.co/agent/clawhub-upkuajing-linkedin-person-education","canonicalPath":"/agent/clawhub-upkuajing-linkedin-person-education","generatedAt":"2026-10-11T17:45:56.297Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:59:00.267Z","emptyReason":null},"description":"Check LinkedIn‑sourced education history via personnel ID. Confirm degrees, majors and GPA data for background checks and candidate evaluation. Trigger:LinkedIn education background check, applicant qualification assessment, personnel academic record lookup, pre‑employment screening, hiring background verification","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:linkedin-person-education","sourceUrl":"https://clawhub.ai/upkuajing/linkedin-person-education","homepage":"https://clawhub.ai/upkuajing/skills/linkedin-person-education","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/upkuajing/linkedin-person-education","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/upkuajing/skills/linkedin-person-education","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Retrieving LinkedIn personnel educational background queries, fetching educationalexperiences containing institutions, degrees, majors, and GPAs from LinkedIn d"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:59:00.267Z","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-11T13:59:00.267Z","emptyReason":null},"stars":null,"forks":null,"downloads":1053,"packageName":null,"latestVersion":"1.0.3","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:59:00.203Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T13:59:00.267Z","lastCrawledAt":"2026-10-11T13:59:00.203Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T13:59:00.203Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.3","createdAt":"2026-08-24T09:25:37.934Z","changelog":"updated","fileCount":11,"zipByteSize":18685},{"version":"1.0.2","createdAt":"2026-07-16T07:30:56.821Z","changelog":"updated","fileCount":9,"zipByteSize":15899},{"version":"1.0.1","createdAt":"2026-07-13T02:54:24.051Z","changelog":"updated","fileCount":9,"zipByteSize":15906}]},"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-education","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17304xrt0p2xssnmr7datqzks83gvsr:linkedin-person-education` 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-education 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-education/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/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-11T17:45:56.296Z"}},"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-education/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-upkuajing-linkedin-person-education/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-11T13:59:00.267Z","emptyReason":null},"readme":"Skill: Retrieving LinkedIn personnel educational background queries, fetching educationalexperiences containing institutions, degrees, majors, and GPAs from LinkedIn data bypersonnel ID. Helping recruiters, HR teams, and hiring managers verify educationalbackgrounds, assess candidate qualifications, and make smart hiring decisions—suitable forcandidate screening, background verification, and talent assessment.\n\nOwner: upkuajing\n\nSummary: Check LinkedIn‑sourced education history via personnel ID. Confirm degrees, majors and GPA data for background checks and candidate evaluation. Trigger:LinkedIn education background check, applicant qualification assessment, personnel academic record lookup, pre‑employment screening, hiring background verification\n\nTags: applicant:1.0.3, background:1.0.3, education:1.0.3, latest:1.0.3, linkedin:1.0.3, people-enrichment:1.0.3, personnel:1.0.3, school:1.0.3, screening:1.0.3, validation:1.0.3\n\nVersion history:\n\nv1.0.3 | 2026-08-24T09:25:37.934Z | user\n\nupdated\n\nv1.0.2 | 2026-07-16T07:30:56.821Z | user\n\nupdated\n\nv1.0.1 | 2026-07-13T02:54:24.051Z | user\n\nupdated\n\nArchive index:\n\nArchive v1.0.3: 11 files, 18685 bytes\n\nFiles: references/linkedin-person-education-list-api.md (1464b), 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_education_list.py (1784b), scripts/version_check.py (4933b), skill-card.md (2776b), SKILL.md (8408b), _meta.json (144b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkedin-person-education\ndescription: \"Check LinkedIn‑sourced education history via personnel ID. Confirm degrees, majors and GPA data for background checks and candidate evaluation. \\n\\nTrigger:LinkedIn education background check, applicant qualification assessment, personnel academic record lookup, pre‑employment screening, hiring background verification\"\nmetadata: {\"version\":\"1.0.3\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"📚\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Education Query\n\nQuery education history data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to person education history from UpKuaJing's LinkedIn data. Given a person ID (hid), it returns the list of education records including schools attended, degrees obtained, majors, minors, and GPAs.\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_education_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_education_list.py`\n\n### Education History List Query (`linkedin_person_education_list.py`)\n- **Return granularity**: Each education record as one record\n- **Use cases**: View a person's education background, find out where someone studied\n- **Examples**:\n  - \"Find education history of person H_67890\"\n  - \"Get more education records using the next page cursor\"\n- **Parameters**: See [Education History List API](references/linkedin-person-education-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/education/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"LinkedIn education history 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 education 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 education history of person H_67890\" | Education History List Query |\n\n## Usage Examples\n\n### Query Education History List\n\n**User request**: \"Find education history of person H_67890\"\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890 --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- Education History List: Check [references/linkedin-person-education-list-api.md](references/linkedin-person-education-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-education-list-api.md](references/linkedin-person-education-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 `hid` (person ID) comes from **linkedin-person-search** for finding people\n   - The `sid` (school ID) from education results can be used with **linkedin-person-school-detail** to look up detailed school information including name, location, and website\n\n## Notes\n- Education records use `hid` as the person unique identifier; `sid` is the school identifier\n- `degrees` is an array of academic degrees; `majors` and `minors` are arrays of study fields\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-school-detail — Query school detail from LinkedIn data\n- global-company-person-education — Query education history list from the global company database\n- linkedin-person-alumni — Query alumni list from LinkedIn data\n- linkedin-person-experience — Query work experience 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.3:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-education\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1787563537934\n}\n\nFile v1.0.3:references/linkedin-person-education-list-api.md\n\n# LinkedIn人物教育经历列表 API 参考\n\n> 根据人物ID获取某人的教育经历列表，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/education/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| cursor | string | 否 | 分页游标，首次请求不传，翻页时传入上一次响应返回的cursor |\n| limit | integer | 否 | 每页条数，默认20 |\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- hid（string）：人物ID\n- sid（string）：学校ID\n- startDate（integer）：开始时间（秒级时间戳）\n- endDate（integer）：结束时间（秒级时间戳）\n- degrees（array[string]）：学业程度列表\n- majors（array[string]）：专业列表\n- minors（array[string]）：辅修科目列表\n- gpa（string）：平均学分绩点\n- summary（string）：总结\n\nFile v1.0.3: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.3:skill-card.md\n\n## Description:\n\nCheck LinkedIn-sourced education history by personnel ID, including institutions, degrees, majors, minors, GPAs, and summaries for candidate screening and background verification.\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, HR teams, hiring managers, and authorized agents use this skill to retrieve LinkedIn-sourced education records by personnel ID for candidate screening, background verification, and talent assessment. It can also guide account setup, pricing checks, pagination, and error reporting for the UpKuaJing API.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill performs background-check style education lookups against UpKuaJing and may expose candidate-related query data to that service.\n\nMitigation: Install and run it only when authorized to perform these lookups and when the organization's privacy and hiring-review requirements are satisfied.\n\nRisk: Queries may incur fees, including additional charges for paginated requests.\n\nMitigation: Check current pricing through the documented price flow and obtain explicit user confirmation before running any fee-incurring query.\n\nRisk: The API key can be stored in a local plaintext env file and could be exposed through chat, logs, or loose file permissions.\n\nMitigation: Use a secret manager or restricted file permissions, avoid printing the key, and rotate any key that was exposed.\n\n## Reference(s):\n\n- [LinkedIn Person Education List API](artifact/references/linkedin-person-education-list-api.md)\n- [Skill Error Report API](artifact/references/skill-error-report-api.md)\n- [ClawHub Skill Page](https://clawhub.ai/upkuajing/skills/linkedin-person-education)\n- [UpKuaJing Homepage](https://www.upkuajing.com)\n- [UpKuaJing Developer Portal](https://developer.upkuajing.com/)\n- [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\n- [Publisher Profile](https://clawhub.ai/user/upkuajing)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY; paid queries require explicit user confirmation before execution.]\n\n## Skill Version(s):\n\n1.0.3 (source: server release metadata and skill 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.3:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.2: 9 files, 15899 bytes\n\nFiles: references/linkedin-person-education-list-api.md (1464b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/linkedin_person_education_list.py (1581b), scripts/version_check.py (4933b), skill-card.md (2913b), SKILL.md (7302b), _meta.json (144b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: linkedin-person-education\ndescription: \"Check LinkedIn‑sourced education history via personnel ID. Confirm degrees, majors and GPA data for background checks and candidate evaluation. \\n\\nTrigger:LinkedIn education background check, applicant qualification assessment, personnel academic record lookup, pre‑employment screening, hiring background verification\"\nmetadata: {\"version\":\"1.0.2\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"📚\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Education Query\n\nQuery education history data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to person education history from UpKuaJing's LinkedIn data. Given a person ID (hid), it returns the list of education records including schools attended, degrees obtained, majors, minors, and GPAs.\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_education_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_education_list.py`\n\n### Education History List Query (`linkedin_person_education_list.py`)\n- **Return granularity**: Each education record as one record\n- **Use cases**: View a person's education background, find out where someone studied\n- **Examples**:\n  - \"Find education history of person H_67890\"\n  - \"Get more education records using the next page cursor\"\n- **Parameters**: See [Education History List API](references/linkedin-person-education-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 education 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 education history of person H_67890\" | Education History List Query |\n\n## Usage Examples\n\n### Query Education History List\n\n**User request**: \"Find education history of person H_67890\"\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890 --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- Education History List: Check [references/linkedin-person-education-list-api.md](references/linkedin-person-education-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-education-list-api.md](references/linkedin-person-education-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 `hid` (person ID) comes from **linkedin-person-search** for finding people\n   - The `sid` (school ID) from education results can be used with **linkedin-person-school-detail** to look up detailed school information including name, location, and website\n\n## Notes\n- Education records use `hid` as the person unique identifier; `sid` is the school identifier\n- `degrees` is an array of academic degrees; `majors` and `minors` are arrays of study fields\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-school-detail — Query school detail from LinkedIn data\n- global-company-person-education — Query education history list from the global company database\n- linkedin-person-alumni — Query alumni list from LinkedIn data\n- linkedin-person-experience — Query work experience 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.2:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-education\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1784187056821\n}\n\nFile v1.0.2:references/linkedin-person-education-list-api.md\n\n# LinkedIn人物教育经历列表 API 参考\n\n> 根据人物ID获取某人的教育经历列表，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/education/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| cursor | string | 否 | 分页游标，首次请求不传，翻页时传入上一次响应返回的cursor |\n| limit | integer | 否 | 每页条数，默认20 |\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- hid（string）：人物ID\n- sid（string）：学校ID\n- startDate（integer）：开始时间（秒级时间戳）\n- endDate（integer）：结束时间（秒级时间戳）\n- degrees（array[string]）：学业程度列表\n- majors（array[string]）：专业列表\n- minors（array[string]）：辅修科目列表\n- gpa（string）：平均学分绩点\n- summary（string）：总结\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nRetrieves LinkedIn-sourced education history by person ID, including schools, degrees, majors, minors, GPAs, and pagination data for candidate background review. <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, HR teams, hiring managers, and authorized screening workflows use this skill to retrieve education records for a LinkedIn person ID when assessing candidate qualifications or verifying academic background. Review is recommended before installation because the security evidence flags candidate-data handling, paid API calls, plaintext API key storage, account top-up helpers, and version-check persistence. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Candidate and employee education data may be sensitive and may require authorization before querying. <br>\nMitigation: Use only for authorized screening or verification workflows and avoid exposing returned records beyond the intended hiring review process. <br>\nRisk: API calls may incur fees and the skill includes account top-up helpers. <br>\nMitigation: Inform users about paid calls and obtain explicit confirmation before execution; verify pricing through the provider before running paginated lookups. <br>\nRisk: The skill stores API keys in plaintext under ~/.upkuajing and may write version-check cache data. <br>\nMitigation: Protect local credential files, avoid printing .env contents in chat or logs, and disable or remove version-check or persistence behavior where telemetry retention is restricted. <br>\n\n\n## Reference(s): <br>\n- [ClawHub listing](https://clawhub.ai/upkuajing/skills/linkedin-person-education) <br>\n- [UpKuaJing homepage](https://www.upkuajing.com) <br>\n- [UpKuaJing developer platform](https://developer.upkuajing.com/) <br>\n- [UpKuaJing pricing](https://www.upkuajing.com/web/openapi/price.html) <br>\n- [LinkedIn person education list API reference](references/linkedin-person-education-list-api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [JSON, Text, Shell commands, Configuration guidance] <br>\n**Output Format:** [JSON API responses and concise Markdown guidance with shell command examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Python and UPKUAJING_API_KEY; calls may incur fees and may return fee metadata with account balance and call cost.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server release and artifact 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.2:requirements.txt\n\nhttpx>=0.23.0\n\nArchive v1.0.1: 9 files, 15906 bytes\n\nFiles: references/linkedin-person-education-list-api.md (1464b), requirements.txt (14b), scripts/auth.py (5860b), scripts/common.py (14567b), scripts/linkedin_person_education_list.py (1581b), scripts/version_check.py (4933b), skill-card.md (3129b), SKILL.md (7026b), _meta.json (144b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: linkedin-person-education\ndescription: Official skill for upkuajing (跨境魔方). Query education history list (教育经历列表) from LinkedIn data. Get person education background including schools, degrees, majors, and GPAs, with cursor-based pagination.\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 Education Query\n\nQuery education history data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to person education history from UpKuaJing's LinkedIn data. Given a person ID (hid), it returns the list of education records including schools attended, degrees obtained, majors, minors, and GPAs.\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_education_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_education_list.py`\n\n### Education History List Query (`linkedin_person_education_list.py`)\n- **Return granularity**: Each education record as one record\n- **Use cases**: View a person's education background, find out where someone studied\n- **Examples**:\n  - \"Find education history of person H_67890\"\n  - \"Get more education records using the next page cursor\"\n- **Parameters**: See [Education History List API](references/linkedin-person-education-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 education 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 education history of person H_67890\" | Education History List Query |\n\n## Usage Examples\n\n### Query Education History List\n\n**User request**: \"Find education history of person H_67890\"\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890\n```\n\n**Get next page** (use cursor returned from previous response):\n```bash\npython scripts/linkedin_person_education_list.py --hid H_67890 --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- Education History List: Check [references/linkedin-person-education-list-api.md](references/linkedin-person-education-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-education-list-api.md](references/linkedin-person-education-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 `hid` (person ID) comes from **linkedin-person-search** for finding people\n   - The `sid` (school ID) from education results can be used with **linkedin-person-school-detail** to look up detailed school information including name, location, and website\n\n## Notes\n- Education records use `hid` as the person unique identifier; `sid` is the school identifier\n- `degrees` is an array of academic degrees; `majors` and `minors` are arrays of study fields\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-school-detail — Query school detail from LinkedIn data\n- global-company-person-education — Query education history list from the global company database\n- linkedin-person-alumni — Query alumni list from LinkedIn data\n- linkedin-person-experience — Query work experience 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.1:_meta.json\n\n{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-education\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783911264051\n}\n\nFile v1.0.1:references/linkedin-person-education-list-api.md\n\n# LinkedIn人物教育经历列表 API 参考\n\n> 根据人物ID获取某人的教育经历列表，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/education/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| cursor | string | 否 | 分页游标，首次请求不传，翻页时传入上一次响应返回的cursor |\n| limit | integer | 否 | 每页条数，默认20 |\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- hid（string）：人物ID\n- sid（string）：学校ID\n- startDate（integer）：开始时间（秒级时间戳）\n- endDate（integer）：结束时间（秒级时间戳）\n- degrees（array[string]）：学业程度列表\n- majors（array[string]）：专业列表\n- minors（array[string]）：辅修科目列表\n- gpa（string）：平均学分绩点\n- summary（string）：总结\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nQueries UpKuaJing LinkedIn-derived person education history by person ID, including schools, degrees, majors, minors, GPAs, summaries, and 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>\nExternal recruiters, HR teams, and hiring managers use this skill to query a person's education history from LinkedIn-derived data for candidate screening, academic background verification, and talent evaluation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill queries LinkedIn-derived personal education data through a paid third-party service. <br>\nMitigation: Use it only with a lawful and authorized basis for each profile lookup, minimize requested data, and avoid using results as the sole basis for employment decisions. <br>\nRisk: API calls and account top-up actions can incur charges. <br>\nMitigation: Confirm paid calls and top-up actions with the user before execution, and check current pricing through the documented pricing page or price-info command. <br>\nRisk: The UpKuaJing API key may be stored in a plaintext home-directory file. <br>\nMitigation: Prefer a protected environment variable where possible, restrict access to the local key file, avoid shared machines, and delete the key file when the skill is no longer needed. <br>\nRisk: The security review verdict is suspicious because the skill combines personal data lookup, billing behavior, and persistent local files. <br>\nMitigation: Review the security summary before deployment, run the skill in a controlled environment, and limit installation to users who understand the data, billing, and credential-handling implications. <br>\n\n\n## Reference(s): <br>\n- [LinkedIn Person Education List API Reference](references/linkedin-person-education-list-api.md) <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- [ClawHub Skill Page](https://clawhub.ai/upkuajing/skills/linkedin-person-education) <br>\n- [ClawHub Publisher Profile](https://clawhub.ai/user/upkuajing) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, JSON] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses from the UpKuaJing service.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Supports cursor-based pagination; each queried page is a separate paid API call.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release evidence and skill frontmatter 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","readmeExcerpt":"Skill: Retrieving LinkedIn personnel educational background queries, fetching educationalexperiences containing institutions, degrees, majors, and GPAs from LinkedIn data bypersonnel ID. Helping recruiters, HR teams, and hiring managers verify educationalbackgrounds, assess candidate qualifications, and make smart hiring decisions—suitable forcandidate screening, background verification, and talent assessment. Owner:","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/education/list\",\"requestId\":\"f47ac10b58cc4372a5670e02b2c3d479\",\"context\":\"LinkedIn education history query failed with a server error\"}'"},{"language":"bash","snippet":"python scripts/linkedin_person_education_list.py --hid H_67890"},{"language":"bash","snippet":"python scripts/linkedin_person_education_list.py --hid H_67890 --cursor 'cursor_string_from_previous_response'"},{"language":"bash","snippet":"cat ~/.upkuajing/.env"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkedin-person-education\ndescription: \"Check LinkedIn‑sourced education history via personnel ID. Confirm degrees, majors and GPA data for background checks and candidate evaluation. \\n\\nTrigger:LinkedIn education background check, applicant qualification assessment, personnel academic record lookup, pre‑employment screening, hiring background verification\"\nmetadata: {\"version\":\"1.0.3\",\"homepage\":\"https://www.upkuajing.com\",\"clawdbot\":{\"emoji\":\"📚\",\"requires\":{\"bins\":[\"python\"],\"env\":[\"UPKUAJING_API_KEY\"]},\"primaryEnv\":\"UPKUAJING_API_KEY\"}}\n---\n\n# LinkedIn Person Education Query\n\nQuery education history data from LinkedIn using the UpKuaJing Open Platform API.\n\n## Overview\n\nThis skill provides access to person education history from UpKuaJing's LinkedIn data. Given a person ID (hid), it returns the list of education records including schools attended, degrees obtained, majors, minors, and GPAs.\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_education_list.py`. **Do NOT use** shell compound commands like `cd scripts && python linkedin_person_education_list.py`\n\n### Education History List Query (`linkedin_person_education_list.py`)\n- **Return granularity**: Each education record as one record\n- **Use cases**: View a person's education background, find out where someone studied\n- **Examples**:\n  - \"Find education history of person H_67890\"\n  - \"Get more education records using the next page cursor\"\n- **Parameters**: See [Education History List API](references/linkedin-person-education-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 Er"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn76ywjzma121r2rh959ejsf49834c6x\",\n  \"slug\": \"linkedin-person-education\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1787563537934\n}"},{"path":"references/linkedin-person-education-list-api.md","content":"# LinkedIn人物教育经历列表 API 参考\n\n> 根据人物ID获取某人的教育经历列表，支持游标翻页。\n> 接口路径：`POST /agent/search/linkedin/person/education/list`\n\n## python脚本参数\n\n- `--hid`：人物ID（必填），如 `H_67890`\n- `--cursor`：分页游标（可选），首次查询不传，翻页时传入上一次响应返回的cursor\n\n## API请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| hid | string | 是 | 人物ID |\n| cursor | string | 否 | 分页游标，首次请求不传，翻页时传入上一次响应返回的cursor |\n| limit | integer | 否 | 每页条数，默认20 |\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- hid（string）：人物ID\n- sid（string）：学校ID\n- startDate（integer）：开始时间（秒级时间戳）\n- endDate（integer）：结束时间（秒级时间戳）\n- degrees（array[string]）：学业程度列表\n- majors（array[string]）：专业列表\n- minors（array[string]）：辅修科目列表\n- gpa（string）：平均学分绩点\n- summary（string）：总结"},{"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\nCheck LinkedIn-sourced education history by personnel ID, including institutions, degrees, majors, minors, GPAs, and summaries for candidate screening and background verification.\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, HR teams, hiring managers, and authorized agents use this skill to retrieve LinkedIn-sourced education records by personnel ID for candidate screening, background verification, and talent assessment. It can also guide account setup, pricing checks, pagination, and error reporting for the UpKuaJing API.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill performs background-check style education lookups against UpKuaJing and may expose candidate-related query data to that service.\n\nMitigation: Install and run it only when authorized to perform these lookups and when the organization's privacy and hiring-review requirements are satisfied.\n\nRisk: Queries may incur fees, including additional charges for paginated requests.\n\nMitigation: Check current pricing through the documented price flow and obtain explicit user confirmation before running any fee-incurring query.\n\nRisk: The API key can be stored in a local plaintext env file and could be exposed through chat, logs, or loose file permissions.\n\nMitigation: Use a secret manager or restricted file permissions, avoid printing the key, and rotate any key that was exposed.\n\n## Reference(s):\n\n- [LinkedIn Person Education List API](artifact/references/linkedin-person-education-list-api.md)\n- [Skill Error Report API](artifact/references/skill-error-report-api.md)\n- [ClawHub Skill Page](https://clawhub.ai/upkuajing/skills/linkedin-person-education)\n- [UpKuaJing Homepage](https://www.upkuajing.com)\n- [UpKuaJing Developer Portal](https://developer.upkuajing.com/)\n- [Detailed Price Description](https://www.upkuajing.com/web/openapi/price.html)\n- [Publisher Profile](https://clawhub.ai/user/upkuajing)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires UPKUAJING_API_KEY; paid queries require explicit user confirmation before execution.]\n\n## Skill Version(s):\n\n1.0.3 (source: server release metadata and skill 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":1547,"uniquenessScore":39,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T13:59:00.267Z","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-11T13:59:00.267Z","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-11T17:45:56.297Z","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"}]}}}