OpenAlex文献检索导出

SKILL研究检索

原名 OpenAlex Search API · 标识 openalex-wos-export

研究检索 未标注权限 许可证不明确
安装这个技能

从OpenAlex批量检索论文,导出为Web of Science文本格式或BibTeX,可直接导入Vosviewer、CitNetExplorer、Bibliometrix做文献

一句话选型结论

按资料字段整理

OpenAlex文献检索导出是研究检索类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类研究检索 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_60b02414/openalex
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

研究检索
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_60b02414仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量16.1 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
批量检索论文数据导出文献可视化格式生成带参考文献的题录

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查资料并整理出处

让模型按主题查资料,并把引用来源整理成清单。

网页与文献要点提炼

把长文、论文、网页压成能直接看的要点。

竞品与行业汇总

按关键词汇总竞品动态与行业信息。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在研究检索场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
OpenAlex文献检索导出当前 未标注权限 未标注 未标注 未标注 有
寻找技能 浏览器控制 GitHub 仓库 3120.0 万 Codex、Claude、Cursor 有
自我改进 Agent 接触敏感数据 ClawHub 市场 1646.4 万 OpenClaw 有
灵魂追踪 联网访问 GitHub 仓库 758.9 万 Codex、Claude、Cursor 有
自我完善 联网访问 ClawHub 市场 682.9 万 OpenClaw 有
微软代工厂 调用外部服务 GitHub 仓库 661.4 万 Codex、Claude、Cursor 有

SKILL.md 全文

16.1 KB
模型实际读到的说明书原文,来自技能仓库

OpenAlex → Web of Science 格式导出

把 OpenAlex 的检索结果批量导出成能被 EndNote / CiteSpace / VOSviewer / bibliometrix
读取的 ISI tagged 文件(savedrecs.txt),并带上每篇论文的参考文献列表。

输出文件夹规范(按数据源分文件夹,务必遵守)

同一工作区可能同时用 Scopus / OpenAlex / WoS 等多个数据源导出,所有导出和派生产物必须按数据源分文件夹存放,避免混在一个目录里:

<工作目录>/                  # 默认当前工作区根目录,或用户指定的目录
├── scopus/                  # Scopus 检索导出的原始数据(CSV/JSON)
├── openalex/                # OpenAlex 检索导出的原始数据(JSON/savedrecs.txt)
├── vosviewer/
│   ├── scopus/              # 基于 Scopus 数据生成的 map/network/截图
│   └── openalex/            # 基于 OpenAlex 数据生成的 map/network/截图
└── scripts/                 # 一次性转换脚本(可选)
  • 两个脚本的默认 --outdir 都指向当前工作目录下对应数据源的子文件夹(本脚本 → openalex/)。
  • 用户显式给了输出路径时以用户为准;没给时按上面的规范落位,并向用户说明文件放哪了。
  • VOSviewer 建图产物(map/network/GML/截图)放 vosviewer/<数据源>/,不要和数据混放。

三条官方硬规则(2026-10 文档核对,务必照做)

1. 认证与额度 — https://help.openalex.org/api/authentication/

  • key 走 api_key 查询参数,或 Authorization: Bearer <key>,两者等价;pyalex 用前者。
  • 无 key:$0.1/天 ≈ 1,000 credits;免费 key:$1/天 = 10,000 credits(10×)。
  • 端点计价:singleton $0 / list $0.0001(1 credit)/ search $0.001(10 credits)。
    一次 filter=... 列表查询 = 1 credit,所以"每批 100 个 ID 批量回查"是最省的用法。
  • 限速:无 key 10 rps;免费 key 30 rps;检索式含 >5 个 OR/AND/NOT 时降到 5 rps。
    超速的 429 不扣费,等一会儿重试即可。
  • 429 要指数退避(脚本内置 2^n 秒 + pyalex max_retries=5)。
  • 查余额:curl "https://api.openalex.org/rate-limit?api_key=KEY",
    或看响应头 X-RateLimit-Remaining / X-RateLimit-Remaining-USD / X-RateLimit-Reset。

key 的取法(脚本已实现三层优先级):--api-key > 环境变量 OPENALEX_API_KEY >
.env 文件。默认会依次找
~/.env、~/Desktop/.env、脚本同目录 .env,
键名兼容 OPENALEX_API_KEY / OpenAlexApi_key / OPENALEX_KEY(大小写、下划线都会归一化)。

