Language Setting / 言語設定
このスキルは中国語と英語のレポートをサポートします。言語は設定ファイルの language フィールドで決定されます:
- 中国語 (デフォルト): 設定で
language: "zh"を設定 - 英語: 設定で
language: "en"を設定
設定ファイルの場所: $OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml
Runtime / 実行環境
- 現在の
SKILL.mdの親ディレクトリを$SKILL_DIRとします。 - Windows PowerShell では
$env:OBSIDIAN_VAULT_PATHを、macOS/Linux のシェルでは$OBSIDIAN_VAULT_PATHを使用します。 - スクリプト実行時は、使用可能な
python(Windows)またはpython3(macOS/Linux)を優先します。固定のインタープリタパスは想定しません。 - 初回実行前に
python -c "import yaml, requests, fitz"が成功することを確認します。依存関係が不足している場合は、プロジェクトのrequirements.txtをインストールします。 - Windows で環境変数が現在のプロセスに設定されていない場合は、設定ファイルの
vault_pathから Vault パスを読み取ります。Linux のサンプルパスにフォールバックしないでください。
Language Detection
実行開始時に、設定ファイルを読み取って言語設定を検出します:
# OBSIDIAN_VAULT_PATH が現在のセッションで設定されていない場合に解決
# 一部のエージェントホスト型シェルセッションはインタラクティブシェルプロファイルを自動的にソースしません
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
# 設定から言語を読み取り
LANGUAGE=$(grep -E "^\s*language:" "$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml" | awk '{print $2}' | tr -d '"')
# 未設定の場合は中国語をデフォルトに
if [ -z "$LANGUAGE" ]; then
LANGUAGE="zh"
fi
# 言語に基づいてノートファイル名の接尾辞を設定
if [ "$LANGUAGE" = "en" ]; then
NOTE_SUFFIX="paper-recommendations"
else
NOTE_SUFFIX="論文推薦"
fi
Windows PowerShell での同等の設定読み取り:
$configPath = Join-Path $env:OBSIDIAN_VAULT_PATH '99_System\Config\research_interests.yaml'
$LANGUAGE = (Select-String -Path $configPath -Pattern '^\s*language:' | Select-Object -First 1).Line.Split(':', 2)[1].Trim().Trim('"')
if (-not $LANGUAGE) { $LANGUAGE = 'zh' }
$NOTE_SUFFIX = if ($LANGUAGE -eq 'en') { 'paper-recommendations' } else { '論文推薦' }
次に、この言語設定をワークフロー全体で使用します:
- ノートを生成する際、
--language $LANGUAGEをスクリプトに渡す - 生成されたノートで適切なセクションヘッダーを使用する
目標
ユーザーが研究日を開始するのを支援し、直近1ヶ月および直近1年の非常に人気があり、優れた論文を検索し、レコメンドノートを生成します。
ワークフロー
ワークフロー概要
このスキルはPythonスクリプトを使用してarXiv APIを呼び出し論文を検索し、XML結果を解析して研究関心に基づいてフィルタリングおよびスコアリングします。
ステップ1:コンテキストの収集(サイレント)
-
今日の日付を取得
- 現在の日付を確定(YYYY-MM-DD形式)
-
研究設定を読み取り
$OBSIDIAN_VAULT_PATH/99_System/Config/research_interests.yaml(ファイル名はinterestsであってinterestではないことに注意)を読み取り、研究分野を取得- キーワード、カテゴリー、優先度を抽出
- Zotero コレクションのタイトル、タグ、雑誌分布を関心ポートレートとして使用。現在のポートレートは、地震探査データ処理、ハイブリッド収録とデハイブリッド、ノイズ除去と再構成、時間周波数解析、速度解析、波動場シミュレーション、および物理制約/深層学習ジオフィジックスに焦点を当てています。
GEOPHYSICS、IEEE Transactions on Geoscience and Remote Sensing、IEEE Geoscience and Remote Sensing Letters、Geophysical Journal International、Geophysical Prospecting、Interpretation、Journal of Applied Geophysicsを優先
-
既存ノートをスキャンしてインデックスを構築
20_Research/Papers/ディレクトリ内のすべての.mdファイルをスキャン- ノートのタイトル(ファイル名とフロントマターの
titleフィールドから)を抽出 - キーワードからノートパスへのマッピングテーブルを構築し、後続の自動リンクに使用
- フロントマターの
titleフィールドを優先し、次にファイル名を使用
ステップ2:論文の検索
2.1 検索範囲
関連するすべてのカテゴリーの最近の論文を検索:
-
検索範囲
scripts/search_arxiv.pyを使用して arXiv を検索- クエリ:すべての研究関連 arXiv カテゴリー
- 提出日順にソート
- 結果制限:200件
-
フィルタリング戦略
- 研究関心設定ファイルに従って論文をフィルタリング
- 総合レコメンドスコアを計算
- 上位10件の高スコア論文を保持
2.2 検索とフィルタリングの実行
scripts/search_arxiv.py スクリプトを使用して検索、解析、フィルタリングを完了:
# Pythonスクリプトを使用してarXiv論文を検索、解析、フィルタリング
# 最初にスキルディレクトリに移動し、スクリプトを実行
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 \
--download-dir "$OBSIDIAN_VAULT_PATH/20_Research/Papers/"
スクリプト機能:
-
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%)
- 研究関心とのマッチ度
- タイトルキーワードマッチ:各+0.5点
- 要約キーワードマッチ:各+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、タイトル、著者、要約、スコア、マッチした分野)を含む
- 上位10件の高スコア論文すべてをこのディレクトリにダウンロードする必要があります:
$OBSIDIAN_VAULT_PATH/20_Research/Papers/ - 後続のノートファイル内のPDFローカルファイル名は、
$OBSIDIAN_VAULT_PATH/20_Research/Papers/ディレクトリ内のローカルPDFファイルにリンクする必要があります - 高スコア候補に有効なオープンPDFアドレスがない場合は、その候補をスキップし、スコア順に次の論文を補充して10件に達するまで続けます。10件に満たない場合は停止して報告し、不完全なノートは生成しません。
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 設定に従って言語を選択:
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}**:{簡単な説明}
- **読書提案**:{読書順序の提案}
説明:
- フィルタリングされた上位10件の論文のタイトル、要約、スコアに基づいて要約
- 共通の研究テーマとトレンドを抽出
- 合理的な読書順序の提案を提供
4.2.2 全論文の統一フォーマット
すべての論文をスコアの高い順に、統一フォーマットで表示
$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) | [[local filename|PDF]]
- **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]
**重要な結果**:[要約から抽出した最も重要な結果]
---
重要なフォーマット規則:
- Wikilink は display alias を使用する必要があります:
[[File_Name|Display Title]]。ベア[[File_Name]]は使用しないでください(アンダースコアが直接表示され、読みやすさに影響します)。 - 画像は Obsidian wikilink 埋め込み構文を使用する必要があります:
![[filename.png|600]]。形式は禁止です(URLエンコーディングはObsidianで機能しません)。 - ノートファイル内のPDF形式は
[[ローカルファイル名|PDF]]である必要があります。ローカルファイル名は$OBSIDIAN_VAULT_PATH/20_Research/Papers/ディレクトリ内のローカルPDFファイルにリンクする必要があります。 - 所属機関情報: 論文の 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ディレクトリがない場合、または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つのダッシュ。3つは使用しない---。Obsidian が区切り線として解析するため)
ステップ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"
注意:
- キーワードリンクスクリプトは、フロントマター、見出し行、コードブロックを自動的にスキップします
- 一般的な単語(and, for, model, learning など)はフィルタリング
- 既存の wikilink は変更されないまま保持
重要な規則
- 検索範囲の拡大: 過去1ヶ月 + 過去1年のホットな論文を検索
- 総合レコメンドスコア: 関連性、新規性、人気度、品質の4つの次元を組み合わせる
- ファイル名は日付ベース:
10_Daily/YYYY-MM-DD${NOTE_SUFFIX}.md形式を維持(中国語:論文推薦、英語:paper-recommendations) - 今日の概要を追加: レコメンドノートの先頭に「## 今日の概要」セクションを追加し、今日の論文の主要な研究方向、全体的な傾向、品質分布、研究ホットスポット、読書提案を要約
- スコア順にソート: すべての論文をレコメンドスコアの高い順に並べる
- 上位3件の特別処理:
- 論文名をwikilink形式で:
[[論文名]] - 最初の画像を自動抽出して挿入
- 自動的に
paper-analyzeを呼び出して詳細レポートを生成 - 「詳細レポート」フィールドにwikilink関連を表示
- 論文名をwikilink形式で:
- その他の論文: 基本情報のみ記述し、画像は挿入しない
- 迅速性を維持: ユーザーがその日のレコメンドを素早く把握できるようにする
- 重複を避ける: 既にレコメンドされた論文を確認
- キーワードの自動リンク:
- レコメンドノート生成後、既存ノートを自動的にスキャン
- テキスト内のキーワード(BLIP、CLIP など)をwikilinkに置き換え
- 例:
BLIP→[[BLIP]] - 既存のwikilinkは変更しない
- コードブロック内のコンテンツは置き換えない
- 既存のwikilinkのコンテンツは置き換えない(重複を避ける)
他のスキルとの違い
start-my-day (本スキル)
- 目的: 広範な検索から論文をフィルタリングしてレコメンドし、毎日のレコメンドノートを生成
- 検索範囲: 過去1ヶ月 + 過去1年のホット/優良論文
- 内容: レコメンドリスト
- 先頭に「今日の概要」を含む:主要研究方向、全体的な傾向、品質分布、研究ホットスポット、読書提案を要約
- すべての論文で統一フォーマット
- 上位3件の特別処理:
- 論文名をwikilink形式で:
[[論文名]] - 最初の画像を自動抽出して挿入
- 自動的に
paper-analyzeを呼び出して詳細レポートを生成 - 「詳細レポート」フィールドにwikilink関連を表示
- 論文名をwikilink形式で:
- 画像処理: 上位3件のみ自動抽出して最初の画像を挿入。すべての論文の図は含まない
- 詳細レポート: 上位3件のみ自動生成。その他の論文は生成しない
- 適用: ユーザーが毎日手動でトリガー
- ノート引用: 論文に既存ノートがある場合は簡潔に記述し引用。分析に履歴ノートの引用が必要な場合も直接引用
paper-analyze (深層分析スキル)
- 目的: ユーザーが能動的に単一論文を表示し、深く研究する
- 適用シナリオ: ユーザー自身が見たいが、AIが整理していない論文
- 内容: 詳細な論文深層分析ノート
- すべての核心情報を含む:研究課題、方法概要、方法アーキテクチャ、主要な革新、実験結果、深層分析、関連論文比較など
- 図と文を併用: 論文内のすべての画像を使用(核心アーキテクチャ図、方法図、実験結果図など)
- 適用: ユーザーが能動的に
paper-analyzeを呼び出す(Codex では$paper-analyze、Claude Code では/paper-analyze)し、論文IDまたはタイトルを提供 - 重要な要件:
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/ディレクトリをスキャン- ノートのタイトルとタグを抽出
- キーワードからノートパスへのマッピングテーブルを構築
-
arXiv 論文を検索およびフィルタリング
# Pythonスクリプトを使用してarXiv論文を検索、解析、フィルタリング # 最初にスキルディレクトリに移動し、スクリプトを実行 # 目標日付パラメータがある場合(例: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 \ --download-dir "$OBSIDIAN_VAULT_PATH/20_Research/Papers/" \ --target-date "{目標日付}" # ユーザーが日付を指定した場合、実際の日付に置き換え -
フィルタリング結果を読み取り
arxiv_filtered.jsonからフィルタリング結果を読み取り- 上位10件の高スコア論文を取得
- 各論文に含まれるもの:ID、タイトル、著者、要約、スコア、マッチした分野
- 10個の
local_pdf_filenameに対応するファイルがすべて$OBSIDIAN_VAULT_PATH/20_Research/Papers/に存在することを確認
...