资讯动态

为什么我建议你还是自己写小龙虾的 Skills?手把手教你打造专属自动化文献阅读工作流(TaoToken 统一 Key 接入版)

发布时间:2026/10/19 18:42:04 来源:尧图企业网站定制
1. 为什么通用 Skills 总差那么一口气先说一个我观察到的现象很多人装好 OpenClaw 之后第一件事就是冲进 ClawHub 技能市场按下载量排序一口气装十几个 Skills。装完发现——能用的没几个。要么触发条件跟你说话的习惯对不上要么权限开得太大不敢用要么跑起来就报错。这不是 OpenClaw 的问题是「通用」这件事本身的代价。一个 Skill 要照顾几千个用户它只能写得很泛。比如联网搜索类 Skill它默认搜公开互联网但你真正想要的是让它读你本地Papers/文件夹里的 PDF再把摘要写进 Obsidian。这种需求通用 Skill 永远做不好因为它不知道你的文件夹叫什么、你的 WebDAV 账号是谁、你的笔记模板长什么样。自己写 SKILL.md 的价值就在这里你可以把「我的工作流」精确翻译成 AI 能执行的指令。路径是你自己的认证是你自己的输出格式是你自己的。这篇文章就带你从零写一个「文献自动摘要归档」的 Skill用 TaoToken 统一 Key 接入模型WebDAV 同步 PDF 到 Obsidian最后跑一次端到端验证确认从抓取到落库全链路通。适合谁看手上有 OpenClaw、想认真做科研文献管理的人已经装了 Skills 但觉得不顺手、想自己动手的人以及想搞清楚 SKILL.md 到底怎么写才不报错的人。下面所有配置都可以直接复制改几个路径就能跑。2. TaoToken 统一 Key 接入把模型渠道先理顺写 Skill 之前得先把模型通道打通。OpenClaw 本身不提供模型它需要一个兼容 OpenAI 接口的 Base URL 和 Key。我试过在多个渠道之间来回切最烦的是每个 Skill 都要单独配一遍 Key改起来容易漏。用 TaoToken 的好处是一个 Key 覆盖多个模型Base URL 统一Skill 里只认这一套配置换模型不用动 Skill 代码。2.1 拿到统一 Key登录 TaoToken 控制台在 API Keys 页面创建一个新 Key。建议按用途命名比如openclaw-paper方便以后排查是哪个应用在调用。创建后立即复制保存页面刷新后就看不到了。拿到 Key 之后OpenClaw 的模型配置指向 TaoToken 的 API 地址{ base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 }注意 Base URL 是https://taotoken.net/api不要多加/v1OpenClaw 内部会自己拼路径。Model ID 按你实际要用的填文献摘要这种任务用 Claude 系列比较稳长文本理解不容易丢信息。2.2 在 OpenClaw 里落地配置OpenClaw 的模型配置一般放在~/.openclaw/config.json不同版本路径可能略有差异以你本地为准。把上面那段 JSON 合并进去保存后重启 OpenClaw。如果你用的是 Claude Code 那套配置体系对应的settings.json里也是同样的三件套Base URL、Key、Model ID一个都不能少。提示Key 不要硬编码进 SKILL.md。Skill 文件可能会被分享或同步Key 写在环境变量或 OpenClaw 的全局配置里Skill 只引用变量名。2.3 验证模型通道是否通在正式写 Skill 之前先用一个最小请求确认通道没问题。OpenClaw 一般带一个chat命令或者交互模式直接发一句openclaw chat --message 回复 OK 两个字母即可如果返回OK说明 Base URL、Key、Model ID 三件套都对。如果报 401多半是 Key 复制时带了空格如果报 model not found检查 Model ID 拼写。这一步过了再往下写 Skill出问题就能排除掉模型通道的因素。3. 可复制配置SKILL.md 与 WebDAV 同步脚本这一节是核心。我们写一个叫paper-to-obsidian的 Skill职责单一读 PDF、提摘要、生成 Obsidian 笔记、通过 WebDAV 上传。3.1 SKILL.md 完整内容在 OpenClaw 的 skills 目录下新建文件夹paper-to-obsidian里面放SKILL.md--- name: paper-to-obsidian description: 批量读取学术论文PDF提取标题、作者、摘要生成Obsidian格式笔记通过WebDAV同步到本地库。当用户说把论文导入Obsidian整理这几篇PDF生成文献笔记时激活。 version: 1.0.0 tags: [academic, paper, obsidian, webdav, automation] --- # 论文阅读笔记同步 Skill ## 触发场景 用户请求帮我读这篇论文并整理笔记把这几篇PDF导入Obsidian生成文献阅读笔记时激活。 ## 必要环境变量 - WEBDAV_URL: WebDAV 服务地址 - WEBDAV_USERNAME: WebDAV 账号 - WEBDAV_PASSWORD: WebDAV 应用密码非登录密码 - OBSIDIAN_PAPER_PATH: Obsidian 库中存放论文笔记的目录如 Papers/ ## 执行步骤 ### Step 1: 读取 PDF 接收用户提供的 PDF 路径列表用 pdfplumber 提取文本。 ### Step 2: 提取关键信息 从文本中提取标题、作者、发表日期、摘要。摘要定位关键词为 Abstract。 ### Step 3: 生成 Markdown 按下方模板生成笔记文件名格式 YYYYMMDD_标题简写.md。 ### Step 4: 上传 WebDAV 用 webdavclient3 连接上传到 OBSIDIAN_PAPER_PATH 目录。 ### Step 5: 返回结果 报告成功与失败数量失败项给出原因。 ## 笔记模板 markdown --- title: {标题} authors: {作者} date: {日期} tags: [paper, reading-notes] type: paper-note --- # {标题} ## 摘要 {摘要} ## 核心观点 [待补充] ## 阅读日期 {今日日期}注意事项加密 PDF 或扫描版跳过并告知用户文件名非法字符\ / : * ? |替换为下划线WebDAV 密码必须是应用密码不是登录密码### 3.2 WebDAV 同步脚本 Skill 描述只是给模型看的指令真正干活的是 Python 脚本。放在同目录 sync.py python #!/usr/bin/env python3 import os, re, sys from datetime import datetime from pathlib import Path import pdfplumber from webdav3.client import Client def extract_pdf(path): with pdfplumber.open(path) as pdf: text \n.join(p.extract_text() or for p in pdf.pages) lines [l.strip() for l in text.split(\n) if l.strip()] title lines[0] if lines else Untitled m re.search(rAbstract[:\s]*(.*?)(?\n\n|Introduction|$), text, re.I | re.S) abstract m.group(1).strip()[:600] if m else return {title: title, abstract: abstract, path: path} def build_md(info): today datetime.now().strftime(%Y-%m-%d) return f--- title: {info[title]} authors: Unknown date: {today} tags: [paper, reading-notes] type: paper-note --- # {info[title]} ## 摘要 {info[abstract]} ## 核心观点 [待补充] ## 阅读日期 {today} def safe_name(title): return re.sub(r[\\/:*?|], _, title)[:80] def main(pdfs): opts { webdav_hostname: os.environ[WEBDAV_URL], webdav_login: os.environ[WEBDAV_USERNAME], webdav_password: os.environ[WEBDAV_PASSWORD], } client Client(opts) remote_dir os.environ.get(OBSIDIAN_PAPER_PATH, Papers/) if not client.exists(remote_dir): client.mkdir(remote_dir) ok, fail 0, 0 for p in pdfs: try: info extract_pdf(p) md build_md(info) fname f{datetime.now().strftime(%Y%m%d)}_{safe_name(info[title])}.md client.upload_sync(f{remote_dir}{fname}, md.encode(utf-8)) print(fOK: {fname}) ok 1 except Exception as e: print(fFAIL: {p} - {e}) fail 1 print(f完成 成功{ok} 失败{fail}) if __name__ __main__: main(sys.argv[1:])依赖安装pip install pdfplumber webdavclient33.3 环境变量配置在 OpenClaw 启动脚本或系统环境里设置export WEBDAV_URLhttps://dav.jianguoyun.com/dav/ export WEBDAV_USERNAME你的账号邮箱 export WEBDAV_PASSWORD你的应用密码 export OBSIDIAN_PAPER_PATHPapers/WebDAV 应用密码要在服务商网页端的「安全选项」里单独生成不要用登录密码。这一步很多人踩坑用登录密码会直接 401。4. 验证请求跑一次端到端全链路配置写完必须验证。找两篇 PDF 放到~/papers/下然后对 OpenClaw 说帮我把 ~/papers/ 下的论文导入 ObsidianOpenClaw 会匹配到paper-to-obsidian的触发场景加载 SKILL.md调用sync.py。你也可以先绕过模型直接手动跑脚本确认底层通python sync.py ~/papers/test1.pdf ~/papers/test2.pdf预期输出OK: 20260115_Attention_Is_All_You_Need.md OK: 20260115_Deep_Residual_Learning.md 完成 成功2 失败0然后打开 Obsidian等 WebDAV 同步完成在Papers/目录下应该能看到两个新笔记YAML frontmatter 里的 title、date、tags 都填好了摘要段落有内容。如果摘要为空说明 PDF 里 Abstract 关键词的排版跟正则没匹配上可以手动调整正则或换pdfplumber的提取参数。这一步跑通意味着「PDF 读取 → 信息提取 → Markdown 生成 → WebDAV 上传 → Obsidian 落库」全链路闭环。之后你只要把 PDF 丢进文件夹一句话就能批量归档。5. 本篇常见错排查401、local proxy failed 与 reading choices写 Skill 和调通道的过程中有几个报错几乎人人都会遇到。我把它们和对应解法列出来你对照着查。401 Unauthorized出现在模型调用或 WebDAV 上传两个环节。模型侧检查 TaoToken Key 是否复制完整、Base URL 是否为https://taotoken.net/apiWebDAV 侧检查用的是不是应用密码。两者都会返回 401但报错来源不同看日志里是chat还是upload就能区分。local proxy failedOpenClaw 启动时报这个通常是本地网络配置或端口占用。先确认没有其他进程占用 OpenClaw 的默认端口再检查系统代理设置是否指向了一个不存在的地址。把代理关掉重试多数能恢复。reading choices 相关报错模型返回结构里choices字段读不到一般是 Model ID 填错或者 Base URL 多写了/v1导致路径拼接错误。回到 §2.1 的三件套逐项核对Base URL 保持https://taotoken.net/api原样。OAuth 报错如果你用的是 Claude Code 那套 OAuth 流程报 OAuth 失败时先确认settings.json里的认证字段没有跟 API Key 混用。OAuth 和 Key 是两套认证不要同时配。WebDAV 上传成功但 Obsidian 没出现笔记不是 Skill 的问题是 Obsidian 端的 WebDAV 同步插件还没拉取。手动触发一次同步或者检查OBSIDIAN_PAPER_PATH是否跟插件配置的远程目录一致。排查顺序建议先手动跑sync.py确认底层通再走 OpenClaw 确认 Skill 触发正常最后看 Obsidian 同步。分层定位比一上来就怀疑模型快得多。6. 把 Key 和文档收好下一步交给 Coding PlanSkill 跑通之后日常维护其实很轻新增 PDF 丢文件夹一句话触发。真正需要你操心的是 Key 的管理和文档的查阅。TaoToken 的 API Keys 页面可以按应用建多个 Key建议给 OpenClaw 单独一个方便用量归因和随时吊销。接入文档里有 Base URL、Model ID 列表和常见错误码说明遇到报错先翻文档比瞎试快。如果你打算把这个文献工作流长期跑下去甚至扩展成多个 Skill 协同比如再加一个「自动生成文献综述」的 Skill可以考虑 Coding Plan。它适合长期编码和 Agent 类任务Key 和额度管理更省心不用每次手动续。排障与接入API Keys 页面 接入文档验证模型是否正常模型对话页面长期编码与 Agent 任务Coding Plan最后说个实用技巧SKILL.md 里的触发场景描述尽量用你平时说话的原话。比如你习惯说「把这堆论文归档一下」就把这句写进触发场景模型匹配率会明显提高。Skill 是改出来的第一版跑通就行后面根据实际报错慢慢调。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