Install
openclaw skills install @upkuajing/linkedin-person-alumniFind 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
openclaw skills install @upkuajing/linkedin-person-alumniQuery alumni data from LinkedIn using the UpKuaJing Open Platform API.
This 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.
hid (person ID) can be obtained from linkedin-person-search (person search) resultssid (school ID) can be obtained from linkedin-person-education (education history query) resultspython --versionpip install -r requirements.txtScript directory: scripts/*.py
Run example: python scripts/*.py
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
linkedin_person_alumni_list.py)This skill requires an API key. The API key is stored in the ~/.upkuajing/.env file:
cat ~/.upkuajing/.env
Example file content:
UPKUAJING_API_KEY=your_api_key_here
First check if the ~/.upkuajing/.env file has UPKUAJING_API_KEY;
If UPKUAJING_API_KEY is not set, prompt the user to choose:
auth.py --new_key), the new key will be automatically saved to ~/.upkuajing/.env
Wait for user selection;When API response indicates insufficient balance, explain and guide user to top up:
auth.py --new_rec_order)Use this script to get account information for UPKUAJING_API_KEY: auth.py --account_info
When 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:
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"}'
All API calls incur fees, different interfaces have different billing methods.
Latest pricing: Users can visit Detailed Price Description
Or use: python scripts/auth.py --price_info (returns complete pricing for all interfaces)
Billed by number of calls, each call returns one page of alumni records:
--cursor to get additional pages (each page is a separate call)Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.
| User Intent | Use API |
|---|---|
| "Find alumni of person H_67890 from school S_001" | Alumni List Query |
User request: "Find alumni of person H_67890 from school S_001"
python scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001
Get next page (use cursor returned from previous response):
python scripts/linkedin_person_alumni_list.py --hid H_67890 --sid S_001 --cursor 'cursor_string_from_previous_response'
UPKUAJING_API_KEY in ~/.upkuajing/.env filepython scripts/error_report.py (see Report Skill Call Errors)Check API documentation:
Pagination:
cursor, more data is availablecursor value to get the next pagecursor means there is no more dataCross-skill usage:
sid (school ID) can be obtained from linkedin-person-education (education history query) resultshid (person ID) can be obtained from linkedin-person-search (person search) resultshid as the person unique identifier; sid is the school identifierpython scripts/auth.py --price_info to get accurate pricing informationOther UpKuaJing skills you might find useful: