mcpField
C
conf-papers

conf-papers

github.com/juliye2025生産性1.8k59 回インストール6 週間前に更新
リポジトリ

conf-papers について

conf-papersは、研究者向けの会議論文推薦スキルです。年と会議を指定して論文を検索し、DBLPとSemantic Scholarの情報を用いて関連性・人気度・品質で順位付けし、Obsidianノートを作成します。

主な機能

  1. 01年と会議を指定した論文検索
  2. 02DBLPから会議論文リストを取得
  3. 03Semantic Scholarで概要と引用数を補完
  4. 04関連性・人気度・品質による評価
  5. 05年次のObsidian推薦ノート作成

活用シーン

  1. 01指定年・会議の関連論文を探す
  2. 02候補論文の引用数と関連性を比較
  3. 03既存ノートへのリンク付き会議論文推薦を作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/juliye2025/evil-read-arxiv --skill conf-papers

インストール後、Claude Code で/conf-papersを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

conf-papers.yaml
agents/
openai.yaml
scripts/
search_conf_papers.py

詳細

You are the Conference Paper Recommender for OrbitOS.

目標

ユーザーが研究関心に関連するトップレベルの学術会議(CVPR/ICCV/ECCV/ICLR/AAAI/NeurIPS/ICML)の論文を検索し、年で絞り込み、Obsidian vault に推薦ノートを生成できるよう支援します。

ワークフロー

ワークフローの概要

この skill は DBLP API で会議論文の一覧を検索し、Semantic Scholar API で引用数と要約を補足したうえで、関連性、人気度、品質の3つの観点からスコアを付けて並べ替え、推薦ノートを生成します。

設定

この skill は独立した設定ファイル conf-papers.yaml(skill ディレクトリ内)を使用し、start-my-day の research_interests.yaml とは完全に独立しています:

# conf-papers.yaml
keywords:           # 感兴趣的关键词(用于筛选论文标题)
  - "large language model"
  - "LLM"
  - ...
excluded_keywords:  # 排除的关键词
  - "3D"
  - "survey"
  - ...
default_year: 2024           # 默认搜索年份
default_conferences:         # 默认搜索会议
  - "ICLR"
  - "NeurIPS"
  - ...
top_n: 10                    # 返回论文数量

コマンドライン引数(年、会議)を使って、設定のデフォルト値を上書きできます。コマンドラインで指定されていない場合は、設定ファイルの値が使用されます。

ステップ1:引数の解析

  1. 年の抽出(任意。デフォルトは設定から読み込み)

    • ユーザー入力から年を抽出します。例:/conf-papers 2025
    • 指定がない場合は、設定の conf_papers.default_year を使用します
  2. 会議名の抽出(任意。デフォルトは設定から読み込み)

    • ユーザーは会議を指定できます。例:/conf-papers 2025 ICLR,CVPR
    • 指定がない場合は、設定の conf_papers.default_conferences を使用します
    • 注意:ICCV は偶数年、ECCV は奇数年に結果がない場合があります(二年に一度開催される会議のため)。その場合は通常どおりスキップします

ステップ2:既存ノートをスキャンしてインデックスを作成

start-my-day のスキャンスクリプトを再利用します:

cd "$SKILL_DIR/../start-my-day"
python scripts/scan_existing_notes.py \
  --vault "$OBSIDIAN_VAULT_PATH" \
  --output "$SKILL_DIR/existing_notes_index.json"

ステップ3:トップレベル会議の論文を検索

scripts/search_conf_papers.py を使用して、検索、補足、スコア付けを行います:

cd "$SKILL_DIR"
python scripts/search_conf_papers.py \
  --config "$SKILL_DIR/conf-papers.yaml" \
  --output conf_papers_filtered.json \
  --year {年份} \
  --conferences "{会议列表,逗号分隔}"

注意:--config はデフォルトで skill ディレクトリ内の conf-papers.yaml を参照するため、通常は手動で指定する必要はありません。--year と --conferences が指定されていない場合は、設定ファイルのデフォルト値が使用されます。

スクリプトのワークフロー:

  1. DBLP 検索:DBLP API を呼び出して、指定された会議と年の全論文を取得します
  2. 軽量フィルタリング:タイトルのキーワードと研究関心を照合し、対象を大幅に絞り込みます(約200件)
  3. S2 による補足:フィルタリング後の論文のみ Semantic Scholar に問い合わせ、要約と引用数を取得します
  4. 3次元スコアリング:関連性(40%)+人気度(40%)+品質(20%)でスコア付けし、上位 N 件を選びます

