¿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
--dtimeproporcionen una hora retrasada. - 23:00–23:59 programa para las 07:00 del día siguiente cuando no se haya proporcionado una hora retrasada.
--dtimeexplícito siempre tiene prioridad; aceptaYYYY-MM-DD HH:MMen 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