SuperAPI AI Directory

start-my-day

Writing & research

View repository

Updated 10-16 06:21

About this skill

Language Setting / 语言设置

This skill supports both Chinese and English reports. The language is determined by the language field in your config file:

  • Chinese (default): Set language: "zh" in config
  • English: Set language: "en" in config

The config file should be located at: $OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml

Language Detection

At the start of execution, read the config file to detect the language setting:

# Resolve OBSIDIAN_VAULT_PATH if not set in the current session
# Some agent-hosted shell sessions do not source interactive shell profiles automatically
if [ -z "$OBSIDIAN_VAULT_PATH" ]; then
    [ -f "$HOME/.zshrc" ] && source "$HOME/.zshrc" 2>/dev/null || true
    [ -f "$HOME/.bash_profile" ] && source "$HOME/.bash_profile" 2>/dev/null || true
fi

# Read language from config
LANGUAGE=$(grep -E "^\s*language:" "$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml" | awk '{print $2}' | tr -d '"')

# Default to Chinese if not set
if [ -z "$LANGUAGE" ]; then
    LANGUAGE="zh"
fi

# Set note filename suffix based on language
if [ "$LANGUAGE" = "en" ]; then
    NOTE_SUFFIX="paper-recommendations"
else
    NOTE_SUFFIX="论文推荐"
fi

Then use this language setting throughout the workflow:

  • When generating notes, pass --language $LANGUAGE to scripts
  • Use appropriate section headers in the generated notes

Goal

Help users start their research day by searching for extremely popular, extremely trending, and extremely high-quality papers from the past month and the past year, and generate recommendation notes.

Workflow

Workflow Overview

This skill uses a Python script to call the arXiv API to search for papers, parse XML results, and filter and score them based on research interests.

Step 1: Gather Context (Silent)

  1. Get today's date

    • Determine the current date (YYYY-MM-DD format)
  2. Read research configuration

    • Read $OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml(Note: the filename is interests, not interest) to get research fields
    • Extract: keywords, categories, and priorities
  3. Scan existing notes to build an index

    • Scan all 20_Research/Papers/ files in the .md directory
    • Extract note titles (from filenames and the frontmatter title field)
    • Build a mapping table from keywords to note paths for subsequent automatic linking
    • Prefer the title field in frontmatter, then use the filename

Step 2: Search for Papers

2.1 Search Scope

Search for recent papers in all relevant categories:

  1. Search scope

    • Use scripts/search_arxiv.py to search arXiv
    • Query: all research-related arXiv categories
    • Sort by submission date
    • Limit results: 200 papers
  2. Filtering strategy

    • Filter papers according to the research interests configuration file
    • Calculate a comprehensive recommendation score
    • Keep the top 10 highest-scoring papers

2.2 Execute Search and Filtering

Use the scripts/search_arxiv.py script to complete searching, parsing, and filtering:

# 使用 Python 脚本搜索、解析和筛选 arXiv 论文
# 首先切换到 skill 目录,然后执行脚本
cd "$SKILL_DIR"
python scripts/search_arxiv.py \
  --config "$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml" \
  --output arxiv_filtered.json \
  --max-results 200 \
  --top-n 10 \
  --categories "cs.AI,cs.LG,cs.CL,cs.CV,cs.MM,cs.MA,cs.RO"

Script functionality:

  1. Search arXiv

    • Call the arXiv API to search for papers in specified categories
    • Retrieve up to 200 latest papers
  2. Parse XML results

    • Parse the XML returned by the API
    • Extract: ID, title, authors, abstract, publication date, categories
  3. Apply filtering and scoring

    • Filter papers according to the research interests configuration file
    • Calculate a comprehensive recommendation score (relevance 40%, recency 20%, popularity 30%, quality 10%)
    • Sort by score and keep the top 10

Output:

  • arxiv_filtered.json - Filtered paper list (JSON format)
  • Each paper includes:
    • Paper ID, title, authors, abstract
    • Publication date, categories
    • Relevance score, recency score, popularity score, quality score
    • Final recommendation score, matched fields

Step 3: Read Filtering Results

3.1 Read JSON Results

From arxiv_filtered.json , read the filtered and scored paper list:

# 读取筛选结果
cat arxiv_filtered.json

