Vibe coding 项目:影响因子和分区查询 API

AI 纪元,灵光一现,即刻就能动手实现
📌缘起
目标很简单:通过 URL 一键直达,查询学术杂志的影响因子、分区等信息。之前常用的 medreading 需要微信登录才能看,ablesci 倒是免登录,但如果想实现一些插件脚本之类的就不方便了。另外,偶尔还有查询期刊名缩写的需求。
最后一个动因就是 scholarscope 插件,作者审美相当在线,是我用过的视觉最舒服的影响因子展示插件,然而还是同样的问题,没办法把接口用在 pubmed 以外的网站。

✨特性
查询关键词可以是 杂志全名 或 缩写,也可以是 ISSN 或 EISSN 号。默认不做区分,当然也可以通过is_eissn is_abbr参数明确说明。
另外除了 JCR 数据库,还可以通过is_med参数优先搜索医学领域的pubmed数据库。这俩主要区别是杂志名缩写规范不太一样,NLM 通常保留缩写点、首字母大写;WoS 则全部大写并且没有英文句点。另外,NLM 会尽可能删除开头的 The,默认的精确搜索模式下可能会影响返回结果。
搜索模式有四种:精确(默认),前缀(1),子串(2)和后缀(3),通过f参数指定,前两种模式的检索效率最高。比如 Science、Science Report、ACS Chemical Neuroscience、Analytical Science Advances 依次对应science关键词的 4 种典型命中项。由于默认回退检索 pubmed 数据库,对于开头含 The 的情况依然可以使用精确模式。
另外还有几个辅助参数:show_all 控制返回哪些列;case和case_abbr控制杂志名的书写格式,方便复制;page和page_size则控制分页。原本还做了排序和筛选功能,权衡之下还是给精简掉了。
✴️思路
首先准备原始数据,JCR IF 和新锐分区表从公众号下载的一堆版本中挑了最完善的。因为版权问题,所有数据表都没有放在开源仓库,后面可能考虑上传网盘供学习使用。生产数据库使用 cloudflare D1,因为担心免费额度不够专门注册了新账号。
准备就绪,启动 claude opus 4.6 从零开始 vibe coding。首先将新锐分区表合并到 JCR IF 中,根据杂志名和版号双重匹配后取并集(∪)。为了尽量减少表格信息的损失,对于 ISSN/EISSN 不匹配的项(可能是有过变更),作为副本追加到 pubmed 表格。然后将 pubmed 表(B)预匹配总表(A),新增一列指向 A 表的对应 ID。AB 表都增加两列,存放全名和缩写名的全大写形式,提交检索前也会把关键词预处理成大写形式,避免运行时的大小写匹配。最后对杂志名列建立 FTS5 全文索引加快数据库模糊搜索效率。
实际执行时,默认先检索 A 表,没有结果的话回退检索 B 表。如果指定了is_med参数会直接查询 B 表。无论哪种模式,都会返回med_hit键值用来指示 B 表是否命中。不过这个值不完全可靠,如果 A 表直接命中会跳过查询 B 表,这时med_hit始终不为真。
以上都是在尽量优化查询效率,降低读取次数和行数的原则下,让 AI 反复迭代探讨后做出的决定。
🧩插件
原本计划顺手 vibecode 一个查询界面,但想想参数也不多,必要性似乎没那么强。转而集中尽力复刻 scholarscope 插件。
对我来说首要功能是 pubmed 文章页和检索页标题旁边的 IF 和分区标签,然后是被引次数,展开摘要全文的交互按钮,以及筛选和排序。这种纯前端需求,用油猴脚本实现起来非常合适。
问题来了,如果要调整检索关键词怎么办?那就把标签做成可点击的按钮,有查询结果的情况下弹窗显示所有结果项、所有字段的展示列表,方便复制;无查询结果时弹出一个提交查询的表单卡片,包括所有可调参数。那么有结果的标签怎么提交查询呢?在展示列表下面增加一个清除结果的按钮即可。
因为涉及高并发,可配置的 pubmed api 以及数据缓存机制也要安排上。这样一套下来,用户体验丝毫不输插件版,唯一的遗憾是没有文章热度数据。研究过 Altmetric,申请非商用的 key 一点也不简单。scholarscope 因为用户量成规模了,可以有自己的生态。

既然 pubmed 有了,顺手把 google scholar 也实现了不过分吧?
谷歌学术最大的问题是杂志名经常只显示一部分,那就把杂志名标签也做成可点击的,手动获取完整名称。最后再做个联动,各自加上对方的外链,这个主要目的是查被引文献,

这是第一个插件,就依 Claude 取名叫 scholarscope-lite。
第二个插件是为了给 Medreading 邮件订阅补全 IF 和分区。这一点文献鸟就做的比较好,订阅的文献列表都包含这两个信息,不过 Medreading 胜在中文摘要翻译不收费,各有利弊吧。这个脚本相对就比较简单了,基本就是 AI 一次成型,各种细节也让 AI 自己做主,最终效果也是不错的。

💭碎碎念
学术界打倒“唯 IF 论”的声音从未停歇,然而每一次改革激起的浪花似乎都在宣告:在没有其他更合理的方式出来之前,分区+影响因子就是最合理的评价标准。纵使这种评价体系会漏掉一些小刊中的“金子”,但只要结果/方法/观点足够powerful,总有一天会被更多人看到。甚至于以后基于AI的学术生态建立,不仅仅通过标题、关键词、摘要和引文建立关联,甚至不以文章为载体,而是项目驱动的完整信息。
🔗资源
项目地址:JCR-IF-CF-API
API demo:仅供测试
油猴插件地址:scholarscope-lite
