Communitygithub.com

Paper Bilibili Uploader

Valida y sube videos narrados de papers a Bilibili usando biliup. Maneja envíos obligatorios de video horizontal primero y vertical después, subidas en serie, programación CST, diagnóstico, validación con dry-run y recibos de subida duraderos. Actívalo con: "upload to bilibili", "bilibili upload", "发布到B站", "上传到B站".

¿Qué es Paper Bilibili Uploader?

Esta habilidad permite a un agente de IA subir videos narrados de papers académicos a la plataforma Bilibili, siguiendo reglas estrictas de formato y metadatos. Utiliza la herramienta `biliup` para la subida real y proporciona un proceso completo de validación y programación. Es útil para investigadores y creadores de contenido que deseen compartir presentaciones de papers en Bilibili, asegurando que los videos se suban en el orden correcto (horizontal primero, luego vertical) y con la portada adecuada (primera diapositiva para papers de laboratorio, sin necesidad de póster). La habilidad soporta múltiples plataformas (CLI) y modos de operación: subida normal, subida en serie (`--series`), dry-run para validación sin subir, diagnóstico, inicio de sesión y edición de portadas sin re-subir el video. Incluye programación automática en horario CST y genera un recibo de subida detallado en un archivo JSON.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Peytontalismanic424/paper-share-skills/tree/HEAD/paper-bilibili-uploader

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Paper Bilibili Uploader?

Utiliza el CLI empaquetado final:

python <SKILLS_DIR>/paper-bilibili-uploader/scripts/upload.py "<PAPER_DIR>" --dry-run

(El script depende de biliup, psutil y requests — consulta pyproject.toml en el directorio de la skill; ejecuta uv sync allí o instálalos en el intérprete activo si las importaciones fallan.)

Elimina --dry-run solo después de revisar las partes resueltas, los metadatos, la portada y la hora de publicación.

Diseño requerido en modo normal

<PAPER_DIR>/video/
  *_narrated.mp4
  *_portrait_narrated.mp4
  cover.png
  video_meta.json

Ambos MP4s deben ser no vacíos. El CLI envía deterministicamente cada video horizontal antes que cada video vertical: P1 horizontal, luego P2 vertical. La ausencia o vacío de un archivo horizontal, vertical, portada o metadatos provoca un cierre con error.

Política de portada (se requiere el ARTEFACTO POSTER; subidas de portada de PRIMERA DIAPOSITIVA)

Los directorios de 实验室调研 (课题组) — detectados por un poster_data.json en la raíz del paper — SÍ REQUIEREN el artefacto POSTER de portada de video: <PAPER_DIR>/poster/poster.png debe existir (su ausencia provoca un cierre con error y una sugerencia de generación). Sin embargo, la PORTADA SUBIDA por defecto es la PRIMERA DIAPOSITIVA de la presentación: cover_path explícito en video_meta.json tiene prioridad; de lo contrario, se usa video/cover.png (generado por el pipeline de video a partir de la página de título) — el póster NO se copia sobre la portada de la primera diapositiva. TODOS LOS DEMÁS papers (论文分享 etc.) mantienen el contrato de portada simple — cover_path explícito → video/cover.png — y un poster/poster.png en el directorio se IGNORA. El modo serie (--series) omite completamente la verificación del laboratorio/póster.

Si un video de laboratorio ya se subió con la portada incorrecta, corrígelo SIN volver a subir: upload.py --edit --vid <BV> --cover <video/cover.png> — el endpoint de portada de miembro sube la imagen y la edición envía la URL literalmente (eliminar el esquema hace que la edición falle con 封面必须由页面进行上传,不支持外部链接). El video permanece en revisión brevemente después de la subida; la edición tiene éxito una vez desbloqueado (estado 0), de lo contrario, reintenta con sondeo.

Genera el artefacto vertical con el flujo de trabajo gestionado retenido en ~/.omp/agent/managed-skills/rednote-video-uploader/scripts/portrait_video.py (ajusta al directorio de habilidades gestionadas de tu agente).

Contrato de metadatos

video/video_meta.json debe usar la clave singular tag de Bilibili:

{"title":"【Sede Año】Paper — 中文亮点","tag":["论文分享","机器人"],"tid":231,"copyright":1,"desc":"【论文信息】...","cover_path":"cover.png"}

La validación requiere un title no vacío; una lista no vacía de cadenas no vacías en tag; un tid entero positivo; copyright exactamente 1 o 2; y un source no vacío cuando copyright es 2. cover_path debe resolverse a un archivo no vacío. No renombres tag a tags; tags pertenece a los metadatos de Rednote.

