Communitygithub.com

Paper para Bilibili

Orquestra um PDF de artigo acadêmico através de MinerU, slides SUSTech Beamer, narração completa em chinês, vídeos paisagem e retrato, validação de metadados e upload para Bilibili. Suporta artigos individuais e em lote nas fases de slides, vídeo ou Bilibili.

O que é Paper para Bilibili?

Este skill define o pipeline completo de "artigo acadêmico para Bilibili", integrando ferramentas como MinerU para extração de conteúdo, compilação de slides no modelo SUSTech Beamer (16:10), geração de narração em chinês simplificado, produção de vídeos paisagem (horizontal) e retrato (vertical), validação rigorosa de metadados e upload automatizado para a plataforma Bilibili. Ele é útil para pesquisadores e criadores de conteúdo que desejam transformar artigos acadêmicos em apresentações em vídeo de forma eficiente e reprodutível. Suporta execução em fases separadas (slides, vídeo, Bilibili) ou o pipeline completo, com detecção automática de estado baseada em arquivos no disco. O skill depende de skills irmãos (paper-slides-to-video, paper-bilibili-uploader, paper-download-arxiv-paper-source) e requer Python 3.10+, com instalação via `uv sync` para dependências futuras. A lógica de estado (pending, pdf_downloaded, mineru_done, slides_done, narrations_done, video_done, upload_ready, uploaded) garante que cada etapa só prossiga após a conclusão bem-sucedida da anterior, com suporte a dry-run seguro antes do upload final.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/Peytontalismanic424/paper-share-skills/tree/HEAD/paper-to-bilibili

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Paper para Bilibili faz?

Esta é a identidade única de orquestração de pipeline completo. Ela compõe os seguintes pacotes promovidos, mais o fluxo de trabalho gerenciado do Rednote:

  • paper-to-beamer: conteúdo do artigo e MinerU convertido para slides SUSTech Beamer compilados em 16:10.
  • paper-video-cover: geração opcional de pôster para referência; a capa normal do vídeo permanece o artefato de capa gerado.
  • paper-slides-to-video: renderização física de páginas, extração de narração, TTS, montagem paisagem, capa e metadados Bilibili.
  • rednote-video-uploader (gerenciado): geração obrigatória de vídeo retrato.
  • paper-bilibili-uploader: validação com falha-fechada, dry-run, upload e recibo durável.

As saídas usam $PP_ROOT/论文分享/<VENUE YEAR - SHORT>/ com md_output/, slides-beamer/ e video/.

Modos e fases

slides: do artigo para slides compilados

Quando uma entrada tem um arxiv_id não vazio (ou o usuário forneceu um link arXiv) e não existe fonte no disco (sem PDF raiz, sem paper_src/ com .tex), baixe primeiro a fonte TeX:

python \
  "<SKILLS_DIR>/paper-download-arxiv-paper-source/scripts/download_source.py" \
  "<arxiv_id>" --output "<paper_dir>"

O downloader cria <paper_dir>/arXiv-<id>.tar.gz + <paper_dir>/paper_src/; em seguida, siga a Fase 1 de skill://paper-to-beamer em diante (a etapa de movimentação da Fase 1 é pulada, pois o diretório do artigo já existe). Para saída PDF_ONLY, copie o PDF para a raiz do diretório do artigo (a porta pdf_downloaded requer um PDF raiz).

Siga skill://paper-to-beamer para a criação do conteúdo. Portas obrigatórias antes de continuar:

  1. slides-beamer/main.tex contém a narrativa específica do artigo, desde informações e motivação até métodos, experimentos, limitações, conclusões, referências, perguntas e respostas, e 3 a 8 slides de apêndice úteis.
  2. O documento usa o template SUSTech 16:10 (aspectratio=1610).
  3. slides-beamer/main.pdf não está vazio, sem controles indefinidos ou estouro severo.

A CLI em lote apenas verifica e persiste as evidências em disco para esta fase de autoria do agente; ela não fabrica slides.

Porta de autoria de narração

Copie o TeX compilado para video/main_with_narration.tex e adicione exatamente uma entrada % NARRATION: não vazia por página física do PDF. A narração é em chinês simplificado polido, com termos técnicos em inglês embutidos. Ela expande o argumento técnico em vez de ler marcadores, evita referências visuais como “本页” ou “如图所示”, e também cobre as páginas de apêndice.

