start-my-day について
start-my-dayは、Obsidianで研究する人向けの論文推薦スキルです。設定した研究関心に基づいてarXiv論文を検索・評価し、推薦ノートを作成します。上位論文には既存ノートや詳細分析も関連付けます。
主な機能
- 01研究関心に基づくarXiv論文の絞り込み
- 02関連性・新しさ・人気度・品質の評価
- 03日次論文推薦ノートの作成
- 04上位論文への画像と分析レポートの追加
- 05既存論文ノートの索引化とリンク
活用シーン
- 01研究関心に合う新着論文の確認
- 02評価順に並んだ日次推薦の閲覧
- 03推薦を既存のObsidian論文ノートに接続
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juliye2025/ evil-read-arxiv --skill start-my-dayインストール後、Claude Code で/start-my-dayを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlscripts/common_words.pylink_keywords.pyscan_existing_notes.pysearch_arxiv.py詳細
Language Setting / 言語設定
このスキルは中国語と英語のレポートに対応しています。言語は設定ファイルの language フィールドで指定します。
- 中国語(デフォルト):設定ファイルで
language: "zh"を指定します - 英語:設定ファイルで
language: "en"を指定します
設定ファイルは次の場所に配置してください:$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml
言語の検出
実行開始時に設定ファイルを読み込み、言語設定を確認します。
# 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
その後、ワークフロー全体でこの言語設定を使用します。
- ノートを生成するときは、スクリプトに
--language $LANGUAGEを渡します - 生成するノートでは、適切なセクション見出しを使用します
目標
ユーザーが研究日の始まりに、直近1か月と1年の非常に注目度が高く、人気があり、質の高い論文を検索し、おすすめノートを生成できるよう支援します。
ワークフロー
ワークフローの概要
このスキルでは、Python スクリプトから arXiv API を呼び出して論文を検索し、XML の結果を解析して、研究関心に基づいて選別・評価します。
ステップ1:コンテキストの収集(サイレント)
-
今日の日付を取得
- 現在の日付を特定します(YYYY-MM-DD形式)
-
研究設定を読み込む
$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yamlを読み込みます(ファイル名は interests であり、interest ではありません)。研究分野を取得します- キーワード、カテゴリ、優先度を抽出します
-
既存のノートをスキャンしてインデックスを作成
20_Research/Papers/ディレクトリにあるすべての.mdファイルをスキャンします- ノートのタイトルを抽出します(ファイル名と frontmatter の title フィールドから)
- 後で自動リンクに使用するため、キーワードとノートのパスの対応表を作成します
- frontmatter の title フィールドを優先し、次にファイル名を使用します
ステップ2:論文を検索
2.1 検索範囲
関連するすべてのカテゴリから、最近の論文を検索します。
-
検索範囲
scripts/search_arxiv.pyを使用して arXiv を検索します- クエリ:研究に関連するすべての arXiv カテゴリ
- 投稿日順に並べ替えます
- 結果の上限:200件
-
選別方法
- 研究関心の設定ファイルに基づいて論文を選別します
- 総合推薦スコアを算出します
- 高スコアの論文を上位10件まで残します
2.2 検索と選別の実行
scripts/search_arxiv.py スクリプトを使用して、検索、解析、選別を行います。
# 使用 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"
スクリプトの機能:
-
arXiv の検索
- arXiv API を呼び出し、指定したカテゴリの論文を検索します
- 最新の論文を最大200件取得します
-
XML 結果の解析
- API が返す XML を解析します
- ID、タイトル、著者、概要、投稿日、カテゴリを抽出します
-
選別とスコア付けの適用
- 研究関心の設定ファイルに基づいて論文を選別します
- 総合推薦スコアを算出します(関連性40%、新近性20%、人気度30%、品質10%)
- スコア順に並べ替え、上位10件を残します
出力:
arxiv_filtered.json- 選別後の論文リスト(JSON 形式)- 各論文には以下が含まれます:
- 論文 ID、タイトル、著者、概要
- 投稿日、カテゴリ
- 関連性スコア、新近性スコア、人気度スコア、品質スコア
- 最終推薦スコア、一致した分野
ステップ3:選別結果の読み込み
3.1 JSON 結果の読み込み
arxiv_filtered.json から、選別とスコア付けが完了した論文リストを読み込みます。
# 读取筛选结果
cat arxiv_filtered.json
結果に含まれる項目:
total_found:検索された論文の総数total_filtered:選別後の論文数top_papers:高スコアの上位10件の論文。各論文には以下が含まれます:- 論文 ID、タイトル、著者、概要
- 投稿日、カテゴリ
- 関連性スコア、新近性スコア、品質スコア
- 最終推薦スコア、一致した分野、一致したキーワード
3.2 スコアの説明
複数の観点からスコアを算出します。
推荐评分 =
相关性评分: 40%
新近性评分: 20%
热门度评分: 30%
质量评分: 10%
スコアの詳細:
-
関連性スコア(40%)
- 研究関心との一致度
- タイトルのキーワード一致:1件につき+0.5点
- 概要のキーワード一致:1件につき+0.3点
- カテゴリの一致:+1.0点
- 最高スコア:約3.0
-
新近性スコア(20%)
- 直近30日以内:+3点
- 30~90日以内:+2点
- 90~180日以内:+1点
- 180日超:0点
-
人気度スコア(30%)
- (データが利用可能な場合)引用数が100超:+3点
- 引用数が50~100:+2点
- 引用数が50未満:+1点
- 引用データなし:0点
- または、投稿日からの経過時間に基づいて推定します(直近7日以内の人気の新着論文):+2点
-
品質スコア(10%)
- 概要から推定します。顕著な新規性:+3点
- 手法が明確:+2点
- 一般的な研究:+1点
- または、既存ノートの品質スコアを読み込みます
最終推薦スコア = 関連性(40%) + 新近性(20%) + 人気度(30%) + 品質(10%)
ステップ4:今日のおすすめノートを生成
4.1 選別結果の読み込み
arxiv_filtered.json から、選別後の論文リストを読み込みます。
- 高スコアの上位10件を含みます
- 各論文の完全な情報(ID、タイトル、著者、概要、スコア、一致した分野)を含みます
4.2 おすすめノートファイルの作成
-
おすすめノートファイルを作成
- ファイル名(言語設定に基づく):
- 中国語(
language: "zh"):10_Daily/YYYY-MM-DD论文推荐.md - 英語(
language: "en"):10_Daily/YYYY-MM-DD-paper-recommendations.md
- 中国語(
- 変数
10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.mdを使用します(NOTE_SUFFIXは言語検出の段階で設定済みです) - 以下のプロパティを必ず含めます:
keywords:今日おすすめする論文のキーワード(カンマ区切り。論文のタイトルと概要から抽出)tags:["llm-generated", "daily-paper-recommend"]
- ファイル名(言語設定に基づく):
-
論文を詳しく書く価値があるか確認
- 特に読む価値のある論文:推薦スコア >= 7.5、または特におすすめする論文
- 一般的なおすすめ論文:その他の論文
-
論文の既存ノートを確認
20_Research/Papers/ディレクトリを検索します- その論文の詳細ノートがあるか確認します
- 既存ノートがある場合:簡潔に記載し、既存ノートを参照します
- ノートがない場合:
- 特に読む価値のある論文:おすすめノートに詳しい内容を記載します
- 一般的なおすすめ論文:基本情報のみ記載します
4.2 おすすめノートの構成
ノートファイルは次の構成にします。
---
keywords: [关键词1, 关键词2, ...]
tags: ["llm-generated", "daily-paper-recommend"]
---
[具体论文推荐列表...]
4.2.1 今日の概要(論文リストの前に配置)
論文リストの前に概要セクションを追加し、今日おすすめする論文全体の傾向をまとめます。
$LANGUAGE の設定に応じて言語を選択します。
英語(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}
中国語(language: "zh"):
## 今日概览
今日推荐的{论文数量}篇论文主要聚焦于**{主要研究方向1}**、**{主要研究方向2}**和**{主要研究方向3}**等前沿方向。
- **总体趋势**:{总结今日论文的整体研究趋势}
- **质量分布**:今日推荐的论文评分在 {最低分}-{最高分} 之间,{整体质量评价}。
- **研究热点**:
- **{热点1}**:{简要描述}
- **{热点2}**:{简要描述}
- **{热点3}**:{简要描述}
- **阅读建议**:{给出阅读顺序建议}
説明:
- 選別された上位10件の論文のタイトル、概要、スコアに基づいてまとめます
- 共通する研究テーマと傾向を抽出します
- 妥当な読む順番を提案します
4.2.2 全論文で統一された形式
すべての論文をスコアの高い順に並べ、統一された形式を使用します。
$LANGUAGE の設定に基づいて、ラベルの言語を選択します:
英語(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]
---
中国語(language: "zh"):
### [[Note_Filename|论文标题显示名]]
- **作者**:[作者列表]
- **机构**:[机构名称,从论文源码或 arXiv 页面提取]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **笔记**:[[已有笔记路径|简称]] 或 --
**一句话总结**:[一句话概括论文的核心贡献]
**核心贡献/观点**:
- [贡献点1]
- [贡献点2]
- [贡献点3]
**关键结果**:[从摘要中提取的最重要结果]
---
重要な書式ルール:
- Wikilink では必ず display alias を使用します:
[[File_Name|Display Title]]。bare[[File_Name]]は使用しないでください(アンダースコアがそのまま表示され、読みにくくなります) - 画像には Obsidian の wikilink 埋め込み構文を必ず使用します:
![[filename.png|600]]。形式の使用は禁止です(URL エンコードは Obsidian で機能しません) - 所属機関情報:論文の TeX ソースコードにある
\authorまたは\affiliationフィールドから抽出します。arXiv API から取得できない場合は、ダウンロードしたソースパッケージから読み取ります - 「データなし」のプレースホルダーとして
---を使用しないでください:代わりに--を使用します(ハイフン3つは Obsidian に区切り線として解析されます)
4.2.3 上位3本の論文に画像を挿入し、詳細分析を呼び出す
上位3本の論文(スコアが最も高い3本)について:
ステップ0:論文にノートがすでにあるか確認します
# 在 20_Research/Papers/ 目录中搜索已有笔记
# 搜索方式:
# 1. 按论文ID搜索(如 2602.23351)
# 2. 按论文标题搜索(模糊匹配)
# 3. 按论文标题关键词搜索
ステップ1:確認結果に基づいて処理方法を決定します
ノートがすでにある場合:
- 新しい詳細レポートは生成しません
- 既存ノートのパスを wikilink として使用します
- 推薦ノートの「詳細レポート」フィールドで既存ノートを参照します
- 画像を抽出する必要があるか確認します(images ディレクトリがない、または空の場合)
- 画像が必要な場合:
extract-paper-imagesを呼び出します - 画像がすでにある場合:既存の画像を使用します
- 画像が必要な場合:
ノートがない場合:
- 画像を抽出するために
extract-paper-imagesを呼び出します - 詳細レポートを生成するために
paper-analyzeを呼び出します - 推薦ノートに画像と詳細レポートへのリンクを追加します
ステップ2:推薦ノートに画像とリンクを挿入します
ノートがすでにある場合:
### [[已有论文名称]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **详细报告**:[[已有笔记路径]]
- **笔记**:已有详细分析
**一句话总结**:[一句话概括论文的核心贡献]
![[existing_image_filename.png|600]]
**核心贡献/观点**:
...
ノートがない場合:
### [[Note_Filename|Paper Title Display Name]]
- **作者**:[作者列表]
- **机构**:[机构名称]
- **链接**:[arXiv](链接) | [PDF](链接)
- **来源**:[arXiv]
- **详细报告**:[[20_Research/Papers/[domain]/[note_filename]|Short Title]] (自动生成)
**一句话总结**:[一句话概括论文的核心贡献]
![[paperID_fig1.png|600]]
**核心贡献/观点**:
...
画像形式のルール(重要!):
- Obsidian の wikilink 埋め込み構文を必ず使用します:
![[filename.png|600]] - Markdown の画像構文は使用禁止です:
— URL エンコード(%20、%26)は Obsidian で機能しません - 画像ファイル名の例:
2603.24124_fig1.png - Obsidian は vault 内で一致するファイル名を自動検索するため、完全なパスを書く必要はありません
詳細レポートについて:
- レポートのパス:
20_Research/Papers/[论文分类]/[note_filename].md - 重要:JSON の
note_filenameフィールドを使用して wikilink を組み立てます - display alias を必ず使用します:
[[20_Research/Papers/[domain]/[note_filename]|Short Title]]- 正しい例:
[[20_Research/Papers/大模型/Hypothesis-Conditioned_Query_Rewriting|Hypothesis-Conditioned Query Rewriting]] - 誤った例:
[[20_Research/Papers/大模型/Hypothesis-Conditioned_Query_Rewriting_for_Decision-Useful_Retrieval]](アンダースコアがそのまま表示され、見栄えがよくありません)
- 正しい例:
- 詳細レポートは
paper-analyzeによって自動生成されます
所属機関/Affiliation の抽出:
- ダウンロードした arXiv ソースパッケージ(
.tar.gz)内の.texファイルから\authorと\affiliationフィールドを抽出します - ソースを利用できない場合は、arXiv ページの HTML から抽出します
- それでも取得できない場合は
--と記載します(ハイフン2つを使用し、Obsidian に区切り線として解析されるハイフン3つ---は使用しないでください)
ステップ5:キーワードを自動リンクする(任意)
推薦ノートを生成した後、既存ノートへのキーワードリンクを自動で追加します:
# 步骤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"
注意:
- キーワードリンクスクリプトは、frontmatter、見出し行、コードブロックを自動でスキップします
- 一般的な単語(and、for、model、learning など)を除外します
- 既存の wikilink は変更せずに保持します
重要なルール
- 検索範囲を拡大:直近1か月の論文と、直近1年間の人気論文を検索します
- 総合推薦スコア:関連性、新しさ、人気度、品質の4つの観点を組み合わせます
- 日付をファイル名に含める:
10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.mdの形式を維持します(中国語:论文推荐、英語:paper-recommendations) - 今日の概要を追加:推薦ノートの冒頭に「## 今日の概要」セクションを追加し、今日の論文の主な研究分野、全体的な傾向、品質の分布、注目されている研究テーマ、読書の推奨事項をまとめます
- スコア順に並べる:すべての論文を推薦スコアの高い順に並べます
- 上位3本の特別な処理:
- 論文名を wikilink 形式にします:
[[论文名字]] - 1枚目の画像を自動で抽出して挿入します
paper-analyzeを自動で呼び出して詳細レポートを生成します- 「詳細レポート」フィールドに wikilink を表示して関連付けます
- 論文名を wikilink 形式にします:
- その他の論文:基本情報のみを記載し、画像は挿入しません
- すばやく確認できるようにする:ユーザーが当日の推薦内容をすばやく把握できるようにします
- 重複を避ける:すでに推薦した論文を確認します
- キーワードを自動リンク:
- 推薦ノートの生成後、既存ノートを自動でスキャンします
- テキスト内のキーワード(BLIP、CLIP など)を wikilink に置き換えます
- 例:
BLIP→[[BLIP]] - 既存の wikilink は変更せずに保持します
- コードブロック内の内容は置き換えません
- すでに wikilink が存在する内容は置き換えません(重複を防ぐため)
他の skills との違い
start-my-day(本スキル)
- 目的:広範囲の検索から推薦論文を選び、毎日の推薦ノートを生成します
- 検索範囲:直近1か月の論文と、直近1年間の人気または高品質の論文
- 内容:推薦リスト
- 冒頭に「今日の概要」を含めます:主な研究分野、全体的な傾向、品質の分布、注目されている研究テーマ、読書の推奨事項をまとめます
- すべての論文で統一された形式を使用します
- 上位3本を特別に処理します:
- 論文名を wikilink 形式にします:
[[论文名字]] - 1枚目の画像を自動で抽出して挿入します
paper-analyzeを自動で呼び出して詳細レポートを生成します- 「詳細レポート」フィールドに wikilink を表示して関連付けます
- 論文名を wikilink 形式にします:
- 画像処理:上位3本から1枚目の画像を自動で抽出して挿入します。すべての論文の画像は含めません
- 詳細レポート:上位3本は自動生成し、その他の論文は生成しません
- 対象:ユーザーが毎日手動で実行します
- ノートの参照:論文に既存のノートがある場合は、簡潔に記載して参照します。分析で過去のノートを参照する必要がある場合も、直接参照します
paper-analyze(詳細分析skill)
- 目的:ユーザーが論文を1本指定し、詳しく調査します
- 使用場面:ユーザーが読みたい論文があり、AI が整理した推薦リストに含まれていない場合
- 内容:論文の詳細分析ノート
- 研究課題、手法の概要、手法のアーキテクチャ、主要なイノベーション、実験結果、詳細分析、関連論文との比較など、すべての重要情報を含みます
- 画像を豊富に活用:論文内のすべての画像(主要なアーキテクチャ図、手法の図、実験結果の図など)を使用します
- 対象:ユーザーが論文 ID またはタイトルを指定して
paper-analyzeを直接呼び出します(Codex では$paper-analyze、Claude Code では/paper-analyzeを使用します) - 重要な要件:start-my-day が整理した論文であっても、ユーザーが直接確認する論文であっても、画像を豊富に活用します
使用方法
ユーザーが「start my day」と入力したら、以下の手順を実行します:
日付パラメーターのサポート:
- パラメーターなし:当日の論文推薦ノートを生成します
- パラメーターあり(YYYY-MM-DD):指定した日付の論文推薦ノートを生成します
- 例:Codex では
$start-my-day 2026-02-27、Claude Code では/start-my-day 2026-02-27を使用します
- 例:Codex では
自動実行フロー
-
対象日付の取得
- 引数なし:現在の日付を使用(YYYY-MM-DD形式)
- 引数あり:指定された日付を使用
-
既存のノートをスキャンしてインデックスを構築
# 扫描 vault 中现有的论文笔记 cd "$SKILL_DIR" python scripts/scan_existing_notes.py \ --vault "$OBSIDIAN_VAULT_PATH" \ --output existing_notes_index.json20_Research/Papers/ディレクトリをスキャン- ノートのタイトルと tags を抽出
- キーワードとノートのパスの対応表を構築
-
arXiv 論文の検索と絞り込み
# 使用 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 "{目标日期}" # 如果用户指定了日期,替换为实际日期 -
絞り込み結果の読み込み
arxiv_filtered.jsonから絞り込み結果を読み込む- 評価スコアの高い論文を上位 10 件取得
- 各論文には、ID、タイトル、著者、要約、スコア、該当分野が含まれます
-
キーワードリンクを含むおすすめノートの生成
10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.mdを作成(対象日付を使用し、NOTE_SUFFIXは言語設定に従います)- スコア順に並べ替え:すべての論文をおすすめスコアの高い順に並べます
- 上位 3 件の特別処理:
- 論文名を wikilink 形式にします:
[[论文名字]] - 「一文要約」の後に、実際に抽出した 1 枚目の画像を挿入します
- 「詳細レポート」フィールドに wikilink のリンク先を表示します
- 論文名を wikilink 形式にします:
- その他の論文:基本情報のみを記載し、画像は挿入しません
- キーワードの自動リンク(重要!):
- ノートの生成後、テキスト内のキーワードをスキャンします
existing_notes_index.jsonを使用して照合します- キーワードを
BLIP→[[BLIP]]のように wikilink に置き換えます - 既存の wikilink は変更せずに保持します
- コードブロック内の内容は置き換えません
-
上位 3 件の論文を詳細に分析
# 对每篇前三论文执行以下操作 # 步骤1:检查论文是否已有笔记 # 在 20_Research/Papers/ 目录中搜索 # - 按论文ID搜索(如 2602.23351) # - 按论文标题搜索(模糊匹配) # - 按论文标题关键词搜索(如 "Pragmatics", "Reporting Bias") # 步骤2:根据检查结果决定处理方式 if 已有笔记: # 不生成新的详细报告 # 使用已有的笔记路径 # 只提取图片(如果没有图片的话) else: # 提取第一张图片 调用 extract-paper-images skill,传入 [论文ID] # 生成详细分析报告 调用 paper-analyze skill,传入 [论文ID]- ノートがすでにある場合:
- 詳細レポートを重複して生成しません
- 既存のノートのパスを wikilink として使用します
- 画像を抽出する必要があるか確認します(images ディレクトリがない、または空の場合)
- おすすめノートの「詳細レポート」フィールドから既存のノートを参照します
- ノートがない場合:
- 1 枚目の画像を抽出して vault に保存します
- 詳細な論文分析レポートを生成します
- おすすめノートに画像と詳細レポートへのリンクを追加します
- ノートがすでにある場合:
一時ファイルのクリーンアップ
- 検索中に生成された一時的な XML ファイルと JSON ファイルは削除できます
- おすすめノートを vault に保存した後は、一時ファイルは不要です
依存関係
- Python 3.x(検索と絞り込みスクリプトの実行に使用)
- PyYAML(研究関心の設定ファイルの読み込みに使用)
- ネットワーク接続(arXiv API へのアクセス)
20_Research/Papers/ディレクトリ(既存のノートのスキャンと詳細レポートの保存に使用)extract-paper-imagesスキル(論文の画像抽出に使用)paper-analyzeスキル(詳細レポートの生成に使用)
スクリプトの説明
search_arxiv.py
scripts/search_arxiv.py にあり、次の機能を提供します:
- arXiv の検索:arXiv API を呼び出して論文を取得します
- XML の解析:論文情報(ID、タイトル、著者、要約など)を抽出します
- 論文の絞り込み:研究関心の設定ファイルに基づいて論文を絞り込みます
- スコアの計算:関連性、新しさ、品質などの観点を総合して評価します
- JSON の出力:絞り込んだ結果を
arxiv_filtered.jsonに保存します
scan_existing_notes.py
scripts/scan_existing_notes.py にあり、次の機能を提供します:
- ノートディレクトリのスキャン:
20_Research/Papers/以下のすべての.mdファイルをスキャンします - ノート情報の抽出:
- ファイルパス
- ファイル名
- frontmatter の title フィールド
- tags フィールド
- インデックスの構築:キーワードとノートのパスの対応表を作成します
- JSON の出力:インデックスを
existing_notes_index.jsonに保存します
使用方法:
cd "$SKILL_DIR"
python scripts/scan_existing_notes.py \
--vault "$OBSIDIAN_VAULT_PATH" \
--output existing_notes_index.json
出力形式:
{
"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
scripts/link_keywords.py にあり、次の機能を提供します:
- テキストの読み込み:処理するテキストを読み込みます
- ノートインデックスの読み込み:
existing_notes_index.jsonからノートの対応情報を読み込みます - キーワードの置き換え:テキスト内のキーワードを検索し、wikilink に置き換えます
- 既存の wikilink(例:
[[BLIP]])は置き換えません - コードブロック内の内容は置き換えません
- 照合ルール:
- タイトルのキーワード全体を優先して照合します
- 次に tags 内のキーワードを照合します
- 大文字と小文字を区別せずに照合します
- 一般的な語(and、for、model、learning など)は除外します
- frontmatter と見出し行はスキップします
- 既存の wikilink(例:
- 結果の出力:処理後のテキストを出力します
使用方法:
# 首先切换到 skill 目录,然后执行脚本
cd "$SKILL_DIR"
python scripts/link_keywords.py \
--index existing_notes_index.json \
--input "input.txt" \
--output "output.txt"
照合例:
原始文本:
"这篇论文使用了BLIP和CLIP作为基线方法。"
处理后:
"这篇论文使用了[[BLIP]]和[[CLIP]]作为基线方法。"
使用方法:
# 步骤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"
主な特長:
- スマート照合:大文字と小文字を区別せずに照合し、日本語環境に対応します
- 既存リンクの保護:既存の wikilink は置き換えません
- コードの汚染を回避:コードブロックとインラインコード内の内容は置き換えません
- パスのエンコード:UTF-8 エンコードを使用し、日本語のパスを正しく扱います
- 対象外領域のスキップ:frontmatter、見出し行、コードブロックは処理しません
キーワードリンクの実装(新規!)
機能の概要: 日次おすすめノートの生成後、既存のノートを自動でスキャンし、テキスト内のキーワード(BLIP、CLIP など)を wikilink(例:[[BLIP]])に置き換えます。
実行フロー:
-
既存のノートをスキャン:
20_Research/Papers/ディレクトリをスキャンします- ノートの frontmatter(title、tags)を抽出します
- タイトルからキーワードを抽出します(区切り文字と一般的な接辞に基づきます)
- tags からキーワードを抽出します(ハイフンで分割します)
- キーワードとノートのパスの対応表を構築します
-
おすすめノートの生成:通常どおり、おすすめノートの内容を生成します
-
キーワードのリンク化:生成したノートを処理します
- テキスト内のキーワードを検索します
- 見つかったキーワードを wikilink に置き換えます
- 既存の wikilink は保持します
- コードブロックとインラインコード内の内容は置き換えません
使用方法:
# 步骤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"
主な特長:
- スマート照合:大文字と小文字を区別せずに照合し、日本語環境に対応します
- 既存リンクの保護:既存の wikilink は置き換えません
- コードの汚染を回避:コードブロックとインラインコード内の内容は置き換えません
- パスのエンコード:UTF-8 エンコードを使用し、日本語のパスを正しく扱います