スコアの説明(start-my-day との違い:年はユーザーが指定するため、鮮度の観点はありません):

推荐评分 =
  相关性评分: 40%   # 与研究兴趣的匹配程度
  热门度评分: 40%   # 基于引用数(influentialCitationCount 优先)
  质量评分: 20%     # 从摘要推断创新性和实验质量

ステップ4:フィルタリング結果を読み込む

conf_papers_filtered.json から結果を読み込みます:

cat conf_papers_filtered.json

結果に含まれる項目:

  • year:検索年
  • conferences_searched:検索した会議の一覧
  • total_found:DBLP で検索された論文の総数
  • total_filtered:キーワードでフィルタリングした後の論文数
  • total_enriched:S2 による補足に成功した論文数
  • top_papers:スコア上位 N 件の論文。各論文に以下が含まれます:
    • title, authors, conference, year
    • dblp_url, arxiv_id(存在する場合)
    • abstract, citationCount, influentialCitationCount
    • scores(relevance, popularity, quality, recommendation)
    • matched_domain, matched_keywords

ステップ5:推薦ノートを生成

5.1 推薦ノートファイルを作成
  • ファイル名:10_Daily/{年份}_顶会论文推荐.md
  • frontmatter:
    ---
    keywords: [关键词1, 关键词2, ...]
    tags: ["llm-generated", "conf-paper-recommend"]
    ---
    
5.2 推薦ノートの構成
概要セクション
## {年份} 顶会论文推荐概览

本次从 **{会议列表}** 中共搜索到 {total_found} 篇论文,经过研究兴趣匹配筛选出 {total_filtered} 篇候选,最终推荐以下 {top_n} 篇高质量论文。

- **总体趋势**:{总结论文的整体研究趋势}

- **研究热点**:
  - **{热点1}**:{简要描述}
  - **{热点2}**:{简要描述}
  - **{热点3}**:{简要描述}

- **阅读建议**:{给出阅读顺序建议}
論文一覧(統一形式、スコア順)

language: "zh" の場合は中国語形式を使用:

### [[论文名字]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **会议**:{CVPR/ICLR/...} {年份}
- **引用**:{citationCount} (influential: {influentialCitationCount})
- **链接**:[DBLP](链接) | [arXiv](链接) | [PDF](链接)
- **笔记**:[[已有笔记路径]] 或 —

**一句话总结**:[一句话概括论文的核心贡献]

**核心贡献/观点**:
- [贡献点1]
- [贡献点2]
- [贡献点3]

**关键结果**:[从摘要中提取的最重要结果]

---

language: "en" の場合は英語形式を使用:

### [[paper_note_filename|Paper Title]]
- **Authors**: [author list]
- **Affiliation**: [affiliation or "Not specified"]
- **Conference**: {CVPR/ICLR/...} {year}
- **Citations**: {citationCount} (influential: {influentialCitationCount})
- **Links**: [DBLP](link) | [arXiv](link) | [PDF](link)
- **Notes**: [[existing_note_path]] or —

**One-line Summary**: [one-line summary of core contribution]

**Core Contributions**:
- [Contribution 1]
- [Contribution 2]
- [Contribution 3]

**Key Results**: [most important results from abstract]

---

リンクのルール:

  • arXiv ID がある論文:arXiv と PDF のリンクを記載します
  • arXiv ID がない論文:DBLP リンクのみを記載し、「arXiv 版なし」と明記します
  • DOI がある論文:DOI リンクも追加します
5.3 上位3件の特別な処理

上位3件の論文(スコアが最も高い3件)について:

ステップ0:論文のノートがすでにあるか確認

# 在 20_Research/Papers/ 目录中搜索已有笔记
# 搜索方式:
# 1. 按论文ID搜索(如 2501.12345)
# 2. 按论文标题搜索(模糊匹配)

ステップ1:確認結果に応じて処理方法を決定

ノートがすでにある場合:

  • 新しい詳細レポートは生成しません
  • 既存ノートのパスを wikilink として使用します
  • 推薦ノートの「詳細レポート」フィールドに既存ノートを記載します

ノートがなく、かつ論文に arXiv ID がある場合:

  • extract-paper-images を呼び出して画像を抽出します
  • paper-analyze を呼び出して詳細レポートを生成します
  • 推薦ノートに画像と詳細レポートへのリンクを追加します

ノートがなく、かつ論文に arXiv ID がない場合:

  • 「arXiv 版がないため、画像の自動抽出と詳細分析を生成できません」と明記します
  • 手動で確認できるよう DBLP/DOI リンクを記載します
  • 画像の抽出と詳細分析はスキップします

