Communitygithub.com

Paper a Bilibili

Orquesta un PDF de artículo académico a través de MinerU, diapositivas SUSTech Beamer, narración completa en chino simplificado, videos horizontal y vertical, puertas de metadatos y subida a Bilibili. Admite fases de diapositivas, video o Bilibili para uno o varios artículos. Se activa con solicitudes de artículo completo a Bilibili, publicación de PDF a video y publicación por lotes de artículos.

¿Qué es Paper a Bilibili?

Esta habilidad implementa un pipeline completo que convierte un PDF de artículo académico (o su fuente LaTeX descargada de arXiv) en diapositivas SUSTech Beamer, narración en chino simplificado con términos técnicos en inglés, un video horizontal (paisaje) listo para Bilibili y un video vertical (retrato) para Xiaohongshu (RedNote). El pipeline está dividido en fases discretas: descarga y extracción de contenido vía MinerU, compilación de diapositivas con la plantilla SUSTech 16:10, autoría de narración, renderizado de video, generación de portada y finalmente validación y subida controlada a Bilibili con soporte de dry-run. Una máquina de estados basada en disco permite reanudar el proceso desde cualquier punto intermedio, y las fallas en cualquier fase detienen el avance sin corromper el estado. La habilidad es ideal para investigadores, divulgadores científicos o creadores de contenido que deseen automatizar la producción y publicación de presentaciones en video de artículos académicos en plataformas chinas. Funciona con Claude Code, Cursor, Codex u otros agentes que soporten `skill://` y CLIs con Python 3.10+.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Paper a Bilibili?

Esta es la identidad única de orquestación del pipeline completo. Compone los siguientes paquetes promovidos más el flujo de trabajo gestionado de RedNote:

  • paper-to-beamer: contenido del artículo y de MinerU convertido a diapositivas SUSTech Beamer en formato 16:9.
  • paper-video-cover: generación opcional de póster de referencia; la portada normal del video sigue siendo el artefacto generado como portada.
  • paper-slides-to-video: renderizado físico de páginas, extracción de narración, TTS, ensamblaje en horizontal, portada y metadatos de Bilibili.
  • rednote-video-uploader (gestionado): generación obligatoria de video vertical.
  • paper-bilibili-uploader: validación con cierre ante fallo, simulación (dry-run), subida y recibo duradero.

Las salidas se ubican en $PP_ROOT/论文分享/<VENUE AÑO - CORTO>/ con las carpetas md_output/, slides-beamer/ y video/.

Modos y fases

slides: de artículo a diapositivas compiladas

Cuando una entrada tiene un arxiv_id no vacío (o el usuario proporcionó un enlace de arXiv) y no existe fuente en disco (sin PDF raíz, sin paper_src/ con .tex), primero descargue la fuente TeX:

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

El descargador crea <paper_dir>/arXiv-<id>.tar.gz + <paper_dir>/paper_src/; luego siga skill://paper-to-beamer desde la Fase 1 en adelante (el paso de mover de la Fase 1 se omite porque el directorio del artículo ya existe). Para salida PDF_ONLY, copie el PDF a la raíz del directorio del artículo (la puerta pdf_downloaded requiere un PDF raíz).

Siga skill://paper-to-beamer para la autoría de contenido. Puertas obligatorias antes de continuar:

  1. slides-beamer/main.tex contiene la narrativa específica del artículo, desde información y motivación hasta métodos, experimentos, limitaciones, conclusiones, referencias, preguntas y respuestas, y de 3 a 8 diapositivas de apéndice útiles.
  2. El documento usa la plantilla SUSTech 16:9 (aspectratio=169).
  3. slides-beamer/main.pdf no está vacío, no tiene controles indefinidos ni desbordamientos graves.

El CLI por lotes solo escanea y persiste evidencia en disco para esta fase de autoría del agente; no fabrica diapositivas.

Puerta de autoría de narración

