mcpField
B
bbc-skill

bbc-skill

github.com/agents365-aiデータ・データベース97272 回インストール2 週間前に更新
リポジトリ

bbc-skill について

bbc-skillは、Claude Code向けのBilibiliコメント収集スキルです。動画のトップレベル、返信、固定コメントを分析用データとして取得し、UP主の動画を一括収集することもできます。

主な機能

  1. 01動画コメントの一括取得
  2. 02UP主の動画をまとめて収集
  3. 03JSONLと統計サマリーの出力
  4. 04再開と再取得の制御
  5. 05Cookieの検証とリクエストの事前確認

活用シーン

  1. 01コメントの感情やキーワードの分析
  2. 02ファン、いいね、UP主返信の集計
  3. 03IP所在地や時間別の視聴者反応の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/agents365-ai/365-skills --skill bbc-skill

インストール後、Claude Code で/bbc-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agent-contract.md
api-endpoints.md
cookie-extraction.md
bbc/
__init__.py
__main__.py
api.py
cli.py
envelope.py
fetch_user.py
fetch.py
flatten.py
progress.py
schema.py
summarize.py
wbi.py
bbc/cookie/
__init__.py
chrome_macos.py
firefox.py
netscape.py

詳細

bbc-skill — Bilibili コメントコレクター

Bilibili 動画のコメント(トップレベル+返信+固定済み)をすべてダウンロードし、Claude Code が後続の分析に利用できるデータを生成します。

更新チェック

インストールごとに24時間に1回だけチェックします。ユーザーの明示的な同意なしに、スキルディレクトリを変更してはいけません。

  1. <this-skill-dir>/.last_update が存在し、更新から24時間未満の場合は、この手順全体をスキップします。

  2. それ以外の場合は、アップストリームから最新タグを取得します。

    git -C <this-skill-dir> ls-remote --tags origin 'v*' 2>/dev/null \
      | awk '{print $2}' | sed 's|refs/tags/||' \
      | sort -V | tail -1
    
  3. フロントマターにあるこのスキルの metadata.version と比較します。アップストリームのタグのほうが新しい場合(semver に基づく)、ユーザーに1行で伝え、次のように尋ねます。

    "このスキルの新しいバージョンが利用可能です:vX.Y.Z → vA.B.C。git pull しますか?"

    同意が得られた場合は、git -C <this-skill-dir> pull --ff-only を実行します。いずれの場合も .last_update を更新し、24時間は再度確認を促さないようにします。

  4. アップストリームが同じバージョンか古い場合は、.last_update を通知なしで更新し、処理を続けます。

  5. いずれかの処理に失敗した場合(オフライン、Git チェックアウトではない場合(ClawHub 経由でインストールされたコピーなど)、読み取り専用のパス、権限がない場合)は、エラーを通知せずに無視し、ユーザーのタスクを続行します。失敗について言及してはいけません。

使用する場面

次の場合にこのスキルを使用します。

  • 特定の Bilibili 動画(BV 号、URL、または動画ページ)のコメントを取得/フェッチ/ダウンロード/エクスポート/収集/分析するようユーザーから依頼された場合。
  • 自分の Bilibili 動画の視聴者の反応/感情/キーワード/人気コメント/IP 分布を分析するよう依頼された場合。
  • https://www.bilibili.com/video/BVxxxxxxxxxx/ のような Bilibili URL が提示された場合。
  • 自身の UP主 UID が提示され、複数の動画をまとめて分析したいと依頼された場合。

次の用途には使用しないでください:コメントの投稿/削除、動画のダウンロード、弾幕、ライブ配信データ、またはプライベートメッセージ。

前提条件

  1. Python 3.9+(標準ライブラリのみ。pip のインストールは不要です)。

  2. Bilibili の Cookie。ユーザーは bilibili.com にログインしている必要があります。推奨手順:

    • Chrome/Edge 拡張機能 Get cookies.txt LOCALLY をインストールします(オープンソース、完全にローカルで動作し、アップロードはありません)。
    • ログイン済みの bilibili.com タブで Export をクリックし、www.bilibili.com_cookies.txt として保存します。
    • --cookie-file で渡すか、$BBC_COOKIE_FILE を設定します。

    代替手段:

    • SESSDATA の値のみを $BBC_SESSDATA 環境変数に設定します。
    • --browser auto によるブラウザーの自動検出(macOS 上の Firefox/Chrome/Edge)。Firefox で最も安定して動作します。Chrome/Edge の場合は、ログイン済みのプロファイルで Cookie がディスクに書き出されている必要があります。

認証の委任(原則7): このスキルは OAuth フローを実行しません。人間がブラウザーからログインし、エージェントはその結果得られた Cookie のみを使用します。

