Communitygithub.com

Paper Bilibili Uploader

Valida e envia vídeos narrados de artigos acadêmicos para o Bilibili usando o biliup. Lida com submissões obrigatórias na ordem paisagem/retrato, uploads em série, agendamento no fuso CST, diagnósticos, validação dry-run e recibos de upload duráveis.

O que é Paper Bilibili Uploader?

Esta skill automatiza o upload de vídeos narrados de artigos acadêmicos (papers) para a plataforma Bilibili, utilizando a ferramenta de linha de comando `biliup`. Ela é particularmente útil para pesquisadores e estudantes que desejam compartilhar apresentações de artigos de forma organizada e profissional. A skill suporta fluxos de trabalho complexos, como a ordenação obrigatória de vídeos no formato paisagem (landscape) primeiro e retrato (portrait) em segundo, agendamento inteligente no horário da China (CST) com regras para evitar publicações tarde da noite, e validação rigorosa de metadados (título, tags, categoria). Além disso, oferece funcionalidades de diagnóstico, login e um modo de teste (dry-run) que simula todo o processo sem realizar o upload de fato, gerando recibos de upload apenas em caso de sucesso real. A skill também gerencia cenários especiais, como a política de capas para laboratórios (que exigem um pôster mas usam o primeiro slide como capa) e modo série para múltiplos vídeos.

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

Perguntar na sua IA favorita

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

Documentação

O que Paper Bilibili Uploader faz?

Use a CLI final empacotada:

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

(O script depende de biliup, psutil e requests — veja pyproject.toml no diretório da skill; execute uv sync lá ou instale as dependências no interpretador ativo se as importações falharem.)

Remova --dry-run somente após revisar as partes resolvidas, metadados, capa e horário de publicação.

Layout obrigatório do modo normal

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

Ambos os MP4s devem ser não vazios. A CLI envia deterministicamente todos os vídeos paisagem antes de cada vídeo retrato: P1 paisagem, depois P2 retrato. Um arquivo de paisagem, retrato, capa ou metadados ausente ou vazio resulta em falha fechada.

Política de capa (ARTEFATO de pôster obrigatório; upload de capa do PRIMEIRO SLIDE)

Diretórios 实验室调研 (grupos de pesquisa) — detectados por um poster_data.json na raiz do artigo — AINDA EXIGEM o artefato POSTER de capa do vídeo: <PAPER_DIR>/poster/poster.png deve existir (sua ausência falha o upload fechado com uma dica de geração). No entanto, a CAPA DE UPLOAD usa por padrão o PRIMEIRO SLIDE da apresentação: cover_path explícito em video_meta.json tem prioridade, caso contrário video/cover.png (renderizado pelo pipeline de vídeo a partir da página de título) é usado — o pôster NÃO é copiado sobre a capa do primeiro slide. TODOS OS OUTROS artigos (论文分享 etc.) mantêm o contrato simples de capa — cover_path explícito → video/cover.png — e um poster/poster.png no diretório é IGNORADO. O modo série (--series) pula totalmente a verificação de laboratório/pôster.

Se um vídeo de laboratório já foi enviado com a capa errada, corrija-o SEM reenviar: upload.py --edit --vid <BV> --cover <video/cover.png> — o endpoint de capa de membro faz upload da imagem e a edição submete a URL literalmente (remover o esquema faz a edição falhar com 封面必须由页面进行上传,不支持外部链接). O vídeo permanece em revisão brevemente após o upload; a edição é bem-sucedida após desbloqueio (estado 0), caso contrário, faça polling e tente novamente.

Gere o artefato retrato com o fluxo de trabalho gerenciado retido em ~/.omp/agent/managed-skills/rednote-video-uploader/scripts/portrait_video.py (ajuste para o diretório managed-skills do seu agente).

Contrato de metadados

video/video_meta.json deve usar a chave singular tag do Bilibili:

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

A validação exige title como string não vazia; tag como lista não vazia de strings não vazias; tid como inteiro positivo; copyright exatamente 1 ou 2; e source não vazio quando copyright é 2. cover_path deve resolver para um arquivo não vazio. Não renomeie tag para tags; tags pertence aos metadados do Rednote.

Limite do dry-run

--dry-run executa resolução de entrada, ordenação P1/P2, correção de metadados, agendamento de publicação, validação e construção completa do comando. Ele retorna antes que qualquer subprocesso do biliup possa iniciar e nunca escreve um recibo de upload.

Agendamento CST

  • 00:00–22:59 publica imediatamente, a menos que os metadados ou --dtime forneçam um horário atrasado.
  • 23:00–23:59 agenda para 07:00 do dia seguinte quando nenhum horário atrasado já foi fornecido.
  • --dtime explícito sempre vence; aceita YYYY-MM-DD HH:MM no fuso CST ou um timestamp Unix de dez dígitos.

Recibo de upload

Um upload real é bem-sucedido apenas quando o biliup sai com código zero e retorna um identificador BV. A CLI escreve video/upload_result.json exatamente com os campos status, bv, url e uploaded_at no formato ISO-8601. Uma saída zero sem um identificador BV falha e não escreve recibo.

Modo série

Coloque os vídeos P1–PN paisagem ordenados, cover.png e video_meta.json em <PAPER_DIR>/bilibili-series/video/, em seguida adicione --series. O modo série preserva a ordem dos nomes de arquivo e intencionalmente não exige uma parte retrato.

Login e diagnósticos

Use a mesma CLI com --login, --diagnose ou --kill-all. Os cookies residem em %USERPROFILE%/.bilibili/cookies.json. Os diagnósticos usam inspeção de processos/arquivos abertos com psutil, não dependem de WMIC ou fsutil e toleram LOCALAPPDATA não definido.

Skills relacionadas

  • 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.

Habilidades Relacionadas