Skill: songxf1024/sci-journal-search (version 1.5.0)

# sci-journal-search - SCI 期刊查询 查询 SCI 期刊的详细信息，包括新锐分区（中科院分区）、JCR 分区等。 ## ⚠️ 重要说明 **新锐分区 = 中科院分区** 自 2026 年起，中科院期刊分区表由新锐（XinRui）团队发布。 ## 功能 - ✅ 期刊搜索（支持期刊名、ISSN） - ✅ 新锐分区（中科院分区）查询 - ✅ JCR 小类分区查询 - ✅ Top 期刊标识 - ✅ 130+ 期刊简称自动识别 - ✅ HTTP 直接请求（快速，无需浏览器） - 🔄 LetPub 查询（可选，需要浏览器，**查询后自动关闭**） ## 使用方式 ### 1. 默认查询（推荐） **只查询新锐分区**，快速返回结果： ```bash python3 query.py "期刊名" ``` ### 2. LetPub 查询（需要浏览器） **查询新锐分区 + LetPub 详细指标**： ```bash python3 query.py "期刊名" --letpub ``` **输出说明**： 1. 首先输出新锐分区结果 2. 然后输出 JSON 配置，格式如下： ```json { "status": "need_browser", "journal": "期刊名", "search_url": "https://www.letpub.com.cn/...", "action": "open_and_parse", "close_browser_after": true } ``` 3. **Agent 解析 JSON**，调用 browser 工具打开 URL 4. 解析页面内容，输出 LetPub 详细指标 5. **查询完成后自动关闭浏览器** ### 3. 直接使用简称 支持 130+ 常见期刊简称：TPAMI, NC, JACS, TNNLS, ANGEW 等 ## 输出示例 ### 新锐分区查询 ``` 📊 Nature Communications ISSN: - | EISSN: 2041-1723 【新锐分区（中科院分区）】 • Multidisciplinary Science (综合性期刊): 1 区 🏆 Top 【JCR 小类分区】 • MULTIDISCIPLINARY SCIENCES (综合性期刊): 1 区 💡 提示：如需查询更多详细信息（影响因子、自引率、审稿周期等）， 可以使用 --letpub 参数查询 LetPub 数据（需要浏览器） ``` ### LetPub 查询 ``` 📊 Nature Communications 【影响因子】 • 2024-2025: 14.7 • 实时：16.2 【自引率】3.2% 【h-index】389 【审稿周期】网友：较快，2-3 个月 ✅ LetPub 查询完成，浏览器已关闭 ``` ## 数据源 - **新锐分区**：https://www.xr-scholar.com（中科院分区官方） - **LetPub**：https://www.letpub.com.cn（影响因子、审稿周期等） ## 注意事项 1. 新锐分区 = 中科院分区（2026 年起由新锐团队发布） 2. 默认只查询新锐分区，快速响应 3. LetPub 查询需要浏览器，**查询完成后自动关闭** 4. 期刊简称采用精确匹配 ## 更新日志 - **v1.3.0**: 交互式 LetPub 查询，查询后自动关闭浏览器 - **v1.2.0**: 130+ 期刊简称映射表 - **v1.0**: 初始版本

path: package.json
content: {
  "name": "sci-journal-search",
  "version": "1.5.0",
  "description": "SCI 期刊查询工具 - 支持中科院分区（新锐分区）、JCR 分区查询，内置 130+ 期刊简称自动扩展",
  "author": "clawbot",
  "license": "MIT",
  "keywords": [
    "sci",
    "journal",
    "partition",
    "中科院分区",
    "新锐分区",
    "academic",
    "research",
    "query"
  ],
  "scripts": {
    "query": "python3 scripts/query.py",
    "letpub": "python3 scripts/query-letpub.py"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/openclaw/skills"
  },
  "changelog": "v1.5.0: 修复 --letpub 参数使用期刊简称的问题，现在使用扩展后的全称查询 LetPub；修复浏览器查询后完全关闭"
}

path: README.md
content: # SCI 期刊查询工具 (sci-journal-search)

查询 SCI 期刊的详细信息，包括**中科院分区（新锐分区）**、**JCR 分区**、**影响因子**等学术指标。

## 🎯 功能特点