用户第一次用 OpenAlex、没有账户时:agent 可一键代办。 一次 POST 即可代用户申请
(无需用户先注册、无需复制粘贴):

curl -X POST https://api.openalex.org/api-keys \
  -H "Content-Type: application/json" \
  -d '{"email": "<用户的真实邮箱>"}'

要点:必须先向用户要真实邮箱,绝不能编造(占位邮箱、agent 命名的邮箱会被拒;
已有账户会返回 409,让用户去 Settings → API key 自取);OpenAlex 会发激活邮件,
用户点了链接 key 才生效($1/天,7 天内有效,过期可重发),未激活时调用返回
403 key_not_activated;建议带 Idempotency-Key 头(UUID)让重试拿到同一把 key。
完整流程、全部响应码与轮换规则见
references/api-authentication.md。

2. 分页 — https://help.openalex.org/api/paging/

  • per_page 最大 100(200 是已废弃的旧行为,别依赖)。
  • 基础分页(page=N&per_page=100):page × per_page ≤ 10,000,再深就报错。
  • cursor 分页:cursor=* 起步,之后用 meta.next_cursor;无深度上限,但第二页起必须有 key
    (无 key 跟 next_cursor 直接 401)。
  • 因此:有 key → cursor 分页;无 key → 退回 page 分页并提示 1 万条上限。
  • 不要用 cursor 去"下载整个 /works 库",那是几天的量,该用 OpenAlex snapshot。

3. 表达式与字段限制

  • 单个 filter 的 OR 取值上限 100 个 → 批量查 ID 时每批最多 100 个:
    filter=ids.openalex:W1|W2|...(本脚本 CHUNK = 100)。
  • 用 select= 只要需要的字段,响应更快、也少踩上下文超限。

快速使用

PY=python    

# 默认:近5年电化学 Top100,含参考文献,输出到桌面
$PY {SKILL_DIR}/scripts/export_openalex_wos.py

# 自定义检索式 / 年份 / 条数
$PY {SKILL_DIR}/scripts/export_openalex_wos.py \
    --query "electrocatalysis OR electrocatalyst" --years 2016-2026 --total 500

常用开关:

参数 作用
--format wos/bib/both 输出格式:wos=savedrecs.txt(默认);bib=Scopus 风格 BibTeX,bibliometrix 直读;both=两份都出
--sort relevance/cited/year/... 排序:relevance=相关度降序(默认);cited=被引降序(「被引最高 N 篇」场景必选);cited_asc/year/year_asc 同理。非 relevance 排序返回全库该排序下的前 N 条,可配 --years 限定时间窗
--refs full/ids/none 参考文献:回查题录 / 只存 ID / 不要(none 最省额度)
--field-style group/repeat 多值字段排版,见下
--ut-format id/url UT 用 OpenAlex ID 还是完整链接
--xlsx 额外输出一张含参考文献明细的表格
--workers 参考文献并发数(默认 6,受 20 rps 限速器约束)
--api-key / --env-file 显式指定 key / .env 路径

直接喂 bibliometrix:WoS txt 就够了(不必再出 bib)

本脚本导出的 WoS 纯文本 bibliometrix 5.x 可以直读,做 bibliometrix 分析时用默认
--format wos 即可,不需要 bib
(bib 只在需要 Scopus 风格 BibTeX 的其他工具时有意义):

# 5.x 格式名是 plaintext(4.x 及旧教程写作 plain-text,5.x 会报错)
M <- bibliometrix::convert2df("openalex/xxx.txt", dbsource = "wos", format = "plaintext")
# 国家分析必须显式抽一次(convert2df 不会自动填 AU_CO)
M <- bibliometrix::metaTagExtraction(M, Field = "AU_CO")

实测 1000 条 txt 直读:CR 非空 584、DE 非空 999、AU_CO 命中 503,与 bib 路径(516/971)等价。

国家/地区标注已内置:脚本把机构所在国家(ISO2→英文名)追加在机构名后写入
C1/RP/affiliation(如 Harvard University, USA),bibliometrix 的国家分布与国家合作网络
开箱即用。两个硬约束(实测踩坑):
- 国名必须全大写——metaTagExtraction("AU_CO") 用 gregexpr(fixed=TRUE) 对
data(countries) 词表(202 项,全大写)做大小写敏感子串匹配,混合大小写一个都匹配不上;
- 韩国写 KOREA——词表里没有 "SOUTH KOREA"。

