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
--dtimefournissent 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
--dtimeexplicite prime toujours ; il accepteYYYY-MM-DD HH:MMen 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