Copie el TeX compilado a video/main_with_narration.tex y agregue exactamente una entrada % NARRATION: no vacía por página física del PDF. La narración es chino simplificado pulido con términos técnicos en inglés intercalados. Expande el argumento técnico en lugar de leer viñetas, evita referencias puramente visuales como “本页” o “如图所示”, y también cubre las páginas del apéndice.

La transición de slides_done a narrations_done ocurre solo cuando existen tanto las diapositivas compiladas como el TeX anotado no vacío.

video: artefactos narrados en horizontal y vertical

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

Para cada artículo con narrations_done, el orquestador llama al comando full de la habilidad hermana paper-slides-to-video. Después del éxito del hijo, vuelve a escanear y persiste atómicamente video_done. Luego llama al rednote-video-uploader/scripts/portrait_video.py gestionado, vuelve a escanear, valida la portada y los metadatos de Bilibili, y persiste atómicamente upload_ready. Las fallas de los hijos se propagan y nunca avanzan el estado.

Las puertas de calidad son: cardinalidad exacta de fotogramas/texto/MP3, narración y audio no vacíos para cada página física, un MP4 horizontal no vacío, un MP4 vertical no vacío, una portada no vacía y metadatos de Bilibili con esquema válido.

bilibili: validar o subir

Siempre revise primero una simulación (dry-run):

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

El dry-run delega en el cargador promovido y debe dejar upload_ready sin cambios. Elimine --dry-run solo después de la revisión. No hay tiempo de espera de subida predeterminado; un operador puede optar por --upload-timeout SEGUNDOS.

Las subidas normales requieren primero el video horizontal (P1) y luego el vertical (P2). Los metadatos usan tag singular, un tid positivo, campos copyright/source válidos, una descripción estructurada y una portada no vacía. Un artículo se marca como uploaded solo cuando video/upload_result.json es válido y contiene una URL BV coincidente más una marca de tiempo ISO-8601.

Contrato de estado

batch.py vuelve a escanear el disco con esta precedencia exacta:

  1. upload_result.json válido → uploaded
  2. horizontal no vacío + vertical no vacío + portada + video_meta.json con esquema válido → upload_ready
  3. horizontal no vacío → video_done
  4. diapositivas compiladas + TeX anotado no vacío → narrations_done
  5. diapositivas compiladas → slides_done
  6. MinerU Markdown → mineru_done
  7. PDF fuente o fuente TeX extraída (paper_src/ con .tex) → pdf_downloaded
  8. de lo contrario → pending

Cada comando hijo exitoso va seguido de un nuevo escaneo y reemplazo atómico del JSON de entrada. Los cambios de estado se imprimen como STATE <paper>: <old> -> <new>. El dry-run valida y delega pero nunca inventa un nuevo estado. Un hijo fallido preserva el último estado fundamentado y su código de salida se propaga.

Entrada por lotes

papers.json es un arreglo de objetos con un dir_path absoluto no vacío; pueden acompañarlo dir_name, arxiv_id, pdf_path y campos descriptivos. El orquestador registra _status en cada objeto.

Prerrequisitos

  • Python 3.10+ (si python no está en PATH, use py -3).
  • Las dependencias están declaradas en pyproject.toml (actualmente ninguna en tiempo de ejecución); instale el proyecto con uv sync --project <SKILLS_DIR>/paper-to-bilibili al agregar alguna.
  • <SKILLS_DIR> es el directorio que contiene las carpetas de habilidades instaladas (por ejemplo, ~/.claude/skills, ~/.codex/skills, .omp/skills); las habilidades hermanas (paper-slides-to-video, paper-bilibili-uploader, paper-download-arxiv-paper-source) deben estar instaladas junto a esta para que la resolución de hermanas se mantenga local al proyecto y determinista.
  • PAPER_PYTHON (opcional): intérprete usado para lanzar CLIs hermanos; por defecto es el intérprete que ejecuta batch.py.

Habilidades relacionadas

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

Skills relacionados