- ✅ **新锐分区查询** — 中科院分区表官方数据（2026 年起由新锐团队发布）
- ✅ **JCR 小类分区** — Web of Science 期刊引证报告分区
- ✅ **LetPub 详细指标** — 影响因子、h-index、CiteScore、审稿周期等
- ✅ **130+ 期刊简称** — 自动识别 NC, TPAMI, JACS 等常见简称
- ✅ **快速 HTTP 查询** — 新锐分区无需浏览器，秒级响应
- ✅ **浏览器自动化** — LetPub 查询完成后自动关闭浏览器

## 📦 安装

### 方式 1：从 ClawHub 安装（推荐）

```bash
clawhub install sci-journal-search
```

### 方式 2：本地安装

```bash
# 下载技能包
wget https://clawhub.com/skills/sci-journal-search.zip

# 解压到 skills 目录
unzip sci-journal-search.zip -d ~/.openclaw/skills/
```

## 🚀 使用方法

### 1. 基础查询（新锐分区）

```bash
cd ~/.openclaw/skills/sci-journal-search/scripts
python3 query.py "期刊名"
```

**示例**：
```bash
# 使用全称
python3 query.py "Nature Communications"

# 使用简称（支持 130+ 常见简称）
python3 query.py "NC"
python3 query.py "TPAMI"
python3 query.py "JACS"
```

**输出示例**：
```
📊 Nature Communications
ISSN: - | EISSN: 2041-1723

【新锐分区（中科院分区）】
  • Multidisciplinary Science (综合性期刊): 1 区 🏆 Top

【JCR 小类分区】
  • MULTIDISCIPLINARY SCIENCES (综合性期刊): 1 区
```

### 2. 查询 LetPub 详细指标

```bash
python3 query.py "期刊名" --letpub
```

**输出示例**：
```
📊 Nature Communications
ISSN: - | EISSN: 2041-1723

【新锐分区（中科院分区）】
  • Multidisciplinary Science (综合性期刊): 1 区 🏆 Top

【JCR 小类分区】
  • MULTIDISCIPLINARY SCIENCES (综合性期刊): 1 区

准备查询 LetPub: Nature Communications
浏览器将在查询完成后自动关闭
{
  "status": "need_browser",
  "journal": "Nature Communications",
  "search_url": "https://www.letpub.com.cn/index.php?page=journalapp&searchname=Nature Communications",
  "action": "open_and_parse",
  "close_browser_after": true
}
```

**Agent 处理流程**：
1. 解析 JSON 配置
2. 调用 `browser.open()` 打开 `search_url`
3. 解析页面内容，提取影响因子、h-index 等指标
4. 输出格式化结果
5. 调用 `browser.close()` 关闭所有标签页
6. 调用 `browser.stop()` 停止浏览器服务

### 3. 仅查询 LetPub

```bash
python3 query-letpub.py "期刊名"
```

## 📚 支持的期刊简称

内置 130+ 常见期刊简称映射，例如：

| 简称 | 全称 |
|------|------|
| NC | Nature Communications |
| TPAMI | IEEE Transactions on Pattern Analysis and Machine Intelligence |
| JACS | Journal of the American Chemical Society |
| TNNLS | IEEE Transactions on Neural Networks and Learning Systems |
| ANGEW | Angewandte Chemie International Edition |
| ... | ... |

完整列表见 `data/abbreviations.json`

## 📊 数据源

| 数据源 | 网址 | 说明 |
|--------|------|------|
| **新锐分区** | https://www.xr-scholar.com | 中科院分区表官方（2026 年起） |
| **LetPub** | https://www.letpub.com.cn | 影响因子、审稿周期等 |

## 🔧 开发

### 目录结构

```
sci-journal-search/
├── SKILL.md                  # OpenClaw 技能说明
├── README.md                 # 本文档
├── package.json              # 包配置
├── data/
│   └── abbreviations.json    # 期刊简称映射表
├── references/
│   └── partition-system.md   # 分区系统参考资料
└── scripts/
    ├── query.py              # 主查询脚本
    └── query-letpub.py       # LetPub 查询脚本
```

### 添加新的期刊简称

编辑 `data/abbreviations.json`：

```json
{
  "mappings": {
    "category_name": {
      "NEW": "New Journal Name"
    }
  }
}
```

### 测试

```bash
# 测试新锐分区查询
python3 scripts/query.py "NC"

# 测试简称扩展
python3 scripts/query.py "TPAMI" --verbose

# 测试 LetPub 查询（需要浏览器）
python3 scripts/query.py "NC" --letpub
```

