Communitygithub.com

entrence/video-site-ops

Suite completa de operaciones para Bilibili: inicio de sesión por código QR con cookies, descarga de videos (yt-dlp/API), publicación de comentarios y robot de comentarios automáticos, envío de mensajes privados (navegador), informe diario de datos populares en PPT, extracción de danmaku y búsqueda WBI de videos/usuarios. Carga este skill para cualquier tarea relacionada con Bilibili.

¿Qué es video-site-ops?

Este skill agrupa seis skills originales de Bilibili en una única herramienta integral de operaciones. Proporciona funcionalidades como inicio de sesión por código QR con cookies, descarga de videos (usando yt-dlp o API directa), publicación/respuesta/eliminación de comentarios, un robot de comentarios automáticos, envío de mensajes privados (limitado a navegador), generación de informes diarios PPT con datos populares, extracción de danmaku y búsqueda WBI de videos y usuarios. Es útil para cualquier desarrollador o agente de IA que necesite interactuar con Bilibili de forma masiva o automatizada, evitando bloqueos comunes (412, -509, 12014) y simplificando flujos complejos con scripts predefinidos. Soporta múltiples plataformas de agente (Claude Code, Cursor, Codex) y se activa siempre con `skill_view(name='bilibili')`. Todos los flujos requieren cookies y manejan errores típicos con recomendaciones claras.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Skill de Operaciones de Bilibili (Paquete Completo)

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

Regla de Oro Skill-First

Cualquier tarea de Bilibili (descarga, comentar, enviar mensajes, llamar API, informe diario, danmaku) el primer paso siempre es skill_view(name='bilibili'). No uses yt-dlp directamente, no escribas scripts que llamen a la API manualmente, no entres al navegador sin guía. GK ha corregido repetidamente en múltiples sesiones el problema de "no usar el skill".

Todas las solicitudes a Bilibili (descargas, llamadas API, comentarios) deben incluir Cookie, incluso para resoluciones normales; sin ellas obtendrás un error 412.

Tabla de Funciones