Results include:

  • total_found: Total number of papers found
  • total_filtered: Number of papers after filtering
  • top_papers: Top 10 high-scoring papers, each containing:
    • Paper ID, title, authors, abstract
    • Publication date, category
    • Relevance score, recency score, quality score
    • Final recommendation score, matched fields, matched keywords

3.2 Scoring Explanation

Comprehensive scoring across multiple dimensions:

推荐评分 =
  相关性评分: 40%
  新近性评分: 20%
  热门度评分: 30%
  质量评分: 10%

Scoring Rules:

  1. Relevance Score (40%)

    • Degree of match with research interests
    • Title keyword match: +0.5 points each
    • Abstract keyword match: +0.3 points each
    • Category match: +1.0 point
    • Maximum score: ~3.0
  2. Recency Score (20%)

    • Within the last 30 days: +3 points
    • Within 30-90 days: +2 points
    • Within 90-180 days: +1 point
    • More than 180 days: 0 points
  3. Popularity Score (30%)

    • (If data is available) Citation count > 100: +3 points
    • Citation count 50-100: +2 points
    • Citation count < 50: +1 point
    • No citation data: 0 points
    • Or infer based on time since publication (popular new papers within the last 7 days): +2 points
  4. Quality Score (10%)

    • Inferred from the abstract: Significant innovation: +3 points
    • Clear methodology: +2 points
    • General work: +1 point
    • Or read the quality score from existing notes

Final Recommendation Score = Relevance (40%) + Recency (20%) + Popularity (30%) + Quality (10%)

Step 4: Generate today's recommendation notes

4.1 Read the filtering results

From arxiv_filtered.json , read the filtered paper list:

  • Contains the top 10 high-scoring papers
  • Each paper contains complete information: ID, title, authors, abstract, score, matched fields

4.2 Create the recommendation notes file

  1. Create the recommendation notes file

    • File name (according to the language setting):
      • Chinese (language: "zh"):10_Daily/YYYY-MM-DD论文推荐.md
      • English (language: "en"):10_Daily/YYYY-MM-DD-paper-recommendations.md
    • Use variables:10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md(where NOTE_SUFFIX has already been set during the language detection stage)
    • Must include attributes:
      • keywords: Keywords of the day's recommended papers (comma-separated, extracted from paper titles and abstracts)
      • tags: ["llm-generated", "daily-paper-recommend"]
  2. Check whether the paper is worth writing about in detail

    • Papers highly worth reading: Papers with a recommendation score >= 7.5 or specially recommended papers
    • Generally recommended papers: Other papers
  3. Check whether the paper already has notes

    • Search the 20_Research/Papers/ directory
    • Check whether there are detailed notes for this paper
    • If notes already exist: write briefly and cite the existing notes
    • If no notes exist:
      • Highly worth reading: write a detailed section in the recommendation notes
      • Generally recommended: write only basic information

4.2 Recommendation notes structure

The notes file structure is as follows:

---
keywords: [关键词1, 关键词2, ...]
tags: ["llm-generated", "daily-paper-recommend"]
---

[具体论文推荐列表...]

4.2.1 Today's overview (placed before the paper list)

Before the paper list, add an overview section summarizing the overall situation of today's recommended papers.

According to $LANGUAGE Set selection language:

English (language: "en"):

## Today's Overview

Today's {paper_count} recommended papers focus on **{direction1}**, **{direction2}**, and **{direction3}**.

- **Overall Trends**: {summary of research trends}
- **Quality Distribution**: Scores range from {min}-{max}, {quality assessment}.
- **Research Hotspots**:
  - **{hotspot1}**: {description}
  - **{hotspot2}**: {description}
  - **{hotspot3}**: {description}
- **Reading Suggestions**: {reading order recommendations}

Chinese (language: "zh"):

## 今日概览

今日推荐的{论文数量}篇论文主要聚焦于**{主要研究方向1}**、**{主要研究方向2}**和**{主要研究方向3}**等前沿方向。

- **总体趋势**:{总结今日论文的整体研究趋势}
- **质量分布**:今日推荐的论文评分在 {最低分}-{最高分} 之间,{整体质量评价}。
- **研究热点**:
  - **{热点1}**:{简要描述}
  - **{热点2}**:{简要描述}
  - **{热点3}**:{简要描述}
- **阅读建议**:{给出阅读顺序建议}

