douban-skill について
douban-skill は、Frodo API を使い、Douban ユーザーの書籍、映画、音楽、ゲームのコレクションを CSV に出力します。全件エクスポートと RSS による差分更新に対応し、ログイン情報、Cookie、ブラウザーは不要です。
主な機能
- 014 種類のコレクションを CSV 出力
- 02RSS による差分更新
- 03Excel 対応の UTF-8 BOM 出力
- 04出力前のユーザー ID 検証
- 05ログイン・Cookie・ブラウザー不要
活用シーン
- 01Douban コレクションのアーカイブ
- 02評価済みアイテムの CSV 記録
- 03RSS による新着アイテム更新
- 04表計算用のコレクションデータ整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill douban-skillインストール後、Claude Code で/douban-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitleaks.tomlreferences/troubleshooting.mdscripts/douban-frodo-export.pydouban-rss-sync.mjs詳細
Douban コレクションのエクスポート
Douban のユーザーコレクション(書籍、映画、音楽、ゲーム)を CSV ファイルにエクスポートします。 Douban には公式のデータエクスポート機能がなく、公式 API は 2018 年に終了しました。
このスキルでできること
- Frodo API を使って、書籍/映画/音楽/ゲームのすべてのコレクションを一括エクスポート
- RSS による日次更新の差分同期(直近約 10 件)
- UTF-8 BOM 付きの CSV 出力(Excel 対応)、クロスプラットフォーム対応(macOS/Windows/Linux)
- ログイン、Cookie、ブラウザーは不要
- 事前にユーザー ID を検証(ID が誤っていれば即座に失敗)
このスキルでできないこと
- レビュー(长评)、ノート(读书笔记)、ブロードキャスト(广播)はエクスポートできません
- 1 回の実行で単一カテゴリに絞り込めません(4 種類すべてをまとめてエクスポートします)
- 非公開プロフィールにはアクセスできません(アイテムが 0 件でも通知は表示されません)
Frodo API を使う理由(ウェブスクレイピングは使用しないでください)
Douban はウェブページで PoW(Proof of Work)チャレンジを使用しているため、HTTP スクレイピングはすべてブロックされます。
7 つの方法を試した結果、Frodo API だけが機能しました。ウェブスクレイピング、
browser_cookie3+requests、Cookie 付きの curl、Jina Reader は試さないでください。
試した 7 つの方法すべての失敗記録と、それぞれが失敗した理由については、references/troubleshooting.md を参照してください。
セキュリティとプライバシー
スクリプト内の API キーと HMAC シークレットは、Douban の公開モバイルアプリ認証情報で、
APK から抽出したものです。Douban アプリの全ユーザーで共有されており、個人を特定するものではありません。
個人の認証情報は使用も保存もしません。データの取得元は 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(必須):Douban のユーザー 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(ユーザーがアイテムに印を付けた日)- 複数回実行しても安全です(最新データで上書きされます)
- 登録解除されたアイテムがあるため、行数が Douban の表示件数をわずかに下回る場合があります
ワークフロー
- Douban のユーザー ID を尋ねます(プロフィール URL から取得するか、完全な URL を受け取ります)
- 実行します:
DOUBAN_USER=<id> python3 scripts/douban-frodo-export.py - 確認します:コンソール出力の行数が一致することを確認し、
wc -l <output_dir>/*.csvでチェックします - (任意)日次の差分更新用に RSS 同期を設定します
トラブルシューティング
以下については、references/troubleshooting.md を参照してください。
- Frodo API の認証情報(HMAC-SHA1 署名の計算)
- よくあるエラー(コード 996 の署名エラー、レート制限、ページネーションの仕様)
- 試した 7 つの方法すべての失敗記録と根本原因
- 代替方法(豆伴拡張機能、Tampermonkey スクリプト、ブラウザーコンソール)
- 応答形式を含む API エンドポイントのリファレンス