Límite de dry-run

--dry-run realiza la resolución de entrada, el ordenamiento P1/P2, el parcheo de metadatos, la programación de publicación, la validación y la construcción completa de comandos. Retorna antes de que cualquier subproceso de biliup pueda comenzar y nunca escribe un recibo de subida.

Programación CST

  • 00:00–22:59 publica inmediatamente a menos que los metadatos o --dtime proporcionen una hora retrasada.
  • 23:00–23:59 programa para las 07:00 del día siguiente cuando no se haya proporcionado una hora retrasada.
  • --dtime explícito siempre tiene prioridad; acepta YYYY-MM-DD HH:MM en CST o una marca de tiempo Unix de diez dígitos.

Recibo de subida

Una subida real tiene éxito solo cuando biliup sale con código cero y devuelve un identificador BV. El CLI escribe video/upload_result.json exactamente con los campos status, bv, url e uploaded_at en formato ISO-8601. Una salida con código cero sin un identificador BV falla y no escribe ningún recibo.

Modo serie

Coloca los videos horizontales ordenados P1–PN, cover.png y video_meta.json en <PAPER_DIR>/bilibili-series/video/, luego agrega --series. El modo serie preserva el orden de los nombres de archivo y, intencionalmente, no requiere una parte vertical.

Inicio de sesión y diagnóstico

Usa el mismo CLI con --login, --diagnose o --kill-all. Las cookies residen en %USERPROFILE%/.bilibili/cookies.json. El diagnóstico utiliza inspección de procesos/archivos abiertos con psutil, no depende de WMIC ni fsutil, y tolera una variable LOCALAPPDATA no configurada.

Habilidades relacionadas

  • skill://paper-video-cover
  • skill://rednote-video-uploader
  • skill://awesome-embodied-batch-pipeline
  • skill://bilibili-edit-while-in-review
  • skill://blog-to-bilibili
  • skill://lab-survey-to-bilibili-runbook

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Peytontalismanic424/paper-share-skills

Download the TeX source (e-print tar.gz) of an arXiv paper from an arXiv URL or bare ID, and unpack it into paper_src/. Use FIRST whenever a pipeline input is an arXiv link and the TeX source is preferred over the PDF (paper-to-beamer, paper-to-bilibili, paper-venue-discovery). Invoke with an arXiv URL (abs/pdf/e-print, arxiv.org or export.arxiv.org) or a bare ID like 2509.07996v4.

Peytontalismanic424/paper-share-skills

Convert Beamer PDF slides into a fail-closed narrated MP4 with page-aligned narration, TTS audio, cover, and upload metadata. Trigger on narrated slides, slide video, or paper video requests.

Peytontalismanic424/paper-share-skills

Automated pipeline: paper (PDF or TeX source) → SUSTech Beamer slides (11-section 论文分享 structure) → compiled PDF. When TeX source is available, skip MinerU and extract content directly from LaTeX. Use when the user asks to create Beamer slides from an academic paper, or says "论文分享", "paper to slides", "make beamer from paper". Invoke with an absolute or relative path to a PDF, .tar.gz TeX archive, .tex file, or an arXiv URL/ID (source TeX is downloaded first via skill://paper-download-arxiv-paper-source).

Peytontalismanic424/paper-share-skills

Orchestrate a paper PDF through MinerU, SUSTech Beamer slides, complete Chinese narration, landscape and portrait video, metadata gates, and Bilibili upload. Supports single-paper and batch slides, video, or bilibili phases. Trigger on full paper-to-Bilibili requests, PDF-to-video publication, and batch paper publishing.

Peytontalismanic424/paper-share-skills

Generate a deterministic 16:10 video-cover poster from a paper directory. Extracts paper metadata and figures and atomically produces poster.tex, poster.pdf, and poster.png. Use for paper-video covers, not conference posters.

Peytontalismanic424/paper-share-skills

Convert a PDF (especially academic papers) to clean Markdown using MinerU — preserves reading order, LaTeX equations, tables, and figures, and runs on the GPU. Use when the user asks to convert/extract a PDF to markdown/text. Invoke directly — no need for the user to type the skill name.

Peytontalismanic424/paper-share-skills

Fix for undefined \setsource/\setdomains/\setpresenter/\setvenue commands when compiling SUSTech Beamer slides from the standard template. Copy the extended beamerthemesustech.sty from the sustech-slides-template repository.

Skills relacionados