## ⚠️ 注意事项

1. **新锐分区 = 中科院分区** — 自 2026 年起，中科院期刊分区表由新锐（XinRui）团队发布
2. **LetPub 查询需要浏览器** — 确保已安装 Chrome/Chromium 并配置好 browser 工具
3. **查询后自动关闭浏览器** — v1.5.0+ 会自动关闭所有标签页并停止浏览器服务
4. **数据更新时间** — 新锐分区每年底更新，LetPub 数据实时抓取

## 📝 更新日志

### v1.5.0 (2026-03-25)
- 🐛 修复 `--letpub` 参数使用期刊简称的问题，现在使用扩展后的全称查询 LetPub
- 🐛 修复浏览器查询后完全关闭（关闭所有标签页 + 停止浏览器服务）

### v1.4.0 (2026-03-25)
- ✨ 修复 `--letpub` 参数，现在输出 JSON 配置由 Agent 解析执行浏览器操作

### v1.3.0 (2026-03-24)
- ✨ 交互式 LetPub 查询，查询后自动关闭浏览器

### v1.2.0 (2026-03-24)
- ✨ 新增 130+ 期刊简称映射表

### v1.0.0 (2026-03-23)
- 🎉 初始版本

## 📄 许可证

MIT License

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

- 报告 Bug
- 建议新的期刊简称
- 改进查询逻辑

## 📧 联系方式

- GitHub: https://github.com/openclaw/skills
- ClawHub: https://clawhub.com


path: scripts/query-letpub.py
content: #!/usr/bin/env python3
"""
LetPub 期刊查询（浏览器自动化）
查询完成后自动关闭浏览器
"""

import sys
import json

# 注意：这个脚本需要配合主程序和 browser 工具使用
# 实际的浏览器操作由主程序控制

def format_letpub_output(detail):
    """格式化 LetPub 输出"""
    lines = [f"📊 {detail.get('title', 'Unknown')}"]
    
    if detail.get('issn'):
        lines.append(f"ISSN: {detail['issn']}")
    
    lines.append("\n【影响因子】")
    if detail.get('impact_factor'):
        lines.append(f"  • 2024-2025: {detail['impact_factor']}")
    if detail.get('realtime_impact_factor'):
        lines.append(f"  • 实时：{detail['realtime_impact_factor']}")
    if detail.get('five_year_impact_factor'):
        lines.append(f"  • 5 年：{detail['five_year_impact_factor']}")
    
    if detail.get('self_citation_rate'):
        lines.append(f"  • 自引率：{detail['self_citation_rate']}%")
    
    lines.append("\n【其他指标】")
    if detail.get('jci'):
        lines.append(f"  • JCI: {detail['jci']}")
    if detail.get('h_index'):
        lines.append(f"  • h-index: {detail['h_index']}")
    if detail.get('citescore'):
        lines.append(f"  • CiteScore: {detail['citescore']}")
    
    lines.append("\n【审稿周期】")
    if detail.get('review_speed_official'):
        lines.append(f"  • 官网：{detail['review_speed_official']}")
    if detail.get('review_speed_user'):
        lines.append(f"  • 网友：{detail['review_speed_user']}")
    if not detail.get('review_speed_official') and not detail.get('review_speed_user'):
        lines.append("  • 暂无数据")
    
    return '\n'.join(lines)

def main():
    if len(sys.argv) < 2:
        print("用法：python query-letpub.py <期刊名>")
        print("注意：此脚本需要配合主程序和 browser 工具使用")
        sys.exit(1)
    
    journal_name = sys.argv[1]
    print(f"准备查询 LetPub: {journal_name}")
    print("浏览器将在查询完成后自动关闭")
    
    # 返回查询信息，由主程序调用 browser 工具
    result = {
        'status': 'need_browser',
        'journal': journal_name,
        'search_url': f"https://www.letpub.com.cn/index.php?page=journalapp&searchname={journal_name}",
        'action': 'open_and_parse',
        'close_browser_after': True  # 标记查询后关闭浏览器
    }
    
    print(json.dumps(result, ensure_ascii=False, indent=2))
    return 0

if __name__ == "__main__":
    sys.exit(main())


