Skip to main content
Glama
222wcnm

BiliStalkerMCP

by 222wcnm

BiliStalkerMCP

Python MCP PyPI-Version

Bilibili MCP Server für die Analyse bestimmter Nutzer

BiliStalkerMCP ist ein Bilibili MCP Server, der auf dem Model Context Protocol (MCP) basiert und speziell für KI-Agenten entwickelt wurde, die einen bestimmten Bilibili-Nutzer oder -Ersteller analysieren müssen.

Er ist optimiert für Arbeitsabläufe, die von einer Ziel-UID oder einem Benutzernamen ausgehen, dann das Profil, die Videos, Dynamiken, Artikel, Untertitel und Abonnements dieses Nutzers mit strukturierten Tools abrufen.

Wenn du nach einem Bilibili MCP Server, einem Bilibili Model Context Protocol Server oder einem MCP Server zum Verfolgen und Analysieren eines bestimmten Bilibili-Nutzers suchst, ist dieses Repository für diesen Anwendungsfall konzipiert.

English | 中文说明

Installation

uvx bili-stalker-mcp
# or
pip install bili-stalker-mcp

Konfiguration (Claude Desktop, empfohlen)

{
  "mcpServers": {
    "bilistalker": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/BiliStalkerMCP", "bili-stalker-mcp"],
      "env": {
        "SESSDATA": "required_sessdata",
        "BILI_JCT": "optional_jct",
        "BUVID3": "optional_buvid3"
      }
    }
  }
}

Bevorzuge uv run --directory ... für schnellere lokale Aktualisierungen, wenn die Verbreitung der PyPI-Version verzögert ist. Du kannst weiterhin uvx bili-stalker-mcp für eine schnelle einmalige Nutzung verwenden.

Authentifizierung: Gib SESSDATA direkt an oder lege es in BILI_COOKIE_FILE ab. Erhalte es über die Browser-Entwicklertools (F12) > Anwendung > Cookies > .bilibili.com.

Umgebungsvariablen

Schlüssel

Erf.

Beschreibung

SESSDATA

Bedingt

Bilibili-Sitzungstoken; erforderlich, es sei denn, BILI_COOKIE_FILE stellt es bereit.

BILI_JCT

Nein

CSRF-Schutztoken.

BUVID3

Nein

Hardware-Fingerabdruck (verringert das Risiko von Ratenbegrenzungen).

BILI_COOKIE_FILE

Nein

Pfad zu einer einfachen Cookie-Datei.

BILI_REFRESH_TOKEN_FILE

Nein

Pfad zur separaten Datei für das Aktualisierungstoken; setze das Token niemals über eine Umgebungsvariable.

BILI_ENABLE_COOKIE_REFRESH

Nein

true aktiviert sichere automatische Aktualisierung; Standard: false.

BILI_COOKIE_REFRESH_CHECK_INTERVAL_SECONDS

Nein

Intervall für die Aktualisierungsprüfung; Standard: 21600, Minimum: 60.

BILI_LOG_LEVEL

Nein

DEBUG, INFO (Standard), WARNING.

BILI_TIMEZONE

Nein

Ausgabezeitzone für formatierte Zeitstempel (Standard: Asia/Shanghai).

Die automatische Aktualisierung ist standardmäßig deaktiviert. Aktiviere sie nur, wenn die Cookie-Datei und die Aktualisierungs-Token-Datei vorhanden, lesbar und beschreibbar sind. Die Cookie-Datei darf nur normale Cookie-Werte enthalten (SESSDATA, bili_jct, buvid3, buvid4 und DedeUserID); das Aktualisierungstoken gehört nur in seine eigene Datei.

{
  "BILI_COOKIE_FILE": "/secure/bilibili-cookie.txt",
  "BILI_REFRESH_TOKEN_FILE": "/secure/bilibili-refresh-token.txt",
  "BILI_ENABLE_COOKIE_REFRESH": "true",
  "BILI_COOKIE_REFRESH_CHECK_INTERVAL_SECONDS": "21600"
}

Wenn die Aktualisierung aktiviert ist, setze SESSDATA, BILI_JCT oder DEDEUSERID nicht in der Umgebung: Diese rotierenden Werte müssen aus der Cookie-Datei stammen, damit ein Neustart keine veralteten Anmeldeinformationen nachladen kann. BUVID3 und BUVID4 können weiterhin über die Umgebung bereitgestellt werden. Aktualisierungsprüfungen werden ratenbegrenzt, und gleichzeitige MCP-Aufrufe oder Serverprozesse, die diese Dateien gemeinsam nutzen, verwenden eine einzige Aktualisierungssperre. Eine ausstehende Bestätigung wird vor einer erneuten Aktualisierung wiederhergestellt. Der Seitenwagen .bili-cookie-refresh.lock kann zwischen den Läufen auf der Festplatte verbleiben.

Für eine schnellere Ersteinrichtung kopiere den vollständigen Cookie-Header-Wert aus einer Bilibili-Browseranfrage und den ac_time_value aus dem lokalen Speicher und führe dann Folgendes aus:

