名称: douban-sync
描述: 将豆瓣(豆瓣)的书籍/电影/音乐/游戏收藏导出并同步到本地 CSV 文件(兼容 Obsidian)。适用于用户希望导出其豆瓣阅读/观看/收听/游戏历史记录、通过 RSS 设置增量同步,或在本地管理豆瓣数据。
元数据: {"openclaw": {"requires": {"env": ["DOUBAN_USER"]}, "primaryEnv": "DOUBAN_USER"}}
将豆瓣收藏(书籍、电影、音乐、游戏)导出为 CSV 文件,并通过 RSS 保持同步。
使用浏览器工具抓取所有收藏页面。需要用户已登录豆瓣。
浏览器 → douban.com/people/{用户ID}/{分类}?start=0&sort=time&mode=list
分类与 URL 路径:
- 书籍:book.douban.com/people/{ID}/collect (读过), /do (在读), /wish (想读)
- 影视:movie.douban.com/people/{ID}/collect (看过), /do (在看), /wish (想看)
- 音乐:music.douban.com/people/{ID}/collect (听过), /do (在听), /wish (想听)
- 游戏:www.douban.com/people/{ID}/games?action=collect (玩过), =do (在玩), =wish (想玩)
列表模式下,每页最多显示 30 条记录(部分页面可能因条目下架而少于 30 条)。通过 ?start=0,30,60... 进行分页——脚本会使用分页器的“下一页”按钮来判断是否继续。
频率限制: 每抓取一页后等待 2-3 秒。如果被限制,等待 30 秒后重试。
脚本:
- scripts/douban-scraper.mjs — 仅使用 HTTP,无需浏览器(可能被频率限制)
- scripts/douban-browser-scraper.mjs — 通过 Puppeteer CDP 运行,需要一个正在运行的浏览器
- scripts/douban-extract.mjs — 生成一个用于手动提取的浏览器控制台脚本
运行 scripts/douban-rss-sync.mjs — 无需登录。
node scripts/douban-rss-sync.mjs
设置: 设置以下环境变量:
- DOUBAN_USER (必需):豆瓣用户 ID
- DOUBAN_OUTPUT_DIR (可选):输出根目录,默认为 ~/douban-sync
建议: 添加每日定时任务(cron job)以实现自动同步。
每个用户在输出目录下会生成四个 CSV 文件:
douban-sync/
└── {用户ID}/
├── 书.csv
├── 影视.csv
├── 音乐.csv
└── 游戏.csv
CSV 列结构:
title,url,date,rating,status,comment
"书名","https://book.douban.com/subject/12345/","2026-01-15","★★★★★","读过","短评内容"
status:对应状态,例如 读过/在读/想读, 看过/在看/想看, 听过/在听/想听, 玩过/在玩/想玩全量导出和 RSS 同步均通过豆瓣 URL 进行去重——可安全地多次运行。