导出 bib(给需要 Scopus 风格 BibTeX 的场景)

OpenAlex 没有 BibTeX 端点,所以脚本按 Scopus BibTeX 的字段规范自己生成——字段名逐条对齐
bibliometrix 的 data/bibtag.rda 映射,不是随手起的名:

# 只出 bib
$PY {SKILL_DIR}/scripts/export_openalex_wos.py --query "..." --total 500 --format bib

# 两个格式都要(共用同一次检索与参考文献回查,不额外扣额度)
$PY {SKILL_DIR}/scripts/export_openalex_wos.py --query "..." --total 500 --format both
M <- bibliometrix::convert2df("openalex/xxx.bib", dbsource = "scopus", format = "bibtex")
BibTeX 字段 bibliometrix 标签 来源
author AU authorships.display_name → Last, First,同一行内用 and 连接
journal / abbrev_source_title SO / JI primary_location.source.display_name
year volume number pages PY VL PN PP publication_year / biblio
doi issn publisher language DI SN PU LA
abstract AB abstract_inverted_index 还原
author_keywords DE OpenAlex keywords(没有 Keywords Plus,故不写 keywords/ID)
affiliation C1 [作者] 机构 分组,bibliometrix 靠它抽 AU_UN / AU_CO
correspondence_address1 RP is_corresponding 的作者
references CR 回查后的题录,作者, 年, 刊名, V卷, P页, DOI(WoS 风格,共被引解析友好)
note TC Cited by: N——TC 只能从这个字段取
source DB 写 OpenAlex(convert2df 会按 dbsource 覆盖成 SCOPUS,仅作溯源)
document_type DT type → Article/Review/Book Chapter…

注意:
- OpenAlex 的 referenced_works 里查不回来的条目仍会写成 [未解析:Wxxxx],会进 CR 字段(与 WoS 版一致)。
- bib 与 txt 使用同一次检索结果与同一份参考文献回查结果,--format both 不会多花一分钱。
- 因为 convert2df 对 scopus+bibtex 用 TI 去重,标题完全相同的两条会被并成一条,属预期行为。

原始 JSON 批量抓取(fetch_openalex_raw.py)

不转 WoS,要 OpenAlex API 默认 JSON 全记录(53 个字段,含摘要倒排索引、
referenced_works、locations、topics 等)时用这个。一次下载最后合并保存为一个结果文件:

$PY {SKILL_DIR}/scripts/fetch_openalex_raw.py                       # 电化学 2021-2026 前 2000 条(相关度降序)
$PY {SKILL_DIR}/scripts/fetch_openalex_raw.py --total 5000 \
    --query "electrocatalysis" --years 2016-2026 --outdir D:/tmp --name "openalex_ecat"

# 排序选项(--sort):用户可能要求按相关度 / 被引次数 / 出版年取文献
$PY {SKILL_DIR}/scripts/fetch_openalex_raw.py \
    --query "sustainable development|sustainability" --total 1000 --sort cited   # 被引降序 Top1000
$PY {SKILL_DIR}/scripts/fetch_openalex_raw.py --sort year --total 500            # 出版年降序(最新在前)
  • --sort 排序选项(默认 relevance):
  • relevance 相关度降序(依赖 .search 过滤器,默认行为)
  • cited 被引次数降序 —— 「导出被引最高的 N 篇」场景必选;跨页基本无重复
  • cited_asc 被引升序;year 出版年降序(最新在前);year_asc 出版年升序
  • 非 relevance 排序时返回的是全库该排序下的前 N 条;配合 --years 限定时间窗
  • 实际排序值会写进 meta.export.sort,便于溯源
  • 输出单个 {"meta":..., "results":[全部记录按页序拼接]} 文件:
    meta 取第一页,并追加 meta.export 块(检索式、年份、条数、页数、抓取时间),便于溯源。
  • 输出目录:默认写到当前工作目录下的 openalex/ 子文件夹(数据源分文件夹规范,
    见下);也可用 --outdir 显式指定。
  • 默认只留合并文件;--keep-pages 可额外保留逐页原始响应体(存到 outdir/pages/)。
  • cursor 分页 + per_page=100 + 429 指数退避;key 自动从 .env 读。
  • 成本:search 端点 10 credits/页 → 2000 条 ≈ 200 credits($0.02)。
  • 实测 2000 条约 33 MB、90 秒;相关性排序下跨页偶有少量重复(约 0.4%),
    下游按 id 去重即可。

