Communitygithub.com

B站运营全套工具(Bilibili Ops Suite)

B站运营全家桶:Cookie二维码登录、视频下载(yt-dlp/API)、评论发布与自动评论机器人、私信发送(浏览器)、热门数据日报PPT、弹幕爬取、视频/用户WBI搜索。任何B站相关任务请先加载本skill。

Qu'est-ce que B站运营全套工具(Bilibili Ops Suite) ?

Ce skill regroupe six compétences originales de bilbil pour former une suite complète d'outils d'exploitation Bilibili. Il gère l'authentification par Cookie via code QR, le téléchargement de vidéos (yt-dlp ou API native), la publication et la modération automatisée de commentaires, l'envoi de messages privés (via navigateur pour contourner les restrictions), la génération de rapports quotidiens de tendances au format PPT, l'extraction de danmaku, et la recherche de vidéos/utilisateurs via l'API WBI. Conçu pour les plateformes d'agents IA comme Claude Code, Cursor, Codex ou Homebrew Hermes, il applique une règle "Skill-First" : toute tâche Bilibili doit d'abord appeler `skill_view(name='bilibili')`. Le skill intègre une gestion centralisée des Cookies (stockés dans `~/.bilibili-cookie`, format brut SESSDATA, nécessitant une conversion Netscape pour yt-dlp), une table de routage des fonctionnalités avec scripts associés, et une documentation des codes d'erreur critiques (-101 pour Cookie invalide, -509 pour throttling, 12014 pour limite quotidienne de commentaires, etc.). Il couvre également les pièges globaux (toujours inclure Cookie, ne jamais imprimer de QR code ASCII, nettoyer les balises `<em>` dans les résultats de recherche) et propose des références détaillées pour chaque sous-fonction.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add entrence/video-site-ops

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Skill B站运营(Suite complète)

Fusion de 6 skills originaux : bilibili-cookie / bilibili-comment / bilibili-auto-comment / bilibili-message / bilibili-daily-report / bilibili-video-download.

Règle d'or Skill-First

Pour toute tâche Bilibili (téléchargement, commentaire, message privé, appel API, rapport quotidien, danmaku), la première étape est toujours skill_view(name='bilibili'). Ne jamais lancer yt-dlp nu, ne jamais écrire de script qui appelle directement l'API en dur, ne jamais forcer l'utilisation du navigateur sans passer par le skill. GK a corrigé ce problème à plusieurs reprises dans différentes sessions.

Toutes les requêtes Bilibili (téléchargement, appel API, commentaire) DOIVENT inclure un Cookie, même pour une résolution standard. Sans Cookie, vous obtiendrez une erreur 412.

Table de routage des fonctionnalités