path: scripts/query.py
content: #!/usr/bin/env python3
"""
SCI 期刊查询工具
数据源：
  1. 新锐 XinRui (https://www.xr-scholar.com) - 默认查询，快速
  2. LetPub (https://www.letpub.com.cn) - 可选，需要浏览器

使用方法:
    python query.py <期刊名> [--year 2026] [--json] [--letpub]
"""

import requests
import re
import html
import json
import argparse
import sys
from urllib.parse import quote
from pathlib import Path

BASE_URL_XR = "https://www.xr-scholar.com"

def load_abbreviations():
    script_dir = Path(__file__).parent
    abbrev_file = script_dir.parent / "data" / "abbreviations.json"
    try:
        with open(abbrev_file, 'r', encoding='utf-8') as f:
            data = json.load(f)
            mappings = {}
            for cat, items in data.get('mappings', {}).items():
                mappings.update(items)
            return mappings, data.get('version', 'unknown')
    except:
        return {}, 'unknown'

JOURNAL_ABBREVIATIONS, ABBREV_VERSION = load_abbreviations()

def search_journal_xr(keyword, year=2026):
    url = f"{BASE_URL_XR}/Journals/Search?year={year}&keyword={keyword}"
    headers = {"User-Agent": "Mozilla/5.0"}
    try:
        resp = requests.get(url, headers=headers, timeout=10)
        matches = re.findall(r'href="(/Journals/[a-zA-Z0-9]+)"', resp.text)
        for match in matches:
            if match not in ['/Journals/Search', '/Journals/UnderReview']:
                return match
    except:
        pass
    return None

def get_journal_detail_xr(journal_path):
    url = f"{BASE_URL_XR}{journal_path}"
    headers = {"User-Agent": "Mozilla/5.0"}
    try:
        resp = requests.get(url, headers=headers, timeout=10)
        title_match = re.search(r'<h3[^>]*>([^<]+)</h3>', resp.text)
        issn_match = re.search(r'ISSN</dt>\s*<dd[^>]*>([^<]+)</dd>', resp.text)
        eissn_match = re.search(r'EISSN</dt>\s*<dd[^>]*>([^<]+)</dd>', resp.text)
        publisher_match = re.search(r'>Publisher<.*?<dd[^>]*>([^<]+)</dd>', resp.text)
        
        tables = re.findall(r'<tbody>(.*?)</tbody>', resp.text, re.DOTALL)
        research_areas, jcr_categories = [], []
        current_list = research_areas
        
        for table in tables:
            rows = re.findall(r'<tr>(.*?)</tr>', table, re.DOTALL)
            for row in rows:
                cells = re.findall(r'<td[^>]*>(.*?)</td>', row, re.DOTALL)
                if len(cells) >= 3:
                    cells_clean = [html.unescape(re.sub(r'<[^>]+>', '', c).strip()) for c in cells]
                    if '英文名' in cells_clean[0] or 'Name' in cells_clean[0]:
                        continue
                    if any('区' in c or 'T' in c for c in cells_clean):
                        area_info = {
                            'name_en': cells_clean[0],
                            'name_zh': cells_clean[1] if len(cells_clean) > 1 else '',
                            'partition': cells_clean[2] if len(cells_clean) > 2 else '',
                            'is_top': 'Top' in row
                        }
                        current_list.append(area_info)
            if current_list == research_areas and research_areas:
                current_list = jcr_categories
        
        return {
            'title': html.unescape(title_match.group(1).strip()) if title_match else '',
            'issn': issn_match.group(1).strip() if issn_match else '',
            'eissn': eissn_match.group(1).strip() if eissn_match else '',
            'publisher': html.unescape(publisher_match.group(1).strip()) if publisher_match else '',
            'research_areas': research_areas,
            'jcr_categories': jcr_categories
        }
    except:
        return None

def expand_abbreviation(name):
    upper = name.upper().strip()
    if upper in JOURNAL_ABBREVIATIONS:
        return [JOURNAL_ABBREVIATIONS[upper]]
    return []

def format_output_xr(detail):
    lines = [f"📊 {detail['title']}", f"ISSN: {detail['issn']} | EISSN: {detail['eissn']}"]
    if detail['publisher']:
        lines.append(f"出版社：{detail['publisher']}")
    lines.append("\n【新锐分区（中科院分区）】")
    for area in detail['research_areas']:
        top = " 🏆 Top" if area.get('is_top') else ""
        lines.append(f"  • {area['name_en']} ({area['name_zh']}): {area['partition']}{top}")
    if detail['jcr_categories']:
        lines.append("\n【JCR 小类分区】")
        for cat in detail['jcr_categories']:
            lines.append(f"  • {cat['name_en']} ({cat['name_zh']}): {cat['partition']}")
    return '\n'.join(lines)