TareaDocumentación DetalladaScript/Comando Rápido
Obtener/Actualizar Cookie (inicio de sesión por código QR)references/cookie-login.mdFlujo integrado en documentos (incluye código Python completo)
Búsqueda de videos/usuarios (WBI)references/cookie-login.md`scripts/bili_wbi_search.py "<término>" [video
Descarga de videosreferences/video-download.md + sección yt-dlp de references/cookie-login.mdscripts/cookie_to_netscape.py → yt-dlp
Enviar/Responder/Eliminar comentariosreferences/comment-api.mdscripts/post_reply.sh <BVID> <mensaje> [root_rpid] [parent_rpid]
Robot de comentarios automáticosreferences/auto-comment.mdscripts/bili_auto_comment.py --count 30 --interval 600
Enviar mensajes privadosreferences/message-browser.mdFlujo de navegador, ver documentación (api.vc está bloqueado, no se puede usar API pura)
Informe diario PPT de tendenciasreferences/daily-report.mdbash ~/.hermes/skills/bilibili/scripts/run_daily.sh
Verificación completa del skill ("probar si el skill funciona")references/verification.mdSeguir las 10 pruebas del documento, mínimo impacto lateral
Extracción de danmakureferences/danmaku-protobuf.mdVer documentación (análisis protobuf)
API de flujo popular / rankingreferences/APIv2.popular.md, references/APIv2.ranking.mdInterfaces públicas sin necesidad de inicio de sesión
Campos de API de comentarios / códigos de errorreferences/comment-api.md (apéndice con referencia de API reply original)—

Base Compartida (Lectura Obligatoria para Todas las Funciones)

Cookie

  • Archivo: ~/.bilibili-cookie, formato de una línea SESSDATA=xxx; bili_jct=xxx; DedeUserID=xxx
  • SESSDATA=credencial de inicio de sesión (obligatorio en todas las interfaces que requieren inicio de sesión); bili_jct=token csrf (obligatorio en POST con csrf=xxx); DedeUserID=mid del usuario
  • Válido aproximadamente 30 días. Cualquier interfaz que devuelva -101 o nav muestre no conectado → Cookie caducada, volver a escanear código QR según references/cookie-login.md. Informa activamente a GK "Cookie caducada, necesita volver a escanear código QR", no esperes a que lo descubra
  • Antes de operaciones que requieran Cookie, primero verifica rápidamente con la interfaz nav
  • yt-dlp con --cookies solo acepta formato Netscape: primero ejecuta python3 ~/.hermes/skills/bilibili/scripts/cookie_to_netscape.py (salida /tmp/bili_netscape_cookie.txt)
  • La cuenta actual conectada se determina por la interfaz nav (x/web-interface/nav) real, no asumas un UID fijo

Convenciones de Solicitudes

  • UA uniforme: cadena completa de Chrome: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 (UA corta será bloqueada)
  • POST debe incluir Referer: https://www.bilibili.com/video/{BVID} + Origin: https://www.bilibili.com + csrf
  • La interfaz de búsqueda debe usar la ruta /x/web-interface/wbi/search/type (rutas no wbi devuelven página HTML de error)

Tabla de Fiabilidad de API (Medido con IP de Servidor Real)

InterfazEstado
view (BVID→AID/CID)Estable
wbi/search/type (video/bili_user, sin firma wbi)Disponible
reply/main / reply/add / reply/delDisponible
popular / ranking/v2Disponible, público sin inicio de sesión
space/arc/search-799 limitación de tráfico, no usar
search/type (sin ruta wbi)Bloqueado, devuelve página HTML de error
api.vc.bilibili.com (mensajes privados)Completamente bloqueado, solo posible a través de la interfaz del navegador

Códigos de Error Clave

CódigoSignificadoAcción
-101No conectado / Cookie caducadaVolver a escanear código QR
-509Demasiadas solicitudesEsperar 5-10 segundos y reintentar
-799IP del servidor limitadaCambiar ruta de interfaz, reintento no válido
-635Video no permite comentariosSaltar
-637Palabra sensibleSaltar / modificar texto
12014Límite diario de comentarios alcanzadoDetener el script y esperar 24 horas (no pocas horas), no reiniciar a intervalos cortos
412Descarga sin Cookie / bloqueoIncluir Cookie Netscape o usar método API
12061Creador cerró la sección de comentariosSaltar

Esencia de Cada Función

Descarga de Videos

Priorizar yt-dlp + Cookie Netscape (puede desbloquear 1080P). Si yt-dlp da 412, cambiar a método API: playurl con fnval=0&platform=html5 para obtener enlace directo mp4 (dash stream sin inicio de sesión da 403). La descarga CDN debe incluir Referer: https://www.bilibili.com. qn: 16=360p 32=480p 64=720p 80=1080p.

Comentarios

oid es avid, no bvid, convertir primero con interfaz view. Comentario de primer nivel root=0 parent=0; responder incluir root+parent. Encontrar el video más reciente de un usuario: búsqueda wbi search_type=video&order=pubdate obtener el primero. -509 esperar 5-10 segundos.

Robot de Comentarios Automáticos

--count 30 --interval 600 (100/300 provocará 12014). Antes de iniciar, ps aux | grep bili_auto_comment para ver procesos residuales. Cada comentario con retardo aleatorio de 1-3 segundos. Para segundo plano persistente usar terminal(background=true) o crontab, no nohup/disown. Detener inmediatamente si hay 12014 masivo.

Mensajes Privados

api.vc no funciona ni con curl desde IP del servidor ni con XHR desde la página. Única solución: inyectar Cookie en navegador → página de espacio hacer clic en "Enviar mensaje" → escribir en .brt-editor (debe despachar evento input) → hacer clic en [class*="_MessageSendBox__SendBtn_"] con coincidencia difusa. Usuarios no seguidos solo pueden recibir 1 mensaje (no es error).

Informe Diario

bash /home/ubuntu/bilibili-daily/run_daily.sh un solo comando para todo el flujo, sin Cookie, unos 15 segundos. El script original está en scripts/ de este skill, la salida de datos y PPT en /home/ubuntu/bilibili-daily/. Errores comunes de pptxgenjs: color sin #, objeto option debe crearse cada vez.

Errores Comunes Globales

  1. Siempre incluir Cookie en solicitudes a Bilibili, de lo contrario 412
  2. El código QR debe guardarse como archivo PNG para que GK lo escanee (/home/ubuntu/Downloads/bilibili_qrcode.png), nunca imprimir código QR en ASCII
  3. Los campos de búsqueda/título pueden contener etiquetas de resaltado <em class="keyword">, limpiar con re.sub(r'<[^>]+>', '', title)
  4. En caso de 412/403, agregar campos de Cookie como buvid3/buvid4 para manejar bloqueos
  5. Al paginar popular/ranking, esperar al menos 1 segundo entre páginas para evitar -799
  6. Ver errores comunes por función en los documentos de referencia correspondientes

Skills relacionados