with one click
daily-papers-fetch
// 论文抓取(3 步流水线的第 1 步)。抓取 arXiv + HuggingFace 最新论文,打分筛选,富化信息, 输出到 /tmp/daily_papers_enriched.json 供后续 skill 使用。 触发词:"论文抓取"、"跑一下论文抓取" 支持多天模式:"过去3天论文推荐"、"过去一周论文推荐"、"过去一周的论文"、"抓 3 天的论文"、"最近5天"
// 论文抓取(3 步流水线的第 1 步)。抓取 arXiv + HuggingFace 最新论文,打分筛选,富化信息, 输出到 /tmp/daily_papers_enriched.json 供后续 skill 使用。 触发词:"论文抓取"、"跑一下论文抓取" 支持多天模式:"过去3天论文推荐"、"过去一周论文推荐"、"过去一周的论文"、"抓 3 天的论文"、"最近5天"
每日论文推荐的一句话总入口。用户说“今日论文推荐”“过去3天论文推荐”“过去一周论文推荐” “最近3天论文”“看看这周有啥论文”时使用。 内部会自动串联论文抓取、推荐生成、重点论文笔记三步,无需用户手动拆开。
论文笔记生成(3 步流水线的第 3 步)。补充概念库,为推荐论文生成完整笔记, 链接回填到推荐文件;目录页默认自动刷新,git 自动化默认关闭。 触发词:"批量笔记"、"跑一下论文笔记"
论文点评(3 步流水线的第 2 步)。读取富化后的论文数据,扫描笔记库,生成有态度的推荐点评, 保存推荐文件到 Obsidian,更新 history;git 自动化默认关闭。 触发词:"论文点评"、"跑一下论文点评"
Use when user asks to "read paper", "analyze paper", "summarize paper", "读论文", "分析文献", "帮我看一下这篇paper", "论文笔记", or provides a PDF file that appears to be an academic paper. Specialized for CV/DL papers. Also supports Zotero integration: "读一下这篇论文 ...", "快速看一下这篇论文 ...", "批判性分析这篇论文 ...", "读一下 Zotero 里的 XXX", "批量读一下 Zotero 里 VLA 分类下的论文" **重要触发词**: "读一下 XXX"、"读一下这篇"、"帮我读" → 必须调用此 skill
重新生成 Obsidian 里的目录页 / 导航页(MOC)。 当用户说“更新索引”“更新论文和概念目录”“刷新论文和概念目录”“刷新MOC”时使用。
| name | daily-papers-fetch |
| description | 论文抓取(3 步流水线的第 1 步)。抓取 arXiv + HuggingFace 最新论文,打分筛选,富化信息, 输出到 /tmp/daily_papers_enriched.json 供后续 skill 使用。 触发词:"论文抓取"、"跑一下论文抓取" 支持多天模式:"过去3天论文推荐"、"过去一周论文推荐"、"过去一周的论文"、"抓 3 天的论文"、"最近5天" |
开始前: 先说一声 "开始抓取论文 🐕" 并告知今天日期。如果是多天模式,告知抓取范围。
你是 用户的论文抓取系统(3 步流水线的第 1 步)。抓取最新论文 → 打分筛选 → 富化信息 → 保存到临时文件。
先读取 ../_shared/user-config.json,如果 ../_shared/user-config.local.json 存在,再用它覆盖默认值。
显式生成并在后续统一使用这些变量:
VAULT_PATHDAILY_PAPERS_PATHKEYWORDSNEGATIVE_KEYWORDSDOMAIN_BOOST_KEYWORDSARXIV_CATEGORIESMIN_SCORETOP_N其中:
DAILY_PAPERS_PATH = {VAULT_PATH}/{daily_papers_folder}后续统一以共享配置和上面的变量为准。
从用户输入中解析 --days N 参数。匹配规则:
--days 7--days 3--days 14--days(默认当天)将解析出的天数存为变量 DAYS_ARG,在后续脚本调用中使用。
../_shared/user-config.json../_shared/user-config.local.jsonlocal 为准用 fetch_and_score.py 一步完成 HF + arXiv 抓取、打分、合并去重、历史去重、选 Top 30。零 token 消耗。
# 默认:当天
python3 ../daily-papers/fetch_and_score.py > /tmp/daily_papers_top30.json
# 多天模式(将 N 替换为解析出的天数)
python3 ../daily-papers/fetch_and_score.py --days N > /tmp/daily_papers_top30.json
根据前面解析的 DAYS_ARG,如果用户指定了天数就加 --days N,否则不加。
脚本自动完成:
.history.json 跨天去重(含周末模式放宽规则)进度日志输出到 stderr,JSON 结果输出到 stdout。
检查输出:确认 /tmp/daily_papers_top30.json 存在且包含有效 JSON 数组。如果为空数组或文件不存在,检查 stderr 诊断问题。
用 enrich_papers.py 脚本一次性富化所有论文。脚本使用 asyncio + curl 子进程并发请求,纯 regex 解析 HTML,无需 WebFetch。
先把 Phase 2 的 Top 30 结果保存到临时文件,然后运行:
python3 ../daily-papers/enrich_papers.py /tmp/daily_papers_top30.json /tmp/daily_papers_enriched.json
注意:使用两个文件路径参数(输入 + 输出),避免 sandbox 环境下 stdout/stderr 混淆。脚本会把第一个 .json 参数当作输入路径、第二个当作输出路径;如果只传一个 .json 它会被当作输入路径,结果走 stdout。
脚本自动完成以下工作(Semaphore(10) 限制并发,单篇超时 30 秒):
pdftotext | extract_affiliations.py)<meta> 标签提取 authors/affiliations输出格式:与输入相同的 JSON 数组,每篇论文增加以下字段:
figure_url (string): 首图 URLaffiliations (string): 机构列表,逗号分隔authors (string): 作者列表(可能被更完整的来源覆盖)section_headers (array): 章节标题captions (array): 图表标题has_real_world (bool): 是否包含真实实验method_names (array): 方法名列表method_summary (string): 方法描述(300-500 字)完成后检查 /tmp/daily_papers_enriched.json 存在且包含有效 JSON 数组。告知用户:
跑一下论文点评fetch_and_score.py 脚本,不启动 Task Agent,零 token 消耗enrich_papers.py 脚本,同样不启动 Task Agent