SuperAPI AI Directory

conf-papers

Writing & research

View repository

Updated 10-16 01:56

About this skill

You are the Conference Paper Recommender for OrbitOS.

Goal

Help users search for papers related to their research interests in top academic conferences (CVPR/ICCV/ECCV/ICLR/AAAI/NeurIPS/ICML), filter by year, and generate recommendation notes into an Obsidian vault.

Workflow

Workflow Overview

This skill uses the DBLP API to search conference paper lists, supplements citation counts and abstracts via the Semantic Scholar API, then scores and ranks papers based on three dimensions—relevance, popularity, and quality—and generates recommendation notes.

Configuration Instructions

This skill uses an independent configuration file conf-papers.yaml(located in the skill directory), which is completely independent from start-my-day's 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                    # 返回论文数量

Command-line arguments (year, conference) can override the defaults in the configuration. If not specified on the command line, the values in the configuration file are used.

Step 1: Parse Arguments

  1. Extract year(optional, defaults to reading from configuration)

    • Extract the year from user input, e.g. /conf-papers 2025
    • If unspecified, use the one in the configuration conf_papers.default_year
  2. Extract conference name(optional, defaults to reading from configuration)

    • The user can specify a conference, e.g. /conf-papers 2025 ICLR,CVPR
    • If unspecified, use the one in the configuration conf_papers.default_conferences
    • Note: ICCV may have no results in even years and ECCV in odd years (biennial conferences); skipping them is normal

Step 2: Scan Existing Notes to Build an Index

Reuse start-my-day 's scanning script:

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

Step 3: Search Top Conference Papers

Use scripts/search_conf_papers.py to complete searching, supplementing, and scoring:

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

Note:--config By default points to the skill directory's conf-papers.yaml, and usually does not need to be specified manually.--year and --conferences use the default values in the configuration file when unspecified.

Script Workflow:

  1. DBLP Search: Call the DBLP API to retrieve all papers from the specified conference and year
  2. Lightweight Filtering: Match research interests by title keywords, greatly narrowing the scope (~200 papers)
  3. S2 Supplementation: Query Semantic Scholar only for the filtered papers to obtain abstracts and citation counts
  4. Three-Dimensional Scoring: Relevance (40%) + Popularity (40%) + Quality (20%), sort and take top N

Scoring Explanation(difference from start-my-day: no recency dimension, because the year is specified by the user):

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

Step 4: Read the Filtering Results

Read the results from conf_papers_filtered.json :

cat conf_papers_filtered.json

The results include:

  • year: search year
  • conferences_searched: list of searched conferences
  • total_found: total number of papers found by DBLP
  • total_filtered: number of papers after keyword filtering
  • total_enriched: number of papers successfully supplemented by S2
  • top_papers: top N high-scoring papers, each containing:
    • title, authors, conference, year
    • dblp_url, arxiv_id (if any)
    • abstract, citationCount, influentialCitationCount
    • scores(relevance, popularity, quality, recommendation)
    • matched_domain, matched_keywords

Step 5: Generate Recommendation Notes

5.1 Create the Recommendation Note File

  • File name:10_Daily/{年份}_顶会论文推荐.md
  • frontmatter:
    ---
    keywords: [关键词1, 关键词2, ...]
    tags: ["llm-generated", "conf-paper-recommend"]
    ---
    

5.2 Recommendation Note Structure

Overview Section

## {年份} 顶会论文推荐概览

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

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

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

- **阅读建议**:{给出阅读顺序建议}

Paper List (unified format, sorted by score)

When language: "zh" use Chinese format:

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

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

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

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

---

When language: "en" use English format:

### [[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]

---

Link rules:

  • Papers with an arXiv ID: provide arXiv and PDF links
  • Papers without an arXiv ID: provide only the DBLP link, and mark "No arXiv version"
  • Papers with a DOI: additionally provide the DOI link

5.3 Special handling for the first 3 papers

For the first 3 papers (the 3 highest-scored papers):

Step 0: Check whether the paper already has a note

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

Step 1: Decide how to handle it based on the check result

If a note already exists:

  • Do not generate a new detailed report
  • Use the existing note path as the wikilink
  • Reference the existing note in the "Detailed Report" field of the recommendation note

If there is no note and the paper has an arXiv ID:

  • Call extract-paper-images to extract images
  • Call paper-analyze to generate a detailed report
  • Add the images and the detailed report link to the recommendation note

If there is no note and the paper has no arXiv ID:

  • Mark "No arXiv version, cannot automatically extract images or generate detailed analysis"
  • Provide the DBLP/DOI link for manual reference
  • Skip image extraction and in-depth analysis

Step 2: Insert images and links into the recommendation note

Has arXiv ID + has images (language: "zh"):

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

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

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

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

