用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/brycewang-stanford/Auto-Empirical-Research-Skills --skill hal-archive-api命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | hal-archive-api |
| description | Access French and European research via the HAL open archive API |
| metadata | {"openclaw":{"emoji":"🇫🇷","category":"literature","subcategory":"fulltext","keywords":["HAL","French research","open archive","CNRS","European research","institutional repository"],"source":"https://api.archives-ouvertes.fr/"}} |
HAL (Hyper Articles en Ligne) is France's national open archive for scholarly deposits. Managed by CNRS, it hosts 4M+ full-text documents from French research institutions and international collaborators. The API provides Solr-based search with full metadata, PDF links, and OAI-PMH harvesting. Free, no authentication required.
# Keyword search
curl "https://api.archives-ouvertes.fr/search/?q=machine+learning&rows=20&wt=json"
# Search specific fields
curl "https://api.archives-ouvertes.fr/search/?q=title_s:\"deep learning\"&wt=json"
# Filter by document type
curl "https://api.archives-ouvertes.fr/search/?q=neural+networks&\
fq=docType_s:ART&rows=20&wt=json"
# Filter by year and language
curl "https://api.archives-ouvertes.fr/search/?q=climate+change&\
fq=producedDateY_i:[2023 TO 2026]&fq=language_s:en&wt=json"
# Filter by institution
curl "https://api.archives-ouvertes.fr/search/?q=robotics&\
fq=structId_i:441569&wt=json"
# Return specific fields
curl "https://api.archives-ouvertes.fr/search/?q=CRISPR&\
fl=halId_s,title_s,authFullName_s,producedDateY_i,uri_s,files_s&wt=json"
| Field | Description | Example |
|---|---|---|
title_s | Title | title_s:"attention mechanism" |
authFullName_s | Author name | authFullName_s:"Yann LeCun" |
abstract_s | Abstract | abstract_s:transformer |
keyword_s | Keywords | keyword_s:"natural language" |
producedDateY_i | Year | producedDateY_i:2024 |
docType_s | Document type | docType_s:ART |
language_s | Language | language_s:en |
domain_s | Domain/subject | domain_s:info.info-ai |
journalTitle_s | Journal name | journalTitle_s:"Nature" |
structId_i | Institution ID | Lab/university ID |
| Code | Type |
|---|---|
ART | Journal article |
COMM | Conference paper |
THESE | PhD thesis |
HDR | Habilitation thesis |
REPORT | Report |
COUV | Book chapter |
OUV | Book |
POSTER | Poster |
UNDEFINED | Preprint/other |
| Parameter | Description |
|---|---|
q | Solr query |
fq | Filter query |
fl | Fields to return |
rows | Results per page (max 10000) |
start | Pagination offset |
sort | Sort order (e.g., producedDateY_i desc) |
wt | Format: json, xml, csv |
{
"response": {
"numFound": 12500,
"start": 0,
"docs": [
{
"halId_s": "hal-01234567",
"title_s": ["Deep Learning for Climate Modeling"],
"authFullName_s": ["Marie Dupont", "Jean Martin"],
"producedDateY_i": 2024,
"docType_s": "ART",
"journalTitle_s": "Environmental Modelling",
"uri_s": "https://hal.science/hal-01234567",
"files_s": ["https://hal.science/hal-01234567/document"],
import requests
BASE_URL = "https://api.archives-ouvertes.fr/search/"
def search_hal(query: str, rows: int = 20,
doc_type: str = None, from_year: int = None,
language: str = None) -> list:
"""Search HAL open archive."""
params = {
"q": query,
"wt": "json",
"rows": rows,
"fl": "halId_s,title_s,authFullName_s,producedDateY_i,"
"uri_s,files_s,docType_s,journalTitle_s,abstract_s",
"sort": "producedDateY_i desc",
}
fq = []
if doc_type:
fq.append(f"docType_s:{doc_type}")
if from_year:
fq.append(f"producedDateY_i:[{from_year} TO 2030]")
if language:
fq.append(f"language_s:{language}")
if fq:
params["fq"] = fq
resp = requests.get(BASE_URL, params=params)
resp.raise_for_status()
data = resp.json()
results = []
for doc in data.get("response", {}).get("docs", []):
title = doc.get("title_s", [""])[0] if isinstance(
doc.get("title_s"), ) doc.get(, )
results.append({
: doc.get(),
: title,
: doc.get(, []),
: doc.get(),
: doc.get(),
: doc.get(),
: doc.get(),
: doc.get(, [])[],
})
results
() -> :
search_hal(topic, rows=, doc_type=,
from_year=from_year)
() -> :
params = {
: ,
: [,
],
: ,
: ,
: ,
: ,
}
resp = requests.get(BASE_URL, params=params)
resp.raise_for_status()
resp.json().get(, {}).get(, [])
papers = search_hal(, from_year=)
p papers:
pdf = p[]
()
theses = search_theses()
t theses:
()
| Code | Domain |
|---|---|
info | Computer Science |
math | Mathematics |
phys | Physics |
sde | Environmental Sciences |
sdv | Life Sciences |
shs | Social Sciences & Humanities |
chim | Chemistry |
spi | Engineering Sciences |