mcpField
D
douban-skill

douban-skill

github.com/daymadeデータ・データベース1.5k754 回インストール今日更新
リポジトリ

douban-skill について

douban-skill は、Frodo API を使い、Douban ユーザーの書籍、映画、音楽、ゲームのコレクションを CSV に出力します。全件エクスポートと RSS による差分更新に対応し、ログイン情報、Cookie、ブラウザーは不要です。

主な機能

  1. 014 種類のコレクションを CSV 出力
  2. 02RSS による差分更新
  3. 03Excel 対応の UTF-8 BOM 出力
  4. 04出力前のユーザー ID 検証
  5. 05ログイン・Cookie・ブラウザー不要

活用シーン

  1. 01Douban コレクションのアーカイブ
  2. 02評価済みアイテムの CSV 記録
  3. 03RSS による新着アイテム更新
  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

詳細

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 の表示件数をわずかに下回る場合があります

ワークフロー

  1. Douban のユーザー 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 エンドポイントのリファレンス

コメント