TâcheDocumentation détailléeScript / Commande rapide
Obtention / rafraîchissement du Cookie (connexion par QR code)references/cookie-login.mdDocumentation intégrée au flux (avec code Python complet)
Recherche vidéo / utilisateur (WBI)references/cookie-login.md`scripts/bili_wbi_search.py "<mot-clé>" [video
Téléchargement de vidéoreferences/video-download.md + section yt-dlp de references/cookie-login.mdscripts/cookie_to_netscape.py → yt-dlp
Publier / répondre / supprimer un commentairereferences/comment-api.mdscripts/post_reply.sh <BVID> <message> [root_rpid] [parent_rpid]
Robot de commentaire automatiquereferences/auto-comment.mdscripts/bili_auto_comment.py --count 30 --interval 600
Envoyer un message privéreferences/message-browser.mdProcédure navigateur, voir documentation (api.vc est verrouillé par le système anti-fraude)
Rapport quotidien PPT des tendancesreferences/daily-report.mdbash ~/.hermes/skills/bilibili/scripts/run_daily.sh
Validation complète des fonctionnalités ("tester si le skill fonctionne")references/verification.mdSuivre la checklist de 10 points dans la documentation, effets secondaires minimaux
Extraction de danmakureferences/danmaku-protobuf.mdVoir documentation (analyse protobuf)
API tendances / classementreferences/APIv2.popular.md, references/APIv2.ranking.mdInterfaces publiques, connexion non requise
Codes d'erreur / champs de l'API commentairereferences/comment-api.md (annexe avec référence de l'ancienne API reply)—

Base commune (À lire absolument pour toutes les fonctionnalités)

Cookie

  • Fichier : ~/.bilibili-cookie, format sur une seule ligne : SESSDATA=xxx; bili_jct=xxx; DedeUserID=xxx
  • SESSDATA = jeton de connexion (obligatoire pour toute interface nécessitant une connexion) ; bili_jct = token CSRF (obligatoire pour les requêtes POST avec csrf=xxx) ; DedeUserID = mid de l'utilisateur
  • Durée de validité : environ 30 jours. Toute interface retournant -101 ou indiquant "non connecté" via nav → Cookie expiré, suivre references/cookie-login.md pour un nouveau scan QR. Informez proactivement GK "Cookie expiré, besoin d'un nouveau scan QR", ne le laissez pas le découvrir lui-même
  • Avant toute opération nécessitant un Cookie, appelez d'abord l'interface nav pour une vérification rapide
  • yt-dlp avec --cookies n'accepte que le format Netscape : exécutez d'abord python3 ~/.hermes/skills/bilibili/scripts/cookie_to_netscape.py (sortie : /tmp/bili_netscape_cookie.txt)
  • Le compte actuellement connecté est déterminé par l'interface nav (x/web-interface/nav) en temps réel, ne pas coder en dur un UID spécifique

Conventions de requête

  • User-Agent uniforme : utilisez la chaîne Chrome complète : Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 (un UA trop court déclenche des mesures anti-fraude)
  • POST doit impérativement inclure Referer: https://www.bilibili.com/video/{BVID} + Origin: https://www.bilibili.com + csrf
  • L'interface de recherche doit utiliser le chemin /x/web-interface/wbi/search/type (toute route non-wbi renvoie une page d'erreur HTML)

Tableau de fiabilité des API (testé avec l'IP du serveur)

InterfaceStatut
view (BVID→AID/CID)Stable
wbi/search/type (video/bili_user, sans signature wbi)Fonctionnel
reply/main / reply/add / reply/delFonctionnel
popular / ranking/v2Fonctionnel, public, connexion non requise
space/arc/search-799 rate limit, ne pas utiliser
search/type (sans chemin wbi)Anti-fraude, renvoie page d'erreur HTML
api.vc.bilibili.com (message privé)Totalement verrouillé, uniquement via l'interface navigateur

Codes d'erreur critiques

CodeSignificationAction
-101Non connecté / Cookie invalideRescanner le QR code
-509Requêtes trop fréquentesAttendre 5-10 secondes puis réessayer
-799IP du serveur limitéeChanger de chemin d'interface, réessais inutiles
-635Commentaires interdits sur la vidéoPasser
-637Mot sensiblePasser / modifier le texte
12014Limite quotidienne de commentaires atteinteArrêter le script et attendre 24 heures (pas quelques heures), ne pas redémarrer à intervalles courts
412Téléchargement sans Cookie / anti-fraudeUtiliser un Cookie au format Netscape ou la méthode API
12061L'UP a fermé la section commentairesPasser

Essentiel par fonctionnalité

Téléchargement vidéo

Priorité à yt-dlp + Cookie Netscape (permet de débloquer 1080P). En cas d'erreur 412 avec yt-dlp, basculer vers la méthode API : playurl avec fnval=0&platform=html5 pour obtenir un lien direct mp4 via durl (les flux dash séparés retournent 403 sans connexion), le téléchargement CDN doit inclure Referer: https://www.bilibili.com. qn : 16=360p 32=480p 64=720p 80=1080p.

Commentaires

oid est l'avid et non le bvid, il faut d'abord le convertir via l'interface view. Commentaire racine : root=0 parent=0 ; réponse : inclure root+parent. Pour trouver la dernière vidéo d'un utilisateur : recherche wbi search_type=video&order=pubdate et prendre le premier résultat. En cas de -509, attendre 5-10 secondes.

Robot de commentaire automatique

--count 30 --interval 600 (100/300 provoquent 12014). Avant de lancer, vérifier les processus résiduels avec ps aux | grep bili_auto_comment. Chaque commentaire : délai aléatoire de 1 à 3 secondes. Pour un arrière-plan persistant, utiliser terminal(background=true) ou crontab, pas nohup/disown. Arrêt immédiat en cas de 12014 massif.

Messages privés

L'api.vc n'est accessible ni via curl depuis l'IP du serveur ni via XHR depuis la page. Seule solution : navigateur → injecter le Cookie → page espace → cliquer sur "Envoyer un message" → saisir dans .brt-editor (doit dispatcher un événement input) → cliquer sur le bouton avec sélecteur flou [class*="_MessageSendBox__SendBtn_"]. Pour les utilisateurs non suivis, limitation à 1 message (pas une erreur).

Rapport quotidien

bash /home/ubuntu/bilibili-daily/run_daily.sh : une commande pour l'ensemble du flux, pas besoin de Cookie, environ 15 secondes. Le script maître se trouve dans scripts/ de ce skill, les données et la sortie PPT dans /home/ubuntu/bilibili-daily/. Piège de pptxgenjs : la couleur ne prend pas le #, l'objet option doit être recréé à chaque fois.

Pièges globaux

  1. Toujours inclure un Cookie dans les requêtes Bilibili, sinon erreur 412
  2. Le QR code doit être enregistré en fichier PNG pour que GK le scanne (/home/ubuntu/Downloads/bilibili_qrcode.png), ne jamais imprimer un QR code ASCII
  3. Les champs de recherche/titre contiennent des balises de surbrillance <em class="keyword">, nettoyer avec re.sub(r'<[^>]+>', '', title)
  4. En cas de 412/403, ajouter les cookies buvid3/buvid4 pour contrer l'anti-fraude
  5. Pour popular/ranking, espacement d'au moins 1 seconde entre chaque page pour éviter -799
  6. Pour les pièges spécifiques à chaque fonction, voir les documents references correspondants

Skills associés