Skill: shaopanguo/cnki-scholar (version 1.0.0)

--- name: cnki-scholar description: "中文学术论文搜索工具。搜索中英文论文，覆盖知网、万方、维普等中文数据库的论文。Use when: 用户说「搜论文」「查文献」「知网」「CNKI」「搜索中文学术论文」「找中文文献」，或需要搜索、下载、引用中英文论文。支持OpenAlex API（免费，2亿+论文）和Crossref API（DOI覆盖）。Also activate when: 用户需要学术搜索、论文元数据提取、引用格式生成。" --- # CNKI Scholar — 中文学术论文搜索 基于OpenAlex和Crossref API的学术搜索工具，覆盖中英文论文（包括知网收录的论文）。 ## 数据源 | 数据源 | 覆盖范围 | 优势 | 限制 | |--------|----------|------|------| | **OpenAlex** | 2亿+论文 | 免费、数据全、有被引量 | 部分中文论文元数据不完整 | | **Crossref** | DOI论文 | DOI解析准确 | 无被引量、中文覆盖少 | | **百度学术** | 中英文 | 知网论文覆盖好 | 需浏览器自动化 | ## 核心功能 ### 1. 搜索论文 使用OpenAlex API搜索： ```bash curl -s "https://api.openalex.org/works?search=YOUR_QUERY&per_page=10" ``` 支持的筛选参数： - `search=` — 关键词搜索 - `filter=publication_year:2020-2025` — 年份范围 - `filter=cited_by_count:>10` — 最低被引量 - `filter=primary_location.source.id:SOURCE_ID` — 特定期刊 - `sort=cited_by_count:desc` — 按被引量排序 ### 2. 提取元数据 每个结果包含： - 标题 (title) - 作者 (authorships[].author.display_name) - 发表年份 (publication_year) - 期刊 (primary_location.source.display_name) - DOI (doi) - 被引量 (cited_by_count) - OpenAlex ID (id) ### 3. 下载PDF OpenAlex提供OA（开放获取）链接： - 检查 `open_access.is_oa` 字段 - 获取 `open_access.oa_url` 字段 - 如果是OA论文，直接下载PDF ### 4. 导出引用 支持格式： - **APA 7th**: 作者. (年份). 标题. 期刊. DOI - **BibTeX**: 自动生成BibTeX条目 - **GB/T 7714**: 中国标准引用格式 ## 使用示例 ### 搜索示例 ``` 用户：帮我搜一下多智能体编队控制的论文 → 调用OpenAlex API搜索 "multi-agent formation control" → 返回top 10结果，按被引量排序 → 展示标题、作者、年份、被引量、期刊 ``` ### 下载PDF示例 ``` 用户：这篇论文能下载吗？DOI: 10.1109/tie.2017.2701778 → 检查OpenAlex的open_access字段 → 如果是OA，提供下载链接 → 如果不是OA，建议其他获取方式 ``` ### 引用导出示例 ``` 用户：帮我生成这篇论文的APA引用 → 解析元数据 → 生成APA 7th格式： Ge, X., & Han, Q.-L. (2017). Distributed Formation Control... IEEE Transactions on Industrial Electronics. https://doi.org/... ``` ## API调用脚本 ### 搜索函数 ```bash search_papers() { local query="$1" local limit="${2:-10}" local year_filter="${3:-}" local url="https://api.openalex.org/works?search=${query}&per_page=${limit}" if [ -n "$year_filter" ]; then url="${url}&filter=publication_year:${year_filter}" fi curl -s "$url" | python3 -c " import json, sys d = json.load(sys.stdin) for i, w in enumerate(d.get('results', []), 1): authors = ', '.join([a['author'].get('display_name','') for a in w.get('authorships',[])[:3]]) if len(w.get('authorships',[])) > 3: authors += ' et al.' source = '' if w.get('primary_location',{}).get('source'): source = w['primary_location']['source'].get('display_name','') print(f\"{i}. {w.get('title','')}\") print(f\" 作者: {authors}\") print(f\" 年份: {w.get('publication_year','')}\") print(f\" 期刊: {source}\") print(f\" 被引: {w.get('cited_by_count',0)}\") print(f\" DOI: {w.get('doi','')}\") oa = w.get('open_access',{}) if oa.get('is_oa'): print(f\" PDF: {oa.get('oa_url','')}\") print() " } ``` ### 获取论文详情 ```bash get_paper_by_doi() { local doi="$1" curl -s "https://api.openalex.org/works/doi:${doi}" } ``` ### 生成APA引用 ```bash generate_apa() { local doi="$1" curl -s "https://api.openalex.org/works/doi:${doi}" | python3 -c " import json, sys w = json.load(sys.stdin) authors = [] for a in w.get('authorships', []): name = a['author'].get('display_name', '') parts = name.split() if len(parts) >= 2: authors.append(f'{parts[-1]}, {parts[0][0]}.') else: authors.append(name) author_str = ', '.join(authors[:7]) if len(w.get('authorships', [])) > 7: author_str += ', ...' year = w.get('publication_year', 'n.d.') title = w.get('title', 'Untitled') source = '' if w.get('primary_location',{}).get('source'): source = w['primary_location']['source'].get('display_name','') doi = w.get('doi', '') print(f'{author_str} ({year}). {title}. {source}. {doi}') " } ``` ## 与百度学术的配合 对于知网独有（OpenAlex未收录）的论文，建议： 1. 先用OpenAlex搜索（数据更结构化） 2. 如果没找到，用 `baidu-scholar-search` 补充 3. 两者结合基本覆盖所有中英文论文 ## 限制 - OpenAlex的中文论文覆盖不如英文完整 - 部分中文论文缺少DOI - 被引量数据来自Crossref，可能与知网有差异 - 不支持直接下载知网PDF（需要机构访问权限） ## 文件结构 ``` cnki-scholar/ ├── SKILL.md └── references/ ├── openalex-fields.md # OpenAlex字段说明 └── citation-formats.md # 引用格式模板 ```

