# Daily Papers Fetch

Fetch, rank, and enrich recent arXiv and Hugging Face papers.

- Repository: https://github.com/huangkiki/dailypaper-skills (1329 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add huangkiki/dailypaper-skills --skill daily-papers-fetch -g -a claude-code -y`
Codex: `npx skills add huangkiki/dailypaper-skills --skill daily-papers-fetch -g -a codex -y`
Cursor: `npx skills add huangkiki/dailypaper-skills --skill daily-papers-fetch -g -a cursor -y`
Gemini CLI: `npx skills add huangkiki/dailypaper-skills --skill daily-papers-fetch -g -a gemini-cli -y`

## Description

Fetch, rank, and enrich recent arXiv and Hugging Face papers. English triggers: "fetch papers", "fetch papers from the last three days". This is pipeline stage 1. 论文抓取（3 步流水线的第 1 步）。抓取 arXiv + HuggingFace 最新论文，打分筛选，富化信息， 输出 daily_papers_enriched.json 到共享临时目录，供后续 skill 使用。 触发词："论文抓取"、"跑一下论文抓取" 支持多天模式："过去3天论文推荐"、"过去一周论文推荐"、"过去一周的论文"、"抓 3 天的论文"、"最近5天

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

## Language / 语言

First resolve `OUTPUT_LANGUAGE` using [language selection](../_shared/language.md).
For an English request (or an explicit request for English), read and follow
[the English workflow](SKILL.en.md) instead of the Chinese body below.
中文请求继续执行下文；用户明确指定的语言优先。内部阶段继承语言，不从论文或工具输出重新判断。

## 执行环境

开始前读取 [Agent 运行约定](../_shared/agent-runtime.md)，解析当前 Skill 目录、有效配置和 `TEMP_DIR`，再执行下文。

> **开始前**: 先说一声 "开始抓取论文 🐕" 并告知今天日期。如果是多天模式，告知抓取范围。

# 论文抓取 (Fetch + Score + Enrich)

你是 用户的论文抓取系统（3 步流水线的第 1 步）。抓取最新论文 → 打分筛选 → 富化信息 → 保存到临时文件。

## Step 0: 读取共享配置

运行 `python3 ../_shared/user_config.py`，使用其输出的合并配置（含个人配置和环境变量覆盖）。

显式生成并在后续统一使用这些变量：

- `VAULT_PATH`
- `DAILY_PAPERS_PATH`
- `KEYWORDS`
- `NEGATIVE_KEYWORDS`
- `DOMAIN_BOOST_KEYWORDS`
- `ARXIV_CATEGORIES`
- `MIN_SCORE`
- `TOP_N`（默认 10）
- `RESEARCH_INTERESTS`
- `RANKING`

其中：

- `DAILY_PAPERS_PATH = {VAULT_PATH}/{daily_papers_folder}`
- 所有关键词、分类、阈值都以共享配置为准

后续统一以共享配置和上面的变量为准。

## 解析天数

从用户输入中解析 `--days N` 参数。匹配规则：
- "过去一周"、"最近7天"、"一周的论文" → `--days 7`
- "过去3天"、"最近三天"、"抓3天" → `--days 3`
- "过去两周" → `--days 14`
- 无特殊指定 / "跑一下论文抓取" → 不加 `--days`（默认当天）

将解析出的天数存为变量 `DAYS_ARG`，在后续脚本调用中使用。

## 配置来源

配置优先级见 [Agent 运行约定](../_shared/agent-runtime.md)。所有阶段使用同一份有效配置和 `TEMP_DIR`。

## 工作流程

### Phase 1+2: Python 召回 + 当前 Agent 语义评分

先读取有效配置 `daily_papers.ranking.backend`（新安装默认 `agent`）。用户当次明确选择某种模式时用 `--ranker agent|jev|keyword` 覆盖；仅仅存在 API key 不切换模式。旧个人配置中的 `jev` 会保留，需要用户选择改为 `agent` 才迁移。

`fetch_and_score.py` 负责 HF + arXiv 抓取、关键词召回、按 arXiv ID 和历史去重。默认每日候选最多 30 篇，推荐最多 10 篇；多天按天数扩展。召回不足时不凑数。

#### 默认 `agent`：在当前会话内评分，无需额外 API key

```bash
python3 ../daily-papers/fetch_and_score.py --ranker agent --output "{TEMP_DIR}/daily_papers_candidates.json"
```

多天时加 `--days N`。输出是 `status=awaiting_agent` 的**候选请求对象**，不是最终推荐数组。检查本次运行退出码和输出；读取其中的 `run_id`、`research_interests`、`criteria`、`requested_top_n`、`min_score` 和所有 `candidates`。

**当前主 Agent 自己评分**，不要要求用户逐篇打分，不另起付费模型 API，不用关键词顺序冒充语义判断：

The rest: https://github.com/huangkiki/dailypaper-skills/blob/HEAD/skills/daily-papers-fetch/SKILL.md