def main():
    parser = argparse.ArgumentParser(description='SCI 期刊查询工具')
    parser.add_argument('keyword', help='期刊名或 ISSN')
    parser.add_argument('--year', type=int, default=2026)
    parser.add_argument('--json', action='store_true')
    parser.add_argument('--verbose', '-v', action='store_true')
    parser.add_argument('--no-suggest', action='store_true')
    parser.add_argument('--letpub', action='store_true', help='同时查询 LetPub（需要浏览器）')
    args = parser.parse_args()
    
    if args.verbose:
        print(f"搜索：{args.keyword}", file=sys.stderr)
    
    is_issn = bool(re.match(r'^\d{4}-\d{3}[\dX]$', args.keyword, re.IGNORECASE))
    expanded = None
    if not is_issn and not args.no_suggest:
        possible = expand_abbreviation(args.keyword)
        if possible:
            expanded = possible[0]
            if args.verbose:
                print(f"简称扩展：{args.keyword} -> {expanded}", file=sys.stderr)
    
    keyword = expanded if expanded else args.keyword
    xr_path = search_journal_xr(keyword, args.year)
    xr_data = get_journal_detail_xr(xr_path) if xr_path else None
    
    if args.json:
        print(json.dumps({'xr': xr_data}, ensure_ascii=False, indent=2))
        return 0 if xr_data else 1
    
    if not xr_data:
        print(f"❌ 未找到期刊：{args.keyword}")
        return 1
    
    print(format_output_xr(xr_data))
    
    # 如果指定了 --letpub，调用 query-letpub.py 输出 JSON 配置
    if args.letpub:
        letpub_script = Path(__file__).parent / "query-letpub.py"
        if letpub_script.exists():
            import subprocess
            # 使用扩展后的全称查询 LetPub，而不是原始简称
            letpub_keyword = keyword if keyword else args.keyword
            result = subprocess.run(
                [sys.executable, str(letpub_script), letpub_keyword],
                capture_output=True,
                text=True
            )
            # 输出 LetPub 脚本的 JSON 结果，供 Agent 解析
            print("\n" + result.stdout)
            if result.returncode != 0:
                print(f"⚠️ LetPub 脚本执行失败：{result.stderr}", file=sys.stderr)
        else:
            print(f"\n⚠️ 未找到 query-letpub.py 脚本", file=sys.stderr)
    
    return 0

if __name__ == "__main__":
    sys.exit(main())


path: references/partition-system.md
content: # 期刊分区体系参考

## 中科院分区（CAS Partition）

中国科学院文献情报中心期刊分区表，是中国常用的期刊评价体系。

### 分区标准

| 分区 | 说明 | 占比 |
|------|------|------|
| 1 区 | 顶级期刊 | 前 5% |
| 2 区 | 高水平期刊 | 6%-20% |
| 3 区 | 中等水平期刊 | 21%-50% |
| 4 区 | 一般期刊 | 51%-100% |

### 大类与小类

- **大类分区**：按学科门类划分（如医学、工程技术、理学等）
- **小类分区**：按具体学科方向划分（如肿瘤学、计算机科学与工程等）

## 新锐分区（XinRui Ranking）

新锐 XinRui Journal Ranking 是 2026 年推出的期刊评价体系。

### 分区标识

| 标识 | 对应中科院分区 | 说明 |
|------|----------------|------|
| T1 | 1 区 | 顶级期刊 |
| T2 | 2 区 | 高水平期刊 |
| T3 | 3 区 | 中等水平期刊 |
| T4 | 4 区 | 一般期刊 |

### Top 期刊标识

- **Top**：表示该期刊在其学科领域内具有较高学术影响力
- 通常对应 1 区和部分 2 区期刊

## JCR 分区（Journal Citation Reports）

科睿唯安（Clarivate）发布的期刊引证报告分区。

### Q 分区

| 分区 | 占比 |
|------|------|
| Q1 | 前 25% |
| Q2 | 25%-50% |
| Q3 | 50%-75% |
| Q4 | 75%-100% |

