← 返回
未分类 Key

Bohrium Scholar Search & Profile

Search scholars and fetch scholar profile via open.bohrium.com. Use when: user asks to find/search/look up a scholar, researcher, or academic by name, affili...
通过 open.bohrium.com 搜索学者并获取其个人资料,适用于用户要求查找/搜索学者、研究员或学术人员姓名、单位等信息的场景。
sorrymaker0624
未分类 clawhub v1.0.0 1 版本 99494.9 Key: 需要
★ 0
Stars
📥 197
下载
💾 0
安装
1
版本
#latest

概述

SKILL: Bohrium Scholar Search & Profile

Overview

Query scholar information via the Bohrium OpenAPI gateway (open.bohrium.com). Provides two core endpoints:

EndpointMethodPathPurpose
---------------------------------
Scholar SearchPOST/openapi/v1/paper-server/scholar/searchSearch scholars by name / affiliation / research tags
Scholar InfoGET/openapi/v1/paper-server/scholar/info?scholarId=xxxFetch the full profile by scholarId

Typical workflow: Given a scholar name → search candidates → pick the target scholarId → fetch the full profile (papers, citations, h-index, research directions, education/work history).

No CLI support — all operations use the HTTP API.

Authentication

ACCESS_KEY is read from the OpenClaw config ~/.openclaw/openclaw.json:

"bohrium-scholar-search": {
  "enabled": true,
  "apiKey": "YOUR_ACCESS_KEY",
  "env": {
    "ACCESS_KEY": "YOUR_ACCESS_KEY"
  }
}

OpenClaw automatically injects env.ACCESS_KEY into the runtime environment.

Runtime Resolution

Read os.environ["ACCESS_KEY"]
  ├─ Non-empty → use directly
  └─ Empty     → prompt the user:
                 "ACCESS_KEY is not configured in OpenClaw. Please set
                  bohrium-scholar-search.env.ACCESS_KEY in ~/.openclaw/openclaw.json
                  with the AccessKey obtained from the user settings page at
                  https://bohrium.dp.tech, then restart the OpenClaw session."

Important: Do not persist the AccessKey in any other file or hardcode it into source; always inject it through the OpenClaw environment.

Error Handling

If the API returns Invalid AccessKey (code 2000) or HTTP 401:

  1. The key configured in OpenClaw is invalid or expired.
  2. Prompt the user: "Your AccessKey is invalid. Please update bohrium-scholar-search.env.ACCESS_KEY in ~/.openclaw/openclaw.json and restart the OpenClaw session."

Common Code Template

import os, requests

AK = os.environ.get("ACCESS_KEY", "")
if not AK:
    raise RuntimeError(
        "ACCESS_KEY not found. Please configure it in ~/.openclaw/openclaw.json "
        "under bohrium-scholar-search.env.ACCESS_KEY."
    )

BASE = "https://open.bohrium.com/openapi/v1/paper-server"
HEADERS_JSON = {"accessKey": AK, "Content-Type": "application/json"}
HEADERS = {"accessKey": AK}

Standard Workflow

User asks about a scholar
  │
  ├─ Known scholarId → call Scholar Info directly
  └─ Unknown scholarId → call Scholar Search first
       └─ Pick items[].scholarId from the response → call Scholar Info

Scholar Search

Basic Search

r = requests.post(f"{BASE}/scholar/search", headers=HEADERS_JSON, json={
    "name": "Yann LeCun",
    "page": 1,
    "pageSize": 5
})
data = r.json()
for item in data["data"]["items"]:
    print(f"[{item['scholarId']}] {item.get('nameEn','')} / {item.get('nameZh','')}")
    print(f"  Org: {item.get('scholarOrgNameEn','')}")
    print(f"  Papers: {item.get('paperNums',0)}, Citations: {item.get('citationNums',0)}, h-index: {item.get('hIndex',0)}")

Search with Filters

r = requests.post(f"{BASE}/scholar/search", headers=HEADERS_JSON, json={
    "name": "Zhang San",
    "school": "Tsinghua University",
    "affiliation": "Tsinghua University",
    "tags": "machine learning",
    "page": 1,
    "pageSize": 10
})

