daymade/claude-code-skills

douban-skill

Export and sync Douban (豆瓣) book/movie/music/game collections to local CSV files via Frodo API.

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Douban Collection Export

Export Douban user collections (books, movies, music, games) to CSV files. Douban has no official data export; the official API shut down in 2018.

What This Skill Can Do

  • Full export of all book/movie/music/game collections via Frodo API
  • RSS incremental sync for daily updates (last ~10 items)
  • CSV output with UTF-8 BOM (Excel-compatible), cross-platform (macOS/Windows/Linux)
  • No login, no cookies, no browser required
  • Pre-flight user ID validation (fail fast on wrong ID)

What This Skill Cannot Do

  • Cannot export reviews (长评), notes (读书笔记), or broadcasts (广播)
  • Cannot filter by single category in one run (exports all 4 types together)
  • Cannot access private profiles (returns 0 items silently)

Why Frodo API (Do NOT Use Web Scraping)

Douban uses PoW (Proof of Work) challenges on web pages, blocking all HTTP scraping. We tested 7 approaches — only the Frodo API works. Do NOT attempt web scraping, browser_cookie3+requests, curl with cookies, or Jina Reader.

See references/troubleshooting.md for the complete failure log of all 7 tested approaches and why each failed.

Security & Privacy

The API key and HMAC secret in the script are Douban's public mobile app credentials, extracted from the APK. They are shared by all Douban app users and do not identify you. No personal credentials are used or stored. Data is fetched only from frodo.douban.com.

Full Export (Primary Method)

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

Finding the user ID: Profile URL douban.com/people/<ID>/ — the ID is after /people/. If the user provides a full URL, the script auto-extracts the ID.

Environment variables:

  • DOUBAN_USER (required): Douban user ID (alphanumeric or numeric, or full profile URL)
  • DOUBAN_OUTPUT_DIR (optional): Override output directory

Default output (auto-detected per platform):

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

Dependencies: Python 3.6+ standard library only (works with python3 or uv run).

Example console output:

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 Incremental Sync (Complementary)

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

RSS returns only the latest ~10 items (no pagination). Use Full Export first, then RSS for daily updates.

Output Format

Four CSV files per user:

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

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

  • rating: ★ to ★★★★★ (empty if unrated)
  • date: YYYY-MM-DD (when the user marked it)
  • Safe to run multiple times (overwrites with fresh data)
  • Row counts may be slightly below Douban's displayed count due to delisted items

Workflow

  1. Ask for Douban user ID (from profile URL, or accept full URL)
  2. Run: DOUBAN_USER=<id> python3 scripts/douban-frodo-export.py
  3. Verify: row counts in console output should match, check with wc -l <output_dir>/*.csv
  4. (Optional) Set up RSS sync for daily incremental updates

Troubleshooting

See references/troubleshooting.md for:

  • Frodo API auth details (HMAC-SHA1 signature computation)
  • Common errors (code 996 signature error, rate limits, pagination quirks)
  • Complete failure log of all 7 tested approaches with root causes
  • Alternative approaches (豆伴 extension, Tampermonkey script, browser console)
  • API endpoint reference with response format
du même dépôt

Autres Skills

Tous les Skills
daymade
Communauté

i18n-expert

This skill should be used when setting up, auditing, or enforcing internationalization/localization in UI codebases (React/TS, i18next or similar, JSON locales), including installing/configuring the i18n framework, replacing hard-coded strings, ensuring en-US/zh-CN coverage, mapping error codes to localized messages, and validating key parity, pluralization, and formatting.

installations
1
GitHub Stars
1,4 k
Mis à jour
22 sept.
daymade
Communauté

frontend-visual-qa

- Audits already-rendered web, landing-page, HTML deck/slide, browser tool/game, dashboard/admin, design-system, and desktop UIs using real-browser or native-app journeys, inspected screenshots, DOM geometry, responsive or projection viewports, and a bundled Playwright sweep. Use after UI implementation to find typography, wrapping, overlap, overflow, responsive, route, overlay, map, transient-state, data-visualization, browser-output, file-dialog, PDF/print, or Electron-shell defects, or to compare a rendered artifact with a visual reference. Do not use for greenfield UI design, extracting a design system from screenshots, general QA-program setup, or nonvisual code debugging.

installations
2
GitHub Stars
1,4 k
Mis à jour
21 sept.
daymade
Communauté

github-ops

- Operates GitHub through gh CLI and the REST/GraphQL APIs with explicit target, authorization, impact preview, and independent readback. Use for pull requests, issues, Actions, repositories, collaborators, teams, organization member privileges, base permissions, 2FA enforcement, repository settings, API automation, parallel or superseded PR convergence, and public or enterprise GitHub. Also use when a GitHub write returned success but the requested state did not change, or when deciding whether a setting is writable through CLI, REST, GraphQL, or only the GitHub UI.

installations
1
GitHub Stars
1,4 k
Mis à jour
20 sept.
daymade
Communauté

ashare-news-fetcher

- 抓取 A 股消息面情报:从财联社、华尔街见闻、金十、新浪 7x24、东财快讯、 证监会/央行/上交所/财政部政策公告、东方财富股吧等公开来源抓取与股票相关的 新闻、政策、情绪,输出结构化 JSON 或 Markdown。 当用户提到“A 股消息面”、“抓新闻”、“个股消息”、“政策监管”、“股吧情绪”、 “财联社”、“东财快讯”、“市场情绪”或需要把某只股票相关的公开情报聚合出来时 触发。也适用于“帮我看看 000001 最近有什么消息”这类口语化请求。

installations
1
GitHub Stars
1,4 k
Mis à jour
16 sept.