path: references/citation-formats.md
content: # 引用格式模板

## APA 7th 格式

### 期刊论文
```
作者1, 作者2, & 作者3. (年份). 论文标题. 期刊名, 卷(期), 页码. DOI
```

示例：
```
Ge, X., & Han, Q.-L. (2017). Distributed formation control of networked 
multi-agent systems using a dynamic event-triggered communication mechanism. 
IEEE Transactions on Industrial Electronics, 64(9), 7731-7740. 
https://doi.org/10.1109/tie.2017.2701778
```

### 作者规则
- 1-20位作者：全部列出
- 21位以上：前19位 + ... + 最后一位
- 中国作者：姓在前，名缩写
  - 正确：Li, X., & Wang, Y.
  - 错误：Xiaoduo Li, Yi Wang

### 多作者格式
- 2位：Author1, & Author2.
- 3位以上：Author1, Author2, & Author3.

## GB/T 7714 格式（中国标准）

### 期刊论文 [J]
```
[序号] 作者. 题名[J]. 刊名, 年, 卷(期): 起止页码.
```

示例：
```
[1] GE X, HAN Q L. Distributed formation control of networked multi-agent 
systems using a dynamic event-triggered communication mechanism[J]. IEEE 
Transactions on Industrial Electronics, 2017, 64(9): 7731-7740.
```

### 学位论文 [D]
```
[序号] 作者. 题名[D]. 保存地点: 保存单位, 年份.
```

### 会议论文 [C]
```
[序号] 作者. 题名[C]//会议名称. 出版地: 出版者, 年: 页码.
```

## BibTeX 格式