实测成本(100 篇 + 6,320 条参考文献回查):84 credits ≈ $0.0084,17 秒。

字段映射(WoS 标签)

标签 来源
PT / DT OpenAlex type → J/B/D/R、Article/Review/Book Chapter…
AU / AF 姓, 名首字母(Abbott, AP) / 作者全名
TI SO LA DE AB 标题 / 期刊 / 语言 / 关键词 / 摘要
C1 / RP 按机构分组 [作者; 作者] 机构 / 通讯作者(机构名后追加全大写国家名,如 Harvard University, USA,供 bibliometrix 抽 AU_CO)
CR / NR 参考文献列表 / 篇数
TC PY VL IS BP EP PG DI PM DA 被引、年、卷、期、页、DOI、PMID、日期
UT 用 OpenAlex ID 占位(WoS 入藏号无数据源,--ut-format url 出完整链接)

排版规则(用户明确要求,别改回去)

  • 所有多值字段一条目一行:AU / C1 / DE / CR / EM / RI / OI / FU。
  • group(默认):仅首行带字段名,后续每条缩进 3 空格(正好 XX 的宽度),正文上下对齐。
  • repeat:每行都带字段名,标准 ISI 写法,喂 EndNote / CiteSpace / VOSviewer 时用这个,
    否则整块会被当成一条引用吞掉。
  • 单值长文本(TI / AB / AF / RP)超过 110 字符按 3 空格缩进折行。
  • 文件:UTF-8、CRLF、FN/VR 1.0 开头、ER 逐条分隔、EF 结尾。

已知数据缺口

  • referenced_works 只给 ID 不给题录,必须二次回查;被删除/合并的 ID 查不回来,
    会写成 [未解析:Wxxxx](100 篇里通常 40 条左右)。
  • 不是每篇都有参考文献:book-chapter、preprint、dataset 常缺(实测 100 篇里 56 篇有)。
  • 期刊缩写 J9/JI 没有缩写库,填的是全称。
  • UT 放 OpenAlex ID 属于借用字段位:自用追溯没问题,但严格按 WoS 语义去重的工具
    会把它当入藏号,届时用 --ut-format id 之外的方式处理或直接抽掉。

离线排版互转(不耗额度)

已经导出的 txt 想换排版,不用重跑检索:

$PY {SKILL_DIR}/scripts/wos_group_fields.py "文件.txt"                       # → group(默认)
$PY {SKILL_DIR}/scripts/wos_group_fields.py "文件.txt" --style repeat -o out.txt
$PY {SKILL_DIR}/scripts/wos_group_fields.py out.txt --input-style group --style group

脚本会先备份 .bak,幂等(group → group 输出与输入完全一致)。

踩过的坑

  • pyalex paginate() 返回的是页(OpenAlexResponseList),要双层 for page: for w。
  • pyalex.config 是 dict 子类,api_key 直接赋值即可;max_retries / retry_backoff_factor
    也在 config 里,别自己再包一层重试墙。
  • WoS 里 CR 被拆行后极难还原(要靠"作者, 缩写, 年份, " 结构 + 贪心折行宽度倒推),
    所以脚本对 CR 永不折行,一条文献一行。
  • add() 必须判 None,否则会写出 VL None 这种脏行。

参考文档(references/)

文件 内容 官方原文
api-authentication.md 认证与 API key:agent 代用户一键申请(POST /api-keys)、激活邮件流程、全部响应码、发送方式、轮换、限速表、用量响应头、/rate-limit 端点 authentication
llm-quick-reference.md API 速查:端点清单、查询参数、filter 语法、计价表、硬限制表、错误重试示例、常见错误对照 llm-quick-reference
llms.md 全站文档索引:How-to / Tutorials / Access 全目录;每页 URL 加 .md 可取原始 markdown llms.txt

其他常用官方页面(均在 llms.md 索引内):
分页、
过滤语法、
计费示例、
数据快照(超大数据量请用快照,别用 cursor 硬翻)。

常见问题

5 问
答案由本站依据条目字段整理
OpenAlex文献检索导出怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_60b02414/openalex。安装方式为未标注。装完刷新技能列表或重开客户端。

OpenAlex文献检索导出支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

OpenAlex文献检索导出权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

OpenAlex文献检索导出收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

OpenAlex文献检索导出用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。