Description:

  • Summarize based on the titles, abstracts, and scores of the top 10 filtered papers
  • Extract common research themes and trends
  • Provide reasonable reading order suggestions

4.2.2 Unified format for all papers

All papers are arranged in descending order by score, using a unified format

According to $LANGUAGE Set selection tag language:

English (language: "en"):

### [[Note_Filename|Paper Title as Displayed]]
- **Authors**: [author list]
- **Affiliation**: [institution names, extracted from paper source or arXiv page]
- **Links**: [arXiv](url) | [PDF](url)
- **Source**: arXiv
- **Note**: [[existing_note_path|short title]] or --

**One-line Summary**: [one sentence summarizing the core contribution]

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

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

---

Chinese (language: "zh"):

### [[Note_Filename|论文标题显示名]]
- **作者**:[作者列表]
- **机构**:[机构名称,从论文源码或 arXiv 页面提取]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **笔记**:[[已有笔记路径|简称]] 或 --

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

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

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

---

Important formatting rules:

  • Wikilink must use display alias:[[File_Name|Display Title]], do not use bare [[File_Name]](underscores will be displayed directly, affecting readability)
  • Images must use Obsidian wikilink embed syntax:![[filename.png|600]],ProhibitedUse ![alt](path%20encoded) format (URL encoding does not work in Obsidian)
  • Institution information: Extract from the paper's TeX source code's \author or \affiliation field; if not provided by the arXiv API, read from the downloaded source package
  • Do not use --- as a "no data" placeholder: Use -- instead (three hyphens will be parsed by Obsidian as a horizontal rule)

4.2.3 Insert images and invoke detailed analysis for the first three papers

For the first 3 papers (the 3 with the highest scores):

Step 0: Check whether the paper already has a note

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

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
  • Check whether images need to be extracted (if there is no images directory or the images directory is empty)
    • If images are needed: call extract-paper-images
    • If images already exist: use the existing images

If there is no note:

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

Step 2: Insert images and links in the recommendation note

If a note already exists:

### [[已有论文名称]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **详细报告**:[[已有笔记路径]]
- **笔记**:已有详细分析

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

![[existing_image_filename.png|600]]

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

If there is no note:

### [[Note_Filename|Paper Title Display Name]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **详细报告**:[[20_Research/Papers/[domain]/[note_filename]|Short Title]] (自动生成)

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

![[paperID_fig1.png|600]]

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

Image format rules (important!):

  • Must use Obsidian wikilink embed syntax:![[filename.png|600]]
  • Do not use markdown image syntax:![alt](path%20with%20encoding) — URL encoding (%20, %26) does not work in Obsidian
  • Image filename example:2603.24124_fig1.png
  • Obsidian will automatically search the vault for a matching filename; there is no need to write the full path

Detailed report description:

  • Report path:20_Research/Papers/[论文分类]/[note_filename].md
  • Important: Use the note_filename field in JSON to concatenate the wikilink
  • Must use display alias:[[20_Research/Papers/[domain]/[note_filename]|Short Title]]
    • Correct:[[20_Research/Papers/大模型/Hypothesis-Conditioned_Query_Rewriting|Hypothesis-Conditioned Query Rewriting]]
    • Incorrect:[[20_Research/Papers/大模型/Hypothesis-Conditioned_Query_Rewriting_for_Decision-Useful_Retrieval]](underscores are displayed directly, which is not aesthetically pleasing)
  • The detailed report is automatically generated by paper-analyze Auto-generated

Institution/Affiliation extraction:

  • From the downloaded arXiv source package (.tar.gz) in the .tex file, extract the \author and \affiliation fields
  • If the source code is unavailable, extract from the arXiv page HTML
  • If it still cannot be obtained, mark it as --(use two hyphens,do not use three ---, because Obsidian will parse it as a horizontal rule)

Step 5: Auto-link keywords (optional)

After generating the recommendation note, automatically link keywords to existing notes:

# 步骤1:扫描现有笔记
cd "$SKILL_DIR"
python scripts/scan_existing_notes.py \
  --vault "$OBSIDIAN_VAULT_PATH" \
  --output existing_notes_index.json

# 步骤2:生成推荐笔记(正常流程)
# ... 使用 search_arxiv.py 搜索论文 ...

# 步骤3:链接关键词(新增步骤)
python scripts/link_keywords.py \
  --index existing_notes_index.json \
  --input "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md" \
  --output "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}_linked.md"