A transição de slides_done para narrations_done ocorre apenas quando tanto os slides compilados quanto o TeX anotado não vazio existem.

video: artefatos narrados paisagem e retrato

python <SKILLS_DIR>/paper-to-bilibili/scripts/batch.py video "<PAPERS_JSON>"

Para cada artigo em narrations_done, o orquestrador chama o comando full do skill irmão paper-slides-to-video. Após o sucesso do filho, ele verifica novamente e persiste atomicamente video_done. Em seguida, chama o script gerenciado rednote-video-uploader/scripts/portrait_video.py, verifica novamente, valida a capa e os metadados Bilibili, e persiste atomicamente upload_ready. Falhas dos filhos propagam e nunca avançam o estado.

As portas de qualidade são: cardinalidade exata de quadros/texto/MP3, narração e áudio não vazios para cada página física, um MP4 paisagem não vazio, um MP4 retrato não vazio, uma capa não vazia e metadados Bilibili com esquema válido.

bilibili: validar ou fazer upload

Sempre revise um dry-run primeiro:

python <SKILLS_DIR>/paper-to-bilibili/scripts/batch.py bilibili "<PAPERS_JSON>" --dry-run

O dry-run delega para o uploader promovido e deve deixar upload_ready inalterado. Remova --dry-run apenas após a revisão. Não há timeout de upload padrão; um operador pode optar por --upload-timeout SECONDS.

Uploads normais exigem P1 paisagem e depois P2 retrato. Os metadados usam tag singular, um tid positivo, campos copyright/source válidos, uma descrição estruturada e uma capa não vazia. Um artigo se torna uploaded apenas quando video/upload_result.json é válido e contém uma URL BV correspondente mais um timestamp ISO-8601.

Contrato de estado

batch.py verifica o disco com esta precedência exata:

  1. upload_result.json válido → uploaded
  2. paisagem não vazio + retrato não vazio + capa + video_meta.json com esquema válido → upload_ready
  3. paisagem não vazio → video_done
  4. slides compilados + TeX anotado não vazio → narrations_done
  5. slides compilados → slides_done
  6. MinerU Markdown → mineru_done
  7. PDF fonte ou fonte TeX extraída (paper_src/ contendo .tex) → pdf_downloaded
  8. caso contrário → pending

Cada comando filho bem-sucedido é seguido por uma nova verificação e substituição atômica do JSON de entrada. As mudanças de estado são impressas como STATE <paper>: <old> -> <new>. O dry-run valida e delega, mas nunca inventa um novo estado. Um filho com falha preserva o último estado confirmado e seu código de saída é propagado.

Entrada em lote

papers.json é uma matriz de objetos com um dir_path absoluto não vazio; dir_name, arxiv_id, pdf_path e campos descritivos podem acompanhá-lo. O orquestrador registra _status em cada objeto.

Pré-requisitos

  • Python 3.10+ (se python não estiver no PATH, use py -3).
  • As dependências são declaradas em pyproject.toml (atualmente nenhuma em tempo de execução); instale o projeto com uv sync --project <SKILLS_DIR>/paper-to-bilibili ao adicionar alguma.
  • <SKILLS_DIR> é o diretório que contém as pastas de skills instaladas (ex.: ~/.claude/skills, ~/.codex/skills, .omp/skills); os skills irmãos (paper-slides-to-video, paper-bilibili-uploader, paper-download-arxiv-paper-source) devem estar instalados ao lado deste para que a resolução entre irmãos permaneça local e determinística.
  • PAPER_PYTHON (opcional): interpretador usado para lançar CLIs irmãos; o padrão é o interpretador que executa batch.py.

Skills relacionados

  • 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

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Peytontalismanic424/paper-share-skills

Validate and upload narrated paper videos to Bilibili with biliup. Handles required landscape-first/portrait-second submissions, series uploads, CST scheduling, diagnostics, dry-run validation, and durable upload receipts. Trigger on: "upload to bilibili", "bilibili upload", "发布到B站", "上传到B站".

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

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.

Habilidades Relacionadas