Request Parameters

ParameterTypeRequiredDescription
----------------------------------------
namestringYesScholar name keyword (1–99 chars)
schoolstringNoSchool / institution
tagsstringNoResearch interest tag
affiliationstringNoAffiliation (English)
affiliationZhstringNoAffiliation (Chinese)
pageintNoPage number, default 1
pageSizeintNoPage size, default 10

Key Response Fields

data.items[] array, each item contains:

FieldDescription
--------------------
scholarIdUnique scholar ID, required by the info endpoint
nameEn / nameZhEnglish / Chinese name
paperNumsPublication count
citationNumsCitation count
hIndexh-index
scholarOrgNameEn / scholarOrgNameZhAffiliation name (EN/ZH)
isHighCitedHighly-cited scholar flag

Scholar Info

Fetch the full profile using the scholarId returned by the search endpoint:

r = requests.get(
    f"{BASE}/scholar/info",
    headers=HEADERS,
    params={"scholarId": scholar_id}
)
info = r.json()["data"]
print(info.get("nameEn"), "|", info.get("nameZh"))
print("Research:", info.get("researchDirection"))
print("Education:", info.get("educationBackgroundZh") or info.get("educationBackground"))
print("Work:", info.get("workExperienceZh") or info.get("workExperience"))

Additional Response Fields

In addition to the fields returned by search:

FieldDescription
--------------------
researchDirectionArray of research directions
educationBackground / educationBackgroundZhEducation history (EN/ZH)
workExperience / workExperienceZhWork experience (EN/ZH)

Presentation Guidelines

Format the API response into a user-friendly summary that highlights:

  • Name: nameEn / nameZh
  • Affiliation: scholarOrgNameEn / scholarOrgNameZh
  • Metrics: paperNums / citationNums / hIndex
  • Highly cited: isHighCited
  • Research directions: researchDirection
  • Education: prefer educationBackgroundZh, fall back to educationBackground
  • Work experience: prefer workExperienceZh, fall back to workExperience

If multiple candidates are returned, first present a summary table for the user to choose, then fetch the full profile.


curl Examples

AK="$ACCESS_KEY"
BASE="https://open.bohrium.com/openapi/v1/paper-server"

# Step 1: Scholar search
curl -s -X POST "$BASE/scholar/search" \
  -H "accessKey: $AK" \
  -H "Content-Type: application/json" \
  -d '{"name":"Yann LeCun","page":1,"pageSize":3}'

# Step 2: Fetch profile
curl -s "$BASE/scholar/info?scholarId=RETURNED_ID" \
  -H "accessKey: $AK"

Troubleshooting

ProblemCauseSolution
--------------------------
ACCESS_KEY is emptyOpenClaw did not inject the env varVerify bohrium-scholar-search.env.ACCESS_KEY in ~/.openclaw/openclaw.json
Invalid AccessKey / 401Key expired or incorrectUpdate the AccessKey in ~/.openclaw/openclaw.json and restart the session
Empty search result1) A 24-char no-space string is treated as an internal ID; 2) upstream per-user rate limitingUse a natural name rather than an ID; retry later
Info endpoint parameter errorMissing scholarIdCall the search endpoint first and take data.items[].scholarId
name length errorOut of 1–99 charsShorten the name keyword

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-23 16:57 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Bohrium Project Management

sorrymaker0624
通过 bohr CLI 或 open.bohrium.com API 管理 Bohrium 项目。使用时机:用户询问在 Bohrium 上创建/列出/删除项目、管理项目成员...
★ 0 📥 269

Bohrium Knowledge Base Management

sorrymaker0624
Manage Bohrium knowledge bases via open.bohrium.com API. Use when: user asks about creating/listing/searching knowledge
★ 0 📥 266

Bohrium Dev Node Management

sorrymaker0624
通过 bohr CLI 或 open.bohrium.com API 管理 Bohrium 开发节点(容器/虚拟机)。适用时机:用户询问创建/启动/停止/删除开发机器。
★ 0 📥 262