Note:

  • The keyword linking script will automatically skip frontmatter, heading lines, and code blocks
  • Filter out generic words (and, for, model, learning, etc.)
  • Keep existing wikilinks unmodified
Important rules
  • Expand search scope:Search popular papers from the past month + past year
  • Comprehensive recommendation score:combines four dimensions: relevance, recency, popularity, and quality
  • Filename uses the date:Keep the 10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md format (Chinese:论文推荐, English:paper-recommendations)
  • Add today's overview:add a "## Today's Overview" section at the beginning of the recommendation note, summarizing the main research directions, overall trends, quality distribution, research hotspots, and reading suggestions for today's papers
  • Sort by score:all papers are sorted by recommendation score from high to low
  • The first 3 papers are handled specially:
    • Paper names use wikilink format:[[论文名字]]
    • Automatically extract the first image and insert it
    • Automatically call paper-analyze to generate a detailed report
    • Display the wikilink association in the "Detailed Report" field
  • Other papers:only write basic information, do not insert images
  • Keep it fast:let users quickly understand the day's recommendations
  • Avoid duplication:check already recommended papers
  • Automatic keyword linking:
    • After generating the recommendation note, automatically scan existing notes
    • Replace keywords in the text (such as BLIP, CLIP, etc.) with wikilinks
    • Example:BLIP → [[BLIP]]
    • Keep existing wikilinks unmodified
    • Do not replace content in code blocks
    • Do not replace content that already has wikilinks (to avoid duplication)
Differences from other skills

start-my-day (this skill)

  • Purpose:filter recommended papers from a broad search and generate a daily recommendation note
  • Search scope:popular/high-quality papers from the past month + past year
  • Content:recommendation list
    • The beginning includes "Today's Overview": summarize the main research directions, overall trends, quality distribution, research hotspots, and reading suggestions
    • All papers use a unified format
    • The first 3 papers are handled specially:
      • Paper names use wikilink format:[[论文名字]]
      • Automatically extract the first image and insert it
      • Automatically call paper-analyze to generate a detailed report
      • Display the wikilink association in the "Detailed Report" field
  • Image handling:the first 3 papers automatically extract and insert the first image; does not include images for all papers
  • Detailed Report: Automatically generated for the first 3 papers, not generated for other papers
  • Applicable: User manually triggers daily
  • Note References: If the paper already has notes, write briefly and reference them; if the analysis needs to reference historical notes, also reference them directly

paper-analyze (deep analysis skill)

  • Purpose: User actively views a single paper for in-depth research
  • Applicable Scenarios: Papers the user still wants to view but that AI has not organized
  • Content: Detailed in-depth paper analysis notes
    • Includes all core information: research question, method overview, method architecture, key innovations, experimental results, in-depth analysis, comparison with related papers, etc.
    • Rich in images and text: All images in the paper must be used (core architecture diagrams, method diagrams, experimental result figures, etc.)
  • Applicable: User actively invokes paper-analyze(Codex uses $paper-analyze, Claude Code uses /paper-analyze) and provides the paper ID or title
  • Important Requirements: Whether it is a paper organized by start-my-day or a paper actively viewed by the user, it must be rich in images and text
Usage Instructions

When the user inputs "start my day", execute the following steps:

Date Parameter Support:

  • No parameter: Generate paper recommendation notes for the current day
  • With parameter (YYYY-MM-DD): Generate paper recommendation notes for the specified date
    • For example: In Codex use $start-my-day 2026-02-27, in Claude Code use /start-my-day 2026-02-27