uv run bili-stalker-cookie-setup --directory D:\BiliStalkerSecrets

Für einen PyPI-Aufruf ohne Klonen dieses Repositories:

uvx --from bili-stalker-mcp bili-stalker-cookie-setup --directory D:\BiliStalkerSecrets

Das Skript verbirgt beide eingefügten Werte, lehnt Verzeichnisse innerhalb des Repositories und vorhandene Anmeldedateien ab und gibt nur einen nicht geheimen MCP-env-Block aus. Füge keinen vollständigen cURL-Befehl ein: Füge nur den Wert nach dem cookie:-Header ein.

Lokale Überprüfung

Alle Überprüfungsbefehle verwenden Mocks und erfordern keine Bilibili-Anmeldeinformationen:

uv run pytest -q tests/test_credentials.py tests/test_cookie_refresh.py tests/test_tool_contract.py
uv run pytest -q
uv run black --check bili_stalker_mcp tests scripts
uv run isort --check-only bili_stalker_mcp tests scripts
uv run flake8 bili_stalker_mcp tests scripts
uv run mypy bili_stalker_mcp

Related MCP server: MediaCrawler MCP Server

Verfügbare Werkzeuge

Werkzeug

Fähigkeit

Parameter

search_users

Leichte Nutzerkandidaten mit numerischen UIDs

keyword, limit

get_user_snapshot

Ein-Aufruf-Übersicht: Profil + aktuelle Videos/Dynamiken/Artikel, gleichzeitig abgerufen

user_id_or_username, video_limit, dynamic_limit, article_limit (0 überspringt einen Abschnitt)

get_user_info

Umfangreiches Profil: Level, offizieller Titel, VIP, Live-Raum, Sperrstatus, Abonnenten/Abonnierte, gesamte Videoaufrufe/Artikelaufrufe/Likes (benötigt bili_jct)

user_id_or_username

get_user_videos

Leichte Videoliste

user_id_or_username, page, limit

search_user_videos

Stichwortsuche in der Videoliste eines Nutzers

user_id_or_username, keyword, page, limit

get_video_detail

Vollständige Videodetails + optionale Untertitel

bvid, fetch_subtitles (Standard: false), subtitle_mode (smart/full/minimal), subtitle_lang (Standard: auto), subtitle_max_chars

get_user_dynamics

Strukturierte Dynamiken mit Bild-Metadaten und Cursor-Paginierung

user_id_or_username, cursor, limit, dynamic_type

get_user_articles

Leichte Artikelliste

user_id_or_username, page, limit

get_article_content

Vollständiger Artikel im Markdown-Format

article_id

get_user_followings

Analyse der Abonnementliste

user_id_or_username, page, limit

get_content_comments

Kommentare zu einem Video, Artikel oder einer Dynamik (einschließlich Bildern und Notiz-Metadaten)

content_type, content_id, cursor, limit, sort

get_content_comment_replies

Vollständige Unterantworten zu einem Video-, Artikel- oder Dynamikkommentar

content_type, content_id, root_rpid, page, limit

Wenn du von einem Benutzernamen ausgehst, rufe search_users einmal auf und verwende die zurückgegebene numerische UID für die nachfolgenden Werkzeuge. Die implizite Benutzernamensauflösung akzeptiert nur exakte Übereinstimmungen; sie wählt nicht stillschweigend das erste ähnliche Suchergebnis aus.

Kommentar-pictures enthalten die ursprünglichen Bild-URLs. Reguläre lange Kommentare behalten den vollständigen Text, der von Bilibili zurückgegeben wird. Notizartige Kommentare können nur eine Vorschau enthalten; verwende den zurückgegebenen note.cvid mit get_article_content, um die vollständige Notiz abzurufen. Für Videokommentare übergib content_type="video" und eine BVID, AV-Nummer oder Video-URL als content_id. Verwende die rpid eines übergeordneten Kommentars als root_rpid, wenn du den vollständigen Antwortthread abrufst.

Dynamikfilterung (dynamic_type)

  • ALL (Standard): Text, Bilder und Reposts.

  • ALL_RAW: Ungefiltert (enthält Videos & Artikel).

  • VIDEO, ARTICLE, DRAW, TEXT: Spezifische Kategorie-Filterung.

  • REVIEW: Nur erkannte Bewertungskarten mit fünf Slots. Jedes Ergebnis zeigt review.rating (ausgefüllte Sterne, 0-5), review.title, review.text, Cover- und Sprung-URLs sowie die Quellbewertungsbeschreibung, falls verfügbar. Dieser Filter klassifiziert nicht unabhängig, ob der bewertete Titel ein Anime ist.

Jedes Dynamik-Element enthält eine images-Liste. Jedes Bild enthält url, width und height; ungültige URLs werden weggelassen, nicht verfügbare Abmessungen sind null. image_count ist immer gleich der Anzahl der zurückgegebenen Bilder. Reposts zeigen dieselben Felder unter origin.images und origin.image_count. Dynamiken ohne Bilder geben eine leere images-Liste zurück.

