> arxiv-search

arxiv-search skill from guhaohao0991/PaperClaw

fetch
$curl "https://skillshub.wtf/guhaohao0991/PaperClaw/arxiv-search?format=md"
SKILL.mdarxiv-search

arXiv Paper Search Skill

功能描述

从 arXiv 检索学术论文,支持关键词搜索、批量下载和自动筛选。

使用方法

1. 基础搜索

调用内置的搜索脚本:

# 搜索特定关键词的最新论文
python skills/arxiv-search/scripts/search_arxiv.py --query "neural operator PDE" --limit 5

2. 批量关键词搜索(含去重机制)

使用预设的高级查询进行批量搜索:

# 使用预设关键词批量搜索,每个查询最多30篇
python skills/arxiv-search/scripts/search_arxiv.py --batch --limit 30

# 批量搜索并输出相关性最高的 Top 10
python skills/arxiv-search/scripts/search_arxiv.py --batch --limit 30 --top 10

# 批量搜索并保存结果到文件
python skills/arxiv-search/scripts/search_arxiv.py --batch --limit 30 --output search_results.json

脚本功能说明

search_arxiv.py 内置以下功能:

功能说明
去重机制基于 arXiv ID + 标准化标题去重(保留版本标识符如 ++、-2)
排除过滤自动排除不相关领域(流行病学、金融、NLP等)
相关性评分基于关键词匹配自动评分排序
批量搜索预设 9 组高级查询覆盖核心研究方向

命令行参数

参数说明
--query搜索关键词
--batch使用预设关键词批量搜索
--limit每个查询的最大结果数(默认30)
--top按相关性输出 Top N 论文
--delay批量搜索时的请求间隔秒数(默认3)
--output输出 JSON 文件路径
--verbose显示详细信息(去重、排除详情)

3. 下载论文 PDF

# 下载单篇论文
python3 << 'EOF'
import urllib.request
import os
import re

def download_paper(pdf_url, title, save_dir):
    """下载论文 PDF"""
    # 清理标题作为文件名
    safe_title = re.sub(r'[^\w\s-]', '', title)
    safe_title = re.sub(r'[-\s]+', '_', safe_title)[:100]
    
    os.makedirs(save_dir, exist_ok=True)
    pdf_path = os.path.join(save_dir, f"{safe_title}.pdf")
    
    try:
        urllib.request.urlretrieve(pdf_url, pdf_path)
        print(f"Downloaded: {pdf_path}")
        return pdf_path
    except Exception as e:
        print(f"Error downloading {title}: {e}")
        return None
EOF

4. 智能筛选论文

# 基于标题和摘要筛选高质量论文
python3 << 'EOF'
import json
import re

def score_paper_relevance(paper, keywords):
    """评估论文相关性分数"""
    title = paper['title'].lower()
    summary = paper['summary'].lower()
    
    score = 0
    
    # 核心关键词(高权重)
    geometry_keywords = ['3d geometry', '3d mesh', 'unstructured mesh', 'geometry-aware']
    for kw in geometry_keywords:
        if kw in title: score += 15
        if kw in summary: score += 5
    
    operator_keywords = ['neural operator', 'deep operator', 'operator learning']
    for kw in operator_keywords:
        if kw in title: score += 12
        if kw in summary: score += 4
    
    pde_keywords = ['pde solver', 'neural pde', 'pde surrogate', 'physics-informed']
    for kw in pde_keywords:
        if kw in title: score += 10
        if kw in summary: score += 3
    
    # 应用场景关键词(中高权重)
    application_keywords = ['cfd', 'fluid dynamics', 'aerodynamics', 'pressure field']
    for kw in application_keywords:
        if kw in title: score += 8
        if kw in summary: score += 3
    
    # 技术关键词(中权重)
    tech_keywords = ['transformer', 'graph neural network', 'gnn', 'pointnet']
    for kw in tech_keywords:
        if kw in title: score += 5
        if kw in summary: score += 2
    
    # 负面关键词(扣分)
    exclude_keywords = ['epidemic', 'epidemiology', 'disease', 'population dynamics',
                        'social network', 'finance', 'economics', 'nlp', 'language model']
    for kw in exclude_keywords:
        if kw in title: score -= 20
        if kw in summary: score -= 5
    
    # 加分项
    if any(word in summary for word in ['experiment', 'benchmark', 'dataset', 'validation']):
        score += 5
    
    if any(word in summary for word in ['code', 'github', 'implementation', 'open source']):
        score += 3
    
    return max(score, 0)  # 确保分数非负

def select_top_papers(papers, top_n=3):
    """选择最相关的论文"""
    scored = [(paper, score_paper_relevance(paper, [])) for paper in papers]
    scored.sort(key=lambda x: x[1], reverse=True)
    return [paper for paper, score in scored[:top_n]]
EOF

注意事项

  1. arXiv API 有请求频率限制,批量搜索时需要添加延迟(建议 3 秒)
  2. 论文标题可能包含特殊字符,需要清理后才能作为文件名
  3. 某些论文可能没有 PDF 链接,需要检查 pdf_url 是否存在
  4. 建议保存搜索日志,方便追踪和去重

┌ stats

installs/wk0
░░░░░░░░░░
github stars157
██████████
first seenMar 17, 2026
└────────────

┌ repo

guhaohao0991/PaperClaw
by guhaohao0991
└────────────