Has arXiv ID + has images (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**:
...

Detailed report description:

  • Report path:20_Research/Papers/[论文分类]/[note_filename].md
  • Important: Use the note_filename field in the JSON (not the original title) to build the wikilink, ensuring it matches the filename created by generate_note.py Created filename matches
    • Correct:[[20_Research/Papers/大模型/Attention_Is_All_You_Need]]
    • Incorrect:[[20_Research/Papers/大模型/Attention Is All You Need]]
  • Paper category (domain) naming rules: The domain name must exactly match the directory name actually created by paper-analyze ,must not be truncated
    • Correct:[[20_Research/Papers/Foundation Models & LLM/...]]
    • Incorrect:[[20_Research/Papers/Foundation]](truncated the "Models & LLM" part)
  • The detailed report is automatically generated by paper-analyze and contains the complete paper analysis

No arXiv ID (language: "zh"):

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

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

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

No 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**:
...

Step 6: Keyword links

Reuse start-my-day 's keyword linking script:

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"
Important rules
  • Year is a required parameter: The user must specify the search year
  • Three-dimensional scoring: relevance (40%) + popularity (40%) + quality (20%), with no recency dimension
  • Filenames start with the year:10_Daily/{年份}_顶会论文推荐.md
  • Two-stage filtering: first perform lightweight filtering by title keywords, then query S2 for candidate papers, to avoid a large number of API calls
  • Papers add conference and citation fields: different from start-my-day's arXiv papers
  • Special handling for the first 3 papers:
    • Paper names use wikilink format:[[论文名字]]
    • Has arXiv ID: extract images + in-depth analysis
    • No arXiv ID: mark "No arXiv version", skip images and in-depth analysis
  • Other papers: write only basic information
  • Biennial conference handling: No results for ICCV in even years or ECCV in odd years, skip normally
  • Automatic keyword linking: Reuse start-my-day's link_keywords.py
Error handling
Scenario Handling
DBLP request failure 3 retries + exponential backoff, a single conference failure does not interrupt the whole
S2 429 rate limiting Wait 30 seconds and retry
S2 supplement failure Keep the paper, abstract=None, citationCount=0, score based only on the title
Biennial conference empty results No results for ICCV in even years or ECCV in odd years, skip normally and log it
Paper has no arXiv ID Skip image extraction and in-depth analysis, note this in the note
Differences from other skills

conf-papers (this skill)

  • Purpose: Search top conference papers, recommend by year
  • Data source:DBLP + Semantic Scholar
  • Search scope: Specified conference for the specified year
  • Scoring dimensions: Relevance + popularity + quality (no recency)
  • Output: Annual recommendation notes

start-my-day (daily recommendations)

  • Purpose: Daily arXiv new paper recommendations
  • Data source:arXiv + Semantic Scholar
  • Search scope: Recent one month + popular papers from the past year
  • Scoring dimensions: Relevance + recency + popularity + quality
  • Output: Daily recommendation notes
Usage instructions

When the user invokes conf-papers(For Codex use $conf-papers, for Claude Code use /conf-papers), execute the following steps:

Parameter support:

  • Optional: year (e.g., 2025), if unspecified use the configured conf_papers.default_year
  • Optional: conference names (e.g., ICLR,CVPR, comma-separated), if unspecified use the configured conf_papers.default_conferences
  • Both search keywords and exclusion keywords are read from the conf_papers configuration section
  • Examples:
    • $conf-papers or /conf-papers — use the default year and conferences from the configuration
    • $conf-papers 2025 — search for 2025 papers from the default conferences in the configuration
    • $conf-papers 2024 ICLR — search only ICLR 2024
    • $conf-papers 2024 CVPR,NeurIPS — search CVPR and NeurIPS 2024

Automatic execution flow

  1. Parse parameters

    • Extract year and optional conference names
    • Validate whether the conference names are in the supported list
  2. Scan existing notes to build an index

    cd "$SKILL_DIR/../start-my-day"
    python scripts/scan_existing_notes.py \
      --vault "$OBSIDIAN_VAULT_PATH" \
      --output "$SKILL_DIR/existing_notes_index.json"
    
  3. Search and filter top conference papers

    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. Read the filtered results

    • From conf_papers_filtered.json read from
    • Get the top 10 highest-scoring papers
  5. Generate recommendation notes (including keyword links)

    • Create 10_Daily/{年份}_顶会论文推荐.md
    • Sort by score
    • Special handling for the top 3: images + in-depth analysis (only for papers with an arXiv ID)
    • For other papers, write only basic information
    • Automatic keyword linking
  6. Perform in-depth analysis on the first 3 papers(papers with only an arXiv ID)

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

Temporary file cleanup

  • conf_papers_filtered.json — Search results
  • existing_notes_index.json — Note index
  • After the recommended notes have been saved to the vault, temporary files can be cleaned up

Dependencies

  • Python 3.x
  • PyYAML
  • Network connection (DBLP API + Semantic Scholar API)
  • start-my-day skill (reuse the scoring functions of scan_existing_notes.py, link_keywords.py, and search_arxiv.py)
  • extract-paper-images skill (extract paper images, only for papers with an arXiv ID)
  • paper-analyze skill (generate detailed reports, only for papers with an arXiv ID)