ステップ2:推薦ノートに画像とリンクを挿入

arXiv ID あり+画像あり(language: "zh"):

### [[论文名字]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **会议**:{会议} {年份}
- **引用**:{citationCount} (influential: {influentialCitationCount})
- **链接**:[DBLP](链接) | [arXiv](链接) | [PDF](链接)
- **详细报告**:[[20_Research/Papers/[domain]/[note_filename]]] (自动生成)

**一句话总结**:[一句话概括论文的核心贡献]

![论文图片|600](图片路径)

**核心贡献/观点**:
...

arXiv ID あり+画像あり(language: "en"):

### [[paper_note_filename|Paper Title]]
- **Authors**: [author list]
- **Affiliation**: [affiliation or "Not specified"]
- **Conference**: {conference} {year}
- **Citations**: {citationCount} (influential: {influentialCitationCount})
- **Links**: [DBLP](link) | [arXiv](link) | [PDF](link)
- **Detailed Report**: [[20_Research/Papers/[domain]/[note_filename]]] (auto-generated)

**One-line Summary**: [one-line summary]

![paper image|600](image_path)

**Core Contributions**:
...

詳細レポートについて:

  • レポートのパス:20_Research/Papers/[论文分类]/[note_filename].md
  • 重要:wikilink の作成には、元のタイトルではなく JSON の note_filename フィールドを使用してください。generate_note.py が作成するファイル名との一致を確保できます
    • 正しい例:[[20_Research/Papers/大模型/Attention_Is_All_You_Need]]
    • 誤った例:[[20_Research/Papers/大模型/Attention Is All You Need]]
  • 論文分類(domain)の命名規則:domain 名は paper-analyze が実際に作成するディレクトリ名と完全に一致させてください。途中で切り詰めないでください
    • 正しい例:[[20_Research/Papers/Foundation Models & LLM/...]]
    • 誤った例:[[20_Research/Papers/Foundation]](「Models & LLM」の部分が切り詰められています)
  • 詳細レポートは paper-analyze によって自動生成され、論文の完全な分析が含まれます

arXiv ID なし(language: "zh"):

### [[论文名字]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **会议**:{会议} {年份}
- **引用**:{citationCount} (influential: {influentialCitationCount})
- **链接**:[DBLP](链接)
- **备注**:无 arXiv 版本,无法自动提取图片

**一句话总结**:[一句话概括论文的核心贡献]

**核心贡献/观点**:
...

arXiv ID なし(language: "en"):

### [[paper_note_filename|Paper Title]]
- **Authors**: [author list]
- **Affiliation**: [affiliation or "Not specified"]
- **Conference**: {conference} {year}
- **Citations**: {citationCount} (influential: {influentialCitationCount})
- **Links**: [DBLP](link)
- **Note**: No arXiv version, cannot auto-extract images

**One-line Summary**: [one-line summary]

**Core Contributions**:
...

ステップ6:キーワードリンク

start-my-day のキーワードリンクスクリプトを再利用します:

cd "$SKILL_DIR/../start-my-day"
python scripts/link_keywords.py \
  --index "$SKILL_DIR/existing_notes_index.json" \
  --input "$OBSIDIAN_VAULT_PATH/10_Daily/{年份}_顶会论文推荐.md" \
  --output "$OBSIDIAN_VAULT_PATH/10_Daily/{年份}_顶会论文推荐.md"

重要なルール

  • 年は必須パラメーターです:ユーザーは検索する年を指定する必要があります
  • 3次元スコアリング:関連性(40%)+人気度(40%)+品質(20%)。鮮度の観点はありません
  • ファイル名には年を含めます:10_Daily/{年份}_顶会论文推荐.md
  • 2段階フィルタリング:まずタイトルのキーワードで軽量フィルタリングし、その後候補論文について S2 に問い合わせることで、大量の API 呼び出しを避けます
  • 論文には会議名と引用数のフィールドを追加します:start-my-day の arXiv 論文とは異なります
  • 上位3件の特別な処理:
    • 論文名は wikilink 形式で記載します:[[论文名字]]
    • arXiv ID がある場合:画像を抽出し、詳細分析を行います
    • arXiv ID がない場合:「arXiv 版なし」と明記し、画像の抽出と詳細分析をスキップします
  • その他の論文:基本情報のみを記載します
  • 二年に一度開催される会議の処理:ICCV は偶数年、ECCV は奇数年に結果がない場合があります。その場合は通常どおりスキップします
  • キーワードリンクの自動作成:start-my-day の link_keywords.py を再利用します

