Paper Bilibili Uploader
최종 패키징된 CLI를 사용하세요:
python <SKILLS_DIR>/paper-bilibili-uploader/scripts/upload.py "<PAPER_DIR>" --dry-run
(스크립트는 biliup, psutil, requests에 의존합니다. — 스킬 디렉토리의 pyproject.toml 참조; 해당 디렉토리에서 uv sync를 실행하거나 import 오류 발생 시 활성 인터프리터에 설치하십시오.)
해결된 파트, 메타데이터, 커버, 게시 시간을 검토한 후에만 --dry-run을 제거하십시오.
필수 일반 모드 레이아웃
<PAPER_DIR>/video/
*_narrated.mp4
*_portrait_narrated.mp4
cover.png
video_meta.json
두 MP4 파일은 모두 비어 있지 않아야 합니다. CLI는 결정론적으로 모든 가로 비디오를 모든 세로 비디오보다 먼저 전송합니다: P1 가로, 그 다음 P2 세로. 가로, 세로, 커버 또는 메타데이터 파일이 없거나 비어 있으면 실패로 종료됩니다.
커버 정책 (포스터 ARTIFACT 필수; 첫 번째 슬라이드 커버 업로드)
실험실 조사 (课题组) 디렉토리 — 논문 루트에 poster_data.json이 있는 경우 감지됨
— 여전히 논문-비디오-커버 POSTER 아티팩트가 필요합니다:
<PAPER_DIR>/poster/poster.png가 존재해야 합니다 (없으면 생성 힌트와 함께 업로드가 실패로 종료됩니다). 그러나 업로드 커버는 기본적으로 데크의 첫 번째 슬라이드로 설정됩니다: video_meta.json에 명시적인 cover_path가 있으면 그것이 우선하고, 그렇지 않으면 video/cover.png (비디오 파이프라인에서 제목 페이지로 렌더링됨)가 사용됩니다 — 포스터는 첫 번째 슬라이드 커버로 복사되지 않습니다. 다른 모든 논문 (论文分享 등)은 일반 커버 계약을 유지합니다 — 명시적 cover_path → video/cover.png — 디렉토리의 poster/poster.png는 무시됩니다. 시리즈 모드 (--series)는 실험실/포스터 확인을 완전히 건너뜁니다.
실험실 비디오가 잘못된 커버로 이미 업로드된 경우, 재업로드 없이 수정하십시오: upload.py --edit --vid <BV> --cover <video/cover.png> — 멤버 커버 엔드포인트가 이미지를 업로드하고 편집이 URL을 그대로 제출합니다 (스킴을 제거하면 封面必须由页面进行上传,不支持外部链接 오류로 편집이 실패합니다). 비디오는 업로드 후 잠시 검토 상태에 머물며, 잠금 해제되면(상태 0) 편집이 성공하고, 그렇지 않으면 폴링 및 재시도합니다.
세로 아티팩트는 보존된 관리 워크플로우 ~/.omp/agent/managed-skills/rednote-video-uploader/scripts/portrait_video.py로 생성하십시오 (에이전트의 managed-skills 디렉토리에 맞게 조정).
메타데이터 계약
video/video_meta.json은 Bilibili의 단수 tag 키를 사용해야 합니다:
{"title":"【Venue Year】Paper — 中文亮点","tag":["论文分享","机器人"],"tid":231,"copyright":1,"desc":"【论文信息】...","cover_path":"cover.png"}
검증에는 비어 있지 않은 문자열 title; 비어 있지 않은 문자열 목록의 tag; 양의 정수 tid; copyright가 정확히 1 또는 2; 그리고 copyright가 2인 경우 비어 있지 않은 source가 필요합니다. cover_path는 비어 있지 않은 파일로 확인되어야 합니다. tag를 tags로 이름을 바꾸지 마십시오. tags는 Rednote 메타데이터에 속합니다.
Dry-run 경계
--dry-run은 입력 해결, P1/P2 순서 지정, 메타데이터 패치, 게시 일정, 검증 및 완전한 명령 구성을 수행합니다. biliup 하위 프로세스가 시작되기 전에 반환되며 업로드 영수증을 절대 기록하지 않습니다.
CST 스케줄링
- 00:00–22:59는 메타데이터 또는
--dtime이 지연 시간을 제공하지 않는 한 즉시 게시합니다. - 23:00–23:59는 이미 지연 시간이 제공되지 않은 경우 다음날 07:00으로 예약합니다.
- 명시적
--dtime은 항상 우선합니다. CST의YYYY-MM-DD HH:MM또는 10자리 Unix 타임스탬프를 허용합니다.
업로드 영수증
실제 업로드는 biliup이 0으로 종료되고 BV 식별자를 반환할 때만 성공합니다. CLI는 status, bv, url 및 ISO-8601 uploaded_at 필드를 정확히 포함하는 video/upload_result.json을 기록합니다. 0으로 종료되었지만 BV 식별자가 없으면 실패하며 영수증이 기록되지 않습니다.
시리즈 모드
정렬된 P1–PN 가로 비디오, cover.png 및 video_meta.json을 <PAPER_DIR>/bilibili-series/video/에 배치한 후 --series를 추가하십시오. 시리즈 모드는 파일 이름 순서를 유지하며 의도적으로 세로 부분을 필요로 하지 않습니다.
로그인 및 진단
동일한 CLI를 --login, --diagnose 또는 --kill-all과 함께 사용하십시오. 쿠키는 %USERPROFILE%/.bilibili/cookies.json에 저장됩니다. 진단은 psutil 프로세스/열린 파일 검사를 사용하며 WMIC 또는 fsutil에 의존하지 않고 설정되지 않은 LOCALAPPDATA를 허용합니다.
관련 스킬
- 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