Communitygithub.com

Publication de vidéos de lecture d'articles sur Bilibili

Valide et publie des vidéos de lecture d'articles (format paysage puis portrait) sur Bilibili via biliup, avec planification CST, validation en mode dry-run et reçus de téléversement durables.

Qu'est-ce que Publication de vidéos de lecture d'articles sur Bilibili ?

Cet outil permet de téléverser automatiquement des vidéos de lecture d'articles (au format paysage d'abord, puis portrait) sur Bilibili à l'aide de l'outil `biliup`. Il gère la validation des fichiers, le téléversement en série, le suivi des reçus de téléversement, et la planification horaire selon le fuseau CST. Il est conçu pour les agents AI (Claude Code, Cursor, Codex) qui doivent publier du contenu vidéo académique sur Bilibili. Le workflow inclut la vérification des métadonnées (titre, tags, tid, copyright, couverture), l'ordre déterministe des vidéos (paysage avant portrait), une politique de couverture spécifique aux laboratoires (poster ignoré, première diapositive utilisée par défaut), et la possibilité d'éditer la couverture après téléversement. Un mode dry-run (`--dry-run`) permet de valider la configuration sans réel téléversement, et un mode série (`--series`) prend en charge plusieurs vidéos numérotées. La connexion, le diagnostic et la gestion des cookies sont intégrés.

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

Demander à votre IA préférée

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

Documentation

Téléverseur d'articles vers Bilibili

Utilisez le CLI final empaqueté :

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

(Le script dépend de biliup, psutil, et requests — voir pyproject.toml dans le répertoire de la compétence ; exécutez uv sync là-bas ou installez-les dans l'interpréteur actif si les imports échouent.)

Supprimez --dry-run seulement après avoir vérifié les parties résolues, les métadonnées, la couverture et l'heure de publication.

Disposition requise en mode normal

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

Les deux MP4 doivent être non vides. Le CLI envoie de manière déterministe chaque vidéo paysage avant chaque vidéo portrait : P1 paysage, puis P2 portrait. Un fichier paysage, portrait, couverture ou métadonnées manquant ou vide échoue.

Politique de couverture (ARTEFACT poster obligatoire ; téléversement de la première diapositive)

Les répertoires 实验室调研 (课题组) — détectés par un fichier poster_data.json à la racine de l'article — nécessitent TOUJOURS l'artefact POSTER de couverture vidéo : <PAPER_DIR>/poster/poster.png doit exister (son absence échoue avec un indice de génération). Cependant, la COUVERTURE TÉLÉVERSÉE par défaut est la PREMIÈRE DIAPOSITIVE du diaporama : un cover_path explicite dans video_meta.json prime, sinon video/cover.png (généré par le pipeline vidéo à partir de la page de titre) est utilisé — le poster n'est PAS copié par-dessus la couverture de la première diapositive. TOUS les AUTRES articles (论文分享 etc.) conservent le contrat de couverture simple — cover_path explicite → video/cover.png — et un poster/poster.png dans le répertoire est IGNORÉ. Le mode série (--series) ignore entièrement la vérification du poster/laboratoire.

Si une vidéo de laboratoire a déjà été téléversée avec la mauvaise couverture, corrigez-la SANS re-téléversement : upload.py --edit --vid <BV> --cover <video/cover.png> — le point de terminaison de la couverture membre téléverse l'image et l'édition soumet l'URL textuellement (supprimer le schéma fait échouer l'édition avec 封面必须由页面进行上传,不支持外部链接). La vidéo reste en révision brièvement après le téléversement ; l'édition réussit une fois déverrouillée (état 0), sinon interrogez et réessayez.

Générez l'artefact portrait avec le workflow managé conservé dans ~/.omp/agent/managed-skills/rednote-video-uploader/scripts/portrait_video.py (ajustez au répertoire managed-skills de votre agent).

Contrat des métadonnées

video/video_meta.json doit utiliser la clé tag singulière de Bilibili :

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

La validation nécessite un title non vide ; une liste non vide de chaînes non vides dans tag ; un tid entier positif ; copyright exactement 1 ou 2 ; et une source non vide lorsque copyright est 2. cover_path doit résoudre en un fichier non vide. Ne renommez pas tag en tags ; tags appartient aux métadonnées Rednote.

Limite du dry-run

--dry-run effectue la résolution des entrées, l'ordre P1/P2, le patch des métadonnées, la planification de la publication, la validation et la construction complète des commandes. Il se termine avant qu'aucun sous-processus biliup ne démarre et n'écrit jamais de reçu de téléversement.

Planification CST

  • 00:00–22:59 publie immédiatement sauf si les métadonnées ou --dtime fournissent une heure différée.
  • 23:00–23:59 planifie à 07:00 le jour suivant quand aucune heure différée n'est déjà fournie.
  • Un --dtime explicite prime toujours ; il accepte YYYY-MM-DD HH:MM en CST ou un timestamp Unix de dix chiffres.

Reçu de téléversement

Un téléversement réel réussit seulement lorsque biliup se termine avec un code zéro et retourne un identifiant BV. Le CLI écrit video/upload_result.json exactement avec les champs status, bv, url et uploaded_at au format ISO-8601. Une sortie zéro sans identifiant BV échoue et n'écrit aucun reçu.

Mode série

Placez les paysages P1–PN ordonnés, cover.png et video_meta.json dans <PAPER_DIR>/bilibili-series/video/, puis ajoutez --series. Le mode série préserve l'ordre des noms de fichiers et n'exige intentionnellement pas de partie portrait.

Connexion et diagnostics

Utilisez le même CLI avec --login, --diagnose, ou --kill-all. Les cookies se trouvent dans %USERPROFILE%/.bilibili/cookies.json. Les diagnostics utilisent l'inspection des processus/fichiers ouverts psutil, ne dépendent pas de WMIC ou fsutil, et tolèrent un LOCALAPPDATA non défini.

Compétences associées

  • 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 associés