エラー処理

状況対応
DBLP リクエストの失敗3回再試行し、指数バックオフを適用します。1つの会議で失敗しても全体の処理は中断しません
S2 の429レート制限30秒待ってから再試行します
S2 による補足の失敗論文を保持し、abstract=None、citationCount=0 として、タイトルのみでスコアを付けます
二年に一度開催される会議で結果がないICCV は偶数年、ECCV は奇数年に結果がない場合があります。その場合は通常どおりスキップし、ログに記録します
論文に arXiv ID がない画像の抽出と詳細分析をスキップし、ノートに明記します

他の skills との違い

conf-papers (本skill)

  • 目的:搜索顶级会议论文,按年份推荐
  • 数据源:DBLP + Semantic Scholar
  • 搜索范围:指定年份的指定会议
  • 评分维度:相关性 + 热门度 + 质量(无新近性)
  • 输出:年度推荐笔记

start-my-day (每日推荐)

  • 目的:每日 arXiv 新论文推荐
  • 数据源:arXiv + Semantic Scholar
  • 搜索范围:近一个月 + 近一年热门论文
  • 评分维度:相关性 + 新近性 + 热门度 + 质量
  • 输出:每日推荐笔记

使用说明

当用户调用 conf-papers(Codex 使用 $conf-papers,Claude Code 使用 /conf-papers)时,按以下步骤执行:

参数支持:

  • 可选:年份(如 2025),未指定时使用配置中的 conf_papers.default_year
  • 可选:会议名(如 ICLR,CVPR,逗号分隔),未指定时使用配置中的 conf_papers.default_conferences
  • 搜索关键词和排除关键词均从 conf_papers 配置段读取
  • 示例:
    • $conf-papers 或 /conf-papers — 使用配置中的默认年份和会议
    • $conf-papers 2025 — 搜索配置中默认会议的 2025 年论文
    • $conf-papers 2024 ICLR — 仅搜索 ICLR 2024
    • $conf-papers 2024 CVPR,NeurIPS — 搜索 CVPR 和 NeurIPS 2024

自动执行流程

  1. 解析参数

    • 提取年份和可选会议名
    • 验证会议名是否在支持列表中
  2. 扫描现有笔记构建索引

    cd "$SKILL_DIR/../start-my-day"
    python scripts/scan_existing_notes.py \
      --vault "$OBSIDIAN_VAULT_PATH" \
      --output "$SKILL_DIR/existing_notes_index.json"
    
  3. 搜索和筛选顶会论文

    cd "$SKILL_DIR"
    python scripts/search_conf_papers.py \
      --config "$SKILL_DIR/conf-papers.yaml" \
      --output conf_papers_filtered.json \
      --year {年份} \
      --conferences "{会议列表}" \
      --top-n 10
    
  4. 读取筛选结果

    • 从 conf_papers_filtered.json 中读取
    • 获取前 10 篇高评分论文
  5. 生成推荐笔记(包含关键词链接)

    • 创建 10_Daily/{年份}_顶会论文推荐.md
    • 按评分排序
    • 前 3 篇特殊处理:图片 + 深度分析(仅有 arXiv ID 的论文)
    • 其他论文只写基本信息
    • 自动关键词链接
  6. 对前 3 篇论文执行深度分析(仅有 arXiv ID 的论文)

    # 对每篇前三论文执行以下操作
    
    # 步骤1:检查论文是否已有笔记
    # 在 20_Research/Papers/ 目录中搜索
    
    # 步骤2:根据检查结果决定处理方式
    if 已有笔记:
        # 不生成新的详细报告
        # 使用已有的笔记路径
    elif 有 arXiv ID:
        # 提取第一张图片
        调用 extract-paper-images skill,传入 [论文ID]
        # 生成详细分析报告
        调用 paper-analyze skill,传入 [论文ID]
    else:
        # 无 arXiv ID,跳过深度分析
        # 标注在推荐笔记中
    

临时文件清理

  • conf_papers_filtered.json — 搜索结果
  • existing_notes_index.json — 笔记索引
  • 推荐笔记已保存到 vault 后,可清理临时文件

依赖项

  • Python 3.x
  • PyYAML
  • 网络连接(DBLP API + Semantic Scholar API)
  • start-my-day skill(复用 scan_existing_notes.py, link_keywords.py, search_arxiv.py 的评分函数)
  • extract-paper-images skill(提取论文图片,仅限有 arXiv ID 的论文)
  • paper-analyze skill(生成详细报告,仅限有 arXiv ID 的论文)

コメント