논문을 Bilibili로
이는 유일한 전체 파이프라인 오케스트레이션 아이덴티티입니다. 다음의 프로모트된 패키지들과 유지 관리되는 Rednote 워크플로우를 조합합니다:
paper-to-beamer: 논문 및 MinerU 콘텐츠를 컴파일된 16:10 SUSTech Beamer 슬라이드로 변환합니다.paper-video-cover: 참고용 선택적 포스터 생성; 일반 동영상 표지는 생성된 표지 아티팩트를 그대로 사용합니다.paper-slides-to-video: 실제 페이지 렌더링, 내레이션 추출, TTS, 가로 모드 조립, 표지 및 Bilibili 메타데이터를 처리합니다.rednote-video-uploader(관리됨): 필수 세로 동영상 생성을 수행합니다.paper-bilibili-uploader: 장애 시 종료 검증, 드라이 런, 업로드 및 영수증 저장을 수행합니다.
출력물은 $PP_ROOT/论文分享/<VENUE YEAR - SHORT>/ 디렉토리 아래 md_output/, slides-beamer/, video/에 저장됩니다.
모드 및 단계
slides: 논문에서 컴파일된 슬라이드로
항목에 비어 있지 않은 arxiv_id가 있거나(또는 사용자가 arXiv 링크를 제공한 경우) 디스크에 소스가 존재하지 않으면(루트 PDF가 없고 paper_src/에 .tex 파일이 없으면) 먼저 TeX 소스를 다운로드합니다:
python \
"<SKILLS_DIR>/paper-download-arxiv-paper-source/scripts/download_source.py" \
"<arxiv_id>" --output "<paper_dir>"
다운로더는 <paper_dir>/arXiv-<id>.tar.gz + <paper_dir>/paper_src/를 생성합니다. 그런 다음 skill://paper-to-beamer의 1단계부터 진행합니다(1단계의 이동 단계는 이미 논문 디렉토리가 존재하므로 건너뜁니다). PDF_ONLY 출력의 경우 PDF를 논문 디렉토리 루트에 복사합니다(pdf_downloaded 게이트는 루트 PDF를 요구합니다).
콘텐츠 작성은 skill://paper-to-beamer를 따릅니다. 계속 진행하기 전에 필요한 게이트:
slides-beamer/main.tex에는 논문 정보, 동기, 방법, 실험, 한계점, 핵심 요약, 참고 문헌, Q&A 및 3~8개의 유용한 부록 슬라이드에 이르는 논문별 내러티브가 포함되어야 합니다.- 문서는 SUSTech 16:10 템플릿(
aspectratio=1610)을 사용해야 합니다. slides-beamer/main.pdf는 비어 있지 않으며, 정의되지 않은 컨트롤이나 심각한 오버플로가 없어야 합니다.
배치 CLI는 이 에이전트가 작성한 이 단계에 대해 디스크 증거만 스캔하고 유지합니다. 슬라이드를 조작하지 않습니다.
내레이션 작성 게이트
컴파일된 TeX을 video/main_with_narration.tex로 복사하고 물리적 PDF 페이지당 정확히 하나의 비어 있지 않은 % NARRATION: 항목을 추가합니다. 내레이션은 정제된 간체 중국어로 작성되며 영어 기술 용어는 인라인으로 유지됩니다. 기술적 논지를 확장하며 불릿 포인트를 읽지 않고, "본 페이지" 또는 "그림과 같이" 같은 시각적 참조를 피하며, 부록 페이지도 포함합니다.
slides_done에서 narrations_done으로의 전환은 컴파일된 슬라이드와 비어 있지 않은 주석이 달린 TeX이 모두 존재할 때만 발생합니다.
video: 내레이션이 포함된 가로 및 세로 아티팩트
python <SKILLS_DIR>/paper-to-bilibili/scripts/batch.py video "<PAPERS_JSON>"
narrations_done 상태인 각 논문에 대해 오케스트레이터는 형제 paper-slides-to-video의 full 명령을 호출합니다. 하위 작업이 성공한 후 다시 스캔하고 video_done을 원자적으로 유지합니다. 그런 다음 관리되는 rednote-video-uploader/scripts/portrait_video.py를 호출하고, 다시 스캔하여 표지 및 Bilibili 메타데이터를 검증한 후 upload_ready를 원자적으로 유지합니다. 하위 작업 실패는 전파되며 상태를 절대 진행시키지 않습니다.
품질 게이트는 정확한 프레임/텍스트/MP3 카디널리티, 모든 물리적 페이지에 대해 비어 있지 않은 내레이션 및 오디오, 비어 있지 않은 가로 MP4, 비어 있지 않은 세로 MP4, 비어 있지 않은 표지, 스키마에 유효한 Bilibili 메타데이터입니다.
bilibili: 검증 또는 업로드
항상 먼저 드라이 런을 검토하십시오:
python <SKILLS_DIR>/paper-to-bilibili/scripts/batch.py bilibili "<PAPERS_JSON>" --dry-run
드라이 런은 프로모트된 업로더에 위임하며 upload_ready 상태를 변경하지 않아야 합니다. 검토 후에만 --dry-run을 제거하십시오. 기본 업로드 타임아웃은 없습니다. 운영자는 --upload-timeout SECONDS를 선택적으로 사용할 수 있습니다.
일반 업로드는 P1 가로, 그다음 P2 세로 순서로 진행됩니다. 메타데이터는 단일 tag, 양수 tid, 유효한 copyright/source 필드, 구조화된 설명, 비어 있지 않은 표지를 사용합니다. 논문은 video/upload_result.json이 유효하고 일치하는 BV URL 및 ISO-8601 타임스탬프를 포함할 때만 uploaded가 됩니다.
상태 계약
batch.py는 다음 정확한 우선순위로 디스크를 다시 스캔합니다:
- 유효한
upload_result.json→uploaded - 비어 있지 않은 가로 + 비어 있지 않은 세로 + 표지 + 스키마 유효한
video_meta.json→upload_ready - 비어 있지 않은 가로 →
video_done - 컴파일된 슬라이드 + 비어 있지 않은 주석 TeX →
narrations_done - 컴파일된 슬라이드 →
slides_done - MinerU Markdown →
mineru_done - 소스 PDF 또는 추출된 TeX 소스(paper_src/에 .tex 포함) →
pdf_downloaded - 그 외 →
pending
모든 성공적인 하위 명령 후에 다시 스캔하고 입력 JSON을 원자적으로 교체합니다. 상태 변경은 STATE <paper>: <old> -> <new>로 출력됩니다. 드라이 런은 검증하고 위임하지만 새 상태를 만들지 않습니다. 실패한 하위 명령은 마지막으로 확정된 상태를 유지하고 해당 종료 코드를 전파합니다.
배치 입력
papers.json은 비어 있지 않은 절대 dir_path를 가진 객체들의 배열입니다. dir_name, arxiv_id, pdf_path 및 설명 필드가 함께 포함될 수 있습니다. 오케스트레이터는 각 객체에 _status를 기록합니다.
사전 요구 사항
- Python 3.10+ (
python이 PATH에 없으면py -3사용). - 종속성은
pyproject.toml에 선언되어 있습니다(현재 런타임에는 없음); 종속성을 추가할 때uv sync --project <SKILLS_DIR>/paper-to-bilibili로 프로젝트를 설치하십시오. <SKILLS_DIR>은 설치된 스킬 폴더가 포함된 디렉토리입니다(예:~/.claude/skills,~/.codex/skills,.omp/skills). 형제 스킬(paper-slides-to-video,paper-bilibili-uploader,paper-download-arxiv-paper-source)은 이 스킬 옆에 설치되어야 하므로 형제 해석이 프로젝트 로컬 및 결정론적으로 유지됩니다.PAPER_PYTHON(선택 사항): 형제 CLI를 실행하는 데 사용되는 인터프리터; 기본값은batch.py를 실행하는 인터프리터입니다.
관련 스킬
- skill://paper-bilibili-uploader
- skill://paper-download-arxiv-paper-source
- skill://paper-slides-to-video
- skill://paper-to-beamer
- skill://paper-video-cover
- skill://rednote-video-uploader