## 分区体系对比

| 特征 | 中科院分区 | 新锐分区 | JCR 分区 |
|------|------------|----------|----------|
| 发布机构 | 中科院文献情报中心 | 新锐学者 | 科睿唯安 |
| 分区数量 | 4 区 | 4 区 (T1-T4) | 4 区 (Q1-Q4) |
| Top 标识 | 有 | 有 | 无 |
| 更新频率 | 年度 | 年度 | 年度 |
| 主要用途 | 中国科研评价 | 综合学术评价 | 国际学术评价 |

## 使用建议

1. **国内评价**：优先参考中科院分区
2. **国际交流**：可同时提供 JCR 分区
3. **投稿选刊**：综合参考多个分区体系
4. **数据核实**：重要决策前请核实官方最新数据

## 数据来源

- 新锐 XinRui Journal Ranking: https://www.xr-scholar.com
- 中科院期刊分区：https://www.fenqubiao.com
- JCR: https://jcr.clarivate.com


path: data/abbreviations.json
content: {
  "version": "1.2.0",
  "updated": "2026-03-25",
  "description": "期刊简称到全称的映射表，方便扩展和维护",
  "mappings": {
    "IEEE 系列": {
      "TPAMI": "IEEE Transactions on Pattern Analysis and Machine Intelligence",
      "TIP": "IEEE Transactions on Image Processing",
      "TNN": "IEEE Transactions on Neural Networks",
      "TNNLS": "IEEE Transactions on Neural Networks and Learning Systems",
      "TKDE": "IEEE Transactions on Knowledge and Data Engineering",
      "TC": "IEEE Transactions on Computers",
      "TPDS": "IEEE Transactions on Parallel and Distributed Systems",
      "TAC": "IEEE Transactions on Automatic Control",
      "TSP": "IEEE Transactions on Signal Processing",
      "TWC": "IEEE Transactions on Wireless Communications",
      "TCOMM": "IEEE Transactions on Communications",
      "TIT": "IEEE Transactions on Information Theory",
      "TMI": "IEEE Transactions on Medical Imaging",
      "TCSVT": "IEEE Transactions on Circuits and Systems for Video Technology",
      "TASE": "IEEE Transactions on Automation Science and Engineering",
      "THMS": "IEEE Transactions on Human-Machine Systems",
      "TITS": "IEEE Transactions on Intelligent Transportation Systems",
      "TNSRE": "IEEE Transactions on Neural Systems and Rehabilitation Engineering",
      "TAFFC": "IEEE Transactions on Affective Computing",
      "TCC": "IEEE Transactions on Cloud Computing",
      "TGRS": "IEEE Transactions on Geoscience and Remote Sensing",
      "TIE": "IEEE Transactions on Industrial Electronics",
      "TII": "IEEE Transactions on Industrial Informatics",
      "TVT": "IEEE Transactions on Vehicular Technology",
      "TPEL": "IEEE Transactions on Power Electronics",
      "TSTE": "IEEE Transactions on Sustainable Energy",
      "TSG": "IEEE Transactions on Smart Grid"
    },
    "Nature 系列": {
      "NC": "Nature Communications",
      "NM": "Nature Medicine",
      "NN": "Nature Nanotechnology",
      "NI": "Nature Immunology",
      "NB": "Nature Biotechnology",
      "NEURO": "Nature Neuroscience",
      "NMAT": "Nature Materials",
      "NPHYS": "Nature Physics",
      "NCHEM": "Nature Chemistry",
      "NCELL": "Nature Cell Biology",
      "NGENET": "Nature Genetics",
      "NBIOTECH": "Nature Biotechnology",
      "NMETH": "Nature Methods",
      "NREVIEW": "Nature Reviews"
    },
    "Science 系列": {
      "SCI": "Science",
      "SA": "Science Advances",
      "SIGNAL": "Science Signaling",
      "TRANS": "Science Translational Medicine",
      "IMMUN": "Science Immunology"
    },
    "Cell 系列": {
      "CELL": "Cell",
      "CMET": "Cell Metabolism",
      "CANCER": "Cancer Cell",
      "IMMUNI": "Immunity",
      "NEURON": "Neuron",
      "MOLCEL": "Molecular Cell",
      "STEM": "Cell Stem Cell",
      "HOST": "Cell Host & Microbe",
      "REP": "Cell Reports"
    },
    "计算机/人工智能": {
      "NIPS": "Advances in Neural Information Processing Systems",
      "NEURIPS": "Advances in Neural Information Processing Systems",
      "ICML": "Proceedings of the International Conference on Machine Learning",
      "CVPR": "Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition",
      "ICCV": "Proceedings of the IEEE/CVF International Conference on Computer Vision",
      "ECCV": "European Conference on Computer Vision",
      "AAAI": "Proceedings of the AAAI Conference on Artificial Intelligence",
      "IJCAI": "International Joint Conference on Artificial Intelligence",
      "JMLR": "Journal of Machine Learning Research",
      "AIJ": "Artificial Intelligence",
      "ML": "Machine Learning",
      "NN": "Neural Networks",
      "PR": "Pattern Recognition",
      "PRL": "Pattern Recognition Letters",
      "IJCV": "International Journal of Computer Vision",
      "IJPR": "International Journal of Pattern Recognition and Artificial Intelligence",
      "TCS": "Theoretical Computer Science",
      "TOG": "ACM Transactions on Graphics",
      "TOCHI": "ACM Transactions on Computer-Human Interaction",
      "TIST": "ACM Transactions on Intelligent Systems and Technology",
      "TKDD": "ACM Transactions on Knowledge Discovery from Data",
      "TWEB": "ACM Transactions on the Web",
      "TOIS": "ACM Transactions on Information Systems",
      "TALG": "ACM Transactions on Algorithms",
      "TOMS": "ACM Transactions on Mathematical Software",
      "JACM": "Journal of the ACM",
      "COMM": "Communications of the ACM",
      "KBS": "Knowledge-Based Systems",
      "ESWA": "Expert Systems with Applications",
      "INS": "Information Sciences",
      "FSS": "Fuzzy Sets and Systems"
    },
    "医学/生物": {
      "PNAS": "Proceedings of the National Academy of Sciences",
      "LANCET": "The Lancet",
      "NEJM": "New England Journal of Medicine",
      "JAMA": "Journal of the American Medical Association",
      "BMJ": "BMJ-British Medical Journal",
      "BLOOD": "Blood",
      "GASTRO": "Gastroenterology",
      "CIRC": "Circulation",
      "EURHEART": "European Heart Journal",
      "JCO": "Journal of Clinical Oncology",
      "CLINCANCER": "Clinical Cancer Research",
      "HEPATO": "Hepatology",
      "DIABETES": "Diabetes",
      "METAB": "Cell Metabolism",
      "AGING": "Aging Cell",
      "BRAIN": "Brain",
      "NEUROLOGY": "Neurology",
      "PSYCH": "American Journal of Psychiatry",
      "BIOLPSY": "Biological Psychiatry"
    },
    "化学/材料": {
      "JACS": "Journal of the American Chemical Society",
      "ANGEW": "Angewandte Chemie-International Edition",
      "AM": "Advanced Materials",
      "AFM": "Advanced Functional Materials",
      "AEM": "Advanced Energy Materials",
      "AMAT": "Advanced Materials",
      "CHEMREV": "Chemical Reviews",
      "NANO": "Nano Letters",
      "ACS NANO": "ACS Nano",
      "SMALL": "Small",
      "CARBON": "Carbon",
      "JPCC": "Journal of Physical Chemistry C",
      "JPCA": "Journal of Physical Chemistry A",
      "JPCB": "Journal of Physical Chemistry B",
      "JOC": "Journal of Organic Chemistry",
      "ORGLETT": "Organic Letters",
      "CHEM": "Chem",
      "NATCHEM": "Nature Chemistry"
    },
    "工程/物理": {
      "PR": "Physical Review",
      "PRA": "Physical Review A",
      "PRB": "Physical Review B",
      "PRC": "Physical Review C",
      "PRD": "Physical Review D",
      "PRE": "Physical Review E",
      "PRL": "Physical Review Letters",
      "PRX": "Physical Review X",
      "APL": "Applied Physics Letters",
      "JAP": "Journal of Applied Physics",
      "NANOTECH": "Nanotechnology",
      "OPTICA": "Optica",
      "OE": "Optics Express",
      "OL": "Optics Letters",
      "SNA": "Sensors and Actuators A-Physical",
      "SNB": "Sensors and Actuators B-Chemical"
    }
  }
}


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