Automatic Execution Flow

  1. Get the target date

    • No parameter: Use the current date (YYYY-MM-DD format)
    • With parameter: Use the specified date
  2. Scan existing notes to build an index

    # 扫描 vault 中现有的论文笔记
    cd "$SKILL_DIR"
    python scripts/scan_existing_notes.py \
      --vault "$OBSIDIAN_VAULT_PATH" \
      --output existing_notes_index.json
    
    • Scan the 20_Research/Papers/ directory
    • Extract note titles and tags
    • Build a mapping table from keywords to note paths
  3. Search and filter arXiv papers

    # 使用 Python 脚本搜索、解析和筛选 arXiv 论文
    # 首先切换到 skill 目录,然后执行脚本
    # 如果有目标日期参数(如 2026-02-21),传递给 --target-date
    cd "$SKILL_DIR"
    python scripts/search_arxiv.py \
      --config "$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml" \
      --output arxiv_filtered.json \
      --max-results 200 \
      --top-n 10 \
      --categories "cs.AI,cs.LG,cs.CL,cs.CV,cs.MM,cs.MA,cs.RO" \
      --target-date "{目标日期}"  # 如果用户指定了日期,替换为实际日期
    
  4. Read the filtering results

    • Read the filtering results from arxiv_filtered.json read the filtering results
    • Get the top 10 high-scoring papers
    • Each paper includes: ID, title, authors, abstract, score, matched field
  5. Generate recommendation notes (including keyword links)

    • Create 10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md(use the target date,NOTE_SUFFIX depends on the language setting)
    • Sort by score: All papers are arranged from highest to lowest recommendation score
    • Special handling for the first 3 papers:
      • Paper names use wikilink format:[[论文名字]]
      • Insert the first actually extracted image after the "one-sentence summary"
      • Display the wikilink association in the "Detailed Report" field
    • Other papers: Only write basic information, do not insert images
    • Automatic keyword linking(Important!):
      • After generating the notes, scan the keywords in the text
      • Use existing_notes_index.json for matching
      • Replace keywords with wikilinks, e.g. BLIP → [[BLIP]]
      • Keep existing wikilinks unmodified
      • Do not replace content in code blocks
  6. Perform in-depth analysis on the first three papers

    # 对每篇前三论文执行以下操作
    
    # 步骤1:检查论文是否已有笔记
    # 在 20_Research/Papers/ 目录中搜索
    # - 按论文ID搜索(如 2602.23351)
    # - 按论文标题搜索(模糊匹配)
    # - 按论文标题关键词搜索(如 "Pragmatics", "Reporting Bias")
    
    # 步骤2:根据检查结果决定处理方式
    if 已有笔记:
        # 不生成新的详细报告
        # 使用已有的笔记路径
        # 只提取图片(如果没有图片的话)
    else:
        # 提取第一张图片
        调用 extract-paper-images skill,传入 [论文ID]
    
        # 生成详细分析报告
        调用 paper-analyze skill,传入 [论文ID]
    
    • If notes already exist:
      • Do not generate the detailed report again
      • Use the existing note path as the wikilink
      • Check whether images need to be extracted (if there is no images directory or the images directory is empty)
      • Reference the existing note in the "detailed report" field of the recommendation note
    • If there are no notes:
      • Extract the first image and save it to the vault
      • Generate a detailed paper analysis report
      • Add image and detailed report links in the recommendation note

Temporary file cleanup

  • Temporary XML and JSON files generated during the search process can be cleaned up
  • After the recommendation note has been saved to the vault, the temporary files are no longer needed

Dependencies

  • Python 3.x (used to run the search and filtering scripts)
  • PyYAML (used to read the research interest configuration file)
  • Network connection (to access the arXiv API)
  • 20_Research/Papers/ directory (used to scan existing notes and save detailed reports)
  • extract-paper-images skill (used to extract paper images)
  • paper-analyze skill (used to generate detailed reports)

Script description

search_arxiv.py

Located at scripts/search_arxiv.py, the features include:

  1. Search arXiv: Call the arXiv API to retrieve papers
  2. Parse XML: Extract paper information (ID, title, authors, abstract, etc.)
  3. Filter papers: Filter according to the research interest configuration file
  4. Calculate scores: Combine dimensions such as relevance, recency, quality, etc.
  5. Output JSON: Save the filtered results to arxiv_filtered.json

scan_existing_notes.py

Located at scripts/scan_existing_notes.py, the features include:

  1. Scan note directory: Scan 20_Research/Papers/ all .md files under it
  2. Extract note information:
    • File path
    • File name
    • title field in frontmatter
    • tags field
  3. Build index: Create a mapping table from keywords to note paths
  4. Output JSON: Save the index to existing_notes_index.json

Usage:

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

Output format:

