Initial commit

This commit is contained in:
Z User
2026-06-06 05:21:10 +00:00
Unverified
commit 6664758a6d
493 changed files with 135653 additions and 0 deletions

View File

@@ -0,0 +1,363 @@
---
name: aminer-free-academic
version: 1.1.1
author: AMiner
contact: report@aminer.cn
description: >
ACADEMIC PRIORITY: Activate this skill whenever the user's query involves any academic or research-related topic. This is the free-tier entry point for AMiner academic search.
Free-tier-only AMiner skill (7 free APIs, zero cost). Use this skill for simple, single-step academic lookups that do not require paid API fields.
Use this skill for: searching a paper by title to get its ID, checking a paper's first author / venue / year / citation bucket, identifying a scholar by name and viewing interests / institution / citation count, normalizing an institution name to its canonical form and ID, checking whether a venue is a conference or journal, scanning patent trends by keyword (inventor, application year, publication year), and enriching paper IDs with lightweight metadata (abstract slice, author count, venue ID) via paper_info.
Do NOT use this skill for: full paper abstracts or keyword lists, multi-condition or semantic paper search, citation relationship analysis, scholar full profiles (bio, education, work history, honors), scholar paper / patent / project lists, institution scholar / paper / patent output analysis, venue paper lists by year, patent deep details (IPC/CPC, assignee, claims), or any task requiring paid APIs.
Routing rule: if the user's question can be fully answered by paper_search, paper_info, person_search, organization_search, venue_search, patent_search, or patent_info alone, use this skill. Otherwise route to aminer-academic-search.
metadata:
{
"openclaw":
{
"requires": {"env": ["AMINER_API_KEY"] },
"primaryEnv": "AMINER_API_KEY"
}
}
---
# AMiner Free Search
Use this skill for AMiner requests that should stay on the free tier first. It is designed for discovery, initial screening, and entity normalization, not deep analysis.
## Scope
This skill uses only the upgraded free interfaces:
- `paper_search`
- `paper_info`
- `person_search`
- `organization_search`
- `venue_search`
- `patent_search`
- `patent_info`
Current free-tier fields emphasized by this skill:
- `paper_search`: `venue_name`, `first_author`, `n_citation_bucket`, `year`
- `paper_info`: `abstract_slice`, `year`, `venue_id`, `author_count`
- `organization_search`: `aliases` (top 3)
- `venue_search`: `aliases` (top 3), `venue_type`
- `patent_search`: `inventor_name` (first), `app_year`, `pub_year`
- `patent_info`: `app_year`, `pub_year`
- `person_search`: `interests`, `n_citation`, institution fields
## Primary Goal
Use free APIs to help the user answer:
- What is this entity?
- Is it relevant enough to continue?
- Which candidate should I inspect next?
- Can I normalize this institution or venue name?
- Is there enough value to justify upgrading to paid APIs?
Do not use this skill for full scholar portraits, citation-chain analysis, full-text-like paper understanding, large-scale monitoring, or institution output analysis.
## Mandatory Rules
1. Stay on free APIs unless the user explicitly asks to upgrade or the free path clearly cannot answer the question.
2. Be explicit about free-tier limits. Say what can be answered now and what would require a paid upgrade.
3. Use free results to narrow candidates before suggesting any paid API.
4. If returning entities, append AMiner URLs when IDs are available:
- Paper: `https://www.aminer.cn/pub/{paper_id}`
- Scholar: `https://www.aminer.cn/profile/{scholar_id}`
- Patent: `https://www.aminer.cn/patent/{patent_id}`
- Venue: `https://www.aminer.cn/open/journal/detail/{venue_id}`
## Token Check (Required)
Before making any API call, verify that the environment variable `AMINER_API_KEY` exists. Never output the token in plain text.
```bash
if [ -z "${AMINER_API_KEY+x}" ]; then
echo "AMINER_API_KEY does not exist"
else
echo "AMINER_API_KEY exists"
fi
```
- If `${AMINER_API_KEY}` exists: proceed with the query.
- If `${AMINER_API_KEY}` is not set: stop immediately and guide the user to the [AMiner Console](https://open.aminer.cn/open/board?tab=control) to generate one. For help, see the [Open Platform Documentation](https://open.aminer.cn/open/docs).
- If the user provides `AMINER_API_KEY` inline (e.g. "My token is xxx"), accept it for the current session, but recommend setting it as an environment variable for better security.
## Invocation Style
Use direct `curl` calls by default. A Python wrapper is not required for this skill.
Default headers:
- `Authorization: ${AMINER_API_KEY}` by default
- `Content-Type: application/json;charset=utf-8` for POST requests
- `X-Platform: openclaw` when required by the gateway
## When To Use
Use this skill when the user asks for:
- free AMiner search
- low-cost academic discovery
- paper screening
- scholar identification
- institution normalization
- venue normalization
- patent trend scanning
- representative results before deeper analysis
Trigger phrases include:
- “先用免费接口”
- “不要走收费接口”
- “先帮我筛一下”
- “先看看值不值得深挖”
- “找几个候选”
- “做一个轻量版 skill”
## Free Workflows
### 1. Paper triage
Use when the user wants to quickly judge whether a paper is relevant.
Default chain:
`paper_search -> paper_info`
Return:
- title
- first author
- venue name
- year
- citation bucket
- abstract slice
- paper URL
This can answer:
- Is this probably the right paper?
- Is it recent?
- Is it from a recognizable venue?
- Is it worth opening in detail?
### 2. Scholar identification
Use when the user wants to know which scholar is the right person.
Default chain:
`person_search`
Return:
- name
- org
- interests
- citation count
- scholar URL
This can answer:
- Is this the right scholar?
- What interests best describe this person?
- Which institution candidate is the best match?
### 3. Institution normalization
Use when the user provides an institution string or abbreviation.
Default chain:
`organization_search`
Return:
- org id
- standard name
- aliases (top 3)
This can answer:
- Is this institution name recognized?
- Which canonical organization should downstream workflows use?
### 4. Venue normalization and type check
Use when the user provides a conference or journal name.
Default chain:
`venue_search`
Return:
- venue id
- standard bilingual name
- aliases (top 3)
- venue type
- venue URL
This can answer:
- Is this a conference or a journal?
- What is the standard venue entity?
### 5. Patent trend scan
Use when the user wants a lightweight view of patents in a topic.
Default chain:
`patent_search -> patent_info` when IDs need basic enrichment
Return:
- patent title
- first inventor
- app year
- pub year
- patent number and country when `patent_info` is added
- patent URL
This can answer:
- Is the topic active recently?
- Who appears first in the inventor field?
- Is there recent patent activity worth deeper review?
### 6. Free entity map
Use when the user wants a quick map of a topic across papers, scholars, venues, institutions, and patents without paying for analysis-grade APIs.
Suggested chain:
- papers: `paper_search -> paper_info`
- scholars: `person_search`
- institutions: `organization_search`
- venues: `venue_search`
- patents: `patent_search -> patent_info`
Return a short cross-entity summary, not a deep report.
## Free Skill Examples
### 1. Paper triage
```bash
curl -X GET \
'https://datacenter.aminer.cn/gateway/open_platform/api/paper/search?page=1&size=5&title=Attention%20Is%20All%20You%20Need' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw'
```
Then enrich with `paper_info`:
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/paper/info' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"ids":["<PAPER_ID>"]}'
```
### 2. Scholar identification
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/person/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"name":"Yann LeCun","size":5}'
```
### 3. Institution normalization
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/organization/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"orgs":["MIT CSAIL"]}'
```
### 4. Venue normalization and type check
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/venue/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"name":"tkde"}'
```
### 5. Patent trend scan
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/patent/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"query":"quantum computing chip","page":0,"size":10}'
```
## Output Pattern
Prefer this structure:
```markdown
## Free-tier result
### What we can answer now
- ...
### Top candidates
- ...
### Suggested next step
- Stay free: ...
- Upgrade to paid API only if you need: ...
```
## Paid Upgrade Boundary
Recommend upgrading only when the user needs one of these:
- full abstract or full paper metadata
- multi-condition or semantic paper search
- citation relationships
- full scholar profile, works, patents, or projects
- institution scholars, papers, patents, or rich profiles
- venue paper lists by year
- full patent details such as IPC/CPC, assignee, description
Suggested paid handoff:
- deeper paper analysis: `paper_search_pro`, `paper_detail`, `paper_relation`
- deeper scholar analysis: `person/detail`, `person/figure`, `person/paper/relation`
- deeper org analysis: `organization/detail`, `organization/person/relation`, `organization/paper/relation`
- deeper venue analysis: `venue/detail`, `venue/paper/relation`
- deeper patent analysis: `patent/detail`
## Product Positioning
This skill is intentionally positioned for:
- first success
- free discovery
- candidate narrowing
- entity normalization
- upgrade qualification
It should not replace the paid skill. It should create demand for it.
## Additional Reference
For endpoint parameters and fields, read [references/api-catalog.md](references/api-catalog.md).

View File

@@ -0,0 +1,93 @@
{
"skill_name": "aminer-free-academic",
"evals": [
{
"id": 1,
"prompt": "Help me quickly check whether the paper 'Attention Is All You Need' is worth a deep dive. Use only free AMiner APIs. My token is <YOUR_TOKEN>",
"expected_output": "Run the paper triage workflow: paper_search to locate the paper, then paper_info to enrich with abstract slice, year, venue, and author count. Output a lightweight card with a paper URL.",
"files": [],
"expectations": [
"Called Paper Search API (paper_search) to find the paper by title",
"Called Paper Info API (paper_info) with the returned paper ID",
"Output includes title, first_author, venue_name, year, and n_citation_bucket",
"Output includes abstract_slice from paper_info",
"Output includes a paper URL in the format https://www.aminer.cn/pub/{paper_id}",
"No paid API was called"
]
},
{
"id": 2,
"prompt": "I want to identify which 'Andrew Ng' on AMiner is the Stanford professor. Use only free APIs. My token is <YOUR_TOKEN>",
"expected_output": "Run the scholar identification workflow: person_search with name and optional org filter. Return candidate list with interests, org, and citation count to help the user pick the right one.",
"files": [],
"expectations": [
"Called Scholar Search API (person_search) with name 'Andrew Ng'",
"Output includes multiple candidates with name, org, interests, and n_citation",
"Output includes scholar URLs in the format https://www.aminer.cn/profile/{scholar_id}",
"No paid API was called"
]
},
{
"id": 3,
"prompt": "Normalize the institution name 'MIT CSAIL' using AMiner free APIs. My token is <YOUR_TOKEN>",
"expected_output": "Run the institution normalization workflow: organization_search with the raw institution string. Return the canonical org name, org_id, and aliases.",
"files": [],
"expectations": [
"Called Org Search API (organization_search) with orgs=['MIT CSAIL']",
"Output includes org_id and standardized org_name",
"Output includes aliases list",
"No paid API was called"
]
},
{
"id": 4,
"prompt": "Help me look up recent patents about quantum computing",
"expected_output": "Detect that the user has not provided a token; immediately stop all subsequent API calls and guide the user to obtain a token from the AMiner Console.",
"files": [],
"expectations": [
"Clearly inform the user that a token is currently missing and AMiner API calls cannot continue",
"No API calls were made",
"Provide the console link https://open.aminer.cn/open/board?tab=control",
"Prompt the user to continue after obtaining a token"
]
},
{
"id": 5,
"prompt": "Is 'TKDE' a conference or a journal? Help me normalize it using free AMiner APIs. My token is <YOUR_TOKEN>",
"expected_output": "Run the venue normalization workflow: venue_search with the name string. Return the standard bilingual name, venue_type, aliases, and venue URL.",
"files": [],
"expectations": [
"Called Venue Search API (venue_search) with name 'TKDE'",
"Output includes venue_id, standard name (English and/or Chinese), and venue_type",
"Output includes aliases list",
"Output includes a venue URL in the format https://www.aminer.cn/open/journal/detail/{venue_id}",
"No paid API was called"
]
},
{
"id": 6,
"prompt": "Scan recent patent activity in the field of 'autonomous driving lidar' using free APIs only. My token is <YOUR_TOKEN>",
"expected_output": "Run the patent trend scan workflow: patent_search to find patents, optionally enriched by patent_info. Return patent titles, first inventor, app_year, pub_year, and patent URLs.",
"files": [],
"expectations": [
"Called Patent Search API (patent_search) with a query about autonomous driving lidar",
"Output includes patent titles, inventor_name, app_year, and pub_year",
"Output includes patent URLs in the format https://www.aminer.cn/patent/{patent_id}",
"No paid API was called"
]
},
{
"id": 7,
"prompt": "Give me a quick free-tier overview of the topic 'graph neural network' — papers, scholars, institutions, and venues. My token is <YOUR_TOKEN>",
"expected_output": "Run the free entity map workflow: combine paper_search, person_search, organization_search, and venue_search to build a lightweight cross-entity summary.",
"files": [],
"expectations": [
"Called at least paper_search and person_search",
"Output covers multiple entity types (papers, scholars, and optionally institutions/venues)",
"Output includes AMiner URLs for returned entities",
"Clearly states what free-tier can answer and what would require paid upgrade",
"No paid API was called"
]
}
]
}

View File

@@ -0,0 +1,286 @@
# AMiner Free Search API Catalog
**Base URL**: `https://datacenter.aminer.cn/gateway/open_platform`
**Authentication**: All endpoints should default to `Authorization: ${AMINER_API_KEY}`. In workflow execution, also include `X-Platform: openclaw` when required by the gateway.
**Scope**: This catalog only documents the free APIs used by `aminer-free-academic`.
---
## Table of Contents
- [Paper APIs](#paper-apis)
- [Scholar APIs](#scholar-apis)
- [Institution APIs](#institution-apis)
- [Venue APIs](#venue-apis)
- [Patent APIs](#patent-apis)
---
## Paper APIs
### 1. Paper Search
- **URL**: `GET /api/paper/search`
- **Price**: Free
- **Description**: Search papers by title and return low-cost screening fields suitable for fast paper triage.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| page | number | Yes | Page number. Current online definition says it starts from `1`. |
| size | number | No | Page size, maximum `20` |
| title | string | Yes | Paper title |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Paper ID |
| title | Paper title |
| title_zh | Paper title in Chinese |
| doi | DOI |
| first_author | First author |
| venue_name | Venue title |
| n_citation_bucket | Citation bucket: `0`, `1-10`, `11-50`, `51-200`, `200-1000`, `1000-5000`, `5000+` |
| year | Publication year |
| total | Total count |
**curl Example:**
```bash
curl -X GET \
'https://datacenter.aminer.cn/gateway/open_platform/api/paper/search?page=1&size=10&title=Looking+at+CTR+Prediction+Again%3A+Is+Attention+All+You+Need' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw'
```
---
### 2. Paper Info
- **URL**: `POST /api/paper/info`
- **Price**: Free
- **Description**: Batch query paper basic cards by paper IDs. Suitable for enriching search results with lightweight metadata.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| ids | []string | Yes | Paper ID list, maximum `100` |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Paper ID |
| title | Paper title |
| abstract_slice | Partial abstract |
| authors | Author array |
| author_count | Total author count |
| issue | Volume / issue field |
| raw | Venue raw name |
| venue | Venue object |
| venue_id | Venue ID |
| year | Publication year |
**curl Example:**
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/paper/info' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"ids":["5ce2c5a5ced107d4c61c839b"]}'
```
---
## Scholar APIs
### 3. Scholar Search
- **URL**: `POST /api/person/search`
- **Price**: Free
- **Description**: Search scholar candidates by name and optional institution condition.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| name | string | No | Scholar name |
| offset | number | No | Starting position (fixed at 0; pagination not supported) |
| org | string | No | Institution name |
| size | number | No | Number of results, maximum `10` |
| org_id | []string | No | Institution entity ID list |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Scholar ID |
| interests | Research interests |
| n_citation | Citation count |
| name | Name |
| name_zh | Chinese name |
| org | Institution in English |
| org_id | Institution ID |
| org_zh | Institution in Chinese |
| total | Total count |
**curl Example:**
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/person/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"name":"王曙","offset":0,"org":"Shanghai Jiaotong","size":10}'
```
---
## Institution APIs
### 4. Org Search
- **URL**: `POST /api/organization/search`
- **Price**: Free
- **Description**: Search institution IDs and standard names from institution keywords.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| orgs | []string | No | Institution names |
**Response Fields:**
| Field | Description |
|--------|------|
| aliases | Alias list, partial and typically top 3 |
| org_id | Institution ID |
| org_name | Institution name |
| total | Total count |
**curl Example:**
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/organization/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"orgs":["清华大学"]}'
```
---
## Venue APIs
### 5. Venue Search
- **URL**: `POST /api/venue/search`
- **Price**: Free
- **Description**: Search venue IDs and standard names by venue keyword, including aliases and venue type.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| name | string | No | Venue name |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Venue ID |
| name_en | Venue English name |
| name_zh | Venue Chinese name |
| aliases | Alias list, partial and typically top 3 |
| venue_type | Venue type: `journal` or `conference` |
| total | Total count |
**curl Example:**
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/venue/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"name":"tkde"}'
```
---
## Patent APIs
### 6. Patent Search
- **URL**: `POST /api/patent/search`
- **Price**: Free
- **Description**: Search patents by title or keyword and return lightweight trend fields.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| query | string | Yes | Query text such as patent title or keywords |
| page | number | Yes | Page number |
| size | number | Yes | Page size |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Patent ID |
| title | Patent title in English |
| title_zh | Patent title in Chinese |
| inventor_name | First inventor name |
| app_year | Application year |
| pub_year | Publication year |
**curl Example:**
```bash
curl -X POST \
'https://datacenter.aminer.cn/gateway/open_platform/api/patent/search' \
-H 'Content-Type: application/json;charset=utf-8' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw' \
-d '{"page":0,"query":"Si02","size":20}'
```
---
### 7. Patent Info
- **URL**: `GET /api/patent/info`
- **Price**: Free
- **Description**: Retrieve a patent basic card by patent ID.
**Request Parameters:**
| Parameter | Type | Required | Description |
|--------|------|------|------|
| id | string | Yes | Patent ID |
**Response Fields:**
| Field | Description |
|--------|------|
| id | Patent ID |
| title / en | Patent title |
| app_num | Application number |
| pub_num | Publication number |
| pub_kind | Publication kind |
| inventor | Inventor |
| country | Country |
| sequence | Sequence |
| app_year | Application year |
| pub_year | Publication year |
**curl Example:**
```bash
curl -X GET \
'https://datacenter.aminer.cn/gateway/open_platform/api/patent/info?id=<PATENT_ID>' \
-H "Authorization: ${AMINER_API_KEY}" \
-H 'X-Platform: openclaw'
```