Paginierung: Antworten enthalten next_cursor. Übergib dies an nachfolgende Anfragen für nahtloses Scrollen.

Untertitel-Modi (get_video_detail)

  • smart (Standard, wenn fetch_subtitles=true): Metadaten für alle Seiten abrufen, nur den Text der am besten passenden Untertitelspur herunterladen.

  • full: Text aller Untertitelspuren herunterladen (höherer Aufwand).

  • minimal: Metadaten der Untertitel und Abruf des Untertiteltextes überspringen.

subtitle_lang kann eine Sprache erzwingen (z.B. en-US); auto verwendet die eingebaute Prioritäts-Fallback. subtitle_max_chars begrenzt die Größe des zurückgegebenen Untertiteltextes, um eine Token-Explosion zu vermeiden.

Der Untertiteltext wird einmal über full_text zurückgegeben; tracks enthalten nur Metadaten (text ist immer leer). Im full-Modus mit mehreren Spuren wird jedes Segment in full_text mit einem [Sprache · Teil]-Label versehen.

Gebündeltes Skill

Das Repository enthält ein einsatzbereites KI-Agenten-Skill in skills/bili-content-analysis/:

skills/bili-content-analysis/
├── SKILL.md                        # Workflow & output contract
└── references/
    └── analysis-style.md           # Detailed writing style rules

Was es tut

Führt kompatible KI-Agenten (Gemini, Claude usw.) durch einen strukturierten 6-Schritte-Workflow zur tiefgehenden Bilibili-Inhaltsanalyse:

  1. Ziel und Umfang klären (uid / bvid / Suchbegriff).

  2. Belege sammeln – zuerst leichte Listen, detaillierte Informationen nur für besonders relevante Elemente.

  3. Quellenstruktur rekonstruieren, bevor interpretiert wird (Zeitstrahl, Kapitel, Sprecher).

  4. Analysieren – Fakten, logische Kette, Annahmen, Themen und Veränderungen.

  5. Ankerpunkte beibehalten – uid, bvid, article_id, Zeitstempel, wichtige Quellenausschnitte.

  6. Fehler behandeln – Hindernisse explizit benennen, Spekulationen vermeiden.

Verwendung

Kopieren Sie den Ordner bili-content-analysis in das Skill-Verzeichnis Ihres Projekts:

<project>/.agent/skills/bili-content-analysis/

Der Agent aktiviert die Fähigkeit automatisch, wenn Benutzeranfragen Bilibili-Erstellerverfolgung, Transkriptinterpretation, Zeitstrahlrekonstruktion oder Inhaltsanalyse betreffen.

Entwicklung

# Setup
git clone https://github.com/222wcnm/BiliStalkerMCP.git
cd BiliStalkerMCP
uv sync --dev

# Test
uv run pytest -q

# Integration & Performance (Requires Auth)
uv run python scripts/integration_suite.py -u <UID>
uv run python scripts/perf_baseline.py -u <UID> --tools dynamics -n 3

Veröffentlichung (Betreuer)

Anmeldedaten: Das Veröffentlichungsskript verwendet UV_PUBLISH_TOKEN, falls gesetzt; andernfalls liest es das entsprechende [pypi]- oder [testpypi]-Token aus $HOME\.pypirc.
Twine wird nur zur Paketmetadatenvalidierung temporär über uvx aufgerufen und ist keine Projektabhängigkeit.

# Build + test + package metadata validation (no upload)
.\scripts\pypi_release.ps1

# Upload to TestPyPI
.\scripts\pypi_release.ps1 -TestPyPI -Upload

# Upload to PyPI
.\scripts\pypi_release.ps1 -Upload

Docker

Läuft über stdio-Transport. Keine Ports werden freigegeben.

docker build -t bilistalker-mcp .
docker run -e SESSDATA=... bilistalker-mcp

Fehlerbehebung

  • 412 Precondition Failed: Bilibili-Anti-Crawling-System ausgelöst. SESSDATA aktualisieren oder BUVID3 bereitstellen.

  • Cloud-IPs: Sehr anfällig für Blockierungen; lokale Ausführung wird empfohlen.

Lizenz

MIT

Haftungsausschluss: Nur für persönliche Forschung und Lernzwecke. Massenprofilierung, Belästigung oder kommerzielle Überwachung ist untersagt.


Dieses Projekt wird mit Hilfe von KI erstellt und gewartet.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
6wRelease cycle
3Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that enables users to search Bilibili videos, access trending rankings, and retrieve detailed information about videos, content creators, and anime schedules. It allows AI applications to interact directly with Bilibili content via simple API interfaces.
    45
    189
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for crawling social media platforms (e.g., Bilibili) by keywords, video IDs, or creator IDs, with support for MySQL, JSON, and CSV storage.
    39
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Bilibili MCP server enabling video search, comment management, danmaku, user info, dynamics, live streaming analysis, and more via 31 tools.
    31
    32
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/222wcnm/BiliStalkerMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server