Install
openclaw skills install douban-bookmark输入图书名称,把它加入豆瓣读书的「想读」收藏。适用于“把《xxx》加入豆瓣想读 / 愿望清单 / 想读列表”这类请求。实现方式:先用 HTTP 解析豆瓣搜索结果拿到最优图书详情页,再用 Playwright 持久化浏览器登录态打开详情页,执行豆瓣真实的两段式收藏流程(点“想读”→ 点“保存”)。首次登录后可长期复...
openclaw skills install douban-bookmark不要再使用 agent-browser。
统一使用本 skill 自带脚本:
scripts/add_wishlist.pyscripts/add_wishlist.sh这套方案分成两段:
requests + BeautifulSoup 解析豆瓣搜索页,稳定拿到第一本书的详情页 URLPlaywright launch_persistent_context 复用本地浏览器 profile,打开详情页并点击「想读」环境依赖:
python3requestsbeautifulsoup4playwrightplaywright install chromium首次使用时,先让用户登录一次豆瓣:
python3 skills/douban-bookmark/scripts/add_wishlist.py --login --headed
规则:
--headed默认 profile 目录:
~/.openclaw/browser-profiles/douban-playwright
python3 skills/douban-bookmark/scripts/add_wishlist.py "金钱的艺术"
或者:
skills/douban-bookmark/scripts/add_wishlist.sh "金钱的艺术"
脚本会:
先执行:
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 编号。
豆瓣这里不是“一次点击就完成”的普通按钮,而是两段式交互:
input[type=submit][value='想读']input[type=submit][value='保存']如果页面已经处于成功态,常见标志是:
我想读这本书修改删除必须使用持久化 context:
launch_persistent_context(user_data_dir=...)不要使用临时 browser context,否则豆瓣登录态会丢。
如果失败:
needs_login=true--headed 重跑一次观察页面add_wishlist.py 里的选择器--login --headed