クイックスタート

取得する前に、Cookie が有効か確認します。

python3 -m bbc cookie-check

成功時のエンベロープ(標準出力):

{"ok":true,"data":{"mid":441831884,"uname":"探索未至之境","vip":false}}

1本の動画のコメントをすべて取得します。

python3 -m bbc fetch BV1NjA7zjEAU

または URL を渡します。

python3 -m bbc fetch "https://www.bilibili.com/video/BV1NjA7zjEAU/"

出力先(デフォルトは ./bilibili-comments/<BV>/):

  • comments.jsonl — 1行に1件のコメントをフラット化して格納
  • summary.json — 動画のメタデータ+統計+トップN
  • raw/ — API レスポンスのアーカイブ
  • .bbc-state.json — 再開用の状態

コマンド

コマンド用途
bbc fetch <BV|URL>1本の動画のコメントをすべて取得
bbc fetch-user <UID>1人の UP主 の動画をすべてまとめて取得
bbc summarize <dir>既存の comments.jsonl から summary.json を再構築
bbc cookie-checkCookie を検証し、ログイン中のユーザーを表示
bbc schema [cmd]コマンドの JSON スキーマを返す(エージェントによる検出用)

すべてのパラメーターの詳細は bbc <cmd> --help または bbc schema <cmd> で確認してください。フラグ名を推測してはいけません。

エージェントとの取り決め

標準出力と標準エラー出力
  • 標準出力:安定した JSON エンベロープ {"ok":true,"data":...} または {"ok":false,"error":...}。標準出力が TTY でない場合、JSON がデフォルトです。人間が読みやすい表を出力するには --format table を渡します。
  • 標準エラー出力:人間向けのログ行+長時間タスク用の NDJSON 進捗イベント。
終了コード
コード意味
0成功
1実行時エラー/API エラー
2認証エラー(Cookie が無効/不足)
3検証エラー(BV 番号が不正、フラグが不正)
4ネットワークエラー(タイムアウト/再試行回数の上限に到達)
エラーエンベロープ
{
  "ok": false,
  "error": {
    "code": "auth_expired",
    "message": "SESSDATA 已过期,请重新登录 B 站",
    "retryable": true,
    "retry_after_auth": true
  }
}

エラーコード:validation_error、auth_required、auth_expired、not_found、 rate_limited、api_error、network_error。完全な契約については bbc schema を参照してください。

ドライラン

すべての fetch コマンドで --dry-run を指定すると、ネットワークに接続せずに予定されているリクエストをプレビューできます。

python3 -m bbc fetch BV1NjA7zjEAU --dry-run
冪等性

同じ出力ディレクトリに対して同じ fetch コマンドを再実行すると、.bbc-state.json から処理を再開し、取得済みのページはスキップします。再取得するには --force を渡してください。

分析ワークフロー(エージェント向け)

fetch の完了後:

  1. まず summary.json(10 KB 未満)を読み取り、動画のメタデータ、合計件数、時間分布、上位 N 件などの全体的なコンテキストを把握します。
  2. テーマ別の分析では、Grep または head/tail で comments.jsonl を確認します。各行はフラットな JSON オブジェクトです。ファイルが小さい場合を除き、全体を読み込まないでください。
  3. 一般的な分析:
    • 感情の分布 → message をバッチ単位で確認
    • トップファン → mid でグループ化し、エントリーを数えて like を集計
    • UP 主とのやり取り → is_up_reply=true でフィルタリング
    • 視聴者の地域 → ip_location のヒストグラム
    • フィードバックの時系列 → ctime_iso を日/週単位で分類

summary.json のスキーマは references/agent-contract.md に記載されています。任意の動画に対してスキルを実行すると、ローカルに実際のサンプルを作成できます。

安全性ティア

すべてのコマンドは読み取り専用(ティア:open)です。変更、削除、メッセージの送信は行いません。すべての fetch コマンドでドライランを利用できます。

参考資料

  • references/api-endpoints.md — 使用する Bilibili API フィールド
  • references/cookie-extraction.md — ブラウザーごとの Cookie 復号
  • references/agent-contract.md — エンベロープとスキーマの完全な契約

制限事項

  • API が返す all_count には固定表示コメントが含まれます。完全性の確認:top_level + nested + pinned == declared_all_count。
  • 非常に古いコメント(2 年超)は、ユーザーが削除されている場合、データが不十分なことがあります。
  • ボット対策:--max の値が大きすぎる場合や、実行を繰り返した場合は、HTTP 412 が発生することがあります。クライアントはリクエスト間に 1 秒待機し、412 が発生するとバックオフします。

コメント