Arxiv
Поиск статей arXiv по ключевому слову, автору, категории или ID.
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/research/arxiv |
| Версия | 1.0.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | Research, Arxiv, Papers, Academic, Science, API |
| Связанные навыки | academic-literature, ocr-and-documents, professional-research |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это то, что агент видит в качестве инструкций, когда навык активен.
Исследования arXiv
Поиск и получение академических статей из arXiv через их бесплатный REST API. Никакого API-ключа, никаких зависимостей — только curl.
Краткая справка
| Действие | Команда |
|---|---|
| Поиск статей | curl "https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5" |
| Получение конкретной статьи | curl "https://export.arxiv.org/api/query?id_list=2402.03300" |
| Чтение аннотации (веб) | web_extract(urls=["https://arxiv.org/abs/2402.03300"]) |
| Чтение полного текста (PDF) | web_extract(urls=["https://arxiv.org/pdf/2402.03300"]) |
Поиск статей
API возвращает Atom XML. Парсите с помощью grep/sed или передавайте через python3 для чистого вывода.
Базовый поиск
curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5"
Чистый вывод (парсинг XML в читаемый формат)
curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending" | python3 -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom'}
root = ET.parse(sys.stdin).getroot()
for i, entry in enumerate(root.findall('a:entry', ns)):
title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
arxiv_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
published = entry.find('a:published', ns).text[:10]
authors = ', '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
summary = entry.find('a:summary', ns).text.strip()[:200]
cats = ', '.join(c.get('term') for c in entry.findall('a:category', ns))
print(f'{i+1}. [{arxiv_id}] {title}')
print(f' Authors: {authors}')
print(f' Published: {published} | Categories: {cats}')
print(f' Abstract: {summary}...')
print(f' PDF: https://arxiv.org/pdf/{arxiv_id}')
print()
"
Синтаксис поискового запроса
| Префикс | Ищет | Пример |
|---|---|---|
all: | Все поля | all:transformer+attention |
ti: | Название | ti:large+language+models |
au: | Автор | au:vaswani |
abs: | Аннотация | abs:reinforcement+learning |
cat: | Категория | cat:cs.AI |
co: | Комментарий | co:accepted+NeurIPS |
Булевы операторы
# AND (по умолчанию при использовании +)
search_query=all:transformer+attention
# OR
search_query=all:GPT+OR+all:BERT
# AND NOT
search_query=all:language+model+ANDNOT+all:vision
# Точная фраза
search_query=ti:"chain+of+thought"
# Комбинированный
search_query=au:hinton+AND+cat:cs.LG
Сортировка и пагинация
| Параметр | Опции |
|---|---|
sortBy | relevance, lastUpdatedDate, submittedDate |
sortOrder | ascending, descending |
start | Смещение результатов (начиная с 0) |
max_results | Количество результатов (по умолчанию 10, максимум 30000) |
# Последние 10 статей в cs.AI
curl -s "https://export.arxiv.org/api/query?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10"
Получение конкретных статей
# По ID arXiv
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300"
# Несколько статей
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300,2401.12345,2403.00001"
Генерация BibTeX
После получения метаданных статьи сгенерируйте запись BibTeX:
{% raw %}
curl -s "https://export.arxiv.org/api/query?id_list=1706.03762" | python3 -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom', 'arxiv': 'http://arxiv.org/schemas/atom'}
root = ET.parse(sys.stdin).getroot()
entry = root.find('a:entry', ns)
if entry is None: sys.exit('Paper not found')
title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
authors = ' and '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
year = entry.find('a:published', ns).text[:4]
raw_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
cat = entry.find('arxiv:primary_category', ns)
primary = cat.get('term') if cat is not None else 'cs.LG'
last_name = entry.find('a:author', ns).find('a:name', ns).text.split()[-1]
print(f'@article{{{last_name}{year}_{raw_id.replace(\".\", \"\")},')
print(f' title = {{{title}}},')
print(f' author = {{{authors}}},')
print(f' year = {{{year}}},')
print(f' eprint = {{{raw_id}}},')
print(f' archivePrefix = {{arXiv}},')
print(f' primaryClass = {{{primary}}},')
print(f' url = {{https://arxiv.org/abs/{raw_id}}}')
print('}')
"
{% endraw %}
Чтение содержимого статьи
После нахождения статьи прочитайте её:
# Страница аннотации (быстро, метаданные + аннотация)
web_extract(urls=["https://arxiv.org/abs/2402.03300"])
# Полный текст (PDF → markdown через Firecrawl)
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
Для локальной обработки PDF см. навык ocr-and-documents.
Распространённые категории
| Категория | Область |
|---|---|
cs.AI | Искусственный интеллект |
cs.CL | Вычисления и язык (NLP) |
cs.CV | Компьютерное зрение |
cs.LG | Машинное обучение |
cs.CR | Криптография и безопасность |
stat.ML | Машинное обучение (Статистика) |
math.OC | Оптимизация и управление |
physics.comp-ph | Вычислительная физика |
Полный список: https://arxiv.org/category_taxonomy
Вспомогательный скрипт
Скрипт scripts/search_arxiv.py обрабатывает парсинг XML и выдаёт чистый вывод:
python scripts/search_arxiv.py "GRPO reinforcement learning"
python scripts/search_arxiv.py "transformer attention" --max 10 --sort date
python scripts/search_arxiv.py --author "Yann LeCun" --max 5
python scripts/search_arxiv.py --category cs.AI --sort date
python scripts/search_arxiv.py --id 2402.03300
python scripts/search_arxiv.py --id 2402.03300,2401.12345
Без зависимостей — использует только стандартную библиотеку Python.
Semantic Scholar (Цитирования, похожие статьи, профили авторов)
arXiv не предоставляет данные о цитированиях или рекомендации. Используйте API Semantic Scholar для этого — бесплатно, без ключа для базового использования (1 запрос/сек), возвращает JSON.
Получение деталей статьи + цитирования
# По ID arXiv
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300?fields=title,authors,citationCount,referenceCount,influentialCitationCount,year,abstract" | python3 -m json.tool
# По ID статьи Semantic Scholar или DOI
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example?fields=title,citationCount"
Получение цитирований статьи (кто на неё сослался)
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/citations?fields=title,authors,year,citationCount&limit=10" | python3 -m json.tool
Получение ссылок из статьи (на что она ссылается)
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/references?fields=title,authors,year,citationCount&limit=10" | python3 -m json.tool
Поиск статей (альтернатива поиску arXiv, возвращает JSON)
curl -s "https://api.semanticscholar.org/graph/v1/paper/search?query=GRPO+reinforcement+learning&limit=5&fields=title,authors,year,citationCount,externalIds" | python3 -m json.tool
Получение рекомендаций по статьям
curl -s -X POST "https://api.semanticscholar.org/recommendations/v1/papers/" \
-H "Content-Type: application/json" \
-d '{"positivePaperIds": ["arXiv:2402.03300"], "negativePaperIds": []}' | python3 -m json.tool
Профиль автора
curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=Yann+LeCun&fields=name,hIndex,citationCount,paperCount" | python3 -m json.tool
Полезные поля Semantic Scholar
title, authors, year, abstract, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fieldsOfStudy, publicationVenue, externalIds (содержит ID arXiv, DOI и т.д.)
Полный рабочий процесс исследования
- Поиск:
python scripts/search_arxiv.py "your topic" --sort date --max 10 - Оценка влияния:
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID?fields=citationCount,influentialCitationCount" - Чтение аннотации:
web_extract(urls=["https://arxiv.org/abs/ID"]) - Чтение полного текста:
web_extract(urls=["https://arxiv.org/pdf/ID"]) - Поиск связанных работ:
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID/references?fields=title,citationCount&limit=20" - Получение рекомендаций: POST к эндпоинту рекомендаций Semantic Scholar
- Отслеживание авторов:
curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=NAME"
Ограничения скорости
| API | Скорость | Аутентификация |
|---|---|---|
| arXiv | ~1 запрос / 3 секунды | Не требуется |
| Semantic Scholar | 1 запрос / секунда | Не требуется (100/сек с API-ключом) |
Примечания
- arXiv возвращает Atom XML — используйте вспомогательный скрипт или сниппет для парсинга для чистого вывода
- Semantic Scholar возвращает JSON — передавайте через
python3 -m json.toolдля читаемости - ID arXiv: старый формат (
hep-th/0601001) против нового (2402.03300) - PDF:
https://arxiv.org/pdf/{id}— Аннотация:https://arxiv.org/abs/{id} - HTML (если доступен):
https://arxiv.org/html/{id} - Для локальной обработки PDF см. навык
ocr-and-documents
Версионирование ID
arxiv.org/abs/1706.03762всегда разрешается в последнюю версиюarxiv.org/abs/1706.03762v1указывает на конкретную неизменяемую версию- При создании цитирований сохраняйте суффикс версии, которую вы фактически читали, чтобы избежать дрейфа цитирований (более поздняя версия может существенно изменить содержание)
- Поле API
<id>возвращает URL с версией (например,http://arxiv.org/abs/1706.03762v7)
Отозванные статьи
Статьи могут быть отозваны после подачи. В этом случае:
- Поле
<summary>содержит уведомление об отзыве (ищите «withdrawn» или «retracted») - Поля метаданных могут быть неполными
- Всегда проверяйте аннотацию, прежде чем считать результат действительной статьёй