# Sn Search Academic

用于学术调研、论文精读、相关工作梳理、百科知识查询和引用链追溯。

- Repository: https://github.com/OpenSenseNova/SenseNova-Skills (6002 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-search-academic -g -a claude-code -y`
Codex: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-search-academic -g -a codex -y`
Cursor: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-search-academic -g -a cursor -y`
Gemini CLI: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-search-academic -g -a gemini-cli -y`

## Description

用于学术调研、论文精读、相关工作梳理、百科知识查询和引用链追溯。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# sn-search-academic - 学术搜索

## 凭证配置

API key、token 与 cookie 统一建议写在仓库根目录 `.env`（参考 `.env.example`），并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证；不要把真实密钥写入 skill payload、报告、日志或提交。

使用三个统一入口完成学术调研：

- `search.py`：搜索论文和百科条目
- `paper.py`：列出论文章节，读取论文全文或指定章节
- `refTree.py`：查询论文的 references 和 citations

不要直接调用历史 provider 脚本；它们只是统一入口的内部实现细节。
需要 provider 回退链、参数分发或完整输出字段时，按需读取 `references/search.md`、`references/paper.md`、`references/refTree.md`。

## 可用脚本

| 脚本 | 用途 | 主要输入 | 主要输出 |
|------|------|----------|----------|
| `scripts/search.py` | 搜索论文/百科 | `query`，可选 `--source`、`--limit`、`--category`、`--lang` | 按 source 分组的论文/百科条目，位于 `source_results[*].items` |
| `scripts/paper.py` | 列出章节，读取论文全文或章节 | 论文 ID，可选 `--source`、`--list_section`、`--section` | 章节列表位于 `sections`；全文或章节正文位于 `content` |
| `scripts/refTree.py` | 查询引用树 | `--paper_id`、`--title`，可选 `--direction` | 参考文献与被引论文，位于 `source_results[*].references` / `source_results[*].citations` |

## 执行约定

本技能的 `scripts/...`、`requirements.txt`、`references/...` 路径均相对本 skill 目录；若当前工作目录不同，先解析为绝对路径，不要依赖 `${SKILL_DIR}` 运行时变量。

调用约定：

- 不要并行启动多个本技能脚本；`search.py` 和 `refTree.py` 内部已经处理并发、超时和 provider 回退链。
- 长结果优先加 `--output <path>` 写入文件，再读取必要字段，避免终端输出过长。
- `--provider-timeout` 表示单个 provider 超时；默认使用脚本内置超时。

## 依赖

首次运行或脚本提示缺库时，使用本技能的依赖清单安装到当前 Python 环境：

```bash
python3 -m pip install -r requirements.txt
```

不要在脚本内部自动安装依赖。若安装失败、网络不可用或包不可用，停止使用对应脚本并改用 WebSearch/browser-use，说明缺少依赖。

Crawler 回退还需要额外运行时环境：

```bash
python3 -m playwright install firefox
```

`arxiv_crawler_search.py` 和 `semantic_scholar_crawler_refTree.py` 还需要 Node.js，以及某个当前目录或祖先目录中已安装 `camoufox-js` 的 `node_modules`。缺少这些环境时，不要尝试绕过；改用非 crawler provider 或网页搜索。

## 参数说明

### search.py

统一搜索入口。默认搜索所有支持的 source，并按 source 分组返回结果。

```bash
python3 scripts/search.py <query> [选项]
```

The rest: https://github.com/OpenSenseNova/SenseNova-Skills/blob/HEAD/skills/sn-search-academic/SKILL.md
