Douban Bookmark

输入图书名称,把它加入豆瓣读书的「想读」收藏。适用于“把《xxx》加入豆瓣想读 / 愿望清单 / 想读列表”这类请求。实现方式:先用 HTTP 解析豆瓣搜索结果拿到最优图书详情页,再用 Playwright 持久化浏览器登录态打开详情页,执行豆瓣真实的两段式收藏流程(点“想读”→ 点“保存”)。首次登录后可长期复...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 17 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
名称/描述与实现一致。脚本使用 requests + BeautifulSoup 做搜索解析,然后用 Playwright 在 book.douban.com 上执行点击流程。未看到与该用途不符的环境变量、外部服务或二进制依赖。
Instruction Scope
SKILL.md 与脚本只访问豆瓣搜索页和图书详情页,并在本地打开浏览器页面、查找并点击按钮。没有指示读取其他系统配置或将数据发到与豆瓣无关的外部端点。
Install Mechanism
无安装规范(instruction-only + 附带脚本),风险较低。脚本依赖 playwright/chromium,需用户按说明自行安装,这是一种透明、可审计的依赖。
Credentials
不需要声明的环境凭据,但会在本地创建/复用持久化浏览器 profile(默认 ~/.openclaw/browser-profiles/douban-playwright)。这与功能直接相关(保存登录态),但该目录会保存 cookies/会话信息,属于敏感数据,应注意隔离或自定义路径。
Persistence & Privilege
没有设置 always:true,技能为用户可调用且不会修改其他技能或全局代理设置。它会在本地保存自己的浏览器 profile(这是所需行为),但未请求额外平台权限。
Assessment
该技能看起来是做它宣称的事情:搜索豆瓣并用 Playwright 在浏览器里点击“想读”。在安装/使用前请注意: - 你需要在系统上安装 Python、playwright 和 Chromium(按说明手动执行 playwright install chromium)。 - 首次必须用 --login --headed 手动登录一次,脚本会把登录态保存在默认目录 (~/.openclaw/browser-profiles/douban-playwright)。该目录会存储 cookies/会话信息,可能包含敏感登录凭证——如果不想复用默认 profile,请在运行时用 --profile-dir 指定一个专用目录或在隔离环境(不同用户帐户、容器或 VM)中运行。 - 脚本是可读的(已包含在包内)。如果有顾虑,可手动审查 scripts/add_wishlist.py 后再运行。 - 仅从信任的来源安装 playwright/Chromium。若你希望更严格的安全性,可在临时容器中执行这些操作或避免将主浏览器的 profile 指向该目录。

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
bookmarkvk972f8xdea4rh0nsxe1yn6z4wd830nwhbooksvk972f8xdea4rh0nsxe1yn6z4wd830nwhdoubanvk972f8xdea4rh0nsxe1yn6z4wd830nwhlatestvk972f8xdea4rh0nsxe1yn6z4wd830nwhplaywrightvk972f8xdea4rh0nsxe1yn6z4wd830nwh

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

豆瓣图书 Bookmark 自动化

不要再使用 agent-browser

统一使用本 skill 自带脚本:

  • scripts/add_wishlist.py
  • scripts/add_wishlist.sh

这套方案分成两段:

  1. requests + BeautifulSoup 解析豆瓣搜索页,稳定拿到第一本书的详情页 URL
  2. Playwright launch_persistent_context 复用本地浏览器 profile,打开详情页并点击「想读」

前提

环境依赖:

  • python3
  • requests
  • beautifulsoup4
  • playwright
  • 已安装 Chromium:playwright install chromium

首次登录

首次使用时,先让用户登录一次豆瓣:

python3 skills/douban-bookmark/scripts/add_wishlist.py --login --headed

规则:

  • 必须带 --headed
  • 登录完成后,浏览器 profile 会保存在默认目录
  • 后续加入「想读」时复用同一个 profile,不要换目录

默认 profile 目录:

~/.openclaw/browser-profiles/douban-playwright

正常使用

python3 skills/douban-bookmark/scripts/add_wishlist.py "金钱的艺术"

或者:

skills/douban-bookmark/scripts/add_wishlist.sh "金钱的艺术"

脚本会:

  1. 搜索书名
  2. 解析第一本书详情页 URL
  3. 打开详情页
  4. 点击「想读」
  5. 输出 JSON 结果

推荐执行策略

已知用户没登录时

先执行:

python3 skills/douban-bookmark/scripts/add_wishlist.py --login --headed

等用户登录完成后,再执行:

python3 skills/douban-bookmark/scripts/add_wishlist.py "书名"

已有登录态时

直接执行:

python3 skills/douban-bookmark/scripts/add_wishlist.py "书名"

需要观察浏览器行为时

改成有头模式:

python3 skills/douban-bookmark/scripts/add_wishlist.py "书名" --headed

输出判断

脚本输出 JSON,重点看这些字段:

  • subject_url: 命中的豆瓣图书详情页
  • clicked: 是否实际执行了点击
  • needs_login: 是否需要先登录
  • success: 是否大概率成功

如果:

  • needs_login=true → 先让用户登录
  • clicked=false → 页面结构变了,需要修脚本
  • success=true → 可向用户报告已完成或大概率完成

实现细节

搜索阶段

不要依赖豆瓣图书搜索页前端渲染。

直接请求:

https://www.douban.com/search?cat=1001&q=<书名>

从 HTML 里解析 .result .title a.result .pic a,提取其中跳转到:

https://book.douban.com/subject/<id>/

点击阶段

不要依赖 ref 编号。

豆瓣这里不是“一次点击就完成”的普通按钮,而是两段式交互:

  1. 先点详情页上的 input[type=submit][value='想读']
  2. 再点弹层表单里的 input[type=submit][value='保存']

如果页面已经处于成功态,常见标志是:

  • 出现 我想读这本书
  • 出现 修改
  • 出现 删除

登录态

必须使用持久化 context:

  • launch_persistent_context(user_data_dir=...)

不要使用临时 browser context,否则豆瓣登录态会丢。

失败处理

如果失败:

  1. 先看是否 needs_login=true
  2. 再用 --headed 重跑一次观察页面
  3. 若点击控件失效,更新 add_wishlist.py 里的选择器
  4. 不要假装成功

操作准则

  • 优先使用自带脚本,不要临时拼一堆浏览器命令
  • 优先复用默认 profile 目录
  • 登录问题优先走 --login --headed
  • 页面结构变化时,修改脚本,不要回退到 agent-browser

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…