Token导航 LogoToken导航TokenDH.com
效率需要联网clawhub未标认证来源可访问clear审计提醒

zotero-myscholar索特罗我的学者

Agent Skill

zotero-myscholar 用于补充效率相关能力,适合在 OpenClaw 中需要让 Agent 承接效率相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

10,333

周安装

414

GitHub Stars

公开资料未说明

下载量

3,345
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:zotero-myscholar(索特罗我的学者)
来源仓库:https://github.com/mozisword/zotero-myscholar
安装命令:
openclaw skills install zotero-myscholar
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install zotero-myscholar

简介

将论文保存到 Zotero 文库,请按照 userid:apiKey 的格式配置 ZOTERO_CREDENTIALS 环境变量。

SKILL.md

name
zotero-scholar
description
将论文保存到 Zotero 文库,请按照 userid:apiKey 的格式配置 ZOTERO_CREDENTIALS 环境变量。
homepage
https://www.zotero.org
metadata

Zotero Scholar

专业的文献入库助手。可以将论文元数据、PDF 链接以及 AI 生成的总结一键保存到你的 Zotero 库中。

使用示例

可以读取环境变量 ZOTERO_CREDENTIALS 中的 Zotero 凭据,格式为 userid:apiKey

使用环境变量运行

uv run {baseDir}/scripts/save_paper.py \
  --title "Attention Is All You Need" \
  --authors "Vaswani et al." \
  --url "https://arxiv.org/abs/1706.03762"

参数说明

参数说明
--title论文标题
--authors作者列表(逗号分隔)
--url论文链接 (用于排重)
--abstract论文摘要
--summary(AI 生成) 简短总结或 Insight
--tags标签列表(逗号分隔)

save_paper.py文件内容: #!/usr/bin/env python3

/// script

requires-python = ">=3.10"

dependencies = ["pyzotero>=1.6.0"]

///

import argparse import os import sys from pyzotero import zotero

def main(): parser = argparse.ArgumentParser(description="保存论文到 Zotero 文献库") parser.add_argument("--title", required=True, help="论文标题") parser.add_argument("--authors", required=True, help="作者列表,以逗号分隔") parser.add_argument("--url", required=True, help="论文链接(用于查重)") parser.add_argument("--abstract", help="论文摘要") parser.add_argument("--summary", help="AI 生成的摘要") parser.add_argument("--tags", help="标签列表,以逗号分隔")

args = parser.parse_args()

library_id = None api_key = None

zotero_creds = os.environ.get('ZOTERO_CREDENTIALS') if zotero_creds and ':' in zotero_creds: try: parts = zotero_creds.strip().split(':') if len(parts) == 2: library_id = parts[0].strip() api_key = parts[1].strip() except: pass

library_type = 'user' # 默认使用个人文献库

if not library_id or not api_key: print("错误:需要 Zotero 凭据。", file=sys.stderr) print("请设置 ZOTERO_CREDENTIALS='userID:apiKey'(用于 UI 配置)", file=sys.stderr) sys.exit(1)

try: zot = zotero.Zotero(library_id, library_type, api_key)

# 通过 URL 检查是否已存在 # 使用搜索查询匹配 URL print(f"正在检查是否已存在该条目:{args.url}...") items = zot.items(q=args.url, limit=1)

if items: print(f"该条目已存在:{items[0].get('data', {}).get('title', '未知')}") # 暂时跳过更新,避免覆盖用户数据 print(f"Zotero 链接:https://www.zotero.org/{library_id}/items/{items[0]['key']}") return

# 创建新条目 template = zot.item_template('journalArticle') template['title'] = args.title

# 格式化作者信息 creators = [] for author in args.authors.split(','): name_parts = author.strip().split(' ') if len(name_parts) > 1: creators.append({'creatorType': 'author', 'firstName': ' '.join(name_parts[:-1]), 'lastName': name_parts[-1]}) else: creators.append({'creatorType': 'author', 'lastName': author.strip(), 'firstName': ''}) template['creators'] = creators

template['url'] = args.url if args.abstract: template['abstractNote'] = args.abstract

# 添加标签 if args.tags: template['tags'] = [{'tag': t.strip()} for t in args.tags.split(',')]

print(f"正在创建条目:{args.title}...") resp = zot.create_items([template])

if resp.get('successful'): new_item = resp['successful']['0'] item_key = new_item['key'] print(f"条目创建成功!")

# 将摘要添加为笔记 if args.summary: print("正在添加摘要笔记...") note_template = zot.item_template('note') note_template['note'] = f"<h3>AI 摘要</h3><p>{args.summary}</p>" note_template['parentItem'] = item_key zot.create_items([note_template]) print("笔记已添加。")

# 下载并附加 PDF if 'arxiv.org' in args.url: try: import urllib.request import tempfile

# 将摘要链接转换为 PDF 链接 pdf_url = args.url.replace('/abs/', '/pdf/') if not pdf_url.endswith('.pdf'): pdf_url += '.pdf'

print(f"正在下载 PDF...")

# 设置 User-Agent 以支持下载 opener = urllib.request.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/120.0.0.0')] urllib.request.install_opener(opener)

# 创建安全的文件名 safe_title = "".join(c for c in args.title if c.isalnum() or c in (" ", "-", "_")).strip() safe_title = safe_title[:50] # 限制长度 safe_filename = f"{safe_title}.pdf"

# 使用临时目录,但指定文件名 with tempfile.TemporaryDirectory() as td: pdf_path = os.path.join(td, safe_filename) urllib.request.urlretrieve(pdf_url, pdf_path)

print(f"正在上传 PDF 附件({safe_filename})...") zot.attachment_simple([pdf_path], item_key) print("PDF 已附加。")

except Exception as e: print(f"附加 PDF 失败:{e}", file=sys.stderr)

print("注意: 请在 Zotero 客户端点击 '同步' (Sync) 按钮以获取云端 PDF 文件。") print(" 如果是 Web API 写入,本地客户端必须同步才能看到附件内容。")

else: print(f"创建条目失败:{resp}", file=sys.stderr) sys.exit(1)

except Exception as e: print(f"错误:{e}", file=sys.stderr) sys.exit(1)

if __name__ == "__main__": main()

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

94.53%
按下载量换算3,162

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills