mcpField
D
douban-skill

douban-skill

github.com/daymade数据与数据库1.5k754 次安装今天更新
代码仓库

关于 douban-skill

douban-skill 通过 Frodo API 将豆瓣用户的图书、电影、音乐和游戏收藏导出为 CSV。它支持完整导出和基于 RSS 的增量更新,无需登录凭据、Cookie 或浏览器。

主要功能

  1. 01导出四类收藏为 CSV
  2. 02通过 RSS 增量更新
  3. 03生成兼容 Excel 的 UTF-8 BOM 文件
  4. 04导出前验证用户 ID
  5. 05无需登录、Cookie 或浏览器

适用场景

  1. 01归档豆瓣用户收藏
  2. 02建立已评分条目的 CSV 记录
  3. 03通过 RSS 更新近期条目
  4. 04整理收藏数据以供表格使用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/daymade/claude-code-skills --skill douban-skill

安装后在 Claude Code 中输入/douban-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitleaks.toml
references/
troubleshooting.md
scripts/
douban-frodo-export.py
douban-rss-sync.mjs

详细介绍

豆瓣收藏导出

将豆瓣用户收藏(书籍、电影、音乐、游戏)导出为 CSV 文件。 豆瓣没有官方数据导出功能;官方 API 已于 2018 年关闭。

此技能可以做什么

  • 通过 Frodo API 完整导出所有书籍/电影/音乐/游戏收藏
  • 通过 RSS 增量同步每日更新(最近约 10 项)
  • 输出 UTF-8 BOM 编码的 CSV(兼容 Excel),支持跨平台(macOS/Windows/Linux)
  • 无需登录、Cookie 或浏览器
  • 执行前验证用户 ID(ID 错误时立即失败)

此技能无法做什么

  • 无法导出影评(长评)、笔记(读书笔记)或广播
  • 无法在一次运行中按单个类别筛选(会同时导出全部 4 种类型)
  • 无法访问私人资料页(会静默返回 0 项)

为什么使用 Frodo API(不要使用网页抓取)

豆瓣网页会使用 PoW(工作量证明)挑战,阻止所有 HTTP 抓取。 我们测试了 7 种方法,只有 Frodo API 可用。不要尝试网页抓取、 browser_cookie3+requests、使用 Cookie 的 curl 或 Jina Reader。

请参阅 references/troubleshooting.md,了解所有 7 种测试方法的完整失败记录及其失败原因。

安全与隐私

脚本中的 API 密钥和 HMAC 密钥是豆瓣的公开移动应用凭据, 从 APK 中提取而来。所有豆瓣应用用户共用这些凭据,它们不会识别你的身份。 脚本不会使用或存储任何个人凭据。数据仅从 frodo.douban.com 获取。

完整导出(主要方法)

DOUBAN_USER=<user_id> python3 scripts/douban-frodo-export.py

**查找用户 ID:**个人资料页 URL douban.com/people/<ID>/ 中,/people/ 后面的部分就是 ID。 如果用户提供完整 URL,脚本会自动提取 ID。

环境变量:

  • DOUBAN_USER(必需):豆瓣用户 ID(字母数字组合或纯数字,也可填写完整个人资料页 URL)
  • DOUBAN_OUTPUT_DIR(可选):覆盖输出目录

默认输出目录(按平台自动检测):

  • macOS:~/Downloads/douban-sync/<user_id>/
  • Windows:%USERPROFILE%\Downloads\douban-sync\<user_id>\
  • Linux:~/Downloads/douban-sync/<user_id>/

**依赖项:**仅需 Python 3.6+ 标准库(可使用 python3 或 uv run)。

控制台输出示例:

Douban Export for user: your_douban_id
Output directory: /Users/you/Downloads/douban-sync/your_douban_id

=== 读过 (book) ===
  Total: 639
  Fetched 0-50 (50/639)
  Fetched 50-100 (100/639)
  ...
  Fetched 597-639 (639/639)
  Collected: 639

=== 在读 (book) ===
  Total: 75
  ...

--- Writing CSV files ---
  书.csv: 996 rows
  影视.csv: 238 rows
  音乐.csv: 0 rows
  游戏.csv: 0 rows

Done! 1234 total items exported to /Users/you/Downloads/douban-sync/your_douban_id

RSS 增量同步(补充方式)

DOUBAN_USER=<user_id> node scripts/douban-rss-sync.mjs

RSS 仅返回最近约 10 项(不支持分页)。请先使用完整导出,然后通过 RSS 获取每日更新。

输出格式

每位用户会生成 4 个 CSV 文件:

Downloads/douban-sync/<user_id>/
├── 书.csv      (读过 + 在读 + 想读)
├── 影视.csv    (看过 + 在看 + 想看)
├── 音乐.csv    (听过 + 在听 + 想听)
└── 游戏.csv    (玩过 + 在玩 + 想玩)

列:title, url, date, rating, status, comment

  • rating:★ 至 ★★★★★(未评分时为空)
  • date:YYYY-MM-DD(用户标记该条目的日期)
  • 可安全多次运行(会用最新数据覆盖文件)
  • 由于部分条目已下架,行数可能略少于豆瓣显示的数量

工作流

  1. 询问豆瓣用户 ID(从个人资料页 URL 获取,或接受完整 URL)
  2. 运行:DOUBAN_USER=<id> python3 scripts/douban-frodo-export.py
  3. 验证:控制台输出中的行数应与预期相符;使用 wc -l <output_dir>/*.csv 检查
  4. (可选)设置 RSS 同步,以每日增量更新

故障排查

请参阅 references/troubleshooting.md,了解:

  • Frodo API 身份验证详情(HMAC-SHA1 签名计算)
  • 常见错误(代码 996 签名错误、速率限制、分页问题)
  • 所有 7 种测试方法的完整失败记录及根本原因
  • 替代方法(豆伴扩展、Tampermonkey 脚本、浏览器控制台)
  • API 端点参考及响应格式

评论

支持 Markdown