```bibtex
@article{ge2017distributed,
  author  = {Ge, Xiaohua and Han, Qing-Long},
  title   = {Distributed Formation Control of Networked Multi-Agent Systems 
             Using a Dynamic Event-Triggered Communication Mechanism},
  journal = {IEEE Transactions on Industrial Electronics},
  year    = {2017},
  volume  = {64},
  number  = {9},
  pages   = {7731--7740},
  doi     = {10.1109/tie.2017.2701778}
}
```

### BibTeX Key 命名规则
```
姓氏年份关键词
ge2017distributed
li2018event
```

## RIS 格式（EndNote/Zotero）

```
TY  - JOUR
AU  - Ge, Xiaohua
AU  - Han, Qing-Long
TI  - Distributed Formation Control of Networked Multi-Agent Systems
JO  - IEEE Transactions on Industrial Electronics
VL  - 64
IS  - 9
SP  - 7731
EP  - 7740
PY  - 2017
DO  - 10.1109/tie.2017.2701778
ER  - 
```

## 格式选择指南

| 场景 | 推荐格式 |
|------|----------|
| 英文论文 | APA 7th |
| 中文论文 | GB/T 7714 |
| LaTeX写作 | BibTeX |
| EndNote/Zotero | RIS |
| Word写作 | APA 或 GB/T |


path: references/openalex-fields.md
content: # OpenAlex API 字段说明

## 搜索接口

```
GET https://api.openalex.org/works?search=QUERY&per_page=N
```

### 常用参数

| 参数 | 说明 | 示例 |
|------|------|------|
| `search` | 关键词搜索 | `search=multi-agent control` |
| `per_page` | 每页数量 | `per_page=10` |
| `page` | 页码 | `page=1` |
| `filter` | 筛选条件 | `filter=publication_year:2023` |
| `sort` | 排序 | `sort=cited_by_count:desc` |

### Filter 语法

```
filter=field:value          # 精确匹配
filter=field:>value         # 大于
filter=field:<value         # 小于
filter=field:value1|value2  # 或
filter=field1:value1,field2:value2  # 且
```

### 常用 filter 字段

| 字段 | 说明 | 示例 |
|------|------|------|
| `publication_year` | 发表年份 | `publication_year:2020-2025` |
| `cited_by_count` | 被引量 | `cited_by_count:>50` |
| `primary_location.source.id` | 期刊ID | `primary_location.source.id:S12345` |
| `open_access.is_oa` | 是否开放获取 | `open_access.is_oa:true` |
| `type` | 文献类型 | `type:article` |

## 返回字段

### Work 对象

```json
{
  "id": "https://openalex.org/W1234567890",
  "doi": "https://doi.org/10.1109/xxx",
  "title": "Paper Title",
  "publication_year": 2023,
  "cited_by_count": 100,
  "open_access": {
    "is_oa": true,
    "oa_url": "https://example.com/paper.pdf"
  },
  "authorships": [
    {
      "author": {
        "id": "https://openalex.org/A12345",
        "display_name": "John Doe"
      },
      "institutions": [...]
    }
  ],
  "primary_location": {
    "source": {
      "display_name": "IEEE Transactions on...",
      "issn": "1234-5678"
    }
  },
  "concepts": [...],
  "referenced_works": [...],
  "related_works": [...]
}
```

### 获取单篇论文

```
GET https://api.openalex.org/works/doi:10.1109/xxx
GET https://openalex.org/W1234567890
```

### 搜索作者

```
GET https://api.openalex.org/authors?search=John+Doe
```

### 搜索期刊/来源

```
GET https://api.openalex.org/sources?search=IEEE+Transactions
```

## Rate Limits

- 无需API Key：100,000次/天，10次/秒
- 有API Key：无限制
- 注册地址：https://openalex.org/#api-key

## 中国机构ID

| 机构 | OpenAlex ID |
|------|-------------|
| 清华大学 | I12345... |
| 北京大学 | I12345... |
| 浙江大学 | I12345... |

可通过机构筛选论文：
```
filter=authorships.institutions.id:I12345
```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)