karaage0703/xs-arxiv
arXiv論文の検索・トレンド発見・詳細分析を行う統合スキル。興味度スコアでユーザーに刺さる論文を自動選定。PDF全文読み込み・Notion蓄積対応。「arXivチェックして」「論文検索」「論文分析して」で使用。
npx skills add https://github.com/karaage0703/ai-assistant-workspace --skill xs-arxiv
ユーザーの興味分野は AGENTS.md の「ユーザーについて」セクションを参照する。未設定の場合は以下のデフォルトカテゴリで判断:
ユーザー側で AGENTS.md に固有の興味分野(例: 量子情報、創薬AI、強化学習)を書いていれば、そちらを優先する。
3 経路ある。用途に応じて使い分ける (export.arxiv.org API は混雑時間帯で 429/503 を返しがちで非推奨、fallback 扱い)。
arxiv 公式 RSS から並列取得。レート制限ほぼなし、1〜2 秒で完了。
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py trending -c cs.AI cs.LG cs.CL cs.CV -d 7 -n 20
返り値: {"total_results": N, "papers": [...], "categories_queried": [...], "categories_failed": [...], "source": "rss"}
Semantic Scholar API がデフォルト。abstract / 著者 / 引用数 / OA PDF URL までリッチに取れる。
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py search "transformer attention" -n 10 [--year-from 2025]
返り値: {"total_results": N, "papers": [{id, title, authors, abstract, published, citation_count, ...}], "source": "s2"}
旧経路。S2 が応答しない・S2 にない最新論文を狙うときだけ。指数バックオフリトライ済 (15s→45s→90s)。
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py search "クエリ" -n 10 --source legacy --date-from 2026-05-01 -s date
"multi-agent systems""AI agents" OR "intelligent agents"ti:"exact title", au:"author name", abs:"keyword""machine learning" ANDNOT "survey"主要カテゴリ: cs.AI / cs.LG / cs.CL / cs.CV / cs.MA / cs.RO
S2 や legacy が全リトライ尽きると JSON が以下の形:
{"error": "Semantic Scholar search failed", "detail": "HTTP 429", "retries_exhausted": true, "hint": "..."}
このときは:
トレンドで拾った論文の追加情報 (引用数等) が欲しいときは lookup で個別取得:
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py lookup 2401.12345
abstractを読んでAIが判断する(外部LLM不要)。
| スコア | 意味 | アクション |
|--------|------|-----------|
| ★★★ | 必読 | abstract要約 + 詳細コメント |
| ★★☆ | 読む価値あり | 概要紹介 |
| ★☆☆ | 参考程度 | タイトルのみ |
| なし | 関心外 | スキップ |
デフォルトではabstractのみで要約する。全文読み込みは行わない。
「この論文詳しく」「全文読んで」「分析して」と明示的に言われた時だけ全文を読む。
# LaTeXソースがあればそちら(数式が正確)
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py latex {論文ID}
# アブストラクトのみ
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py latex {論文ID} --abstract-only
# セクション一覧
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py latex {論文ID} --sections
# 特定セクションを取得
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py latex {論文ID} --section "2.1"
# LaTeXソースが無い論文はPDFダウンロード→Markdown変換
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py download {論文ID} -o /tmp/papers
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py read {論文ID} -o /tmp/papers
使い分け:
論文ごとに === で区切って出力する。
★★★ **論文タイトル**
arXiv: {ID} | {著者} | {日付}
{URL}
{abstractベースの要約・分析 3-5文}
**新規性:** {何が新しいか}
**ユーザー的ポイント:** {なぜそのユーザーに関係あるか}
===
★★☆ **論文タイトル**
arXiv: {ID} | {著者}
{URL}
{abstract要約 1-2文}
===
★☆☆ {タイトル} ({ID}) — {一言}
論文一覧の後に、特に注目の1-2件を「注目ピックアップ」として再掲する。
1論文 = 1投稿(リプライ・コピペしやすくするため)。複数論文を1メッセージにまとめない。
💡 **arXiv注目ピックアップ (1/N)**
**論文タイトル**
arXiv: {ID}
{URL}
{なぜ注目か、技術的なポイント、ユーザーとの関連を2-3文で}
===
💡 **arXiv注目ピックアップ (2/N)**
**論文タイトル**
arXiv: {ID}
{URL}
{解説}
自動保存しない。 「Notionに保存して」「DBに登録して」と言われた時だけ実行する。
notion-manager スキル経由で Notion DB にエントリ追加(DB IDはユーザーが指定)。
プロパティ例: タイトル、著者、arXiv ID、URL、興味度、分野、一言メモ、分析日、全文読了
以下のフォーマットに沿って記載:
## エグゼクティブサマリー
{論文の目的・手法・結果を3-5文で}
## 新規性
{何が新しいか。既存手法との違い}
## 手法
{提案手法の概要。図や数式があれば言及}
## 結果
{主要な実験結果。数値を含める}
## ユーザー的ポイント
{なぜユーザーに関係あるか。やってるプロジェクト・興味分野との接続点}
## 次に読む論文
{関連論文2-3件}
# PDFダウンロード(Step 4で未取得の場合)
cd [SKILL_DIR]/scripts && uv run python arxiv_tool.py download {論文ID} -o /tmp/papers
# notion-managerスキルでPDFをNotionページに添付
cd [WORKSPACE]/skills/notion-manager && uv run python notion_tool.py upload /tmp/papers/{論文ID}.pdf {ページID} --as-file -c "{論文タイトル} PDF"
□ arxiv_tool.py の結果から興味度スコア付き論文一覧を整形した
□ ★★★/★★☆ 論文ごとに `===` 区切りで本体テキストを出力した(中間報告だけで終わらない)
□ 論文URL(http://arxiv.org/abs/{ID})を含めた
□ 「Notionに保存して」と言われた場合のみ Step 6 を実行した(自動保存しない)
全依存ライブラリが商用利用可能なライセンス:
arxiv (MIT), python-dateutil (Apache-2.0/BSD-3-Clause), arxiv-to-prompt (MIT), markitdown (MIT)Take karaage0703/xs-arxiv from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.