{
  "notes": [
    {
      "path": "20_Research/Papers/多模态技术/BLIP_Bootstrapping-Language-Image-Pre-training.md",
      "filename": "BLIP_Bootstrapping-Language-Image-Pre-training.md",
      "title": "BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation",
      "title_keywords": ["BLIP", "Bootstrapping", "Language-Image", "Pre-training", "Unified", "Vision-Language", "Understanding", "Generation"],
      "tags": ["Vision-Language-Pre-training", "Multimodal-Encoder-Decoder", "Bootstrapping", "Image-Captioning", "Image-Text-Retrieval", "VQA"]
    }
  ],
  "keyword_to_notes": {
    "blip": ["20_Research/Papers/多模态技术/BLIP_Bootstrapping-Language-Image-Pre-training.md"],
    "bootstrapping": ["20_Research/Papers/多模态技术/BLIP_Bootstrapping-Language-Image-Pre-training.md"],
    "vision-language": ["20_Research/Papers/多模态技术/BLIP_Bootstrapping-Language-Image-Pre-training.md"]
  }
}

link_keywords.py

Located at scripts/link_keywords.py, the features include:

  1. Read text: Read the text content to be processed
  2. Read note index: From existing_notes_index.json load the note mapping
  3. Replace keywords: Find keywords in the text and replace them with wikilinks
    • Do not replace existing wikilinks (e.g. [[BLIP]])
    • Do not replace content in code blocks
    • Matching rules:
      • Prioritize matching complete title keywords
      • Then match keywords in tags
      • Ignore case when matching
      • Filter common words (and, for, model, learning, etc.)
      • Skip frontmatter and heading lines
  4. Output the result: Output the processed text

Usage:

# 首先切换到 skill 目录,然后执行脚本
cd "$SKILL_DIR"
python scripts/link_keywords.py \
  --index existing_notes_index.json \
  --input "input.txt" \
  --output "output.txt"

Match examples:

原始文本:
"这篇论文使用了BLIP和CLIP作为基线方法。"

处理后:
"这篇论文使用了[[BLIP]]和[[CLIP]]作为基线方法。"

Usage:

# 步骤1:扫描现有笔记
cd "$SKILL_DIR"
python scripts/scan_existing_notes.py \
  --vault "$OBSIDIAN_VAULT_PATH" \
  --output existing_notes_index.json

# 步骤2:生成推荐笔记(正常流程)
# ... 使用 search_arxiv.py 搜索论文 ...

# 步骤3:链接关键词(新增步骤)
python scripts/link_keywords.py \
  --index existing_notes_index.json \
  --input "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md" \
  --output "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}_linked.md"

Key features:

  • Smart matching: Case-insensitive matching in Chinese environment
  • Protect existing links: Do not replace existing wikilinks
  • Avoid code contamination: Do not replace content in code blocks and inline code
  • Path encoding: Use UTF-8 encoding to ensure Chinese paths are correct
  • Skip sensitive areas: Do not process frontmatter, heading lines, code blocks

Keyword linking implementation (new!)

Feature overview: After generating the daily recommendation note, automatically scan existing notes and replace keywords (such as BLIP, CLIP, etc.) in the text with wikilinks (such as [[BLIP]]).

Implementation process:

  1. Scan existing notes: Scan the 20_Research/Papers/ directory

    • Extract the frontmatter (title, tags) of notes
    • Extract keywords from the title (by separators and common affixes)
    • Extract keywords from tags (split by hyphens)
    • Build a mapping table from keywords to note paths
  2. Generate the recommendation note: Generate the recommendation note content normally

  3. Link keywords: Process the generated note

    • Find keywords in the text
    • Replace found keywords with wikilinks
    • Preserve existing wikilinks
    • Do not replace content in code blocks and inline code

Usage:

# 步骤1:扫描现有笔记
cd "$SKILL_DIR"
python scripts/scan_existing_notes.py \
  --vault "$OBSIDIAN_VAULT_PATH" \
  --output existing_notes_index.json

# 步骤2:生成推荐笔记(正常流程)
# ... 使用 search_arxiv.py 搜索论文 ...

# 步骤3:链接关键词(新增步骤)
python scripts/link_keywords.py \
  --index existing_notes_index.json \
  --input "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md" \
  --output "10_Daily/YYYY-MM-DD${NOTE_SUFFIX}_linked.md"

Key features:

  • Smart matching: Case-insensitive matching in Chinese environment
  • Protect existing links: Do not replace existing wikilinks
  • Avoid code contamination: Do not replace content in code blocks and inline code
  • Path encoding: Use UTF-8 encoding to ensure Chinese paths are correct